@hyperfixi/core 2.9.1 → 2.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/bundle-generator/index.js +6 -0
  2. package/dist/bundle-generator/index.mjs +6 -0
  3. package/dist/bundle-generator/parser-templates.d.ts +1 -1
  4. package/dist/chunks/{bridge-BYhqTOnL.js → bridge-DwtNLKK3.js} +2 -2
  5. package/dist/chunks/browser-modular-6HT1r2AH.js +2 -0
  6. package/dist/chunks/{index-DXgJaDj-.js → index-B8jwvuj_.js} +2 -2
  7. package/dist/commands/index.js +133 -74
  8. package/dist/commands/index.mjs +133 -74
  9. package/dist/hyperfixi-browser-classic-i18n.js +1 -1
  10. package/dist/hyperfixi-browser-minimal.js +1 -1
  11. package/dist/hyperfixi-browser-standard.js +1 -1
  12. package/dist/hyperfixi-browser.js +1 -1
  13. package/dist/hyperfixi-classic-i18n.js +1 -1
  14. package/dist/hyperfixi-hx-v4.js +1 -1
  15. package/dist/hyperfixi-hx.js +1 -1
  16. package/dist/hyperfixi-hybrid-complete.js +1 -1
  17. package/dist/hyperfixi-hybrid-hx.js +1 -1
  18. package/dist/hyperfixi-minimal.js +1 -1
  19. package/dist/hyperfixi-multilingual.js +1 -1
  20. package/dist/hyperfixi-standard.js +1 -1
  21. package/dist/hyperfixi.js +1 -1
  22. package/dist/hyperfixi.mjs +1 -1
  23. package/dist/index.js +233 -79
  24. package/dist/index.min.js +1 -1
  25. package/dist/index.mjs +233 -79
  26. package/dist/lokascript-browser-classic-i18n.js +1 -1
  27. package/dist/lokascript-browser-minimal.js +1 -1
  28. package/dist/lokascript-browser-standard.js +1 -1
  29. package/dist/lokascript-browser.js +1 -1
  30. package/dist/lokascript-hybrid-complete.js +1 -1
  31. package/dist/lokascript-hybrid-hx.js +1 -1
  32. package/dist/lokascript-multilingual.js +1 -1
  33. package/dist/parser/command-parsers/utility-commands.d.ts +1 -1
  34. package/dist/parser/full-parser.js +133 -74
  35. package/dist/parser/full-parser.mjs +133 -74
  36. package/dist/parser/hybrid/index.js +3 -0
  37. package/dist/parser/hybrid/index.mjs +3 -0
  38. package/dist/parser/hybrid/parser-core.js +3 -0
  39. package/dist/parser/hybrid/parser-core.mjs +3 -0
  40. package/dist/parser/hybrid-parser.js +3 -0
  41. package/dist/parser/hybrid-parser.mjs +3 -0
  42. package/dist/reference/index.js +1 -0
  43. package/dist/reference/index.mjs +1 -0
  44. package/dist/registry/index.js +133 -74
  45. package/dist/registry/index.mjs +133 -74
  46. package/dist/runtime/runtime-base.d.ts +2 -1
  47. package/dist/types/core.d.ts +1 -0
  48. package/package.json +6 -6
  49. package/dist/chunks/browser-modular-D2BHzZFB.js +0 -2
@@ -1,2 +1,2 @@
1
- var hyperfixi=function(){"use strict";const e="then",t="else",r="end",n="and",s="for",i="while",a="until",o="forever",l="times",c="index",u="in",d="to",m="from",p="with",h="of",f="on",y="event",g="behavior",v="global",b="the",w="start",k=new Set(["add","append","async","beep","blur","break","breakpoint","call","clear","close","continue","copy","decrement","default","empty","exit","fetch","focus","for","get","go","halt","hide","open","if","increment","install","js","log","make","measure","morph","pick","process","push","put","remove","render","repeat","replace","reset","return","scroll","select","send","set","settle","show","start","swap","take","tell","throw","toggle","transition","trigger","unless","wait"]),E=new Set(["put","trigger","send","remove","take","toggle","set","show","hide","add","halt","measure","js","go","tell","pick","start","swap","morph","push","replace","process"]),x=(new Set(["if","unless","repeat","wait","for","while"]),"at start of"),C="at end of",S=["into","before","after","at",x,C,"at the start of","at the end of"],A=new Set(["if","else","unless","for","while","until","end","and","or","not","in","to","from","into","with","without","as","matches","contains","then","on","when","every","init","def","behavior","the","of","first","last"]),T=e=>k.has(e.toLowerCase()),O=e=>E.has(e.toLowerCase()),L=e=>A.has(e.toLowerCase()),P=e=>j.has(e.toLowerCase()),j=new Set(["hsl","hsla","rgb","rgba","hwb","lab","lch","oklch","oklab","color","color-mix","calc","min","max","clamp","var","url","linear-gradient","radial-gradient","conic-gradient","repeating-linear-gradient","repeating-radial-gradient","repeating-conic-gradient"]),N=new Set(["me","it","you","result","my","its","your"]),I=new Set(["and","or","not","no"]),R=new Set(["==","!=","===","!==","<",">","<=",">=","is","is not","am","is a","is an","is not a","is not an","precedes","does not precede","follows","does not follow","contains","starts with","ends with","does not start with","does not end with","has","have","does not contain","include","includes","does not include","match","matches","exists","does not exist","is empty","is not empty","is in","is not in","is between","is not between","equals","in","is equal to","is really equal to","is not equal to","is not really equal to","is greater than","is less than","is greater than or equal to","is less than or equal to","really equals","am in","am not in","am between","am not between","is really","is not really","is equal","is not equal","contain","do not contain","does not contains","do not match","does not match","ignoring case","sorted by","mapped to","split by","joined by"]),q=new Set(["click","dblclick","mousedown","mouseup","mouseover","mouseout","mousemove","mouseenter","mouseleave","focus","blur","change","input","submit","reset","select","load","unload","resize","scroll","keydown","keyup","keypress","touchstart","touchend","touchmove","touchcancel","drag","drop","dragover","dragenter","dragleave","cut","copy","paste","toggle"]),M=new Set(["on","init","behavior","def","if","else","unless","for","while","until","end","and","or","not","in","to","from","into","with","as","then","when","where","after","before","by","at","between","async","no","start","of","the","new","global","local","equal","equals","greater","less","than","really","catch","finally","throw","return"]);var _;!function(e){e.IDENTIFIER="identifier",e.STRING="string",e.NUMBER="number",e.SELECTOR="selector",e.OPERATOR="operator",e.TIME="time",e.TEMPLATE="template",e.COMMENT="comment",e.SYMBOL="symbol",e.UNKNOWN="unknown"}(_||(_={}));const $=new Set(["+","-","*","/","mod"]),V=new Set(["ms","s","seconds","minutes","hours","days"]);function D(e,t=1){const r=e.position+t;return e.input.length>r?e.input[r]:""}function z(e){const t=e.input[e.position];return e.position++,"\n"===t?(e.line++,e.column=1):"\r"===t?("\n"===(e.input.length>e.position?e.input[e.position]:"")&&e.position++,e.line++,e.column=1):e.column++,t}function B(e){const t=e.input,r=t.length;for(;r>e.position;){const r=t[e.position];if(" "!==r&&"\t"!==r&&"\r"!==r&&"\n"!==r)break;z(e)}}function F(e,t,r,n,s){const i=n??e.position-r.length,a=e.position;let o=e.column-r.length;if(void 0!==n){o=1;let t=-1;for(let r=0;n>r;r++)"\n"!==e.input[r]&&"\r"!==e.input[r]||(t=r);o=n-t}const l={kind:t,value:r,start:i,end:a,line:H(e,i),column:o};e.tokens.push(l)}function H(e,t){let r=1;for(let n=0;t>n&&e.input.length>n;n++){const t=e.input[n];"\n"===t?r++:"\r"===t&&(r++,e.input.length>n+1&&"\n"===e.input[n+1]&&n++)}return r}function W(e){const t=e.position;let r="";for(z(e),z(e);e.input.length>e.position&&"\n"!==e.input[e.position];)r+=z(e);F(e,_.COMMENT,"--"+r,t)}function U(e){const t=e.position,r=z(e);let n=r;for(;e.input.length>e.position;){const t=z(e);if(n+=t,t===r)break;"\\"===t&&e.input.length>e.position&&(n+=z(e))}F(e,_.STRING,n,t)}function K(e){const t=e.position;z(e);let r="";for(;e.input.length>e.position;){const t=e.input[e.position];if("`"===t){z(e);break}if("\\"===t){if(z(e),e.input.length>e.position){const t=z(e);switch(t){case"n":r+="\n";break;case"t":r+="\t";break;case"r":r+="\r";break;case"\\":r+="\\";break;case"`":r+="`";break;default:r+=t}}}else r+=z(e)}if(e.position>=e.input.length&&!e.input.endsWith("`"))throw Error(`Unterminated template literal at line ${e.line}, column ${e.column-r.length}`);F(e,_.TEMPLATE,r,t)}function J(e){const t=e.position;let r=z(e);if(e.input.length>e.position&&"{"===e.input[e.position]){for(r+=z(e);e.input.length>e.position;){const t=e.input[e.position];if(r+=z(e),"}"===t)break}F(e,_.SELECTOR,r,t)}else{for(;e.input.length>e.position;){const t=e.input[e.position];if("\\"===t)z(e),e.input.length>e.position&&(r+=z(e));else{if(!re(t)&&"-"!==t&&"_"!==t&&":"!==t)break;r+=z(e)}}F(e,_.SELECTOR,r,t)}}function Z(e){const t=e.position;if(ne(e))return void function(e,t){const r=e.input;let n="",s=0,i="";for(;r.length>e.position;){const t=r[e.position];if(i)n+=z(e),t===i&&(i="");else if('"'!==t&&"'"!==t){if("<"===t){if("/"===r[e.position+1]){for(;r.length>e.position&&">"!==r[e.position];)n+=z(e);if(r.length>e.position&&(n+=z(e)),s--,0>=s)break;continue}let t=!1,i="";for(;r.length>e.position;){const s=r[e.position];if(i)n+=z(e),s===i&&(i="");else if('"'!==s&&"'"!==s){if(">"===s){t="/"===r[e.position-1],n+=z(e);break}n+=z(e)}else i=s,n+=z(e)}if(t||s++,0>=s)break;continue}n+=z(e)}else i=t,n+=z(e)}F(e,_.SELECTOR,n,t)}(e,t);let r="";for(r+=z(e);e.input.length-1>e.position;){const t=e.input[e.position],n=e.input[e.position+1];if(r+=z(e),"/"===t&&">"===n){r+=z(e);break}}F(e,_.SELECTOR,r,t)}function X(e){const t=e.position;let r=z(e);for(;e.input.length>e.position;){const t=e.input[e.position];if(!re(t)&&"_"!==t&&"-"!==t)break;r+=z(e)}F(e,_.SYMBOL,r,t)}function Y(e){const t=e.position;let r="";const n=e.input[e.position];if(("'"===n||"'"===n)&&"s"===D(e,1))return r="'s",z(e),z(e),void F(e,_.OPERATOR,r,t);const s=e.input.substring(e.position,e.position+2),i=e.input.substring(e.position,e.position+3);["===","!=="].includes(i)?(r=i,z(e),z(e),z(e)):["==","!=","<=",">=","&&","||","**","~=","|=","^=","$=","*=","?."].includes(s)?(r=s,z(e),z(e)):r=z(e),F(e,_.OPERATOR,r,t)}function G(e){const t=e.position,r=e.input,n=r.length;let s="";for(;n>e.position;){const t=r[e.position];if("0">t||t>"9")break;s+=z(e)}if(n>e.position&&"."===r[e.position]&&(e.position+1>=n||"."!==r[e.position+1]))for(s+=z(e);n>e.position;){const t=r[e.position];if("0">t||t>"9")break;s+=z(e)}if(n>e.position){const t=r[e.position];if("e"===t||"E"===t){const t=n>e.position+1?r[e.position+1]:"",i=n>e.position+2?r[e.position+2]:"";if(t>="0"&&"9">=t||!("+"!==t&&"-"!==t||"0">i||i>"9"))for(s+=z(e),"+"!==r[e.position]&&"-"!==r[e.position]||(s+=z(e));n>e.position;){const t=r[e.position];if("0">t||t>"9")break;s+=z(e)}}}const i=e.position;let a="";for(;n>e.position;){const t=r[e.position];if(("a">t||t>"z")&&("A">t||t>"Z"))break;a+=z(e)}V.has(a)?F(e,_.TIME,s+a,t):(e.position=i,F(e,_.NUMBER,s,t))}function Q(e){const t=e.position,r=e.input,n=r.length;let s="";for(;n>e.position;){const t=r[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t&&"-"!==t)break;s+=z(e)}const i=function(e,t,r){const n=t.toLowerCase(),s=e.position;if("'s"===t||"'s"===t)return!1;const i=e.tokens[e.tokens.length-1];if(i&&(i.kind===_.IDENTIFIER||i.kind===_.SELECTOR)){const t=e.input.length>e.position?e.input[e.position]:"";if("'"===t||"'"===t)return!1}B(e);let a="";for(;e.input.length>e.position;){const t=e.input[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t&&"-"!==t)break;a+=z(e)}if(a){const t=a.toLowerCase(),s=`${n} ${t}`,i=function(e,t,r,n){const s=t.toLowerCase(),i=r.toLowerCase();if("at"===s){const t=e.position;if("the"===i){B(e);let r="";for(;e.input.length>e.position;){const t=e.input[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t&&"-"!==t)break;r+=z(e)}const s=r.toLowerCase();if("start"===s||"end"===s){B(e);let t="";for(;e.input.length>e.position;){const r=e.input[e.position];if(("a">r||r>"z")&&("A">r||r>"Z")&&("0">r||r>"9")&&"_"!==r&&"-"!==r)break;t+=z(e)}if("of"===t.toLowerCase())return F(e,_.IDENTIFIER,`at the ${s} of`,n),!0}return e.position=t,!1}if("start"===i||"end"===i){B(e);let r="";for(;e.input.length>e.position;){const t=e.input[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t&&"-"!==t)break;r+=z(e)}return"of"===r.toLowerCase()?(F(e,_.IDENTIFIER,`at ${i} of`,n),!0):(e.position=t,!1)}}return!1}(e,n,t,r);if(i)return!0;const o=function(e,t,r){const n=e.position;let s=`${t} ${r}`,i=e.position;const a=[t,r];for(;8>a.length&&(B(e),e.input.length>e.position);){let t="";for(;e.input.length>e.position;){const r=e.input[e.position];if(("a">r||r>"z")&&("A">r||r>"Z"))break;t+=z(e)}if(!t)break;a.push(t.toLowerCase());const r=a.join(" ");R.has(r)&&(s=r,i=e.position)}return R.has(s)&&s!==`${t} ${r}`?(e.position=i,s):(e.position=n,null)}(e,n,t);if(o)return F(e,_.OPERATOR,o,r),!0;if(R.has(s))return F(e,_.OPERATOR,s,r),!0}return R.has(n)?(e.position=s,F(e,_.OPERATOR,t,r),!0):(e.position=s,!1)}(e,s,t);if(i)return;const a=function(e){const t=e.toLowerCase();return"include"===t||"includes"===t||I.has(t)||$.has(e)||$.has(t)||R.has(t)?_.OPERATOR:_.IDENTIFIER}(s);F(e,a,s,t)}function ee(e){const t=e.position,r=e.input,n=r.length;z(e);let s="$";for(;n>e.position;){const t=r[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t)break;s+=z(e)}F(e,_.IDENTIFIER,s,t)}function te(e){return/[a-zA-Z]/.test(e)}function re(e){return/[a-zA-Z0-9]/.test(e)}function ne(e){const t=e.input,r=t[e.position+1];if(!r||!/[a-zA-Z]/.test(r))return!1;let n=e.position+1,s="";for(;t.length>n&&/[a-zA-Z0-9-]/.test(t[n]);)s+=t[n],n++;return s.length>0&&-1!==t.indexOf("</"+s+">",n)}function se(e){if(ne(e))return!0;let t=e.position+1,r=!1;for(;e.input.length>t;){const n=e.input[t];if("/"===n&&e.input.length>t+1&&">"===e.input[t+1])return r;if(re(n)||"."===n||"#"===n||"["===n||"]"===n||":"===n||"-"===n||"_"===n||" "===n||"="===n||'"'===n||"'"===n||"("===n||")"===n||"*"===n||"^"===n||"$"===n||"~"===n||"|"===n||">"===n||"+"===n||","===n||"{"===n||"}"===n)r=!0,t++;else{if(" "!==n&&"\t"!==n)return!1;t++}if(t-e.position>50)return!1}return!1}function ie(e){return"+-*/^%=!<>&|(){}[],.;:?''~$".includes(e)}const ae=function(){if("undefined"!=typeof localStorage)try{const e=localStorage,t=e.getItem("hyperfixi:debug")||e.getItem("lokascript:debug");if("*"===t||"true"===t)return!0}catch{}return!("undefined"==typeof window||!window.__HYPERFIXI_DEBUG__)||"undefined"!=typeof process&&"true"===process.env?.HYPERFIXI_DEBUG}(),oe=ae,le=ae,ce=ae,ue=ae,de=(...e)=>{oe&&console.log("\ud83d\udd27",...e)},me=(...e)=>{le&&console.log("\ud83c\udfaf",...e)},pe=(...e)=>{ce&&console.log("\ud83d\udcdd",...e)},he=(...e)=>{ue&&console.log("\ud83d\ude80",...e)};let fe=!1,ye=null;if("undefined"!=typeof window&&"undefined"!=typeof URLSearchParams)try{"semantic"===new URLSearchParams(window.location.search).get("debug")&&(fe=!0,ye=window,console.log("%c[HyperFixi] Semantic debug auto-enabled via URL param","color: #667eea; font-weight: bold"))}catch{}let ge={totalParses:0,semanticSuccesses:0,semanticFallbacks:0,traditionalParses:0,averageConfidence:0,confidenceHistory:[]};class ve{constructor(e){this.analyzer=e.analyzer,this.language=e.language,this.confidenceThreshold=e.confidenceThreshold??.5,this.debugEnabled=e.debug??!1}isAvailable(){return this.analyzer.supportsLanguage(this.language)}shouldSkipSemantic(e){const t=e.trim().split(/\s+/)[0]?.toLowerCase();if(ve.SKIP_SEMANTIC_COMMANDS.has(t))return!0;const r=e.toLowerCase();return!!/\bjs\b/.test(r)||!!/\btell\b/.test(r)||!!/\*[a-zA-Z]/.test(e)}trySemanticParse(e){const t=performance.now();if(this.shouldSkipSemantic(e))return{success:!1,confidence:0,errors:["Command skipped for semantic parsing - using traditional parser"]};if(!this.isAvailable())return{success:!1,confidence:0,errors:[`Semantic parsing not available for language '${this.language}'`]};try{const n=this.analyzer.analyze(e,this.language),s=performance.now()-t;this.debugEnabled&&console.log("[SemanticIntegration] Analysis result:",{input:e,language:this.language,confidence:n.confidence,command:n.command?.name,threshold:this.confidenceThreshold});const i=n.confidence>=this.confidenceThreshold&&!!n.command,a=!i&&n.confidence>0;if(fe){const t={};if(n.command?.roles)for(const[e,r]of n.command.roles)t[e]=r.value;const o={input:e.substring(0,100),language:this.language,confidence:n.confidence,threshold:this.confidenceThreshold,semanticSuccess:i,fallbackTriggered:a,command:n.command?.name,roles:Object.keys(t).length>0?t:void 0,errors:n.errors,timestamp:Date.now(),duration:s};!function(e){if(!fe)return;const t=e.semanticSuccess?"semantic":e.fallbackTriggered?"fallback":"traditional",r=Math.round(100*e.confidence),n=Math.round(100*e.threshold),s=e.semanticSuccess?"color: #4caf50; font-weight: bold":e.fallbackTriggered?"color: #ff9800; font-weight: bold":"color: #9e9e9e";if(console.groupCollapsed(`%c[Semantic] ${t.toUpperCase()} %c${e.input.substring(0,50)}${e.input.length>50?"...":""}`,s,"color: #888"),console.log(`Confidence: ${r}% (threshold: ${n}%)`),e.command&&console.log("Command: "+e.command),e.roles&&Object.keys(e.roles).length>0&&console.log("Roles:",e.roles),e.duration&&console.log(`Duration: ${e.duration.toFixed(2)}ms`),e.errors?.length&&console.log("Errors:",e.errors),console.groupEnd(),ye){const t=new CustomEvent("lokascript:semantic:parse",{detail:e,bubbles:!0});ye.dispatchEvent(t)}}(o),r=o,ge.totalParses++,r.semanticSuccess?ge.semanticSuccesses++:r.fallbackTriggered?ge.semanticFallbacks++:ge.traditionalParses++,ge.confidenceHistory.push(r.confidence),ge.confidenceHistory.length>100&&ge.confidenceHistory.shift(),ge.averageConfidence=ge.confidenceHistory.reduce((e,t)=>e+t,0)/ge.confidenceHistory.length}return i?{success:!0,node:this.buildCommandNode(n),confidence:n.confidence,tokensConsumed:n.tokensConsumed}:{success:!1,confidence:n.confidence,tokensConsumed:n.tokensConsumed,errors:n.errors}}catch(e){return{success:!1,confidence:0,errors:[e instanceof Error?e.message:e+""]}}var r}buildCommandNode(e){const{command:t}=e;if(!t)throw Error("Cannot build command node without command data");if("repeat"===t.name)return this.buildRepeatCommandNode(t);if("for"===t.name)return this.buildRepeatCommandNode(t);if("set"===t.name)return this.buildSetCommandNode(t);if("if"===t.name||"unless"===t.name)return this.buildIfCommandNode(t);const r=[],n={};for(const[e,s]of t.roles){const i=this.semanticValueToExpression(s);switch(e){case"patient":case"event":r.push(i);break;case"destination":"put"===t.name?n.into=i:"add"===t.name||"append"===t.name||"prepend"===t.name?n.to=i:n.on=i;break;case"source":"fetch"===t.name?r.push(i):n.from=i;break;case"quantity":n.by=i;break;case"duration":n.over=i;break;case"responseType":n.as=i;break;case"style":n.with=i;break;case"condition":n.when=i;break;default:n[e]=i}}return{type:"command",name:t.name,args:r,modifiers:Object.keys(n).length>0?n:void 0,isBlocking:!1,start:0,end:0,line:1,column:0}}buildRepeatCommandNode(e){const t=[],r={},n=e.roles.get("loopType");n&&t.push({type:"identifier",name:n.value+"",start:0,end:0,line:1,column:0});const s=e.roles.get("patient");"for"==(n?n.value+"":"")&&s&&t.push({type:"identifier",name:"expression"===s.type&&s.raw||s.value+"",start:0,end:0,line:1,column:0});const i=e.roles.get("event");i&&t.push({type:"string",value:i.value+"",start:0,end:0,line:1,column:0});const a=e.roles.get("source");a&&t.push(this.semanticValueToExpression(a));const o=e.roles.get("quantity");o&&t.push(this.semanticValueToExpression(o));const l=e.roles.get("condition");return l&&(r.condition=this.semanticValueToExpression(l)),{type:"command",name:"repeat",args:t,modifiers:Object.keys(r).length>0?r:void 0,isBlocking:!1,start:0,end:0,line:1,column:0}}buildSetCommandNode(e){const t=[],r=e.roles.get("destination");if(r)if("property-path"===r.type){const e=r;t.push({type:"possessiveExpression",object:this.semanticValueToExpression(e.object),property:this.createPropertyNode(e.property),start:0,end:0,line:1,column:0})}else t.push(this.semanticValueToExpression(r));t.push({type:"identifier",name:"to",start:0,end:0,line:1,column:0});const n=e.roles.get("patient");return n&&t.push(this.semanticValueToExpression(n)),{type:"command",name:"set",args:t,isBlocking:!1,start:0,end:0,line:1,column:0}}createPropertyNode(e){return e.startsWith("*")?{type:"cssProperty",name:e.substring(1),start:0,end:0,line:1,column:0}:{type:"identifier",name:e,start:0,end:0,line:1,column:0}}buildIfCommandNode(e){const t=[],r=e.roles.get("condition");return r&&t.push(this.semanticValueToExpression(r)),{type:"command",name:e.name,args:t,isBlocking:!1,start:0,end:0,line:1,column:0}}semanticValueToExpression(e){switch(e.type){case"selector":return{type:"selector",value:e.value,start:0,end:0,line:1,column:0};case"reference":return{type:"identifier",name:e.value,start:0,end:0,line:1,column:0};case"literal":return"string"==typeof e.value&&e.value.includes("${")&&e.value.includes("}")?{type:"templateLiteral",value:e.value,start:0,end:0,line:1,column:0}:{type:"literal",value:e.value,raw:e.raw??e.value,start:0,end:0,line:1,column:0};case"property-path":{const t=e;return{type:"memberExpression",object:this.semanticValueToExpression(t.object),property:{type:"identifier",name:t.property,start:0,end:0,line:1,column:0},computed:!1,start:0,end:0,line:1,column:0}}default:return this.parseExpressionString(e.raw||"")}}parseExpressionString(e){let t=0;const r=()=>{for(;e.length>t&&/\s/.test(e[t]);)t++},n=()=>{r();const n=t;for(;e.length>t&&/[a-zA-Z0-9_$]/.test(e[t]);)t++;return e.slice(n,t)},s=()=>{const n=[];if(t++,r(),")"!==e[t])for(n.push(i()),r();","===e[t];)t++,r(),n.push(i()),r();return")"===e[t]&&t++,n},i=()=>{r();const i=n();if(!i)return{type:"identifier",name:e.trim(),start:0,end:0,line:1,column:0};let a={type:"identifier",name:i,start:0,end:0,line:1,column:0};for(;e.length>t;){r();const i=e[t];if("."===i){t++;const e=n();e&&(a={type:"memberExpression",object:a,property:{type:"identifier",name:e,start:0,end:0,line:1,column:0},computed:!1,start:0,end:0,line:1,column:0})}else{if("("!==i)break;a={type:"callExpression",callee:a,arguments:s(),start:0,end:0,line:1,column:0}}}return a};return i()}getLanguage(){return this.language}getConfidenceThreshold(){return this.confidenceThreshold}}ve.SKIP_SEMANTIC_COMMANDS=new Set(["swap","morph","js","tell"]);const be=new Set(["then","end","to","into","on","with","from","in","by","for","while","until","unless","else","catch","finally"]),we=new Set([")","]","}",","]);function ke(e,t){return{infix:{bp:[e,e+1],handler:t??((t,r,n)=>{const s=n.parseExpr(e+1);return{type:"binaryExpression",operator:r.value,left:t,right:s,start:t.start,end:s.end??r.end,line:t.line??r.line,column:t.column??r.column}})}}}function Ee(e,t){return{infix:{bp:[e+1,e],handler:(t,r,n)=>{const s=n.parseExpr(e);return{type:"binaryExpression",operator:r.value,left:t,right:s,start:t.start,end:s.end??r.end,line:t.line??r.line,column:t.column??r.column}}}}}function xe(e,t){return{prefix:{bp:e,handler:t??((t,r)=>{const n=r.parseExpr(e);return{type:"unaryExpression",operator:t.value,operand:n,argument:n,prefix:!0,start:t.start,end:n.end??t.end,line:t.line,column:t.column}})}}}function Ce(e){return(t,r,n)=>{const s=n.advance();if(!s||!s.value)throw Error(`Type check requires a type name after 'is ${e?"not ":""}a/an', got: <end>`);let i=!0;const a=n.peek();return a&&"!"===a.value&&(n.advance(),i=!1),{type:"typeCheckExpression",value:t,typeName:s.value,nullOk:i,negated:e,start:t.start,end:s.end}}}const Se=function(...e){const t=new Map;for(const r of e)for(const[e,n]of r){const r=t.get(e);t.set(e,r?{prefix:n.prefix??r.prefix,infix:n.infix??r.infix}:{...n})}return t}(new Map([["or",ke(10)],["||",ke(10)],["and",ke(20)],["&&",ke(20)],["==",ke(30)],["!=",ke(30)],["<",ke(30)],[">",ke(30)],["<=",ke(30)],[">=",ke(30)],["is",ke(30)],["matches",ke(30)],["contains",ke(30)],["starts with",ke(30)],["ends with",ke(30)],["does not start with",ke(30)],["does not end with",ke(30)],["is between",ke(30,(e,t,r)=>{const n=r.parseExpr(31),s=r.peek();if(!s||"and"!==s.value.toLowerCase())throw Error("between requires 'and' between min and max operands, got: "+(s?.value??"<end>"));r.advance();const i=r.parseExpr(31);return{type:"betweenExpression",value:e,min:n,max:i,negated:!1,start:e.start,end:i.end}})],["is not between",ke(30,(e,t,r)=>{const n=r.parseExpr(31),s=r.peek();if(!s||"and"!==s.value.toLowerCase())throw Error("between requires 'and' between min and max operands, got: "+(s?.value??"<end>"));r.advance();const i=r.parseExpr(31);return{type:"betweenExpression",value:e,min:n,max:i,negated:!0,start:e.start,end:i.end}})],["am between",ke(30,(e,t,r)=>{const n=r.parseExpr(31),s=r.peek();if(!s||"and"!==s.value.toLowerCase())throw Error("between requires 'and' between min and max operands, got: "+(s?.value??"<end>"));r.advance();const i=r.parseExpr(31);return{type:"betweenExpression",value:e,min:n,max:i,negated:!1,start:e.start,end:i.end}})],["am not between",ke(30,(e,t,r)=>{const n=r.parseExpr(31),s=r.peek();if(!s||"and"!==s.value.toLowerCase())throw Error("between requires 'and' between min and max operands, got: "+(s?.value??"<end>"));r.advance();const i=r.parseExpr(31);return{type:"betweenExpression",value:e,min:n,max:i,negated:!0,start:e.start,end:i.end}})],["ignoring case",{infix:{bp:[25,26],handler:(e,t,r)=>(e.ignoringCase=!0,e)}}],["where",ke(28,(e,t,r)=>{const n=r.parseExpr(29);return{type:"collectionExpression",operator:"where",collection:e,right:n,start:e.start,end:n.end}})],["sorted by",ke(28,(e,t,r)=>{const n=r.parseExpr(29);let s="asc";const i=r.peek();if(i&&"string"==typeof i.value){const e=i.value.toLowerCase();"asc"===e||"ascending"===e?(r.advance(),s="asc"):"desc"!==e&&"descending"!==e||(r.advance(),s="desc")}return{type:"collectionExpression",operator:"sorted by",collection:e,right:n,order:s,start:e.start,end:n.end}})],["mapped to",ke(28,(e,t,r)=>{const n=r.parseExpr(29);return{type:"collectionExpression",operator:"mapped to",collection:e,right:n,start:e.start,end:n.end}})],["split by",ke(28,(e,t,r)=>{const n=r.parseExpr(29);return{type:"collectionExpression",operator:"split by",collection:e,right:n,start:e.start,end:n.end}})],["joined by",ke(28,(e,t,r)=>{const n=r.parseExpr(29);return{type:"collectionExpression",operator:"joined by",collection:e,right:n,start:e.start,end:n.end}})],["+",{...ke(40),...xe(80)}],["-",{...ke(40),...xe(80)}],["*",ke(50)],["/",ke(50)],["%",ke(50)],["mod",ke(50)],["^",Ee(60)],["**",Ee(60)],["as",ke(70,(e,t,r)=>{const n=()=>{const e=r.peek();!e||"a"!==e.value&&"an"!==e.value||r.advance();const t=r.parseExpr(71),n=r.peek();if(n&&":"===n.value&&t&&"identifier"===t.type){r.advance();const e=r.advance();e&&void 0!==e.value&&(t.name=`${t.name}:${e.value}`,t.end=e.end)}return t};let s=n(),i={type:"asExpression",expression:e,targetType:s,start:e.start,end:s.end??t.end,line:e.line??t.line,column:e.column??t.column};for(;r.peek()&&"|"===r.peek().value;){r.advance();const e=n();i={type:"asExpression",expression:i,targetType:e,start:i.start,end:e.end??i.end,line:i.line,column:i.column}}return i})],["not",xe(80)],["!",xe(80)],["no",xe(27)]]),new Map([["===",ke(30)],["!==",ke(30)],["is not",ke(30)],["am",ke(30)],["is in",ke(30)],["is not in",ke(30)],["precedes",ke(30)],["does not precede",ke(30)],["follows",ke(30)],["does not follow",ke(30)],["is a",ke(30,Ce(!1))],["is an",ke(30,Ce(!1))],["is not a",ke(30,Ce(!0))],["is not an",ke(30,Ce(!0))],["has",ke(30)],["have",ke(30)],["match",ke(30)],["include",ke(30)],["includes",ke(30)],["equals",ke(30)],["does not contain",ke(30)],["does not include",ke(30)],["am in",ke(30)],["am not in",ke(30)],["is really",ke(30)],["is not really",ke(30)],["is equal",ke(30)],["is not equal",ke(30)],["contain",ke(30)],["do not contain",ke(30)],["does not contains",ke(30)],["do not match",ke(30)],["does not match",ke(30)],["is equal to",ke(30)],["is not equal to",ke(30)],["is really equal to",ke(30)],["is not really equal to",ke(30)],["really equals",ke(30)],["is greater than",ke(30)],["is less than",ke(30)],["is greater than or equal to",ke(30)],["is less than or equal to",ke(30)],["in",ke(30)],["of",Ee(30)],["really",ke(30)],["exists",{prefix:{bp:80,handler:(e,t)=>({type:"unaryExpression",operator:e.value,operand:t.parseExpr(80),start:e.start})},infix:{bp:[30,31],handler:(e,t)=>({type:"unaryExpression",operator:t.value,operand:e,prefix:!1,start:e.start})}}],["does not exist",{infix:{bp:[30,31],handler:(e,t)=>({type:"unaryExpression",operator:t.value,operand:e,prefix:!1,start:e.start})}}],["is empty",{infix:{bp:[30,31],handler:(e,t)=>({type:"unaryExpression",operator:t.value,operand:e,prefix:!1,start:e.start})}}],["is not empty",{infix:{bp:[30,31],handler:(e,t)=>({type:"unaryExpression",operator:t.value,operand:e,prefix:!1,start:e.start})}}],["some",xe(80)]]),new Map([["=",Ee(5)]])),Ae=new Map,Te=new Map,Oe=new Map,Le=new Set,Pe=new Set,je=new Set,Ne=new Set;function Ie(e){return Ae.get(e.toLowerCase())}function Re(e){return Oe.get(e)}function qe(e,t){if(0!==Pe.size)for(const r of Pe)try{r(e,t)}catch(e){void 0!==console&&console.error("[hyperfixi] globalReadHook threw:",e)}}function Me(e,t,r){if(0!==je.size)for(const n of je)try{n(e,t,r)}catch(e){void 0!==console&&console.error("[hyperfixi] localWriteHook threw:",e)}}function _e(e,t){if(0!==Ne.size)for(const r of Ne)try{r(e,t)}catch(e){void 0!==console&&console.error("[hyperfixi] localReadHook threw:",e)}}function $e(e,t,r){if(e.globals.set(t,r),0!==Le.size)for(const n of Le)try{n(t,r,e)}catch(e){void 0!==console&&console.error("[hyperfixi] globalWriteHook threw:",e)}}function Ve(e){return e.kind===_.IDENTIFIER&&k.has(e.value.toLowerCase())}function De(e){return e.kind===_.IDENTIFIER&&M.has(e.value.toLowerCase())}function ze(e){return e.kind===_.IDENTIFIER&&q.has(e.value.toLowerCase())}function Be(e){return e.kind===_.IDENTIFIER&&N.has(e.value.toLowerCase())}function Fe(e){return R.has(e.value.toLowerCase())}function He(e){return e.kind===_.IDENTIFIER}function We(e){return e.kind===_.SELECTOR}function Ue(e){return e.kind===_.SELECTOR&&!e.value.startsWith("<")}function Ke(e){return e.kind===_.STRING||e.kind===_.NUMBER||e.kind===_.TEMPLATE}function Je(e){return e.kind===_.IDENTIFIER}function Ze(e){return e.kind===_.TIME}function Xe(e){return e.kind===_.SYMBOL}function Ye(e){return e.kind===_.COMMENT}function Ge(e){if(e.kind!==_.IDENTIFIER)return!1;const t=e.value.toLowerCase();return!(k.has(t)||M.has(t)||q.has(t)||N.has(t))}function Qe(e){return e.kind===_.STRING}function et(e){return e.kind===_.NUMBER}function tt(e){if(e.kind===_.IDENTIFIER){const t=e.value;return"true"===t||"false"===t||"null"===t||"undefined"===t}return!1}function rt(e){return e.kind===_.TEMPLATE}function nt(e){return e.kind===_.SELECTOR&&e.value.startsWith("<")}function st(e){return e.kind===_.SELECTOR&&e.value.startsWith("#")}function it(e){return e.kind===_.SELECTOR&&e.value.startsWith(".")}function at(e){return e.kind===_.SELECTOR&&!e.value.startsWith("#")&&!e.value.startsWith(".")}function ot(e){if(e.kind!==_.OPERATOR)return!1;const t=e.value.toLowerCase();return!I.has(t)&&!R.has(t)}function lt(e){const t=e.value.toLowerCase();return"then"===t||"and"===t||"else"===t||"end"===t||"on"===t}function ct(e,t,r){return{type:"literal",value:e,raw:t,start:r.start,end:r.end,line:r.line,column:r.column}}function ut(e,t){return{type:"identifier",name:e,start:t.start,end:t.end,line:t.line,column:t.column}}function dt(e,t,r,n){return{type:"binaryExpression",operator:e,left:t,right:r,start:n.start,end:n.end,line:n.line,column:n.column}}function mt(e,t){return{type:"block",commands:e,start:t.start,end:t.end,line:t.line,column:t.column}}function pt(e,t){return{type:"string",value:e,start:t.start,end:t.end,line:t.line,column:t.column}}function ht(e,t){return{type:"objectLiteral",properties:e,start:t.start,end:t.end,line:t.line,column:t.column}}function ft(e,t){return{type:"arrayLiteral",elements:e,start:t.start,end:t.end,line:t.line,column:t.column}}function yt(e,t,r){return{type:"propertyOfExpression",property:e,target:t,start:r.start,end:r.end,line:r.line,column:r.column}}function gt(e,t,r){return{type:"command",name:"__ERROR__",args:[],diagnostics:[{message:t,severity:"error",code:"parse-error",line:e.line,column:e.column,...r&&{source:r}}],start:e.start,end:e.end,line:e.line,column:e.column}}const vt=[{command:"append",keywords:["to"],syntax:"append <value> [to <target>]"},{command:"make",keywords:["a","an","from","called"],syntax:"make (a|an) <type> [from <args>] [called <name>]"},{command:"send",keywords:["to"],syntax:"send <event> to <target>"},{command:"throw",keywords:[],syntax:"throw <error>"}];function bt(e,t){return!!e&&t.some(t=>e.value===t||e.value.toLowerCase()===t)}const wt=[e,n,t,r];function kt(e,t=[]){if(e.isAtEnd())return!0;for(const t of wt)if(e.check(t))return!0;for(const r of t)if(e.check(r))return!0;return!!e.checkIsCommand()}function Et(e,t=[]){if(!kt(e,t))return e.parseExpression()}function xt(e,t,r){return!!e.check(t)&&(e.advance(),r.push(e.createIdentifier(t)),!0)}function Ct(e,t,r){for(const n of t)if(e.check(n))return e.advance(),r.push(e.createIdentifier(n)),n;return null}function St(e,t){return!!e.check(t)&&(e.advance(),!0)}function At(e){const t=e.savePosition();let r;if(e.checkIdentifierLike()){const n=e.peek().value;e.advance(),e.check(":")?(e.advance(),r=n):e.restorePosition(t)}const n=e.parseExpression();return void 0!==r?{name:r,value:n}:{value:n}}class Tt{constructor(e){this.args=[],this.isBlocking=!1,this.name=e}static from(e){const t=new Tt(e.value);return t.startPos={start:e.start??0,end:e.end??0,line:e.line??1,column:e.column??1},t}static fromIdentifier(e){const t=new Tt(e.name);return void 0!==e.start&&(t.startPos={start:e.start,end:e.end??0,line:e.line??1,column:e.column??1}),t}static named(e){return new Tt(e)}withArgs(...e){return this.args.push(...e),this}withBody(e){return this.body=e,this}withImplicitTarget(e){return this.implicitTarget=e,this}withModifier(e,t){return this.modifiers||(this.modifiers={}),this.modifiers[e]=t,this}withModifiers(e){return this.modifiers={...this.modifiers,...e},this}withName(e){return this.name=e,this}withOriginalCommand(e){return this.originalCmd=e,this}blocking(e=!0){return this.isBlocking=e,this}startingAt(e){return this.startPos={start:e.start??0,end:e.end??0,line:e.line??1,column:e.column??1},this}endingAt(e){return this.endPos={start:e.start??this.startPos?.start??0,end:e.end,line:e.line??this.startPos?.line??1,column:e.column??this.startPos?.column??1},this}build(){const e={type:"command",name:this.name,args:this.args,isBlocking:this.isBlocking,start:this.startPos?.start??0,end:this.endPos?.end??this.startPos?.end??0,line:this.startPos?.line??1,column:this.startPos?.column??1};return this.body&&(e.body=this.body),this.implicitTarget&&(e.implicitTarget=this.implicitTarget),this.modifiers&&(e.modifiers=this.modifiers),this.originalCmd&&(e.originalCommand=this.originalCmd),e}clone(){const e=new Tt(this.name);return e.args=[...this.args],e.body=this.body?[...this.body]:void 0,e.implicitTarget=this.implicitTarget,e.isBlocking=this.isBlocking,e.modifiers=this.modifiers?{...this.modifiers}:void 0,e.originalCmd=this.originalCmd,e.startPos=this.startPos?{...this.startPos}:void 0,e.endPos=this.endPos?{...this.endPos}:void 0,e}}function Ot(e,t){const r=[];let n="";const s=e.peek().start||0,i=e.peek().line||1,a=e.peek().column||1;if(e.checkIdentifierLike()){for(n=e.advance().value;e.check(":")&&!e.isAtEnd();)e.advance(),n+=":",e.checkIdentifierLike()&&(n+=e.advance().value);if(e.check("(")){e.advance();const t=[];for(;!e.isAtEnd()&&!e.check(")");){const{name:r,value:n}=At(e);if(t.push(void 0!==r?{type:"objectLiteral",properties:[{key:{type:"identifier",name:r},value:n}],start:n.start,end:n.end,line:n.line,column:n.column}:n),e.check(","))e.advance();else if(!e.check(")"))break}e.check(")")&&e.advance(),r.push({type:"functionCall",name:n,args:t,start:s,end:e.getPosition().end,line:i,column:a})}else r.push({type:"string",value:n,start:s,end:e.getPosition().end,line:i,column:a})}const o=[...r];for(;!kt(e);){if(e.check("on")||e.check("to")){const t=e.advance().value;o.push(e.createIdentifier(t));continue}o.push(e.parsePrimary())}return Tt.fromIdentifier(t).withArgs(...o).endingAt(e.getPosition()).build()}function Lt(e,t){const r=[];if(e.check(b)){const t=e.advance();if(r.push({type:"identifier",name:b,start:t.start,end:t.end,line:t.line,column:t.column}),e.check(y)){const t=e.advance();r.push({type:"identifier",name:y,start:t.start,end:t.end,line:t.line,column:t.column})}}return Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}function Pt(n,s){const i=[];let a=!1;const o=n.savePosition();for(let t=0;500>t&&!n.isAtEnd();t++){const t=n.peek();if(t.value===e){a=!0;break}if(t.value===r||t.value===g||"def"===t.value||t.value===f)break;n.advance()}n.restorePosition(o);let l=!1;if(!a){const e=n.savePosition(),i=s.line,a=100;for(;!n.isAtEnd()&&a>n.current-e;){const e=n.peek(),s=e.value?.toLowerCase();if(s===g||"def"===s||s===f)break;if(s===t||s===r){e.line===i&&(l=!0);break}if((n.checkIsCommand()||n.isCommand(s))&&void 0!==e.line&&e.line!==i){l=!0;break}n.advance()}n.restorePosition(e)}const c=a||l;let u;if(c)u=n.parseExpression();else{const t=[],r=20;let i=0;for(;!n.isAtEnd()&&!n.checkIsCommand()&&!n.isCommand(n.peek().value)&&!n.check(e)&&r>i;){const e=n.savePosition();t.push(n.parseLogicalAnd()),n.savePosition()===e&&n.advance(),i++}if(0===t.length)throw Error("Expected condition after if/unless");u=1===t.length?t[0]:{type:"expression",tokens:t,start:t[0].start,end:t[t.length-1].end,line:s.line,column:s.column}}if(i.push(u),c){a&&n.advance();const e=[];for(;!n.isAtEnd()&&!n.check(t)&&!n.check(r)&&(n.checkIsCommand()||n.isCommand(n.peek().value));){n.advance();const t=n.parseCommand();t&&e.push(t)}if(0===e.length&&n.isAtEnd())throw Error("Expected command after 'then' in if statement - incomplete conditional");i.push(mt(e,{start:s.start,end:n.getPosition().end,line:s.line,column:s.column}));let o=!1;if(n.check(t))if(n.advance(),n.check("if")){const e=n.peek();n.advance();const t=Pt(n,e);i.push(mt([t],{start:e.start,end:n.getPosition().end,line:e.line,column:e.column})),o=!0}else{const e=[];for(;!n.isAtEnd()&&!n.check(r)&&(n.checkIsCommand()||n.isCommand(n.peek().value));){n.advance();const t=n.parseCommand();t&&e.push(t)}i.push(mt(e,{start:s.start,end:n.getPosition().end,line:s.line,column:s.column}))}o||n.consume(r,"Expected 'end' after if block")}else{if(!n.checkIsCommand()&&!n.isCommand(n.peek().value))throw Error("Expected command after if condition in single-line form");{n.advance();const e=n.parseCommand();i.push(mt([e],{start:s.start,end:n.getPosition().end,line:s.line,column:s.column}))}}return Tt.from(s).withArgs(...i).endingAt(n.getPosition()).build()}function jt(e,t){const r=[],n={};if(e.checkAnySelector()||e.checkContextVar()||e.match("<")){const t=e.parsePrimary();if(r.push(t),e.match("*")){if(e.checkIdentifierLike()){const t=e.advance();r.push({type:"identifier",name:"*"+t.value,start:t.start-1,end:t.end,line:t.line,column:t.column})}}else if(e.checkIdentifierLike()){const t=e.parsePrimary();r.push(t)}}else if(e.checkIdentifierLike()){const t=e.parsePrimary();r.push(t)}if(e.match("and")&&e.match("set")&&e.checkIdentifierLike()){const t=e.advance();n.set={type:"identifier",name:t.value,start:t.start,end:t.end,line:t.line,column:t.column}}const s=Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition());return Object.keys(n).length>0&&s.withModifiers(n),s.build()}function Nt(e,t){const r=[],n=Et(e,[m]);n&&r.push(n),xt(e,m,r);const s=Et(e);return s&&r.push(s),Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}function It(e,t){const r=[];if(e.check("between")){e.advance(),r.push(e.createIdentifier("between"));const i=Et(e,[n]);if(i&&"binaryExpression"===i.type&&"and"===i.operator)i.left&&r.push(i.left),r.push(e.createIdentifier("and")),i.right&&r.push(i.right);else{i&&r.push(i),xt(e,n,r);const t=Et(e,[m,f,s]);t&&r.push(t)}if(Ct(e,[m,f],r)){const t=Et(e);t&&r.push(t)}return Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}const i=Et(e,[m,f]);if(i&&r.push(i),Ct(e,[m,f],r)){const t=Et(e);t&&r.push(t)}return e.check("modal")&&(e.advance(),r.push({type:"literal",value:"modal",raw:"modal"})),Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}function Rt(e,t){const n=e.parseExpression();if(!n)return e.addError("Put command requires content expression"),null;const s=e.peek();if(!s||!S.includes(s.value))return e.addError(`Expected operation keyword (${S.join(", ")}) after put expression, got: ${s?.value}`),null;let i=e.advance().value;const a=i.toLowerCase();"at start of"===a||"at the start of"===a?i=x:"at end of"===a||"at the end of"===a?i=C:"at"===i&&(e.check(w)||e.check(b)?(St(e,b),e.check(w)&&(e.advance(),e.check(h)&&(e.advance(),i=x))):e.check(r)&&(e.advance(),e.check(h)&&(e.advance(),i=C)));const o=e.parseExpression();return o?Tt.fromIdentifier(t).withArgs(n,e.createIdentifier(i),o).endingAt(e.getPosition()).build():(e.addError("Put command requires target expression after operation keyword"),null)}const qt=["innerhtml","outerhtml","into","over","delete","morph","morphouter"];function Mt(s,i){const a=s.savePosition();let o=null,l=[];try{o=function(e){if(!e.check(":"))return null;if(e.advance(),e.check(":")){e.advance();const t=e.advance();return{type:"identifier",name:t.value,scope:"global",start:t.start-2,end:t.end}}const t=e.advance();return{type:"identifier",name:t.value,scope:"element",start:t.start-1,end:t.end}}(s)??function(e){if(!e.check(v)&&!e.check("local"))return null;const t=e.advance(),r=e.advance();return{type:"identifier",name:r.value,scope:t.value,start:t.start,end:r.end}}(s)??function(e){if(!e.check(b))return null;const t=e.savePosition();e.advance();const r=e.parseExpression();if(!r)return e.restorePosition(t),null;if("binaryExpression"===r.type&&r.operator===h){const e=r.left,t=r.right;return yt(e,t,{start:e.start??0,end:t.end??0,line:e.line??1,column:e.column??1})}return e.check(d)?r:(e.restorePosition(t),null)}(s),o||(o=s.parseExpression())}catch{s.restorePosition(a),o=null}if(!o){const i=function(s){if(s.match(":")){const e=s.advance();return{expression:{type:"identifier",name:e.value,scope:"element",start:e.start,end:e.end},tokens:[]}}const i=[];for(;!(s.isAtEnd()||s.check(d)||s.check(e)||s.check(n)||s.check(t)||s.check(r));)i.push(s.parsePrimary());if(0===i.length)return{expression:null,tokens:[]};if(i.length>=4){const e=(e,t)=>e[t];if(e(i[0],"value")===b&&e(i[2],"value")===h){const t=i[1],r=i[3];return{expression:yt(ut(e(t,"value")||e(t,"name")||"",{start:t.start??0,end:t.end??0,line:t.line??1,column:t.column??1}),{type:"idSelector"===r.type?"idSelector":"cssSelector",value:e(r,"value")||e(r,"name")||"",start:r.start??0,end:r.end??0,line:r.line,column:r.column},{start:i[0].start??0,end:r.end??0,line:i[0].line??1,column:i[0].column??1}),tokens:[]}}}return 1===i.length?{expression:i[0],tokens:[]}:{expression:null,tokens:i}}(s);o=i.expression,l=i.tokens}if(!s.check(d)){const e=s.isAtEnd()?"end of input":s.peek().value;throw Error("Expected 'to' in set command, found: "+e)}s.advance();const c=s.parseExpression()??s.parsePrimary();let u;var m;s.check(f)&&(m=s.peekAt(1))&&("selector"===m.kind||m.value.startsWith("<")||_t.has(m.value))&&(s.advance(),u=Et(s));const p=[];o?p.push(o):l.length>0&&p.push(...l),p.push(s.createIdentifier(d)),c&&p.push(c);const y=Tt.fromIdentifier(i).withArgs(...p);return u&&y.withModifier("on",u),y.endingAt(s.getPosition()).build()}const _t=new Set(["me","my","it","its","you","your","yourself"]),$t=new Set(["to","the","url","of","in","new","window","top","middle","bottom","left","center","right","smoothly","instantly","back","forward"]),Vt=new Set(["in","then","and","else","end","otherwise","when","where","catch","finally"]);function Dt(e){return e.isAtEnd()||Vt.has(e.peek().value)}function zt(e,t){return{type:"string",value:e,start:t.start,end:t.end,line:t.line,column:t.column}}function Bt(e,t){const r=[];for(;!kt(e,["catch","finally"])&&(e.checkIdentifierLike()||e.checkSelector()||e.checkLiteral()||e.checkTimeExpression()||e.match("<"));)r.push(e.parsePrimary());return Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}function Ft(e){if(e.isAtEnd())return!0;const t=e.peek().value;return["as","with","{","then","end","else","otherwise",")"].includes(t)||kt(e)}function Ht(e){const t=e.peek();if("/"===t.value)return!0;if(e.checkIdentifierLike()){const r=e.peekAt(1);return!!r&&":"===r.value&&r.start===t.end}return!1}function Wt(e,t=Ft){const r=e.savePosition();let n="";for(;!e.isAtEnd()&&!t(e);)n+=e.advance().value;return n&&"/"!==n?{type:"literal",value:n,raw:n,start:r,end:e.savePosition()}:(e.restorePosition(r),null)}function Ut(e){if(e.check("{"))return!1;if(!e.checkIdentifierLike())return!1;const t=e.peekAt(1);return null!==t&&":"===t.value}function Kt(e){const t=[],r=e.getPosition();do{if(!e.checkIdentifierLike())break;const r=e.advance(),n={type:"identifier",name:r.value,start:r.start,end:r.end,line:r.line,column:r.column};e.consume(":","Expected ':' after property name in fetch named arguments");const s=e.parsePrimary();s&&t.push({key:n,value:s})}while(e.match(",")&&!e.isAtEnd());const n=e.getPosition();return{type:"objectLiteral",properties:t,start:r.start,end:n.end,line:r.line,column:r.column}}const Jt=new Set(["em","ex","cap","ch","ic","rem","lh","rlh","vw","vh","vi","vb","vmin","vmax","cm","mm","Q","pc","pt","px"]);class Zt{constructor(e,t,r){this.current=0,this.errors=[],this.warnings=[],this.prattCache=new Map,this.tokens=e,this.keywordResolver=t?.keywords,this.registryIntegration=t?.registryIntegration,t?.semanticAnalyzer&&t?.language&&(this.semanticAdapter=new ve({analyzer:t.semanticAnalyzer,language:t.language,confidenceThreshold:t.semanticConfidenceThreshold??.5})),this.originalInput=r||e.map(e=>e.value).join(" ")}resolveKeyword(e){return this.keywordResolver?this.keywordResolver.resolve(e)??e:e}addWarning(e){this.warnings.push(e)}parse(){this.prattCache.clear();const e=this.parseInternal();return this.errors.length>0&&(e.errors=[...this.errors]),e}parseInternal(){try{if(0===this.tokens.length)return this.addError("Cannot parse empty input"),{success:!1,node:this.createErrorNode(),tokens:this.tokens,error:this.error,warnings:this.warnings};if(this.check("behavior")){const e=[];for(;this.check("behavior");){this.advance();const t=this.parseBehaviorDefinition();if(t&&e.push(t),this.error)break}return this.error?{success:!1,node:1===e.length?e[0]:this.createProgramNode(e),tokens:this.tokens,error:this.error,warnings:this.warnings}:{success:!0,node:1===e.length?e[0]:this.createProgramNode(e),tokens:this.tokens,warnings:this.warnings}}const e=this.peek(),t=e&&Ie(e.value)?e.value:null;if(this.check("init")||this.check("on")||this.check("def")||this.checkComment()||null!==t){const e=[];for(;!this.isAtEnd();)if(this.checkComment())this.advance();else{if(this.check("then")){const e=this.peekAt(1);if(null!==e&&("init"===e.value||"on"===e.value||"def"===e.value||void 0!==Ie(e.value))){this.advance();continue}}if(this.check("init")){this.advance();const t=this.parseTopLevelInitBlock();t&&e.push(t)}else if(this.check("on")){this.advance();const t=this.parseEventHandler();t&&e.push(t)}else{if(!this.check("def")){const t=this.peek(),r=t?Ie(t.value):void 0;if(r){const t=this.advance(),n=r(this.getContext(),t);n&&e.push(n);continue}break}{this.advance();const t=this.parseDefFeature();t&&e.push(t)}}}return this.isAtEnd()?this.error?{success:!1,node:this.createProgramNode(e),tokens:this.tokens,error:this.error,warnings:this.warnings}:{success:!0,node:this.createProgramNode(e),tokens:this.tokens,warnings:this.warnings}:(this.addError("Unexpected token: "+this.peek().value),{success:!1,node:this.createProgramNode(e),tokens:this.tokens,error:this.error,warnings:this.warnings})}if(this.checkIsCommand()||this.isCommand(this.peek().value)&&!this.isKeyword(this.peek().value)){const e=this.parseCommandSequence();if(e){if(!this.isAtEnd()&&this.check("on")){pe("\u2705 PARSER: Found event handlers after command sequence, parsing as program");const t=[e];pe(`\u2705 PARSER: Starting with ${t.length} statement(s) from command sequence`);let r=0;for(;!this.isAtEnd()&&this.check("on");){pe(`\u2705 PARSER: Parsing event handler #${r+1}, current token: ${this.peek().value}`),this.advance();const e=this.parseEventHandler();if(pe("\u2705 PARSER: parseEventHandler returned:",e?`type=${e.type}, event=${e.event}`:"null"),e&&(t.push(e),r++,pe(`\u2705 PARSER: Added event handler, now have ${t.length} statements total`)),pe(`\u2705 PARSER: After parsing event handler, current token: ${this.isAtEnd()?"END":this.peek().value}, isAtEnd=${this.isAtEnd()}, check('on')=${this.check("on")}`),!this.isAtEnd()&&!this.check("on")){if(!this.isAtEnd())return pe("\u26a0\ufe0f PARSER: Unexpected token after event handlers: "+this.peek().value),this.addError("Unexpected token after event handlers: "+this.peek().value),{success:!1,node:this.createProgramNode(t),tokens:this.tokens,error:this.error};pe("\u2705 PARSER: No more event handlers, at end of input");break}}return pe(`\u2705 PARSER: Finished parsing, creating Program node with ${t.length} statements`),this.error?{success:!1,node:this.createProgramNode(t),tokens:this.tokens,error:this.error,warnings:this.warnings}:{success:!0,node:this.createProgramNode(t),tokens:this.tokens,warnings:this.warnings}}return this.isAtEnd()?this.error?{success:!1,node:e,tokens:this.tokens,error:this.error,warnings:this.warnings}:{success:!0,node:e,tokens:this.tokens,warnings:this.warnings}:(this.addError("Unexpected token: "+this.peek().value),{success:!1,node:e||this.createErrorNode(),tokens:this.tokens,error:this.error})}}const r=this.parseExpression();if(this.error)return{success:!1,node:r||this.createErrorNode(),tokens:this.tokens,error:this.error};if(!this.isAtEnd()){const e=this.peek();return r&&["number","string","identifier"].includes(e.kind)?this.addError(`Unexpected token: ${e.value} (missing operator between values? expected one of +, -, *, /, etc.)`):this.addError("Unexpected token: "+e.value),{success:!1,node:r||this.createErrorNode(),tokens:this.tokens,error:this.error,warnings:this.warnings}}return{success:!0,node:r,tokens:this.tokens,warnings:this.warnings}}catch(e){return this.addError(e instanceof Error?e.message:"Unknown parsing error"),{success:!1,node:this.createErrorNode(),tokens:this.tokens,error:this.error,warnings:this.warnings}}}parseExpression(){return this.parseExpressionPratt(0)}parseExpressionPratt(e){const t=`${this.current}:${e}`,r=this.prattCache.get(t);if(r)return this.current=r.endPos,r.node;if(this.isAtEnd())return this.addError("Unexpected end of expression"),this.createErrorNode();const n=this.peek(),s=Zt.PRATT_TABLE.get(n.value);let i;if(s?.prefix){const e=this.advance();if(this.isAtEnd())return this.addError(`Expected expression after '${e.value}' operator`),this.createErrorNode();i=s.prefix.handler(e,this.makePrattContext())}else i=this.parseCall();for(;!this.isAtEnd();){const t=this.peek();if(60>=e){const e=this.tryParseStringPostfix(i,t);if(e){i=e;continue}}const r=Zt.PRATT_TABLE.get(t.value);if(!r?.infix){if(be.has(t.value)||we.has(t.value))break;break}const[n]=r.infix.bp;if(e>n)break;if("="===t.value&&this.tokens.length>this.current+1&&">"===this.tokens[this.current+1].value){if(this.advance(),this.advance(),this.addError('Arrow functions (=>) are not supported in hyperscript. Use "js ... end" blocks for JavaScript callbacks.'),!this.isAtEnd())try{this.parseExpressionPratt(0)}catch(e){pe("arrow body discarded after error:",e instanceof Error?e.message:e+"")}return this.createErrorNode()}if("+"===t.value||"-"===t.value){const e=this.tokens.length>this.current+1?this.tokens[this.current+1]:null;if(e&&("+"===e.value||"-"===e.value))return this.addError(`Invalid operator combination: ${t.value}${e.value}`),i}if("*"===t.value||"/"===t.value||"%"===t.value){const e=this.tokens.length>this.current+1?this.tokens[this.current+1]:null;if(e&&("*"===e.value||"/"===e.value||"%"===e.value||"+"===e.value||"-"===e.value))return this.addError("*"===t.value&&"*"===e.value?"Unexpected token: "+e.value:`Invalid operator combination: ${t.value}${e.value}`),i}const s=this.advance();if(this.isAtEnd()&&!Zt.POSTFIX_UNARY_OPERATORS.has(s.value))return this.addError(`Expected expression after '${s.value}' operator`),i;i=r.infix.handler(i,s,this.makePrattContext())}return this.prattCache.set(t,{node:i,endPos:this.current}),i}tryParseStringPostfix(e,t){const r=t.value;let n=null;if(Jt.has(r)?n=r:"%"===r&&(this.canStartOperand(this.tokens.length>this.current+1?this.tokens[this.current+1]:null)||(n="%")),null==n)return null;const s=this.advance();return{type:"stringPostfix",expression:e,unit:n,start:e.start,end:s.end,line:e.line,column:e.column}}canStartOperand(e){if(!e)return!1;const t=e.value;return!be.has(t)&&!we.has(t)&&("number"===e.kind||"string"===e.kind||"identifier"===e.kind||"symbol"===e.kind||["(","[","{","-","+","!","#",".","<","$","@"].includes(t))}makePrattContext(){const e=this;return{peek:()=>e.tokens.length>e.current?e.tokens[e.current]:void 0,advance:()=>{const t=e.tokens[e.current];return e.current++,t},parseExpr:t=>e.parseExpressionPratt(t),isStopToken:()=>{const t=e.tokens[e.current];return!t||be.has(t.value)||we.has(t.value)},atEnd:()=>e.current>=e.tokens.length}}parseLogicalAnd(){return this.parseExpressionPratt(11)}parseImplicitBinary(){let e=this.parseCall();for(;!(this.isAtEnd()||this.checkBasicOperator()||this.check("then")||this.check("and")||this.check("else")||this.check(")")||this.check("]")||this.check(","));){if("identifier"!==e.type){if("literal"===e.type&&(this.checkNumber()||this.checkIdentifier())){const t=this.peek();return this.addError(`Missing operator between '${e.raw||e.value}' and '${t.value}'`),e}break}if(this.isCommand(e.name))if(this.isCompoundCommand(e.name.toLowerCase())){if(!(this.checkCssSelector()||this.checkIdSelector()||this.checkClassSelector()||this.checkTimeExpression()||this.checkString()||this.checkNumber()||this.checkContextVar()||this.checkIdentifier()||this.checkKeyword()))break;{const t=this.createCommandFromIdentifier(e);t&&(e=t)}}else if("wait"===e.name.toLowerCase()&&(this.checkTimeExpression()||this.checkNumber()||this.checkIdentifier()||this.checkContextVar()||this.check("("))){const t=this.createCommandFromIdentifier(e);t&&(e=t)}else{if(!this.checkSelector())break;{const t=this.parseCall();e=this.createBinaryExpression(" ",e,t)}}else{if(!this.checkSelector())break;{const t=this.parseCall();e=this.createBinaryExpression(" ",e,t)}}}return e}isCommand(e){return this.keywordResolver?this.keywordResolver.isCommand(e):T(e)}isKeyword(e){return this.keywordResolver?this.keywordResolver.isKeyword(e):L(e)}createCommandFromIdentifier(e){const t=[],r=this.resolveKeyword(e.name.toLowerCase());if(this.isCompoundCommand(r))return this.parseCompoundCommand(e);for(;!(this.isAtEnd()||this.check("then")||this.check("and")||this.check("else")||this.checkIsCommand())&&(this.checkContextVar()||this.checkIdentifier()||this.checkKeyword()||this.checkEvent()||this.checkCssSelector()||this.checkIdSelector()||this.checkClassSelector()||this.checkString()||this.checkNumber()||this.checkTimeExpression()||this.match("<"));)t.push(this.parsePrimary());return{type:"command",name:e.name,args:t,isBlocking:!1,...void 0!==e.start&&{start:e.start},end:this.getPosition().end,...void 0!==e.line&&{line:e.line},...void 0!==e.column&&{column:e.column}}}isCompoundCommand(e){return O(e)}parseCompoundCommand(s){return function(s,i){switch(i.name.toLowerCase()){case"put":return Rt(s,i);case"trigger":case"send":return Ot(s,i);case"remove":return Nt(s,i);case"toggle":return It(s,i);case"set":return Mt(s,i);case"halt":return Lt(s,i);case"measure":return jt(s,i);case"js":return function(e,t){const n=[];if(e.match("(")){for(;!e.check(")")&&!e.isAtEnd();)e.checkIdentifierLike()&&n.push(e.advance().value),e.match(",");e.consume(")","Expected ) after js parameters")}const s=e.peek().start,i=function(e,t){const r=e.getInputSlice(t);if(!r)return t;let n=0;for(;r.length>n;){const e=r[n];if("'"!==e&&"\u2019"!==e&&"\u2018"!==e)if('"'!==e)if("`"!==e)if("/"===e&&r.length>n+1&&"/"===r[n+1])for(n+=2;r.length>n&&"\n"!==r[n];)n++;else if("/"===e&&r.length>n+1&&"*"===r[n+1]){for(n+=2;r.length>n&&("*"!==r[n]||n+1>=r.length||"/"!==r[n+1]);)n++;n+=2}else{if(!("e"!==e&&"E"!==e||n+3>r.length||"end"!==r.slice(n,n+3).toLowerCase()||0!==n&&/[a-zA-Z0-9_]/.test(r[n-1])||r.length>n+3&&/[a-zA-Z0-9_]/.test(r[n+3])))return t+n;n++}else{for(n++;r.length>n&&"`"!==r[n];)"\\"===r[n]&&n++,n++;n++}else{for(n++;r.length>n&&'"'!==r[n];)"\\"===r[n]&&n++,n++;n++}else{for(n++;r.length>n&&r[n]!==e;)"\\"===r[n]&&n++,n++;n++}}return t+r.length}(e,s);for(;!e.isAtEnd()&&!e.check(r)&&e.peek().start<i;)e.advance();e.consume(r,"Expected end after js code body");const a={type:"literal",value:e.getInputSlice(s,i).trim(),start:t.start,end:e.getPosition().end},o={type:"arrayLiteral",elements:n.map(e=>({type:"literal",value:e,start:t.start,end:t.end})),start:t.start,end:e.getPosition().end};return Tt.fromIdentifier(t).withArgs(a,o).endingAt(e.getPosition()).build()}(s,i);case"go":return function(e,t){const r=[];for(;!kt(e,["when","where","catch","finally"]);){const t=e.peek(),n=e.resolveKeyword(t.value).toLowerCase();if($t.has(n)){e.advance(),r.push(zt(n,t));continue}if(Ht(e)){const n=Wt(e,Dt);if(n){r.push(n);continue}e.advance(),r.push(zt(t.value,t));continue}if("+"===t.value||"-"===t.value){e.advance(),r.push(zt(t.value,t));continue}if("number"===t.kind){e.advance();const n=e.peek();if(e.isAtEnd()||"px"!==n.value||n.start!==t.end)r.push({type:"literal",value:Number(t.value),raw:t.value,start:t.start,end:t.end,line:t.line,column:t.column});else{const n=e.advance();r.push(zt(t.value+"px",{...t,end:n.end}))}continue}const s=e.current;if(r.push(e.parsePrimary()),e.current===s)break}return Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}(s,i);case"tell":return function(s,i){const a=s.parseExpression();if(!a)throw Error("tell command requires a target expression");const o=[];for(;!s.isAtEnd();){if(s.checkIsCommand()){try{s.advance();const e=s.parseCommand();if(!e)break;o.push(e)}catch{break}if(s.match(n))continue;if(s.check(e)||s.check(t)||s.check(r))break;if(s.checkIsCommand())continue;break}break}if(0===o.length)throw Error("tell command requires at least one command after the target");return Tt.fromIdentifier(i).withArgs(a,...o).endingAt(s.getPosition()).build()}(s,i);case"pick":return function(e,t){const r=Tt.fromIdentifier(t);St(e,b);const n=e.peek().value,s=e=>({type:"literal",value:e,start:t.start,end:t.end}),i=()=>{if(!e.match("of","from"))throw Error("pick: expected 'of' or 'from' before source expression");return e.parseExpression()};if("first"===n){e.advance();const t=e.parsePrimary(),n=i();return r.withArgs(n).withModifier("variant",s("first")).withModifier("count",t).endingAt(e.getPosition()).build()}if("last"===n){e.advance();const t=e.parsePrimary(),n=i();return r.withArgs(n).withModifier("variant",s("last")).withModifier("count",t).endingAt(e.getPosition()).build()}if("random"===n){let t;e.advance(),e.check("of")||e.check("from")||(t=e.parsePrimary());const n=i(),a=r.withArgs(n).withModifier("variant",s("random"));return t&&a.withModifier("count",t),a.endingAt(e.getPosition()).build()}if("item"===n||"items"===n||"character"===n||"characters"===n){let t,n;e.advance(),e.match("at","from"),t=e.match("start")?s("start"):e.parsePrimary();let a=!1;(e.match("to")||e.match(".."))&&(e.match("end")?a=!0:n=e.parsePrimary());let o="default";e.match("inclusive")?o="inclusive":e.match("exclusive")&&(o="exclusive");const l=i(),c=r.withArgs(l).withModifier("variant",s("range")).withModifier("rangeStart",t).withModifier("rangeMode",s(o));return a?c.withModifier("rangeEnd",s("end")):n&&c.withModifier("rangeEnd",n),c.endingAt(e.getPosition()).build()}if("match"===n||"matches"===n){e.advance(),e.match("of");const t=e.parsePrimary();let a;e.matchOperator("|")&&(a=e.advance().value);const o=i(),l=r.withArgs(o).withModifier("variant",s("match"===n?"match":"matches")).withModifier("regex",t);return a&&l.withModifier("flags",s(a)),l.endingAt(e.getPosition()).build()}return Bt(e,t)}(s,i);case"start":return function(e,t){if(!e.match("view"))throw Error("start: expected 'view transition' (only `start view transition ... end` is supported)");if(!e.match("transition"))throw Error("start view: expected 'transition'");const r={};if(e.match("using")){const t=e.parsePrimary();r.transitionName=t}const n=e.parseCommandListUntilEnd();return Tt.fromIdentifier(t).withArgs(...n).withModifiers(r).endingAt(e.getPosition()).build()}(s,i);case"swap":case"morph":return function(e,t){const r=[];let n=null;if(!e.isAtEnd()){const t=e.peek();if(t&&t.value){const s=t.value.toLowerCase();qt.includes(s)&&(n=s,e.advance(),r.push(e.createIdentifier(n)))}}if("delete"===n){const n=e.parseExpression();return n&&r.push(n),Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}!e.isAtEnd()&&e.check(h)&&(e.advance(),r.push(e.createIdentifier("of")));const s=e.parseExpression();if(s&&r.push(s),!e.isAtEnd()&&e.check(p)){e.advance(),r.push(e.createIdentifier("with"));const t=e.parseExpression();t&&r.push(t)}return Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}(s,i);default:return Bt(s,i)}}(this.getContext(),s)}parsePutCommand(e){return Rt(this.getContext(),e)}parseSetCommand(e){return Mt(this.getContext(),e)}parseHaltCommand(e){return Lt(this.getContext(),e)}parseMeasureCommand(e){return jt(this.getContext(),e)}parseTriggerCommand(e){return Ot(this.getContext(),e)}parseCommandListUntilTerminator(e){const t=[],r=()=>this.check("end")||e.some(e=>this.check(e));for(pe("\ud83d\udd04 parseCommandListUntilTerminator: Starting (extraStops:",e.join(","),")");!this.isAtEnd()&&!r();){pe("\ud83d\udccd Loop iteration, current token:",this.peek().value,"kind:",this.peek().kind);let e=!1;const n=this.checkIsCommand(),s=!n&&this.checkIdentifier()&&this.isCommand(this.peek().value);if(n||s){pe(n?"\u2705 Found COMMAND token:":"\u2705 Found IDENTIFIER that is a command:",this.peek().value),this.advance();const r=this.error;try{const n=this.parseCommand();this.error&&this.error!==r&&(pe("\u26a0\ufe0f parseCommandListUntilTerminator: Command parsing added error, restoring. Error was:",this.error.message),this.error=r),n&&(pe("\u2705 Parsed command:",n.name),t.push(n),e=!0)}catch(e){pe("\u26a0\ufe0f parseCommandListUntilTerminator: Command parsing threw, restoring:",e instanceof Error?e.message:e+""),this.error=r}}else this.checkIdentifier()&&pe("\u274c IDENTIFIER is not a command:",this.peek().value);if(!e){pe("\u274c No command parsed, breaking. Current token:",this.peek().value);break}for(pe("\ud83d\udccd After parsing command, current token:",this.peek().value);!(this.isAtEnd()||r()||this.checkIsCommand()||this.isCommand(this.peek().value)||this.check("then")||this.check("and")||this.check(","));)pe("\u26a0\ufe0f Skipping unexpected token:",this.peek().value),this.advance();if(this.match("then","and",","))pe("\u2705 Found separator, continuing");else{if(!this.checkIsCommand()&&!this.isCommand(this.peek().value)){pe("\ud83d\udccd No separator and no command, breaking. Current token:",this.peek().value);break}pe("\u2705 Next token is a command, continuing without separator")}}let n="end";for(const t of e)if(this.check(t)){n=t;break}return this.check("end")||e.some(e=>this.check(e))||(n=""),pe("\u2705 parseCommandListUntilTerminator: parsed",t.length,"commands (terminator:",n,")"),{commands:t,terminator:n}}parseCommandListUntilEnd(){const{commands:e}=this.parseCommandListUntilTerminator([]);if(pe('\ud83d\udd0d After loop, checking for "end". Current token:',this.peek().value),!this.check("end"))throw pe('\u274c ERROR: Expected "end" but got:',this.peek().value,"at position:",this.peek().start),Error('Expected "end" to close repeat block');return pe('\u2705 Found "end", consuming it'),this.advance(),e}parseCommandListUntilEndOrElse(){const{commands:e,terminator:t}=this.parseCommandListUntilTerminator(["else"]),r="else"===t;if(!r){if(!this.check("end"))throw Error('Expected "end" to close repeat block');this.advance()}return{commands:e,hasElse:r}}parseRepeatBody(){const{commands:e,terminator:t}=this.parseCommandListUntilTerminator(["else","until","while"]);if("end"===t)this.advance();else if(""===t)throw Error('Expected "end", "else", "until", or "while" to close repeat block');return{commands:e,terminator:t}}parseRepeatCommand(e){return function(e,t){const r=[];let n="forever",d=null,h=null,f=null,g=null,v=null,w=null;if(e.check(s)){e.advance(),n=s;const t=e.peek();He(t)&&(v=t.value,e.advance()),e.check(u)&&(e.advance(),g=e.parseExpression())}else if(e.check(u))e.advance(),n=s,v="it",g=e.parseExpression();else if(e.check(i))e.advance(),n=i,f=e.parseExpression();else if(e.check(a))if(e.advance(),n=a,e.check(y)){e.advance(),n="until-event";const t=e.peek();if(pe("\ud83d\udccd Parsing event name, current token:",{value:t.value,kind:t.kind}),!He(t)&&!ze(t))throw Error('Expected event name after "event"');if(d=t.value,e.advance(),pe("\u2705 Got event name:",d,"Next token:",e.peek().value),pe('\ud83d\udd0d Checking for "from", current token:',e.peek().value),e.check(m)){pe('\u2705 Found "from", advancing...'),e.advance(),pe('\ud83d\udccd After consuming "from", current token:',e.peek().value),St(e,b)&&pe('\u2705 Found "the", advancing...');const t=e.peek();pe("\ud83d\udd0d Before parsePrimary for event target:",{value:t.value,kind:t.kind,position:t.start}),h=e.parsePrimary(),pe("\u2705 After parsePrimary, eventTarget:",h)}else pe('\u274c No "from" found, skipping target parsing')}else f=e.parseExpression();else e.check(o)?(e.advance(),n=o):(w=e.parseExpression(),e.check(l)&&(e.advance(),n=l));let k,E=null;if(e.check(p)){const t=e.peekAt(1);t&&t.value.toLowerCase()===c&&(e.advance(),e.advance(),E=c)}else if(e.check(c)){e.advance();const t=e.peek();He(t)?(E=t.value,e.advance()):E=c}let x=null,C=!1;if(n===o){const t=e.parseRepeatBody();if(k=t.commands,"else"===t.terminator)e.advance(),x=e.parseCommandListUntilEnd();else if("until"===t.terminator||"while"===t.terminator){if(C=!0,n=t.terminator,e.advance(),f=e.parseExpression(),!e.check("end"))throw Error('Expected "end" to close repeat block');e.advance()}}else{const t=e.parseCommandListUntilEndOrElse();k=t.commands,t.hasElse&&(e.advance(),x=e.parseCommandListUntilEnd())}r.push({type:"identifier",name:n,start:t.start,end:t.end,line:t.line,column:t.column});const S={start:t.start,end:t.end,line:t.line,column:t.column};v&&r.push(pt(v,S)),g&&r.push(g),f&&r.push(f),w&&r.push(w),d&&r.push(pt(d,S)),h&&r.push(h),E&&r.push(pt(E,S)),r.push(mt(k,{...S,end:S.end||0})),null!==x&&r.push(mt(x,{...S,end:S.end||0}));const A=Tt.from(t).withArgs(...r);return C&&A.withModifier("bottomTested",{type:"literal",value:!0,...S}),A.endingAt(e.getPosition()).build()}(this.getContext(),e)}parseForCommand(e){return function(e,t){const r=[];let n=null,s=null;e.check("each")&&e.advance();const i=e.peek();if(!He(i))throw Error('Expected variable name after "for"');if(n=i.value,e.advance(),!e.check(u))throw Error('Expected "in" after variable name in for loop');if(e.advance(),s=e.parseExpression(),!s)throw Error('Expected collection expression after "in"');let a=null;if(e.check(p)){const t=e.peekAt(1);t&&t.value.toLowerCase()===c&&(e.advance(),e.advance(),a=c)}else if(e.check(c)){e.advance();const t=e.peek();He(t)?(a=t.value,e.advance()):a=c}const o=e.parseCommandListUntilEnd();r.push({type:"identifier",name:"for",start:t.start,end:t.end,line:t.line,column:t.column});const l={start:t.start,end:t.end,line:t.line,column:t.column};return r.push(pt(n,l)),r.push(s),a&&r.push(pt(a,l)),r.push(mt(o,{...l,end:l.end||0})),Tt.from({...t,value:"repeat"}).withArgs(...r).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseWaitCommand(e){return function(e,t){const r=[];if(e.checkTimeExpression()||e.checkLiteral()||e.checkContextVar()||e.check("(")||e.checkIdentifierLike()&&!e.check("for")&&!kt(e)){const n=e.parseExpression();return r.push(n),Tt.from(t).withArgs(...r).blocking().endingAt(e.getPosition()).build()}if(e.check("for")){e.advance();const n=[];do{const t=e.peek();if(!He(t))throw Error('Expected event name after "for"');const r=t.value;e.advance();const s=[];if(e.check("(")){for(e.advance();!e.isAtEnd()&&!e.check(")");){const t=e.peek();if(!He(t))break;s.push(t.value),e.advance(),e.check(",")&&e.advance()}if(!e.check(")"))throw Error('Expected ")" after event parameters');e.advance()}if(n.push({name:r,params:s}),!e.check("or"))break;e.advance()}while(!e.isAtEnd());let s=null;e.check(m)&&(e.advance(),St(e,b),s=e.parsePrimary());const i={start:t.start,end:e.getPosition().end,line:t.line,column:t.column};r.push(ft(n.map(e=>ht([{key:ut("name",i),value:ct(e.name,`"${e.name}"`,i)},{key:ut("args",i),value:ft(e.params.map(e=>ct(e,`"${e}"`,i)),i)}],i)),i)),s&&r.push(s)}return Tt.from(t).withArgs(...r).blocking().endingAt(e.getPosition()).build()}(this.getContext(),e)}parseInstallCommand(e){return function(e,t){const r=[];if(!e.checkIdentifierLike())throw Error('Expected behavior name after "install"');const n=e.advance().value,s=e.previous();if(r.push(ut(n,{start:s.start,end:s.end,line:s.line,column:s.column})),e.check("(")){e.advance();const n=[];for(;!e.isAtEnd()&&!e.check(")");)if(n.push(At(e)),e.check(","))e.advance();else if(!e.check(")"))break;if(!e.check(")"))throw Error('Expected ")" after behavior parameters');if(e.advance(),n.length>0){const s={start:t.start,end:e.getPosition().end,line:t.line,column:t.column};r.push(ht(n.map(e=>({key:e.name?ut(e.name,s):ct("_positional","_positional",s),value:e.value})),s))}}return Tt.from(t).withArgs(...r).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseTransitionCommand(e){return function(e,t){const r=[],n={};let s=null;const i=e.peek();if(He(i)||"*"===i.value){let t="";e.check("*")&&(t="*",e.advance());const r=function(e){if(!e.checkIdentifierLike())return"";let t=e.advance().value;for(;e.check("-")&&!e.isAtEnd();)t+="-",e.advance(),e.checkIdentifierLike()&&(t+=e.advance().value);return t}(e);r&&(t+=r,s={type:"string",value:t,start:i.start||0,end:e.getPosition().end,line:i.line,column:i.column})}if(!s)throw Error("Transition command requires a CSS property");if(r.push(s),!e.check(d))throw Error('Expected "to" keyword after property in transition command');e.advance();const a=e.parsePrimary();if(n.to=a,e.check("over")){e.advance();const t=e.parsePrimary();n.over=t}if(e.check(p)){e.advance();const t=e.parsePrimary();n.with=t}return Tt.from(t).withArgs(...r).withModifiers(n).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseAddCommand(e){return function(e,t){const r=[];if(e.match("{"))r.push(e.parseCSSObjectLiteral());else{const t=Et(e,[d]);t&&r.push(t)}if(e.check(d)){e.advance();const t=Et(e);t&&r.push(t)}return Tt.from(t).withArgs(...r).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseIfCommand(e){return Pt(this.getContext(),e)}parseRemoveCommand(e){return Nt(this.getContext(),e)}parseToggleCommand(e){return It(this.getContext(),e)}parseRegularCommand(e){return Bt(this.getContext(),e)}parseCall(){let e=this.parsePrimary();for(;;)if(this.match("("))e=this.finishCall(e);else if(this.match(".")){const t=this.consumeIdentifierLike("Expected property name after '.' - malformed member access");e=this.createMemberExpression(e,this.createIdentifier(t.value),!1)}else if(this.match("?.")){const t=this.consumeIdentifierLike("Expected property name after '?.' - malformed optional access"),r=this.createMemberExpression(e,this.createIdentifier(t.value),!1);r.optional=!0,e=r}else if(this.match("[")){const t=this.parseExpression();this.consume("]","Expected ']' after array index"),e=this.createMemberExpression(e,t,!0)}else{if(!this.check("'s"))break;{let t;this.advance(),this.check("*")?(this.advance(),t="*"+this.consumeIdentifier("Expected property name after * in CSS property syntax").value):Xe(this.peek())&&this.peek().value.startsWith("@")?t=this.advance().value:this.check("[")&&this.tokens[this.current+1]?.value?.startsWith("@")?(this.advance(),t=this.advance().value,this.consume("]","Expected ']' after attribute reference")):t=this.consumeIdentifierLike("Expected property name after possessive").value,e=this.createPossessiveExpression(e,this.createIdentifier(t))}}return e}parsePrimary(){if(this.check("*")){const e=this.current;if(this.advance(),!this.isAtEnd()&&He(this.peek())){const e=this.advance().value;return this.createSelector("*"+e)}this.current=e}if(this.check("*")||this.check("/")||this.check("%")||this.check("mod")){const e=this.peek();return this.addError(`Binary operator '${e.value}' requires a left operand`),this.createErrorNode()}if(this.matchNumber()){const e=parseFloat(this.previous().value);return this.createLiteral(e,this.previous().value)}if(this.matchString()){const e=this.previous().value;if(2>e.length||e.startsWith('"')&&!e.endsWith('"')||e.startsWith("'")&&!e.endsWith("'"))return this.addError("Unclosed string literal - string not properly closed"),this.createErrorNode();const t=e.slice(1,-1),r=this.processEscapeSequences(t);return this.createLiteral(r,e)}if(this.matchTemplateLiteral()){const e=this.previous();return{type:"templateLiteral",value:e.value,start:e.start||0,end:e.end||0,line:e.line,column:e.column}}if(this.matchBoolean()){const e=this.previous().value;let t;switch(e){case"true":t=!0;break;case"false":t=!1;break;case"null":t=null;break;case"undefined":t=void 0;break;default:t="true"===e}return this.createLiteral(t,e)}if(this.matchTimeExpression()){const e=this.previous().value;return this.createLiteral(e,e)}if(this.matchQueryReference()){const e=this.previous().value,t=e.slice(1,-2).trim(),r=this.createSelector(t);return r.fromQuery=!0,r.raw=e,r}if(this.matchSelector())return this.createSelector(this.previous().value);if(this.match("<"))return this.parseHyperscriptSelector();if(this.match("(")){if(this.isAtEnd())return this.addError("Expected expression inside parentheses"),this.createErrorNode();const e=this.parseExpression();return this.consume(")","Expected closing parenthesis ')' after expression - unclosed parentheses"),e}if(this.match("{"))return this.parseObjectLiteral();if(this.match("["))return this.parseAttributeOrArrayLiteral();if(this.check(":")){if(this.advance(),this.check(":")){this.advance();const e=this.advance();return{type:"identifier",name:e.value,scope:"global",start:e.start-2,end:e.end,line:e.line,column:e.column}}{const e=this.advance();return{type:"identifier",name:e.value,scope:"element",start:e.start-1,end:e.end,line:e.line,column:e.column}}}if(this.matchBasicOperator()){const e=this.previous();return this.createIdentifier(e.value)}const e=this.peek();if((!e||"end"!==e.value&&"else"!==e.value&&"then"!==e.value)&&(this.matchPredicate(Ge)||this.matchPredicate(De)||this.matchPredicate(Be)||this.matchPredicate(Ve)||this.matchPredicate(ze))){const e=this.previous();if("new"===e.value)return this.parseConstructorCall();if("on"===e.value)return this.parseEventHandler();if("if"===e.value)return this.parseConditional();if("closest"===e.value||"first"===e.value||"last"===e.value||"previous"===e.value||"next"===e.value){if(this.check("(")||this.checkCssSelector()||this.checkClassSelector()||this.checkIdSelector()||this.check("<")||this.checkQueryReference())return this.parseNavigationFunction(e.value);if(this.check(".")){const t=this.current;if(this.advance(),this.checkIdentifier()){const t=this.advance().value,r=this.createSelector("."+t);return this.createCallExpression(this.createIdentifier(e.value),[r])}this.current=t}if(this.check("#")){const t=this.current;if(this.advance(),this.checkIdentifier()){const t=this.advance().value,r=this.createSelector("#"+t);return this.createCallExpression(this.createIdentifier(e.value),[r])}this.current=t}return this.isAtEnd()||this.checkBasicOperator()||this.check("then")||this.check("else")||this.check("end")?this.createIdentifier(e.value):this.parseNavigationFunction(e.value)}const t=this.check(".")||this.check("?.");return"my"!==e.value||t?"its"!==e.value||t?"your"!==e.value||t?"the"===e.value?this.parseTheXofY():"values"===e.value&&this.check("of")?(this.advance(),{type:"propertyOfExpression",property:{type:"identifier",name:"values"},target:this.parsePrimary(),line:e.line,column:e.column}):this.createIdentifier(e.value):this.parseContextPropertyAccess("you"):this.parseContextPropertyAccess("it"):this.parseContextPropertyAccess("me")}if(this.match("$"))return this.parseDollarExpression();if("\\"===this.peek().value)return this.parseBlockLiteral();if(Xe(this.peek())&&this.peek().value.startsWith("@")){const e=this.advance();return{type:"attributeAccess",attributeName:e.value.substring(1),start:e.start,end:e.end,line:e.line,column:e.column}}const t=this.peek();return this.addError(`Unexpected token: ${t.value} at line ${t.line}, column ${t.column}`),this.advance(),this.createErrorNode()}parseBlockLiteral(){const e=this.peek().start;this.advance();const t=[];for(;!(this.isAtEnd()||this.check("-")&&">"===this.tokens[this.current+1]?.value);){if(!this.checkIdentifier()){this.addError("Unexpected token in block literal parameters: "+this.peek().value);break}t.push(this.advance().value),this.match(",")}return this.check("-")&&">"===this.tokens[this.current+1]?.value?(this.advance(),this.advance(),{type:"blockLiteral",parameters:t,body:this.parseExpression(),start:e,end:this.previous().end,line:this.previous().line,column:this.previous().column}):(this.addError("Expected '->' in block literal"),this.createErrorNode())}parseDollarExpression(){if(this.checkNumber()){const e=this.advance().value;return this.createLiteral(e,"$"+e)}if(this.checkIdentifier()){const e=this.advance();let t=this.createIdentifier(e.value);for(;this.match(".");){if(!this.checkIdentifier())return this.addError("Expected property name after '.' in dollar expression"),this.createErrorNode();{const e=this.advance();t=this.createMemberExpression(t,this.createIdentifier(e.value),!1)}}return{type:"dollarExpression",expression:t,raw:`$${e.value}${this.previous().value||""}`,line:e.line,column:e.column-1}}return this.addError("Expected identifier or number after '$'"),this.createErrorNode()}parseHyperscriptSelector(){let e="";for(;!this.check("/")&&!this.isAtEnd();)e+=this.advance().value;return this.consume("/","Expected '/' in hyperscript selector"),this.consume(">","Expected '>' after '/' in hyperscript selector"),this.createSelector(e)}parseObjectLiteral(){const e=[],t=this.getPosition();if(this.check("}"))return this.advance(),{type:"objectLiteral",properties:e,start:t.start,end:this.getPosition().end,line:t.line,column:t.column};do{let t;if(this.check("["))this.advance(),t=this.parseExpression(),this.consume("]","Expected ']' after computed property name in object literal");else if(this.matchString()){const e=this.previous().value,r=e.slice(1,-1);t=this.createLiteral(r,e)}else{if(!this.check("-")&&!this.checkPredicate(Ge))return this.addError("Expected property name in object literal"),this.createErrorNode();{let e="",r=!1;for(;this.check("-");)this.advance(),e+="-",r=!0;for(this.checkPredicate(Ge)&&(e+=this.advance().value);this.check("-");)this.advance(),e+="-",r=!0,this.checkPredicate(Ge)&&(e+=this.advance().value);if(""===e||"-"===e)return this.addError("Expected property name in object literal"),this.createErrorNode();t=r?this.createLiteral(e,e):this.createIdentifier(e)}}this.consume(":","Expected ':' after property name in object literal");const r=this.parseExpression();if(e.push({key:t,value:r}),!this.match(","))break;if(this.check("}"))break}while(!this.isAtEnd());return this.consume("}","Expected '}' after object literal properties"),{type:"objectLiteral",properties:e,start:t.start,end:this.getPosition().end,line:t.line,column:t.column}}parseCSSObjectLiteral(){const e=this.getPosition(),t=[];do{if(this.check("}"))break;let r;if(this.matchPredicate(Ge))r=this.createIdentifier(this.previous().value);else{if(!this.matchString())return this.addError("Expected CSS property name"),this.createErrorNode();{const e=this.previous().value,t=e.slice(1,-1);r=this.createLiteral(t,e)}}if(!this.consume(":","Expected ':' after CSS property name"))return this.createErrorNode();const n=[];let s=!1,i=0,a=-1,o=-1;for(;!this.isAtEnd()&&(0!==i||!this.check(";")&&!this.check("}"));){const e=this.advance();n.push(e.value),0>a&&"number"==typeof e.start&&(a=e.start),"number"==typeof e.end&&(o=e.end),"$"===e.value&&this.check("{")&&(s=!0),"{"===e.value&&i++,"}"===e.value&&i--}const l=this.originalInput&&a>=0&&o>a?this.originalInput.slice(a,o):n.join(""),c=s?{type:"templateLiteral",value:l,start:e.start,end:this.getPosition().end,line:e.line,column:e.column}:this.createLiteral(l,l);if(t.push({key:r,value:c}),this.check(";")&&this.advance(),this.check("}"))break}while(!this.isAtEnd());return this.consume("}","Expected '}' after CSS object literal properties"),{type:"objectLiteral",properties:t,start:e.start,end:this.getPosition().end,line:e.line,column:e.column}}parseConstructorCall(){const e=this.previous();if(!this.checkIdentifier())return this.addError('Expected constructor name after "new"'),this.createErrorNode();const t=this.advance(),r=t.value;if(!this.check("("))return this.addError('Expected "(" after constructor name'),this.createErrorNode();this.advance();const n=[];if(!this.check(")"))do{n.push(this.parseExpression())}while(this.match(","));return this.consume(")","Expected ')' after constructor arguments"),{type:"callExpression",callee:{type:"identifier",name:r,start:t.start,end:t.end,line:t.line,column:t.column},arguments:n,isConstructor:!0,start:e.start,end:this.previous().end,line:e.line,column:e.column}}parseTopLevelInitBlock(){const e=this.getPosition(),t=this.parseCommandBlock(["end"]);return this.consume("end","Expected 'end' after init block"),{type:"initBlock",commands:t,start:e.start,end:this.getPosition().end,line:e.line,column:e.column}}parseDefFeature(){const e=this.getPosition();let t="";if(!this.checkIdentifier())return this.addError("Expected function name after 'def'"),{type:"def",name:"",params:[],body:[],start:e.start,end:this.getPosition().end,line:e.line,column:e.column};for(t=this.advance().value;this.check(".");)this.advance(),this.checkIdentifier()&&(t+="."+this.advance().value);const r=[];if(this.check("(")){if(this.advance(),!this.check(")"))for(this.checkIdentifier()&&r.push(this.advance().value);this.check(",");)this.advance(),this.checkIdentifier()&&r.push(this.advance().value);this.consume(")","Expected ')' after parameter list")}const n=this.parseCommandBlock(["end","catch","finally"]),{errorSymbol:s,errorHandler:i,finallyHandler:a}=this.parseErrorAndFinallyBlocks();return this.consume("end","Expected 'end' after function definition"),{type:"def",name:t,params:r,body:n,...void 0!==s&&{errorSymbol:s},...void 0!==i&&{errorHandler:i},...void 0!==a&&{finallyHandler:a},start:e.start,end:this.getPosition().end,line:e.line,column:e.column}}parseErrorAndFinallyBlocks(){let e,t,r;return this.check("catch")&&(this.advance(),this.checkIdentifier()&&(e=this.advance().value),t=this.parseCommandBlock(["end","finally"])),this.check("finally")&&(this.advance(),r=this.parseCommandBlock(["end"])),{...void 0!==e&&{errorSymbol:e},...void 0!==t&&{errorHandler:t},...void 0!==r&&{finallyHandler:r}}}parseEventNameWithNamespace(e){let t;t=this.checkEvent()||this.checkIdentifier()||this.checkIsCommand()||this.checkIdentifierLike()?this.advance():this.consumeEvent(e);let r=t.value;return this.check(":")&&(this.advance(),r=`${r}:${this.advance().value}`),r}callExprToCommandNode(e,t){return{type:"command",name:e.callee.name,args:e.arguments,isBlocking:!1,...void 0!==t.start&&{start:t.start},...void 0!==t.end&&{end:t.end},...void 0!==t.line&&{line:t.line},...void 0!==t.column&&{column:t.column}}}createPseudoCommandNode(e,t,r,n,s){return{type:"command",name:"pseudo-command",args:[{type:"objectLiteral",properties:[{key:{type:"identifier",name:"methodName"},value:{type:"literal",value:e,raw:`"${e}"`}},{key:{type:"identifier",name:"methodArgs"},value:{type:"literal",value:t.arguments,raw:JSON.stringify(t.arguments)}},...r?[{key:{type:"identifier",name:"preposition"},value:{type:"literal",value:r,raw:`"${r}"`}}]:[],{key:{type:"identifier",name:"targetExpression"},value:n}]}],isBlocking:!1,...void 0!==s.start&&{start:s.start},...void 0!==s.end&&{end:s.end},...void 0!==s.line&&{line:s.line},...void 0!==s.column&&{column:s.column}}}tryParsePseudoCommand(e,t){const r=e.callee.name,n=this.peek();if(!(Zt.PSEUDO_COMMAND_PREPOSITIONS.includes(n.value.toLowerCase())||Ge(n)&&!this.isCommand(n.value)||Be(n)))return{node:this.callExprToCommandNode(e,t),isPseudo:!1,targetFailed:!1};let s,i;this.isCommand(r)&&this.addWarning({type:"command-shadow",message:`Method '${r}' shadows hyperscript command`,suggestions:[`Rename method to avoid confusion (e.g., '${r}Fn', 'my${r.charAt(0).toUpperCase()+r.slice(1)}')`,`Use 'call' command instead: call ${r}(...)`,"This works but may cause ambiguity"],severity:"warning",code:"PSEUDO_CMD_SHADOW",...void 0!==t.line&&{line:t.line},...void 0!==t.column&&{column:t.column}}),Zt.PSEUDO_COMMAND_PREPOSITIONS.includes(this.peek().value.toLowerCase())&&(s=this.advance().value.toLowerCase());try{i=this.parseExpression()}catch{return{node:this.callExprToCommandNode(e,t),isPseudo:!1,targetFailed:!0}}return{node:this.createPseudoCommandNode(r,e,s,i,t),isPseudo:!0,targetFailed:!1}}parseCommandWithErrorRecovery(){this.advance();const e=this.error;try{const t=this.parseCommand();return this.error&&this.error!==e&&(pe("\u26a0\ufe0f Command parsing added error, restoring error state. Error was:",this.error.message),this.error=e),t}catch(t){return pe("\u26a0\ufe0f Command parsing threw exception, restoring error state:",t instanceof Error?t.message:t+""),this.error=e,null}}parseTemporalKeywordModifiers(e){if(!this.check("debounced")&&!this.check("throttled"))return;const t=this.advance().value.toLowerCase(),r="debounced"===t?"debounce":"throttle";if(this.match("at"))if(this.checkTimeExpression()){const s=this.advance(),i=(n=s.value).endsWith("ms")?parseInt(n,10):n.endsWith("seconds")||n.endsWith("s")?1e3*parseFloat(n):n.endsWith("minutes")?6e4*parseFloat(n):n.endsWith("hours")?36e5*parseFloat(n):n.endsWith("days")?864e5*parseFloat(n):parseInt(n,10);e[r]=i,pe(`\ud83d\udd27 parseEventHandler: Parsed '${t} at ${s.value}' (${i}ms)`)}else if(this.matchNumber()){const n=parseInt(this.previous().value,10);e[r]=n,pe(`\ud83d\udd27 parseEventHandler: Parsed '${t} at ${n}'`)}else this.addError(`Expected time expression after '${t} at', got: ${this.peek().value}`);else this.addError(`Expected 'at' after '${t}'`);var n}parseEventHandler(){pe("\ud83d\udd27 parseEventHandler: ENTRY - parsing event handler");const e=[];let t=!1;if(this.check("first")&&!this.checkIsCommand()&&this.tokens.length>this.current+1){const e=this.tokens[this.current+1],r=e?.value?.toLowerCase();r&&"of"!==r&&"in"!==r&&"from"!==r&&(this.advance(),t=!0,pe("\ud83d\udd27 parseEventHandler: Parsed 'first' as .once alias"))}const r=this.parseEventNameWithNamespace("Expected event name after 'on'");for(e.push(r),pe("\ud83d\udd27 parseEventHandler: Parsed first event name: "+r);this.check("or");){this.advance(),pe("\ud83d\udd27 parseEventHandler: Found 'or', parsing additional event name");const t=this.parseEventNameWithNamespace("Expected event name after 'or'");e.push(t),pe("\ud83d\udd27 parseEventHandler: Parsed additional event name: "+t)}let n;if(pe("\ud83d\udd27 parseEventHandler: Total events parsed: "+e.join(", ")),this.registryIntegration){const t=e[0];if(this.registryIntegration.hasEventSource(t)){const e=this.registryIntegration.getEventSource(t);n=e?.name,pe(`\ud83d\udd27 parseEventHandler: Detected custom event source '${n}' for event '${t}'`)}}const s=[];if(this.match("(")){if(!this.check(")"))do{const e=this.advance();s.push(e.value)}while(this.match(","));this.consume(")","Expected ')' after event parameters"),pe("\ud83d\udd27 parseEventHandler: Parsed event parameters: "+s.join(", "))}const i={};for(;this.check(".");){this.advance();const e=this.advance().value.toLowerCase();if("once"===e)i.once=!0,pe("\ud83d\udd27 parseEventHandler: Parsed modifier '.once'");else if("prevent"===e)i.prevent=!0,pe("\ud83d\udd27 parseEventHandler: Parsed modifier '.prevent'");else if("stop"===e)i.stop=!0,pe("\ud83d\udd27 parseEventHandler: Parsed modifier '.stop'");else if("debounce"===e||"throttle"===e){if(!this.check("("))throw Error(`Expected '(' after '.${e}'`);{this.advance();const t=this.advance(),r=parseInt(t.value,10);if(isNaN(r))throw Error(`Expected number for ${e} delay, got: ${t.value}`);"debounce"===e?(i.debounce=r,pe(`\ud83d\udd27 parseEventHandler: Parsed modifier '.debounce(${r})'`)):(i.throttle=r,pe(`\ud83d\udd27 parseEventHandler: Parsed modifier '.throttle(${r})'`)),this.consume(")",`Expected ')' after ${e} delay`)}}else pe(`\ud83d\udd27 parseEventHandler: Warning - unknown modifier '.${e}'`)}let a,o,l,c;if(this.parseTemporalKeywordModifiers(i),t&&(i.once=!0),Object.keys(i).length>0&&pe("\ud83d\udd27 parseEventHandler: Parsed modifiers:",i),this.match("[")&&(a=this.parseExpression(),this.consume("]","Expected ']' after event condition")),this.match("from")){const e=this.advance();o=e.value,pe(`\ud83d\udd27 parseEventHandler: Parsed 'from' target: ${o} (kind: ${e.kind})`),this.parseTemporalKeywordModifiers(i)}if(this.match("of")){const e=this.advance();l=e.value.startsWith("@")?e.value.substring(1):e.value,pe("\ud83d\udd27 parseEventHandler: Parsed attribute name: "+l)}this.match("in")&&(pe("\ud83d\udd27 parseEventHandler: Found 'in' keyword, parsing watch target"),c=this.parseExpression(),pe("\ud83d\udd27 parseEventHandler: Parsed watch target expression"));const u=[];for(pe(`\u2705 parseEventHandler: About to parse commands, current token: ${this.isAtEnd()?"END":this.peek().value}, isAtEnd: ${this.isAtEnd()}`);!this.isAtEnd();){if(pe(`\u2705 parseEventHandler: Loop iteration, current token: ${this.peek().value}, kind: ${this.peek().kind}`),this.check("on")){pe("\u2705 parseEventHandler: Stopping command parsing, found next event handler 'on'");break}if(this.checkComment())pe("\u2705 parseEventHandler: Skipping comment token: "+this.peek().value),this.advance();else{if(this.check("end")){pe("\u2705 parseEventHandler: Stopping command parsing, found 'end' keyword"),this.advance();break}if(this.check("catch")||this.check("finally")){pe(`\u2705 parseEventHandler: Stopping command parsing, found '${this.peek().value}'`);break}if(this.checkIsCommand()){const e="("===this.tokens[this.current+1]?.value,t=this.peek().value.toLowerCase();if(e&&"js"!==t&&"tell"!==t){let e;const t=this.error;try{e=this.parseExpression()}catch(e){this.error=t,this.advance();const r=this.parseCommand();u.push(r);continue}if(e&&"callExpression"===e.type){const t=this.tryParsePseudoCommand(e,e);if(u.push(t.node),t.isPseudo||t.targetFailed)continue}}else{const e=this.parseCommandWithErrorRecovery();e&&(u.push(e),pe("\u2705 parseEventHandler: Parsed command, next token: "+(this.isAtEnd()?"END":this.peek().value)))}}else{if(!this.checkIdentifier())break;{const e=this.peek();if(this.isCommand(e.value)){const e=this.parseCommandWithErrorRecovery();e&&u.push(e)}else{let e;const t=this.error;try{e=this.parseExpression()}catch(e){pe("\u26a0\ufe0f Expression parsing error, restoring error state:",e instanceof Error?e.message:e+""),this.error=t;break}if(e&&"callExpression"===e.type){const t=this.tryParsePseudoCommand(e,e);if(u.push(t.node),t.targetFailed)continue}else{if(!e||"binaryExpression"!==e.type||" "!==e.operator)break;{const t=e;if(!t.left||"identifier"!==t.left.type||!this.isCommand(t.left.name))break;{const r={type:"command",name:t.left.name,args:[t.right],isBlocking:!1,...void 0!==e.start&&{start:e.start},...void 0!==e.end&&{end:e.end},...void 0!==e.line&&{line:e.line},...void 0!==e.column&&{column:e.column}};u.push(r)}}}}}}for(;!(this.isAtEnd()||this.checkIsCommand()||this.isCommand(this.peek().value)||this.check("then")||this.check("and")||this.check(",")||this.check("on")||this.check("catch")||this.check("finally"));)this.advance();if(!this.match("then","and",",")&&!this.checkIsCommand()&&!this.isCommand(this.peek().value))break}}let d,m,p;this.isAtEnd()||!this.check("catch")&&!this.check("finally")||(({errorSymbol:d,errorHandler:m,finallyHandler:p}=this.parseErrorAndFinallyBlocks()),this.check("end")&&this.advance());const h=this.getPosition(),f={type:"eventHandler",event:1===e.length?e[0]:e.join("|"),events:e,commands:u,...void 0!==d&&{errorSymbol:d},...void 0!==m&&{errorHandler:m},...void 0!==p&&{finallyHandler:p},...s.length>0&&{args:s},...a&&{condition:a},...o&&{target:o},...l&&{attributeName:l},...c&&{watchTarget:c},...n&&{customEventSource:n},...Object.keys(i).length>0&&{modifiers:i},start:h.start,end:h.end,line:h.line,column:h.column};return pe(`\ud83d\udd27 parseEventHandler: Created node with events: ${e.join(", ")}, attributeName: ${l||"none"}, watchTarget: ${c?"yes":"none"}`),f}parseBehaviorDefinition(){const e=this.getPosition(),t=this.consumeIdentifier("Expected behavior name after 'behavior' keyword").value;/^[A-Z]/.test(t)||this.addError(`Behavior name must start with uppercase letter (got "${t}")`);const r=[];if(this.match("(")){if(!this.check(")"))do{const e=this.consumeIdentifierLike("Expected parameter name");r.push(e.value)}while(this.match(","));this.consume(")","Expected ')' after behavior parameters")}const n=new Set(r),s=[];let i;for(;!this.isAtEnd()&&!this.check("end");)if(this.match("on")){const e=this.getPosition(),t=this.parseEventNameWithNamespace("Expected event name after 'on'"),r=[];if(this.check("(")){for(this.advance();!this.isAtEnd()&&!this.check(")");){const e=this.peek();Ge(e)?(r.push(e.value),this.advance(),this.check(",")&&this.advance()):this.advance()}this.check(")")&&this.advance()}let i;if(this.check("from")){this.advance();const e=[];if(this.check("the")&&this.advance(),!this.isAtEnd()){const t=this.peek(),r=n.has(t.value);this.checkIsCommand()&&!r||(e.push(t.value),i=t.value,this.advance())}}const{commands:a,terminator:o}=this.parseCommandListUntilTerminator(["catch","finally"]);let l,c,u;if("catch"!==o&&"finally"!==o||({errorSymbol:l,errorHandler:c,finallyHandler:u}=this.parseErrorAndFinallyBlocks()),!this.check("end"))throw Error('Expected "end" to close behavior event handler');this.advance();const d={type:"eventHandler",event:t,commands:a,...void 0!==l&&{errorSymbol:l},...void 0!==c&&{errorHandler:c},...void 0!==u&&{finallyHandler:u},...void 0!==i&&{target:i},...r.length>0&&{args:r},start:e.start,end:this.getPosition().end,line:e.line,column:e.column};s.push(d)}else{if(!this.match("init")){this.addError("Unexpected token in behavior body: "+this.peek().value);break}i={type:"initBlock",commands:this.parseCommandBlock(["end"]),start:e.start,end:this.getPosition().end,line:e.line,column:e.column},this.consume("end","Expected 'end' after init block")}return this.consume("end","Expected 'end' to close behavior definition"),{type:"behavior",name:t,parameters:r,eventHandlers:s,...void 0!==i?{initBlock:i}:{},start:e.start,end:this.getPosition().end,line:e.line,column:e.column}}parseCommandSequence(){const e=[];for(;!this.isAtEnd();){if(this.checkIsCommand()||this.isCommand(this.peek().value)&&!this.isKeyword(this.peek().value)){this.advance();const t=this.error,r=this.parseCommand();for(this.error&&this.error!==t&&(this.error.message.includes("Expected closing parenthesis")||this.error.message.includes("Expected ')'")||this.error.message.includes("unclosed parenthes")||this.error.message.includes("Unclosed parenthes")||(pe("\u26a0\ufe0f parseCommandSequence: Command parsing added non-critical error, restoring error state. Error was:",this.error.message),this.error=t)),e.push(r);!(this.isAtEnd()||this.checkIsCommand()||this.isCommand(this.peek().value)||this.check("then")||this.check("on"));)pe("\u26a0\ufe0f parseCommandSequence: Skipping unexpected token:",this.peek().value),this.advance();if(this.check("on")){pe('\u2705 parseCommandSequence: Found "on" token, stopping command sequence to allow event handler parsing');break}if(this.match("then"))continue;if(this.checkIsCommand()||this.isCommand(this.peek().value)&&!this.isKeyword(this.peek().value))continue;break}{const t=this.peek(),r=this.getPosition(),n="Expected command, got: "+t.value;this.addError(n);const s=gt(r,n,t.value);if(e.push(s),this.synchronizeToCommandBoundary(),this.isAtEnd())break;if(this.match("then"))continue;if(this.check("end")||this.check("on"))break;if(this.checkIsCommand()||this.isCommand(this.peek().value)&&!this.isKeyword(this.peek().value))continue;break}}return 1===e.length?e[0]:function(e){return{type:"CommandSequence",commands:e,start:e[0]?.start||0,end:e[e.length-1]?.end||0,line:e[0]?.line||1,column:e[0]?.column||1}}(e)}getMultiWordPattern(e){return function(e){return vt.find(t=>t.command===e.toLowerCase())||null}(e)}isTokenKeyword(e,t){return bt(e,t)}parseMultiWordCommand(e,t){return function(e,t,r){const n=e.getMultiWordPattern(r);if(!n)return null;const s=[],i={};for(;!kt(e,["catch","finally",...n.keywords])&&!bt(e.peek(),n.keywords);){const t=e.parsePrimary();if(!t)break;if(s.push(t),!e.match(",")&&bt(e.peek(),n.keywords))break}for(;!e.isAtEnd()&&bt(e.peek(),n.keywords);){const t=e.advance().value,r=e.parseExpression();if(r&&(i[t]=r),!bt(e.peek(),n.keywords))break}const a=Tt.from(t).withArgs(...s).endingAt(e.getPosition());return Object.keys(i).length>0&&a.withModifiers(i),a.build()}(this.getContext(),e,t)}parseCommandBlock(e){const t=[];for(;!this.isAtEnd()&&!e.some(e=>this.check(e));)if(this.checkComment())this.advance();else{if(!this.checkIsCommand()&&!this.isCommand(this.peek().value))break;{this.advance();const e=this.parseCommand();t.push(e)}}return t}trySemanticParse(e){if(!this.semanticAdapter||!this.semanticAdapter.isAvailable())return null;try{const t=this.semanticAdapter.trySemanticParse(e);return t.success&&t.node?(pe(`[Semantic] Successfully parsed with confidence ${t.confidence}:`,t.node.name),t.node):(pe(`[Semantic] Low confidence (${t.confidence}), falling back to traditional parser`),null)}catch(e){return pe("[Semantic] Error during semantic parse:",e),null}}getRemainingInput(){if(!this.originalInput)return this.tokens.slice(this.current>0?this.current-1:0).map(e=>e.value).join(" ");const e=this.current>0?this.tokens[this.current-1]:this.tokens[0];return e&&void 0!==e.start?this.originalInput.slice(e.start):this.originalInput}skipToCommandBoundary(){const e=["then","and","else","end"];for(;!this.isAtEnd();){const t=this.peek(),r=t.value.toLowerCase();if(e.includes(r))break;if(Ve(t))break;this.advance()}}parseCommand(){const e=this.parseCommandCore();if(e&&"command"===e.type&&!e.body&&(this.check("when")||this.check("where"))){const t=this.peek().value.toLowerCase();this.advance();const r=this.parseExpression();r&&(e.modifiers={...e.modifiers??{},[t]:r})}return e}parseCommandCore(){const e=this.previous();let t=e.value;if(this.semanticAdapter&&!["install","wait","repeat","for","set","put","increment","decrement","add","append","toggle","if","unless","make","measure","trigger","halt","remove","exit","return","closest","js","tell","fetch"].includes(t.toLowerCase())){const e=this.getRemainingInput(),t=this.trySemanticParse(e);if(t)return this.skipToCommandBoundary(),t}if("beep"===t&&this.check("!")&&(this.advance(),t="beep!"),"fetch"===t)return function(e,t){const r={};let n=null;if(!e.isAtEnd()&&Ht(e)&&(n=Wt(e)),n||(n=e.parsePrimary()),!n)return e.addError("fetch requires a URL"),Tt.from(t).endingAt(e.getPosition()).build();!e.isAtEnd()&&e.check("{")&&(r.with=e.parsePrimary());for(let t=0;3>t&&!e.isAtEnd();t++)if(!e.check("as")||r.as){if(!e.check("with")||r.with){if(e.check("do")&&!r.doNotThrow){const t=e.peekAt(1),n=e.peekAt(2);if("not"===t?.value&&"throw"===n?.value){const t=e.advance();e.advance();const n=e.advance();r.doNotThrow={type:"literal",value:!0,start:t.start,end:n.end,line:t.line,column:t.column};continue}}break}e.advance(),r.with=Ut(e)?Kt(e):e.parsePrimary()}else e.advance(),e.isAtEnd()||St(e,"a")||St(e,"an"),r.as=e.parsePrimary();const s=Tt.from(t).withArgs(n).endingAt(e.getPosition());return Object.keys(r).length>0&&s.withModifiers(r),s.build()}(this.getContext(),e);const r=this.parseMultiWordCommand(e,t);if(r)return r;const n=t.toLowerCase();if("repeat"===n)return this.parseRepeatCommand(e);if("for"===n)return this.parseForCommand(e);if("if"===n||"unless"===n)return this.parseIfCommand(e);if("wait"===n)return this.parseWaitCommand(e);if("install"===n)return this.parseInstallCommand(e);if("transition"===n)return this.parseTransitionCommand(e);if("add"===n)return this.parseAddCommand(e);if(this.isCompoundCommand(n))return this.parseCompoundCommand({type:"identifier",name:n,start:e.start||0,end:e.end||0,line:e.line,column:e.column})||function(e,t){return{type:"command",name:e,args:[],partial:!0,start:t.start,end:t.end,line:t.line,column:t.column}}(n,this.getPosition());const s=[];if(("increment"===t||"decrement"===t)&&!this.isAtEnd())return function(e,t){const r=t.value,n="increment"===r?"+":"-";let s=!1;e.check(v)&&(s=!0,e.advance());const i=e.parseExpression();if(!i)throw Error("Expected variable or expression after "+r);let a;if(e.check("by")){e.advance();const t=e.parseExpression();if(!t)throw Error(`Expected amount after 'by' in ${r} command`);a=t}else a=ct(1,"1",{start:t.start,end:e.previous().end,line:t.line,column:t.column});let o=i;s&&"identifier"===i.type&&(o={...i,scope:"global"});const l={start:t.start,end:e.previous().end,line:t.line,column:t.column},c=dt(n,i,a,l);c.coerceNumeric=!0;const u=[o,ut(d,l),c];return Tt.from(t).withName("set").withArgs(...u).withOriginalCommand(r).endingAt({end:e.previous().end}).build()}(this.getContext(),e);for(;!(this.isAtEnd()||this.check("then")||this.check("and")||this.check("else")||this.check("end")||this.checkIsCommand());){const e=this.parseExpression();if(s.push(e||this.parsePrimary()),this.match(","))continue;const t=["into","from","to","with","by","at","before","after","over"];if(t.some(e=>this.check(e)))continue;const r=s[s.length-1];if(!r||"identifier"!==r.type&&"keyword"!==r.type||!t.includes(r.name??r.value))break}const i=this.getPosition();return{type:"command",name:t,args:s,isBlocking:!1,start:i.start,end:i.end,line:i.line,column:i.column}}parseConditional(){const e=this.parseExpression();this.consume("then","Expected 'then' after if condition");const t=this.parseConditionalBranch();let r;this.match("else")&&(r=this.parseConditionalBranch());const n=this.getPosition();return{type:"conditionalExpression",test:e,consequent:t,alternate:r,start:n.start,end:n.end,line:n.line,column:n.column}}parseConditionalBranch(){if(this.checkIsCommand()){const e=this.advance(),t=this.createIdentifier(e.value);return this.createCommandFromIdentifier(t)||t}if(this.checkIdentifier()||this.checkKeyword()){const e=this.peek();if(this.isCommand(e.value)){const e=this.advance(),t=this.createIdentifier(e.value);return this.createCommandFromIdentifier(t)||t}}return this.parseExpression()}parseNavigationFunction(e){const t=[];if(this.match("of"))t.push(this.parseExpression());else{if(this.check("("))return this.finishCall(this.createIdentifier(e));this.isAtEnd()||this.checkBasicOperator()||this.check("then")||this.check("else")||t.push(this.parsePrimary())}const r=this.createCallExpression(this.createIdentifier(e),t);if("next"===e||"previous"===e){const e=this.parseRelativePositionalModifiers();e&&(r.relativePositional=e)}return r}parseRelativePositionalModifiers(){if(!(this.check("from")||this.check("within")||this.check("in")||this.check("with")))return null;let e,t,r,n=!1,s=!1;return this.match("from")&&(e=this.parseRelativePositionalOperand()),this.match("in")?(n=!0,r=this.parseRelativePositionalOperand()):this.match("within")&&(t=this.parseRelativePositionalOperand()),this.match("with")&&(this.match("wrapping"),s=!0),{from:e,within:t,inElt:r,inSearch:n,wrapping:s}}parseRelativePositionalOperand(){return this.match("the"),this.parsePrimary()}parseTheXofY(){if(!this.checkIdentifier())return this.createIdentifier("the");const e=this.peek(),t=e.value;return["first","last","next","previous","random","closest"].includes(t)?(this.advance(),this.parseNavigationFunction(t)):(this.advance(),this.check("of")?(this.advance(),{type:"propertyOfExpression",property:{type:"identifier",name:t},target:this.parseCall(),line:e.line,column:e.column}):this.createIdentifier(t))}parseContextPropertyAccess(e){if(this.match("*")){let t="";if(!this.checkIdentifier())return this.addError("Expected property name after 'my *'"),this.createMemberExpression(this.createIdentifier(e),this.createIdentifier(""),!1);for(t=this.advance().value;this.check("-")&&!this.isAtEnd();){if(t+="-",this.advance(),!this.checkIdentifier()){this.addError("Expected identifier after hyphen in CSS property name");break}t+=this.advance().value}const r="*"+t;return this.createMemberExpression(this.createIdentifier(e),this.createIdentifier(r),!1)}{if(this.check("[")&&this.tokens[this.current+1]?.value?.startsWith("@")){this.advance();const t=this.advance();return this.consume("]","Expected ']' after attribute reference"),this.createMemberExpression(this.createIdentifier(e),{type:"attributeAccess",attributeName:t.value.substring(1),start:t.start,end:t.end,line:t.line,column:t.column},!0)}if(Xe(this.peek())&&this.peek().value.startsWith("@")){const t=this.advance();return this.createMemberExpression(this.createIdentifier(e),this.createIdentifier(t.value),!1)}const t=this.consumeIdentifierLike(`Expected property name after '${{me:"my",it:"its",you:"your"}[e]}'`);return this.createMemberExpression(this.createIdentifier(e),this.createIdentifier(t.value),!1)}}parseMyPropertyAccess(){return this.parseContextPropertyAccess("me")}finishCall(e){const t=[];if(!this.check(")"))do{if(this.check(","))return this.addError("Unexpected token in function arguments"),this.createCallExpression(e,[this.createErrorNode()]);t.push(this.parseExpression())}while(this.match(","));if(!this.check(")")&&"identifier"===e.type){const t=e.name;P(t)&&pe(`\ud83d\udca1 Tip: CSS functions like ${t}() should be quoted for clean parsing. Use '${t}(...)' or \`${t}(...)\` instead.`)}return this.consume(")","Expected ')' after arguments"),this.createCallExpression(e,t)}createLiteral(e,t){return ct(e,t,this.getPosition())}createIdentifier(e){return ut(e,this.getPosition())}createBinaryExpression(e,t,r){return dt(e,t,r,this.getPosition())}createUnaryExpression(e,t,r){return function(e,t,r,n){return{type:"unaryExpression",operator:e,argument:t,prefix:r,start:n.start,end:n.end,line:n.line,column:n.column}}(e,t,r,this.getPosition())}createCallExpression(e,t){return function(e,t,r){return{type:"callExpression",callee:e,arguments:t,start:r.start,end:r.end,line:r.line,column:r.column}}(e,t,this.getPosition())}createMemberExpression(e,t,r){return function(e,t,r,n){return{type:"memberExpression",object:e,property:t,computed:r,start:n.start,end:n.end,line:n.line,column:n.column}}(e,t,r,this.getPosition())}createSelector(e){return function(e,t){return{type:"selector",value:e,start:t.start,end:t.end,line:t.line,column:t.column}}(e,this.getPosition())}createPossessiveExpression(e,t){return function(e,t,r){return{type:"possessiveExpression",object:e,property:t,start:r.start,end:r.end,line:r.line,column:r.column}}(e,t,this.getPosition())}createErrorNode(){return{type:"identifier",name:"__ERROR__",start:(e=this.getPosition()).start,end:e.end,line:e.line,column:e.column};var e}processEscapeSequences(e){return e.replace(/\\(.)/g,(e,t)=>{switch(t){case"n":return"\n";case"t":return"\t";case"r":return"\r";case"b":return"\b";case"f":return"\f";case"v":return"\v";case"0":return"\0";case"\\":return"\\";case'"':return'"';case"'":return"'";default:return t}})}createProgramNode(e){return function(e){if(pe(`\u2705 createProgramNode: Called with ${e.length} statements`),0===e.length)return pe("\u2705 createProgramNode: Returning error node (0 statements)"),{type:"identifier",name:"__ERROR__",start:0,end:0,line:1,column:1};if(1===e.length)return pe(`\u2705 createProgramNode: Returning single statement (type=${e[0].type})`),e[0];const t={type:"Program",statements:e,start:e[0]?.start||0,end:e[e.length-1]?.end||0,line:e[0]?.line||1,column:e[0]?.column||1};return pe(`\u2705 createProgramNode: Returning Program node with ${e.length} statements, type=${t.type}`),t}(e)}match(...e){for(const t of e)if(this.check(t))return this.advance(),!0;return!1}matchOperator(e){if(this.isAtEnd())return!1;const t=this.peek();return!(!ot(t)||t.value!==e||(this.advance(),0))}check(e){if(this.isAtEnd())return!1;const t=this.peek().value;return this.resolveKeyword(t)===e}checkPredicate(e){return!this.isAtEnd()&&e(this.peek())}matchPredicate(e){return!!this.checkPredicate(e)&&(this.advance(),!0)}checkSelector(){return this.checkPredicate(Ue)}matchSelector(){return this.matchPredicate(Ue)}checkAnySelector(){return this.checkPredicate(We)}checkLiteral(){return this.checkPredicate(Ke)}checkIdentifierLike(){return this.checkPredicate(He)}checkIsCommand(){return this.checkPredicate(Ve)}checkCommandTerminator(){return this.checkPredicate(lt)}checkReference(){return this.checkPredicate(Je)}checkTimeExpression(){return this.checkPredicate(Ze)}checkEvent(){return this.checkPredicate(ze)}checkContextVar(){return this.checkPredicate(Be)}checkComment(){return this.checkPredicate(Ye)}checkIdentifier(){return this.checkPredicate(Ge)}checkKeyword(){return this.checkPredicate(De)}checkString(){return this.checkPredicate(Qe)}matchString(){return this.matchPredicate(Qe)}checkNumber(){return this.checkPredicate(et)}matchNumber(){return this.matchPredicate(et)}checkBoolean(){return this.checkPredicate(tt)}matchBoolean(){return this.matchPredicate(tt)}checkTemplateLiteral(){return this.checkPredicate(rt)}matchTemplateLiteral(){return this.matchPredicate(rt)}checkQueryReference(){return this.checkPredicate(nt)}matchQueryReference(){return this.matchPredicate(nt)}checkIdSelector(){return this.checkPredicate(st)}checkClassSelector(){return this.checkPredicate(it)}checkCssSelector(){return this.checkPredicate(at)}checkBasicOperator(){return this.checkPredicate(ot)}matchBasicOperator(){return this.matchPredicate(ot)}matchTimeExpression(){return this.matchPredicate(Ze)}matchIdentifierLike(){return this.matchPredicate(He)}matchComparisonOperator(){return this.matchPredicate(Fe)}consumePredicate(e,t){return this.checkPredicate(e)?this.advance():(this.addError(t),this.peek())}consumeIdentifier(e){return this.consumePredicate(Ge,e)}consumeIdentifierLike(e){return this.consumePredicate(He,e)}consumeEvent(e){return this.consumePredicate(ze,e)}advance(){return this.isAtEnd()||this.current++,this.previous()}isAtEnd(){return this.current>=this.tokens.length}peek(){return this.isAtEnd()?{kind:"unknown",value:"",start:0,end:0,line:1,column:1}:this.tokens[this.current]}peekAt(e){const t=this.current+e;return t>=0&&this.tokens.length>t?this.tokens[t]:null}previous(){return this.tokens[this.current-1]}consume(e,t){return this.check(e)?this.advance():(this.addError(t),this.peek())}addError(e){const t=this.peek();let r=t.start||0,n=t.line||1,s=t.column||1;if(e.includes("property name after '.'")){const e=this.current>0?this.previous():t;r=e.end||e.start||0,n=e.line||1,s=e.column||1}if(e.includes("parenthes")){const e=this.current>0?this.previous():t;r=e.end||e.start||0,n=e.line||1,s=e.column||1,0===r&&this.current>0&&(r=this.current)}if(e.includes("Expected expression after")){const e=this.current>0?this.previous():t;r=e.start||0,n=e.line||1,s=e.column||1,0===r&&(r=Math.max(1,this.current-1))}if(e.includes("Missing operand")){let e=t;for(let t=this.current-1;t>=0;t--){const r=this.tokens[t];if(r&&("+"===r.value||"-"===r.value)){e=r;break}}r=e.start||0,n=e.line||1,s=e.column||1}this.error={message:e,line:Math.max(1,n),column:Math.max(1,s),position:Math.max(0,r)},this.errors.push(this.error)}synchronizeToCommandBoundary(){for(;!this.isAtEnd();){const e=this.peek();if("then"===e.value||"end"===e.value||"on"===e.value)return;if(this.checkIsCommand()||this.isCommand(e.value)&&!this.isKeyword(e.value))return;pe("\u26a0\ufe0f synchronize: Skipping token:",e.value),this.advance()}}parseAttributeOrArrayLiteral(){const e=this.previous().start,t=this.previous().line,r=this.previous().column;if(!this.isAtEnd()&&this.peek().value.startsWith("@")){const n=[];for(;!this.check("]")&&!this.isAtEnd();){const e=this.advance();n.push(e.value)}this.consume("]","Expected ']' after attribute literal");const s=n.join("");if(!s.includes("="))return{type:"attributeAccess",attributeName:s.replace(/^@/,""),start:e,end:this.previous().end,line:t,column:r};const i="["+s+"]";return{type:"literal",value:i,raw:i,start:e,end:this.previous().end,line:t,column:r}}const n=new Set(["=","~=","|=","^=","$=","*="]),s=this.tokens[this.current],i=this.tokens[this.current+1];if("identifier"===s?.kind&&("]"===i?.value||i&&n.has(i.value)&&"string"===this.tokens[this.current+2]?.kind)){let e="["+this.advance().value;if(this.check("]"))this.advance(),e+="]";else{const t=this.advance().value,r=this.advance().value;e+=t+'"'+(r.startsWith('"')&&r.endsWith('"')||r.startsWith("'")&&r.endsWith("'")?r.slice(1,-1):r)+'"',this.consume("]","Expected ']' after attribute selector"),e+="]"}return this.createSelector(e)}const a=[];if(!this.check("]"))do{if(this.check("]"))break;a.push(this.parseExpression())}while(this.match(","));return this.consume("]","Expected ']' after array elements"),{type:"arrayLiteral",elements:a,start:e,end:this.previous().end,line:t,column:r}}getPosition(){const e=this.current>0?this.previous():this.peek();return{start:e.start||0,end:e.end||0,line:e.line||1,column:e.column||1}}getContext(){const e=this,t={tokens:this.tokens,advance:this.advance.bind(this),peek:this.peek.bind(this),previous:this.previous.bind(this),consume:this.consume.bind(this),check:this.check.bind(this),checkIdentifierLike:this.checkIdentifierLike.bind(this),checkSelector:this.checkSelector.bind(this),checkAnySelector:this.checkAnySelector.bind(this),checkLiteral:this.checkLiteral.bind(this),checkReference:this.checkReference.bind(this),checkTimeExpression:this.checkTimeExpression.bind(this),checkEvent:this.checkEvent.bind(this),checkIsCommand:this.checkIsCommand.bind(this),checkContextVar:this.checkContextVar.bind(this),match:this.match.bind(this),matchOperator:this.matchOperator.bind(this),isAtEnd:this.isAtEnd.bind(this),createIdentifier:this.createIdentifier.bind(this),parseExpression:this.parseExpression.bind(this),parsePrimary:this.parsePrimary.bind(this),parseLogicalAnd:this.parseLogicalAnd.bind(this),parseCSSObjectLiteral:this.parseCSSObjectLiteral.bind(this),parseCommand:this.parseCommand.bind(this),parseCommandSequence:this.parseCommandSequence.bind(this),parseCommandListUntilEnd:this.parseCommandListUntilEnd.bind(this),parseCommandListUntilEndOrElse:this.parseCommandListUntilEndOrElse.bind(this),parseRepeatBody:this.parseRepeatBody.bind(this),getPosition:this.getPosition.bind(this),addError:this.addError.bind(this),addWarning:this.addWarning.bind(this),isCommand:this.isCommand.bind(this),isCompoundCommand:this.isCompoundCommand.bind(this),isKeyword:this.isKeyword.bind(this),getMultiWordPattern:this.getMultiWordPattern.bind(this),resolveKeyword:this.resolveKeyword.bind(this),savePosition:()=>e.current,restorePosition:t=>{e.current=t},peekAt:t=>e.peekAt(t),getInputSlice:(e,t)=>this.originalInput?0>e||e>=this.originalInput.length?"":void 0!==t?this.originalInput.slice(e,t):this.originalInput.slice(e):""};return Object.defineProperty(t,"current",{get:()=>e.current,set:t=>{e.current=t},enumerable:!0,configurable:!0}),t}}function Xt(e,t){const r=function(e){const t={input:"",position:0,line:1,column:1,tokens:[]};t.input=e;const r=e.length;for(;r>t.position&&(B(t),r>t.position);){const r=e[t.position];if("-"!==r||"-"!==D(t,1))if('"'!==r){if("'"===r||"'"===r){const e=D(t,1),r=t.tokens[t.tokens.length-1];if("s"!==e||!r||/\s/.test(t.input[t.position-1]??" ")||r.kind!==_.IDENTIFIER&&r.kind!==_.SELECTOR&&"]"!==r.value&&")"!==r.value&&"}"!==r.value)U(t);else{const e=t.position;z(t),z(t),F(t,_.OPERATOR,"'s",e)}continue}if("`"!==r)if("<"!==r)if("#"!==r){if("."===r){if("."===D(t,1)){const e=t.position;z(t),z(t),F(t,_.OPERATOR,"..",e);continue}const e=t.tokens[t.tokens.length-1],r=new Set(["from","to","into","on","in","at","between","first","last","next","previous","closest","random","of","some","no"]),n=e&&e.kind===_.IDENTIFIER&&k.has(e.value.toLowerCase()),s=e&&e.kind===_.IDENTIFIER&&r.has(e.value.toLowerCase());if((!e||e.kind===_.OPERATOR&&")"!==e.value&&"]"!==e.value||n||s||"("===e.value||"["===e.value||"{"===e.value||","===e.value||";"===e.value)&&(!e||e.end!==t.position)&&(te(D(t))||"{"===D(t)||"-"===D(t))){J(t);continue}}if("@"!==r)if("{"!==r)if("}"!==r){if("["===r){const e=t.tokens[t.tokens.length-1],r=e&&e.kind===_.IDENTIFIER&&q.has(e.value)&&t.tokens.length>=2&&"on"===t.tokens[t.tokens.length-2]?.value;(!e||e.kind!==_.IDENTIFIER&&")"!==e.value&&"]"!==e.value||r)&&r?(F(t,_.SYMBOL,"["),z(t)):(F(t,_.OPERATOR,"["),z(t));continue}if("]"!==r){if("$"===r){const e=D(t,1);if(e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"===e){ee(t);continue}}ie(r)?Y(t):"0">r||r>"9"?("a">r||r>"z")&&("A">r||r>"Z")&&"_"!==r?(F(t,_.UNKNOWN,r),z(t)):Q(t):G(t)}else F(t,_.OPERATOR,"]"),z(t)}else F(t,_.OPERATOR,"}"),z(t);else F(t,_.OPERATOR,"{"),z(t);else X(t)}else J(t);else se(t)?Z(t):Y(t);else K(t)}else U(t);else W(t)}return t.tokens}(e);return new Zt(r,t,e).parse()}Zt.POSTFIX_UNARY_OPERATORS=new Set(["exists","does not exist","is empty","is not empty","ignoring case"]),Zt.PRATT_TABLE=Se,Zt.PSEUDO_COMMAND_PREPOSITIONS=["from","on","with","into","at","to"];class Yt{constructor(){this.hooks=new Map,this.beforeExecuteHooks=[],this.afterExecuteHooks=[],this.onErrorHooks=[],this.interceptCommandHooks=[]}register(e,t){this.unregister(e),this.hooks.set(e,t),t.beforeExecute&&this.beforeExecuteHooks.push(t.beforeExecute),t.afterExecute&&this.afterExecuteHooks.push(t.afterExecute),t.onError&&this.onErrorHooks.push(t.onError),t.interceptCommand&&this.interceptCommandHooks.push(t.interceptCommand)}unregister(e){const t=this.hooks.get(e);if(!t)return!1;if(t.beforeExecute){const e=this.beforeExecuteHooks.indexOf(t.beforeExecute);e>-1&&this.beforeExecuteHooks.splice(e,1)}if(t.afterExecute){const e=this.afterExecuteHooks.indexOf(t.afterExecute);e>-1&&this.afterExecuteHooks.splice(e,1)}if(t.onError){const e=this.onErrorHooks.indexOf(t.onError);e>-1&&this.onErrorHooks.splice(e,1)}if(t.interceptCommand){const e=this.interceptCommandHooks.indexOf(t.interceptCommand);e>-1&&this.interceptCommandHooks.splice(e,1)}return this.hooks.delete(e)}has(e){return this.hooks.has(e)}async runBeforeExecute(e){for(const t of this.beforeExecuteHooks)await t(e)}async runAfterExecute(e,t){for(const r of this.afterExecuteHooks)await r(e,t)}async runOnError(e,t){let r=t;for(const t of this.onErrorHooks){const n=await t(e,r);n instanceof Error&&(r=n)}return r}shouldIntercept(e,t){for(const r of this.interceptCommandHooks)if(r(e,t))return!0;return!1}getRegisteredNames(){return Array.from(this.hooks.keys())}clear(){this.hooks.clear(),this.beforeExecuteHooks=[],this.afterExecuteHooks=[],this.onErrorHooks=[],this.interceptCommandHooks=[]}}function Gt(e){return e instanceof Error&&("isHalt"in e||"isExit"in e||"isBreak"in e||"isContinue"in e||"isReturn"in e)?e:null}function Qt(e){return{ok:!0,value:e}}function er(e){return{ok:!1,error:e}}function tr(e){return!0===e.ok}const rr=new Map,nr=new WeakMap;function sr(e){let t=nr.get(e);return t||(t=new Map,nr.set(e,t)),t}function ir(e){return e.owner||(e.me instanceof Element?e.me:null)}function ar(e,t){const r=ir(e);if(r)return _e(t,e),sr(r).get(t)}function or(e,t,r){const n=ir(e);n&&(sr(n).set(t,r),Me(t,r,e))}function lr(e,t){return{me:e??null,owner:e??null,it:null,you:null,result:null,locals:new Map,globals:t||rr,flags:{halted:!1,breaking:!1,continuing:!1,returning:!1,async:!1}}}function cr(e){if(!e)return lr();if(e.locals instanceof Map&&e.globals instanceof Map&&e.flags)return e;const t=lr(e.me instanceof Element?e.me:null);return void 0!==e.it&&(t.it=e.it),void 0!==e.you&&(t.you=e.you),void 0!==e.result&&(t.result=e.result),void 0!==e.event&&Object.assign(t,{event:e.event}),t}function ur(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&1===e.nodeType&&"tagName"in e&&"string"==typeof e.tagName&&"classList"in e}function dr(e){return null!==e&&"object"==typeof e&&"length"in e&&"number"==typeof e.length&&(Symbol.iterator in e||"function"==typeof e.item)}function mr(e){if(null==e)return 0;if("number"==typeof e)return isFinite(e)?e:0;if("string"==typeof e)return parseFloat(e);if("boolean"==typeof e)return e?1:0;if(Array.isArray(e))return e.length;if("object"==typeof e){if("length"in e&&"number"==typeof e.length)return e.length;if("function"==typeof e.valueOf){const t=e.valueOf();if("number"==typeof t)return t}return NaN}return 0}function pr(e,t,r){return"element"===r?ar(t,e):"global"===r&&t.globals&&t.globals.has(e)?t.globals.get(e):"global"!==r&&t.locals&&t.locals.has(e)?(_e(e,t),t.locals.get(e)):t.globals&&t.globals.has(e)?t.globals.get(e):t.variables&&t.variables.has(e)?t.variables.get(e):"global"===r&&t.locals&&t.locals.has(e)?(_e(e,t),t.locals.get(e)):"undefined"!=typeof window&&e in window?window[e]:"undefined"!=typeof globalThis&&e in globalThis?globalThis[e]:void 0}function hr(e,t,r,n){if("element"!==n){if("global"===n)return $e(r,e,t),void("undefined"!=typeof window&&(window[e]=t));if(e.startsWith("$"))return void $e(r,e.slice(1),t);if(r.locals&&r.locals.has(e))return r.locals.set(e,t),void Me(e,t,r);if(r.globals&&r.globals.has(e))return $e(r,e,t),void("undefined"!=typeof window&&e in window&&(window[e]=t));if(r.variables&&r.variables.has(e))r.variables.set(e,t);else{if("undefined"!=typeof window&&e in window)return window[e]=t,void $e(r,e,t);r.locals.set(e,t),Me(e,t,r)}}else or(r,e,t)}function fr(e,t){return"me"===e?t.me:"it"===e?t.it:"you"===e?t.you:pr(e,t)}const yr=new class{constructor(e={}){this.types=new Map,this.coercionCache=new Map,this.config={strictMode:!1,cacheCoercions:!0,...e},this.registerBuiltinTypes()}register(e){this.types.has(e.name)&&console.warn(`ExpressionTypeRegistry: Overwriting existing type '${e.name}'`),this.types.set(e.name,e)}get(e){return this.types.get(e)}has(e){return this.types.has(e)}getTypeNames(){return Array.from(this.types.keys())}inferType(e){for(const[t,r]of this.types)if(r.isType(e))return t;return"Unknown"}getHyperScriptType(e){const t=this.inferType(e),r=this.types.get(t);return r?.hyperscriptType??"unknown"}coerce(e,t,r){const n=this.types.get(t);if(!n){if(this.config.strictMode)throw Error("Unknown target type: "+t);return null}if(n.isType(e))return e;if(this.config.cacheCoercions){const r=`${this.inferType(e)}:${t}:${JSON.stringify(e)}`;if(this.coercionCache.has(r))return this.coercionCache.get(r)}const s=this.inferType(e),i=n.coerceFrom?.[s];if(i){const n=i(e,r);if(this.config.cacheCoercions&&null!==n){const r=`${s}:${t}:${JSON.stringify(e)}`;this.coercionCache.set(r,n)}return n}return n.defaultValue}canCoerce(e,t){const r=this.types.get(t);if(!r)return!1;if(r.isType(e))return!0;const n=this.inferType(e);return void 0!==r.coerceFrom?.[n]}getCoercionInfo(e,t){const r=this.types.get(t);return r&&(e===t||r.coerceFrom?.[e])?{possible:!0,direct:!0}:{possible:!1,direct:!1}}clearCache(){this.coercionCache.clear()}getStats(){return{typeCount:this.types.size,cacheSize:this.coercionCache.size,typeNames:this.getTypeNames()}}registerBuiltinTypes(){this.register({name:"String",hyperscriptType:"string",tsType:"string",isType:e=>"string"==typeof e,defaultValue:"",description:"Text string value",examples:["hello","world",""],coerceFrom:{Number:e=>e+"",Boolean:e=>e+"",Null:()=>"",Undefined:()=>"",Array:e=>Array.isArray(e)?e.join(", "):null,Object:e=>{try{return JSON.stringify(e)}catch{return e+""}},Element:e=>e instanceof Element?e.textContent??e.outerHTML:null}}),this.register({name:"Number",hyperscriptType:"number",tsType:"number",isType:e=>"number"==typeof e&&!isNaN(e),defaultValue:0,description:"Numeric value (integer or float)",examples:[0,1,3.14,-42],coerceFrom:{String:e=>{const t=parseFloat(e);return isNaN(t)?null:t},Boolean:e=>e?1:0,Null:()=>0,Undefined:()=>null}}),this.register({name:"Boolean",hyperscriptType:"boolean",tsType:"boolean",isType:e=>"boolean"==typeof e,defaultValue:!1,description:"True or false value",examples:[!0,!1],coerceFrom:{String:e=>{const t=e.toLowerCase().trim();return"true"===t||"yes"===t||"1"===t||"false"!==t&&"no"!==t&&"0"!==t&&""!==t&&t.length>0},Number:e=>0!==e,Null:()=>!1,Undefined:()=>!1,Array:e=>!!Array.isArray(e)&&e.length>0,Element:e=>e instanceof Element,ElementList:e=>Array.isArray(e)&&e.length>0}}),this.register({name:"Element",hyperscriptType:"element",tsType:"Element | HTMLElement",isType:e=>e instanceof Element,defaultValue:null,description:"DOM Element",coerceFrom:{String:(e,t)=>{const r=e;if(r.startsWith("#")||r.startsWith(".")||r.match(/^[\w-]+$/))try{return document.querySelector(r)}catch{return null}return null},ElementList:e=>Array.isArray(e)&&e.length>0?e[0]:null,NodeList:e=>e.length>0?e[0]:null}}),this.register({name:"ElementList",hyperscriptType:"element-list",tsType:"Element[]",isType:e=>Array.isArray(e)&&e.length>0&&e.every(e=>e instanceof Element),defaultValue:[],description:"Array of DOM Elements",coerceFrom:{Element:e=>e instanceof Element?[e]:[],NodeList:e=>Array.from(e),String:e=>{try{return Array.from(document.querySelectorAll(e))}catch{return[]}},Array:e=>{const t=e;return t.every(e=>e instanceof Element)?t:[]}}}),this.register({name:"Array",hyperscriptType:"array",tsType:"unknown[]",isType:e=>Array.isArray(e),defaultValue:[],description:"Array of values",coerceFrom:{String:e=>{const t=e;try{const e=JSON.parse(t);if(Array.isArray(e))return e}catch{}return t.split(",").map(e=>e.trim())},ElementList:e=>e,NodeList:e=>Array.from(e),Object:e=>Object.values(e)}}),this.register({name:"Object",hyperscriptType:"object",tsType:"Record<string, unknown>",isType:e=>!("object"!=typeof e||null===e||Array.isArray(e)||e instanceof Element),defaultValue:{},description:"Plain JavaScript object",coerceFrom:{String:e=>{try{const t=JSON.parse(e);if("object"==typeof t&&null!==t&&!Array.isArray(t))return t}catch{}return null},Array:e=>{const t={};return e.forEach((e,r)=>{t[r+""]=e}),t}}}),this.register({name:"Null",hyperscriptType:"null",tsType:"null",isType:e=>null===e,defaultValue:null,description:"Null value"}),this.register({name:"Undefined",hyperscriptType:"undefined",tsType:"undefined",isType:e=>void 0===e,defaultValue:void 0,description:"Undefined value"}),this.register({name:"Function",hyperscriptType:"function",tsType:"Function",isType:e=>"function"==typeof e,defaultValue:null,description:"JavaScript function"}),this.register({name:"Event",hyperscriptType:"event",tsType:"Event",isType:e=>e instanceof Event,defaultValue:null,description:"DOM Event"}),this.register({name:"NodeList",hyperscriptType:"element-list",tsType:"NodeList",isType:e=>e instanceof NodeList,defaultValue:null,description:"DOM NodeList (typically from querySelectorAll)",coerceFrom:{Array:e=>null}}),this.register({name:"Unknown",hyperscriptType:"unknown",tsType:"unknown",isType:e=>!0,defaultValue:null,description:"Unknown/any value type"})}};function gr(e){const t=yr.get("String");return t?t.isType(e):"string"==typeof e}function vr(e){const t=yr.get("Number");return t?t.isType(e):"number"==typeof e}function br(e){const t=yr.get("Boolean");return t?t.isType(e):"boolean"==typeof e}function wr(e){const t=yr.get("Object");return t?t.isType(e):"object"==typeof e&&null!==e}function kr(e){const t=yr.get("Function");return t?t.isType(e):"function"==typeof e}function Er(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&1===e.nodeType&&"style"in e}function xr(e){return e instanceof Element}function Cr(e){return e instanceof HTMLElement}const Sr=new Set(["disabled","readonly","required","checked","selected","hidden","open","autofocus","autoplay","controls","loop","muted","multiple","reversed","defer","async","novalidate","formnovalidate","ismap"]);function Ar(e,t){return Sr.has(t.toLowerCase())?e.hasAttribute(t):e.getAttribute(t)}const Tr={id:e=>e.id,classname:e=>e.className,class:e=>e.className,tagname:e=>e.tagName.toLowerCase(),innertext:e=>e.textContent?.trim(),innerHTML:e=>e.innerHTML,outerhtml:e=>e.outerHTML,value:e=>function(e){if(null===e||"object"!=typeof e||!("tagName"in e))return!1;const t=e.tagName;return"INPUT"===t||"SELECT"===t||"TEXTAREA"===t}(e)?e.value:void 0,checked:e=>function(e){return null!==e&&"object"==typeof e&&"tagName"in e&&"INPUT"===e.tagName}(e)?e.checked:void 0,disabled:e=>"disabled"in e?e.disabled:void 0,selected:e=>function(e){return null!=e&&"object"==typeof e&&"tagName"in e&&"OPTION"===e.tagName}(e)?e.selected:void 0,tabindex:e=>Er(e)?e.tabIndex:void 0,hidden:e=>Er(e)?e.hidden:void 0,style:e=>getComputedStyle(e),children:e=>Array.from(e.children),parent:e=>e.parentElement,firstchild:e=>e.firstElementChild,lastchild:e=>e.lastElementChild,nextsibling:e=>e.nextElementSibling,previoussibling:e=>e.previousElementSibling,next:e=>e.nextElementSibling,previous:e=>e.previousElementSibling,values:e=>function(e){if(e instanceof HTMLFormElement)return new FormData(e);const t=new FormData;return e.querySelectorAll("input, select, textarea").forEach(e=>{const r=e.getAttribute("name");r&&"value"in e&&t.append(r,e.value)}),t}(e)};function Or(e,t){if(t.startsWith("*"))return function(e,t){if(!Cr(e))return;if(t.startsWith("computed-"))return getComputedStyle(e).getPropertyValue(t.slice(9))||"";const r=t.replace(/-([a-z])/g,(e,t)=>t.toUpperCase());return e.style[r]}(e,t.slice(1));if(t.startsWith("computed-")){const r=t.slice(9);return Cr(e)?getComputedStyle(e).getPropertyValue(r):void 0}if(t.startsWith("@"))return Ar(e,t.slice(1));const r=Tr[t.toLowerCase()];if(r)return r(e);if(function(e,t){return e.hasAttribute(t)}(e,t))return Ar(e,t);const n=e[t];return kr(n)?n.bind(e):n}const Lr={1:"one",2:"two",3:"three",4:"four",5:"five"};function Pr(e,t,r,n){if(e.length!==t){return`${r} requires exactly ${s=t,Lr[s]??s+""} argument${1===t?"":"s"}${n?` (${n})`:""}`}var s;return null}function jr(e,t,r,n){return"string"!=typeof e[t]?`${r} ${n||"argument "+(t+1)} must be a string`:null}function Nr(e,t,r){return Pr(e,1,t,r)??jr(e,0,t,r)}function Ir(e,t){return Pr(e,2,t,"left, right")}function Rr(){return null}function qr(e,t,r,n){return e.length>t?`${r} expression takes at most ${1===t?"one":t+""} argument${1===t?"":"s"}${n?` (${n})`:""}`:null}function Mr(e,t,r,n,s){return t>e.length||e.length>r?`${n} requires ${t}-${r} arguments${s?` (${s})`:""}`:null}function _r(e,t,r,n=[]){return{type:e,message:t,suggestions:n,...r&&{path:r}}}const $r="undefined"!=typeof process&&"production"===process.env.NODE_ENV||"undefined"!=typeof process&&"true"===process.env.HYPERFIXI_SKIP_VALIDATION||"undefined"!=typeof globalThis&&"true"===globalThis.HYPERFIXI_SKIP_VALIDATION;let Vr;function Dr(){return Vr({validate:e=>({success:!0,data:e})})}function zr(e,t){if($r)return Dr();const r=Vr({validate:r=>{if("object"!=typeof r||null===r||Array.isArray(r))return{success:!1,error:_r("type-mismatch","Expected object, received "+typeof r)};const n=r,s={};if(t?.strict){const t=Object.keys(e),r=Object.keys(n).filter(e=>!t.includes(e));if(r.length>0)return{success:!1,error:_r("runtime-error","Unexpected properties: "+r.join(", "))}}for(const[t,r]of Object.entries(e)){const e=n[t];if(!(t in n)&&!r._isOptional)return{success:!1,error:_r("missing-argument",`Required field "${t}" is missing`,t)};const i=r.validate(e);if(!i.success)return{success:!1,error:_r("validation-error",i.error.message||`Field "${t}" validation failed`,i.error.path?`${t}.${i.error.path}`:t)};void 0!==i.data&&(s[t]=i.data)}return{success:!0,data:s}}});return r.strict=()=>zr(e,{strict:!0}),r}Vr=function(e){return e.describe||(e.describe=function(e){return this.description=e,this}),e.safeParse||(e.safeParse=function(e){const t=this.validate(e);return t.success?{success:!0,data:t.data}:{success:!1,error:{errors:t.error?[t.error]:[]}}}),e.parse||(e.parse=function(e){const t=this.validate(e);if(t.success&&void 0!==t.data)return t.data;throw Error(t.error?.message||"Validation failed")}),e.optional||(e.optional=function(){const e=this.validate.bind(this),t={...this,_isOptional:!0,validate:t=>null==t?{success:!0,data:void 0}:e(t)};return Vr(t)}),e.min||(e.min=function(e){const t=this.validate.bind(this),r={...this,validate:r=>{const n=t(r);return n.success&&"string"==typeof n.data&&e>n.data.length?{success:!1,error:_r("runtime-error",`String must be at least ${e} characters long`)}:n}};return Vr(r)}),e.max||(e.max=function(e){const t=this.validate.bind(this),r={...this,validate:r=>{const n=t(r);return n.success&&"string"==typeof n.data&&n.data.length>e?{success:!1,error:_r("runtime-error",`String must be at most ${e} characters long`)}:n}};return Vr(r)}),e.default||(e.default=function(e){const t=this.validate.bind(this),r={...this,_defaultValue:e,_hasDefault:!0,validate:r=>void 0===r?{success:!0,data:e}:t(r)};return Vr(r)}),e.rest||(e.rest=function(e){return this}),e.refine||(e.refine=function(e,t){const r=this.validate.bind(this),n={...this,validate:n=>{const s=r(n);return s.success?e(s.data)?s:{success:!1,error:_r("runtime-error",t||"Refinement validation failed")}:s}};return Vr(n)}),new Proxy(e,{get:(e,t,r)=>t in e||"string"!=typeof t||t.startsWith("_")||"constructor"===t||"validate"===t||"then"===t?Reflect.get(e,t,r):function(...e){return r}})};const Br=e=>function(e={}){return $r?Dr():Vr({validate:t=>e.optional&&null==t?{success:!0,data:void 0}:"string"!=typeof t?{success:!1,error:_r("type-mismatch","Expected string, received "+typeof t)}:void 0!==e.minLength&&e.minLength>t.length?{success:!1,error:_r("runtime-error",`String must be at least ${e.minLength} characters long`)}:void 0!==e.maxLength&&t.length>e.maxLength?{success:!1,error:_r("runtime-error",`String must be at most ${e.maxLength} characters long`)}:e.pattern&&!e.pattern.test(t)?e.pattern.source.startsWith("^")&&e.pattern.source.endsWith("$")?{success:!1,error:_r("runtime-error",`Expected "${e.pattern.source.slice(1,-1)}", received "${t}"`)}:{success:!1,error:_r("missing-argument","String does not match required pattern")}:{success:!0,data:t},...e.description&&{description:e.description}})}(e||{}),Fr=e=>function(e={}){return $r?Dr():Vr({validate:t=>{const r=Number(t);return isNaN(r)?{success:!1,error:_r("type-mismatch","Expected number, received "+typeof t)}:void 0!==e.min&&e.min>r?{success:!1,error:_r("runtime-error","Number must be at least "+e.min)}:void 0!==e.max&&r>e.max?{success:!1,error:_r("runtime-error","Number must be at most "+e.max)}:{success:!0,data:r}}})}(e||{}),Hr=()=>$r?Dr():Vr({validate:e=>"boolean"!=typeof e?{success:!1,error:_r("type-mismatch","Expected boolean, received "+typeof e)}:{success:!0,data:e}}),Wr=e=>zr(e),Ur=e=>function(e){return $r?Dr():Vr({validate:t=>{if(!Array.isArray(t))return{success:!1,error:_r("type-mismatch","Expected array, received "+typeof t)};if(t.length!==e.length)return{success:!1,error:_r("runtime-error",`Expected tuple of length ${e.length}, received length ${t.length}`)};const r=[];for(let n=0;e.length>n;n++){const s=e[n].validate(t[n]);if(!s.success)return{success:!1,error:_r("runtime-error",s.error.message,s.error.path?`${n}.${s.error.path}`:""+n)};r.push(s.data)}return{success:!0,data:r}}})}(e),Kr=()=>Dr(),Jr=()=>Dr(),Zr=()=>function(e,t="Custom validation failed"){return $r?Dr():Vr({validate:r=>e(r)?{success:!0,data:r}:{success:!1,error:_r("runtime-error",t)}})}(e=>void 0===e,"Expected undefined");class Xr{trackPerformance(e,t,r,n){e.evaluationHistory&&e.evaluationHistory.push({expressionName:this.name,category:this.category,input:t,output:r.success?r.value:r.error,timestamp:n,duration:Date.now()-n,success:r.success})}trackSimple(e,t,r,n=(r?"success":"error")){e.evaluationHistory&&e.evaluationHistory.push({expressionName:this.name,category:this.category,input:"operation",output:n,timestamp:t,duration:Date.now()-t,success:r})}toBoolean(e){return!(!1===e||0===e||0n===e||""===e||null==e||vr(e)&&isNaN(e))}success(e,t){return{success:!0,value:e,type:t}}failure(e,t,r,n,s=[]){return{success:!1,error:{name:e,type:t,message:r,code:n,suggestions:s}}}validationSuccess(){return{isValid:!0,errors:[],suggestions:[]}}validationFailure(e,t,r=[]){return{isValid:!1,errors:[{type:e,message:t,suggestions:r}],suggestions:r}}isElement(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&1===e.nodeType&&"tagName"in e&&"string"==typeof e.tagName}inferType(e){return null===e?"null":void 0===e?"undefined":this.isElement(e)?"element":Array.isArray(e)?"array":wr(e)?"object":typeof e}inferEvaluationType(e){return void 0===e?"Undefined":null===e?"Null":gr(e)?"String":vr(e)?"Number":br(e)?"Boolean":Array.isArray(e)?"Array":this.isElement(e)?"Element":"Object"}normalizeCollection(e){return Array.isArray(e)?e:e instanceof NodeList?Array.from(e):gr(e)?e.split(""):null==e?[]:wr(e)&&Symbol.iterator in e?Array.from(e):[]}toNumber(e){if(vr(e)&&Number.isFinite(e))return e;if(gr(e)){const t=Number(e);return Number.isFinite(t)?t:null}return br(e)?e?1:0:null}}function Yr(e,t,r,n,s="runtime-error"){return{success:!1,error:{name:e+"ConversionError",type:s,message:r,code:t,suggestions:n}}}function Gr(e,t){return{success:!0,value:e,type:t}}function Qr(e,t){return`${e}: ${t instanceof Error?t.message:t+""}`}const en={Array:(e,t)=>{try{return Array.isArray(e)?Gr(e,"array"):e instanceof NodeList?Gr(Array.from(e),"array"):Gr(null==e?[]:[e],"array")}catch(e){return Yr("Array","ARRAY_CONVERSION_FAILED",Qr("Failed to convert value to Array",e),["Check if value is iterable","Ensure value is not circular reference"])}},String:(e,t)=>{try{return null==e?Gr("","string"):gr(e)?Gr(e,"string"):wr(e)?Gr(JSON.stringify(e),"string"):Gr(e+"","string")}catch(e){return Yr("String","STRING_CONVERSION_FAILED",Qr("Failed to convert value to String",e),["Check if object has circular references","Ensure value is serializable"])}},Boolean:(e,t)=>{try{if(br(e))return Gr(e,"boolean");if(null==e)return Gr(!1,"boolean");if(gr(e)){const t=e.toLowerCase().trim();return Gr("false"!==t&&"0"!==t&&""!==t,"boolean")}return vr(e)?Gr(0!==e&&!isNaN(e),"boolean"):Gr(!!e,"boolean")}catch(e){return Yr("Boolean","BOOLEAN_CONVERSION_FAILED",Qr("Failed to convert value to Boolean",e),["Use explicit true/false values","Check for unexpected data types"])}},Number:(e,t)=>{try{if(vr(e))return Gr(e,"number");if(null==e)return Gr(0,"number");const t=Number(e);return isNaN(t)?Yr("Number","INVALID_NUMBER",`Cannot convert "${e}" to a valid number`,["Check if value contains non-numeric characters","Use a valid numeric format"],"invalid-argument"):Gr(t,"number")}catch(e){return Yr("Number","NUMBER_CONVERSION_FAILED",Qr("Failed to convert value to Number",e),["Ensure value is convertible to number","Check for special characters"])}},Int:(e,t)=>{const r=en.Number(e,t);return r.success?Gr(Math.trunc(r.value),"number"):r},Float:(e,t)=>{const r=en.Number(e,t);return r.success?Gr(parseFloat(""+r.value),"number"):r},Date:(e,t)=>{try{if(e instanceof Date)return Gr(e,"object");if(null==e)return Gr(new Date(""),"object");if(gr(e)&&/^\d{4}-\d{2}-\d{2}$/.test(e)){const[t,r,n]=e.split("-").map(Number);return Gr(new Date(t,r-1,n),"object")}const t=new Date(e);return isNaN(t.getTime())?Yr("Date","INVALID_DATE",`Cannot convert "${e}" to a valid date`,["Use ISO 8601 format (YYYY-MM-DD)","Check date string format","Ensure date values are valid"],"invalid-argument"):Gr(t,"object")}catch(e){return Yr("Date","DATE_CONVERSION_FAILED",Qr("Failed to convert value to Date",e),["Check date format","Ensure value is a valid date string or timestamp"])}},JSON:(e,t)=>{if(!gr(e))return Gr(e,"object");try{return Gr(JSON.parse(e),"object")}catch(e){return Yr("JSON","JSON_PARSE_FAILED",Qr("Failed to parse value as JSON",e),["Check JSON syntax and escaping","Use `as JSONString` to stringify a value instead"],"syntax-error")}},JSONString:(e,t)=>{try{return Gr(JSON.stringify(e),"string")}catch(e){return Yr("JSONString","JSON_STRINGIFY_FAILED",Qr("Failed to stringify value as JSON",e),["Check for circular references","Ensure all properties are serializable","Remove functions and undefined values"])}},Object:(e,t)=>{try{if(wr(e))return Gr(e,"object");if(gr(e))try{return Gr(JSON.parse(e),"object")}catch(e){return Yr("Object","JSON_PARSE_FAILED",Qr("Cannot parse JSON string",e),["Check JSON syntax","Ensure proper escaping of quotes","Validate JSON format"],"syntax-error")}return Gr({},"object")}catch(e){return Yr("Object","OBJECT_CONVERSION_FAILED",Qr("Failed to convert value to Object",e),["Ensure value is valid JSON string or object","Check for syntax errors"])}},Values:(e,t)=>{try{if(e instanceof HTMLFormElement)return Gr(an(e),"object");if(e instanceof HTMLElement){const t=e.querySelectorAll("input, select, textarea"),r={};return t.forEach(e=>{const t=e;if(t.name){const e=on(t);void 0!==e&&(r[t.name]=e)}}),Gr(r,"object")}return Gr({},"object")}catch(e){return Yr("FormValues","FORM_VALUES_EXTRACTION_FAILED",Qr("Failed to extract form values",e),["Ensure element is a form or contains form inputs","Check form structure","Verify input names are set"])}},FormEncoded:(e,t)=>{try{let r=e;if(e instanceof HTMLElement){const n=en.Values(e,t);if(!n.success)return n;r=n.value}if(!wr(r))return Gr("","string");const n=new URLSearchParams;for(const[e,t]of Object.entries(r))if(null!=t)if(Array.isArray(t))for(const r of t)n.append(e,r+"");else n.append(e,t+"");return Gr(""+n,"string")}catch(e){return Yr("FormEncoded","FORM_ENCODE_FAILED",Qr("Failed to URL-encode values",e),["Ensure input is a form element or plain object of scalar/array values"])}},Set:(e,t)=>{try{return Gr(new Set(e),"object")}catch(e){return Yr("Set","SET_CONVERSION_FAILED",Qr("Failed to convert to Set",e),["Ensure the value is iterable"])}},Map:(e,t)=>{try{return Gr(new Map(Object.entries(e??{})),"object")}catch(e){return Yr("Map","MAP_CONVERSION_FAILED",Qr("Failed to convert to Map",e),["Ensure the value is a plain object"])}},Keys:(e,t)=>e instanceof Map?Gr(Array.from(e.keys()),"array"):Gr(Object.keys(e??{}),"array"),Entries:(e,t)=>e instanceof Map?Gr(Array.from(e.entries()),"array"):Gr(Object.entries(e??{}),"array"),Reversed:(e,t)=>{try{return Gr(Array.from(e).reverse(),"array")}catch(e){return Yr("Reversed","REVERSED_CONVERSION_FAILED",Qr("Failed to reverse value",e),["Ensure the value is array-like"])}},Unique:(e,t)=>{try{return Gr([...new Set(e)],"array")}catch(e){return Yr("Unique","UNIQUE_CONVERSION_FAILED",Qr("Failed to dedupe value",e),["Ensure the value is iterable"])}},Flat:(e,t)=>{try{return Gr(Array.from(e).flat(),"array")}catch(e){return Yr("Flat","FLAT_CONVERSION_FAILED",Qr("Failed to flatten value",e),["Ensure the value is array-like"])}}},tn=Wr({value:Jr(),type:Br().min(1)}),rn=Wr({value:Jr(),type:Br().min(1)});new class extends Xr{constructor(){super(...arguments),this.name="as",this.category="Conversion",this.syntax="value as Type",this.description='Converts values between different types using the "as" keyword',this.outputType="Any",this.inputSchema=tn,this.metadata={category:"Conversion",complexity:"medium",sideEffects:[],dependencies:[],returnTypes:["Any"],examples:[{input:'"123" as Int',description:"Convert string to integer",expectedOutput:123},{input:"form as Values",description:"Extract form values as object",expectedOutput:{name:"John",age:"25"}},{input:"[1,2,3] as JSONString",description:"Convert array to JSON string (upstream 0.9.90: use JSONString, not JSON)",expectedOutput:"[1,2,3]"},{input:"'{\"a\":1}' as JSON",description:"Parse a JSON string (upstream 0.9.90: as JSON now parses)",expectedOutput:{a:1}},{input:'"2023-12-25" as Date',description:"Parse date string",expectedOutput:new Date(2023,11,25)}],relatedExpressions:["is","Object","Array"],performance:{averageTime:1,complexity:"O(n)"}},this.documentation={summary:'Converts values between different types using the "as" keyword with comprehensive type safety',parameters:[{name:"value",type:"object",description:"The value to convert",optional:!1,examples:['"123"',"form","[1,2,3]","true","null"]},{name:"type",type:"string",description:"Target conversion type",optional:!1,examples:["Int","String","Boolean","Array","JSON","Object","Date","Values","HTML","Fragment"]}],returns:{type:"object",description:"Structured result with converted value or detailed error information",examples:['{ success: true, value: 123, type: "number" }',"{ success: false, error: { ... } }"]},examples:[{title:"String to number conversion",code:"if my.value as Int > 100",explanation:"Convert form input to integer for comparison",output:"Boolean result"},{title:"Form data extraction",code:"put closest <form /> as Values into result",explanation:"Extract all form values as structured object",output:'{ name: "John", age: "25", ... }'},{title:"Array to JSON serialization",code:"put items as JSONString into storage",explanation:"Convert array to JSON string for storage (upstream 0.9.90: use `as JSONString`)",output:'"[1,2,3]"'},{title:"Date parsing with validation",code:"put my.dateInput as Date into event.detail.date",explanation:"Parse date input with automatic validation",output:"Date object or validation error"},{title:"Boolean conversion with smart parsing",code:'if "false" as Boolean then hide else show',explanation:"Parse string boolean values correctly",output:"false (not true like naive conversion)"}],seeAlso:["is","Values","JSON","Array","Object"],tags:["conversion","types","validation","forms","json","parsing"]}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:{name:"AsExpressionValidationError",type:"validation-error",message:n.errors[0]?.message||"Invalid input",code:"VALIDATION_FAILED",suggestions:n.suggestions}};const{value:s,type:i}=t;if(i.startsWith("Fixed")){const n=i.match(/^Fixed:(\d+)$/),a=n?parseInt(n[1],10):0,o=en.Number(s,e);if(!o.success)return o;const l={success:!0,value:o.value.toFixed(a),type:"string"};return this.trackPerformance(e,t,l,r),l}let a=en[i];if(a){const n=a(s,e);return this.trackPerformance(e,t,n,r),n}const o={boolean:"Boolean",bool:"Boolean",string:"String",str:"String",number:"Number",num:"Number",int:"Int",integer:"Int",float:"Float",array:"Array",object:"Object",obj:"Object",date:"Date",json:"JSON",jsonstring:"JSONString",formencoded:"FormEncoded"}[i.toLowerCase()];if(o&&(a=en[o],a)){const n=a(s,e);return this.trackPerformance(e,t,n,r),n}const l={success:!1,error:{name:"UnknownConversionTypeError",type:"validation-error",message:"Unknown conversion type: "+i,code:"UNKNOWN_CONVERSION_TYPE",suggestions:["Use supported types: String, Number, Boolean, Array, Object, Date, JSON, Values","Check type spelling and capitalization","See documentation for complete list of conversion types"]}};return this.trackPerformance(e,t,l,r),l}catch(n){const s={success:!1,error:{name:"AsExpressionError",type:"runtime-error",message:"Conversion failed: "+(n instanceof Error?n.message:n+""),code:"CONVERSION_FAILED",suggestions:["Check value and type compatibility","Ensure value is convertible to target type"]}};return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?{isValid:!0,errors:[],suggestions:[]}:{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:e.message,suggestions:["Expected valid input structure, got: "+e.code]}))??[],suggestions:["Provide both value and type parameters","Ensure type is a non-empty string","Check parameter structure: { value: any, type: string }"]}}catch(e){return this.validationFailure("runtime-error","Validation failed",["Check input structure"])}}},new class extends Xr{constructor(){super(...arguments),this.name="is",this.category="Conversion",this.syntax="value is Type",this.description="Checks if a value is of a specific type",this.outputType="Boolean",this.inputSchema=rn,this.metadata={category:"Conversion",complexity:"simple",sideEffects:[],dependencies:[],returnTypes:["Boolean"],examples:[{input:"42 is number",description:"Check if value is a number",expectedOutput:!0},{input:"null is empty",description:"Check if value is empty/null",expectedOutput:!0},{input:"element is Element",description:"Check if value is DOM element",expectedOutput:!0,context:{element:"<div>...</div>"}}],relatedExpressions:["as","empty","exists"],performance:{averageTime:.1,complexity:"O(1)"}},this.documentation={summary:"Checks if a value is of a specific type with comprehensive type detection",parameters:[{name:"value",type:"object",description:"The value to check",optional:!1,examples:["42","null","element",'"text"',"[]"]},{name:"type",type:"string",description:"Type name to check against",optional:!1,examples:["number","string","boolean","array","object","element","empty","null"]}],returns:{type:"object",description:"Boolean result indicating type match",examples:['{ success: true, value: true, type: "boolean" }']},examples:[{title:"Number validation",code:"if my.age is number then proceed",explanation:"Check if form input is valid number",output:"Boolean result"},{title:"Empty check",code:"if result is empty then show message",explanation:"Check if result is null, undefined, or empty",output:"Boolean result"},{title:"Element validation",code:"if target is element then addClass",explanation:"Ensure target is valid DOM element before manipulation",output:"Boolean result"}],seeAlso:["as","empty","exists","null"],tags:["validation","types","checking","guards"]}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:{name:"IsExpressionValidationError",type:"validation-error",message:n.errors[0]?.message||"Invalid input",code:"VALIDATION_FAILED",suggestions:n.suggestions}};const{value:s,type:i}=t,a=i.toLowerCase();let o;switch(a){case"null":o=null===s;break;case"undefined":o=void 0===s;break;case"string":o=gr(s);break;case"number":o=vr(s)&&!isNaN(s);break;case"boolean":o=br(s);break;case"object":o=wr(s);break;case"array":o=Array.isArray(s);break;case"function":o=kr(s);break;case"date":o=s instanceof Date;break;case"element":o=s instanceof Element;break;case"node":o=s instanceof Node;break;case"node-list":o=s instanceof NodeList;break;case"empty":o=null==s||""===s||Array.isArray(s)&&0===s.length||wr(s)&&0===Object.keys(s).length;break;default:o=s?.constructor?.name?.toLowerCase()===a}const l=this.success(o,"boolean");return this.trackPerformance(e,t,l,r),l}catch(n){const s=this.failure("IsExpressionError","type-mismatch","Type check failed: "+(n instanceof Error?n.message:n+""),"TYPE_CHECK_FAILED",["Check type name spelling","Ensure value is accessible"]);return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:e.message,suggestions:["Expected valid input structure, got: "+e.code]}))??[],suggestions:["Provide both value and type parameters","Ensure type is a non-empty string","Check parameter structure: { value: any, type: string }"]}}catch(e){return this.validationFailure("runtime-error","Validation failed",["Check input structure"])}}};const nn={conversions:{dynamicResolvers:[]}},sn={Array:e=>Array.isArray(e)?e:e instanceof NodeList?Array.from(e):null==e?[]:[e],String:e=>null==e?"":gr(e)?e:wr(e)?JSON.stringify(e):e+"",Boolean:e=>{if(br(e))return e;if(null==e)return!1;if(gr(e)){const t=e.toLowerCase().trim();return"false"!==t&&"0"!==t&&""!==t}return vr(e)?0!==e&&!isNaN(e):!!e},Number:e=>{if(vr(e))return e;if(null==e)return 0;const t=Number(e);return isNaN(t)?0:t},Math:e=>{if(vr(e))return e;if(null==e)return 0;const t=(e+"").trim();if(!t)return 0;try{return function(e){if(e=e.replace(/\s/g,""),!/^[0-9+\-*/().]+$/.test(e))throw Error("Invalid characters in math expression");try{const t=Function(`"use strict"; return (${e})`)();if(!vr(t)||!isFinite(t))throw Error("Expression did not evaluate to a finite number");return t}catch(e){throw Error("Math expression evaluation failed: "+(e instanceof Error?e.message:e+""))}}(t)}catch(e){return console.warn("Math conversion failed:",e),0}},Int:e=>{const t=sn.Number(e);return Math.trunc(t)},Float:e=>{const t=sn.Number(e);return parseFloat(""+t)},Date:e=>{if(e instanceof Date)return e;if(null==e)return new Date(NaN);if(gr(e)&&/^\d{4}-\d{2}-\d{2}$/.test(e)){const[t,r,n]=e.split("-").map(Number);return new Date(t,r-1,n)}return new Date(e)},JSON:e=>{if(!gr(e))return e;try{return JSON.parse(e)}catch{return e}},JSONString:e=>{try{return JSON.stringify(e)}catch{return"{}"}},Object:e=>{if(wr(e))return e;if(gr(e))try{return JSON.parse(e)}catch(e){return{}}return{}},Fragment:e=>{const t=document.createDocumentFragment(),r=Array.isArray(e)||e instanceof NodeList?Array.from(e):[e];for(const e of r)if(e instanceof Node)t.append(e);else{const r=document.createElement("template");r.innerHTML=null==e?"":e+"",t.append(r.content)}return t},HTML:e=>gr(e)?e:e instanceof NodeList?Array.from(e).map(e=>e instanceof Element?e.outerHTML:e.textContent||"").join(""):Array.isArray(e)?e.map(e=>e instanceof Element?e.outerHTML:sn.String(e)).join(""):e instanceof Element?e.outerHTML:sn.String(e),Values:(e,t)=>{if(e instanceof HTMLFormElement)return an(e);if(e instanceof HTMLElement){const t=e.querySelectorAll("input, select, textarea"),r={};return t.forEach(e=>{e.name&&(r[e.name]=on(e))}),r}return{}},FormEncoded:(e,t)=>{const r=e instanceof HTMLElement?sn.Values(e,t):e;if(!wr(r))return"";const n=new URLSearchParams;for(const[e,t]of Object.entries(r))if(null!=t)if(Array.isArray(t))for(const r of t)n.append(e,r+"");else n.append(e,t+"");return""+n},Set:e=>new Set(e),Map:e=>new Map(Object.entries(e??{})),Keys:e=>e instanceof Map?Array.from(e.keys()):Object.keys(e??{}),Entries:e=>e instanceof Map?Array.from(e.entries()):Object.entries(e??{}),Reversed:e=>Array.from(e).reverse(),Unique:e=>[...new Set(e)],Flat:e=>Array.from(e).flat(),"Values:Form":(e,t)=>{const r=sn.Values(e,t);return sn.FormEncoded(r,t)},"Values:JSON":(e,t)=>{const r=sn.Values(e,t);return JSON.stringify(r)}};function an(e){const t={};return e.querySelectorAll("input, select, textarea").forEach(e=>{const r=e;if(r.name){const e=on(r);void 0!==e&&(void 0!==t[r.name]?(Array.isArray(t[r.name])||(t[r.name]=[t[r.name]]),t[r.name].push(e)):t[r.name]=e)}}),t}function on(e){if(e instanceof HTMLInputElement)switch(e.type){case"checkbox":return e.checked;case"radio":return e.checked?e.value:void 0;case"number":case"range":return e.valueAsNumber;case"date":case"datetime-local":return e.valueAsDate;case"file":return e.files;default:return e.value}return e instanceof HTMLSelectElement&&e.multiple?Array.from(e.selectedOptions).map(e=>e.value):e.value}const ln={boolean:"Boolean",bool:"Boolean",string:"String",str:"String",number:"Number",num:"Number",int:"Int",integer:"Int",float:"Float",array:"Array",object:"Object",obj:"Object",date:"Date",json:"JSON",jsonstring:"JSONString",formencoded:"FormEncoded"};function cn(e,t,r){if("string"!=typeof t)throw Error("Conversion type must be a string");if(t.startsWith("Fixed")){const{precision:r}=function(e){const t=e.match(/^Fixed(?::(\d+))?$/);return t?{precision:t[1]?parseInt(t[1],10):0}:{}}(t);return sn.Number(e).toFixed(r??0)}if(null==e)return e;let n=sn[t];if(n)return n(e,r);const s=ln[t.toLowerCase()];if(s&&(n=sn[s],n))return n(e,r);const i=nn.conversions[t];if("function"==typeof i)return i(e,r);for(const r of nn.conversions.dynamicResolvers){const n=r(t,e);if(void 0!==n)return n}return console.warn("Unknown conversion type: "+t),e}const un={as:{name:"as",category:"Conversion",evaluatesTo:"Any",precedence:20,associativity:"Left",operators:["as"],async evaluate(e,...t){const[r,n]=t;return cn(r,n,e)},validate:e=>Pr(e,2,"as","value, type")??jr(e,1,"as","conversion type")},is:{name:"is",category:"Conversion",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["is a","is an"],async evaluate(e,...t){const[r,n]=t;if(!gr(n))throw Error("Type check requires a string type");switch(n.toLowerCase()){case"null":return null===r;case"undefined":return void 0===r;case"string":return gr(r);case"number":return vr(r)&&!isNaN(r);case"boolean":return br(r);case"object":return wr(r);case"array":return Array.isArray(r);case"function":return kr(r);case"date":return r instanceof Date;case"element":return r instanceof Element;case"node":return r instanceof Node;case"nodelist":return r instanceof NodeList;case"empty":return null==r||""===r||Array.isArray(r)&&0===r.length||wr(r)&&0===Object.keys(r).length;default:return r?.constructor?.name?.toLowerCase()===n.toLowerCase()}},validate:e=>Pr(e,2,"is","value, type")??jr(e,1,"is","type")},async:{name:"async",category:"Conversion",evaluatesTo:"Any",precedence:25,associativity:"Right",operators:["async"],evaluate:async(e,t)=>t,validate:e=>Pr(e,1,"async","expression")}},dn=new Set(["__proto__","constructor","prototype"]);function mn(e,t){if(e instanceof Element)return Or(e,t);if(wr(e)){if(dn.has(t))return;return e[t]}return e[t]}function pn(e){let t;if(Array.isArray(e))t=e;else{if(!("undefined"!=typeof NodeList&&e instanceof NodeList||"undefined"!=typeof HTMLCollection&&e instanceof HTMLCollection))return!1;t=Array.from(e)}return 0!==t.length&&t.every(e=>e instanceof Element||null!=e&&"object"==typeof e&&e.constructor!==Object&&!Array.isArray(e))}const hn={possessive:{name:"possessive",category:"Reference",evaluatesTo:"Any",operators:["'s","s"],async evaluate(e,...t){const[r,n]=t;if(null!=r){if("string"!=typeof n)throw Error("Property name must be a string");return pn(r)&&!(n in r)?Array.from(r,e=>mn(e,n)):mn(r,n)}},validate:e=>Pr(e,2,"possessive","element, property")??jr(e,1,"possessive","property name")},my:{name:"my",category:"Reference",evaluatesTo:"Any",operators:["my"],async evaluate(e,...t){const[r]=t;if(e.me){if("string"!=typeof r)throw Error("Property name must be a string");if(e.me instanceof Element)return Or(e.me,r);if(wr(e.me)){if(dn.has(r))return;return e.me[r]}return e.me[r]}},validate:e=>Nr(e,"my","property")},its:{name:"its",category:"Reference",evaluatesTo:"Any",operators:["its"],async evaluate(e,...t){const[r]=t;if(null==e.it)return;if("string"!=typeof r)throw Error("Property name must be a string");const n=e.it;if(n instanceof Element)return Or(n,r);if(wr(n)){if(dn.has(r))return;return n[r]}return n[r]},validate:e=>Nr(e,"its","property")},your:{name:"your",category:"Reference",evaluatesTo:"Any",operators:["your"],async evaluate(e,...t){const[r]=t;if(e.you){if("string"!=typeof r)throw Error("Property name must be a string");if(e.you instanceof Element)return Or(e.you,r);if(wr(e.you)){if(dn.has(r))return;return e.you[r]}return e.you[r]}},validate:e=>Nr(e,"your","property")},of:{name:"of",category:"Reference",evaluatesTo:"Any",operators:["of"],async evaluate(e,...t){const[r,n]=t;if(null!=n){if("string"!=typeof r)throw Error("Property name must be a string");if(n instanceof Element)return Or(n,r);if(wr(n)){if(dn.has(r))return;return n[r]}return n[r]}},validate:e=>Pr(e,2,"of","property, object")??jr(e,0,"of","property name")},attribute:{name:"attribute",category:"Reference",evaluatesTo:"String",operators:["@"],async evaluate(e,...t){const[r,n]=t;if("string"!=typeof r)throw Error("Attribute name must be a string");const s=n||e.me;return s&&s instanceof Element?s.getAttribute(r):null},validate:e=>Mr(e,1,2,"attribute","attributeName, optional element")??jr(e,0,"attribute","attribute name")??(2>e.length||null==e[1]||e[1]instanceof Element?null:"attribute element must be an Element")},attributeWithValue:{name:"attributeWithValue",category:"Reference",evaluatesTo:"Boolean",operators:["@="],async evaluate(e,...t){const[r,n,s]=t;if("string"!=typeof r)throw Error("Attribute name must be a string");if("string"!=typeof n)throw Error("Expected value must be a string");const i=s||e.me;return!!(i&&i instanceof Element)&&i.getAttribute(r)===n},validate:e=>Mr(e,2,3,"attributeWithValue","attributeName, expectedValue, optional element")??jr(e,0,"attributeWithValue","attribute name")??jr(e,1,"attributeWithValue","expected value")??(3>e.length||null==e[2]||e[2]instanceof Element?null:"attributeWithValue element must be an Element")},classReference:{name:"classReference",category:"Reference",evaluatesTo:"Array",operators:["."],async evaluate(e,...t){const[r]=t;if("string"!=typeof r)throw Error("Class name must be a string");const n=r.startsWith(".")?r.slice(1):r,s=document.getElementsByClassName(n);return Array.from(s)},validate:e=>Nr(e,"classReference","className")},idReference:{name:"idReference",category:"Reference",evaluatesTo:"Element",operators:["#"],async evaluate(e,...t){const[r]=t;if("string"!=typeof r)throw Error("ID value must be a string");const n=r.startsWith("#")?r.slice(1):r;return document.getElementById(n)},validate:e=>Nr(e,"idReference","idValue")}};function fn(e){return Array.isArray(e)?e:null==e?[]:"string"==typeof e?[e]:e instanceof NodeList||e instanceof HTMLCollection||"number"==typeof e.length?Array.from(e):[e]}function yn(e,t){const r=e.registry?.get(t);if(!r)throw Error(`Expression '${t}' not in ExecutionContext.registry. The bundle's ExpressionRegistry must include this expression's category. Use createExpressionRegistry() with the relevant category objects (referencesExpressions, logicalExpressions, conversionExpressions, positionalExpressions, propertiesExpressions, specialExpressions, mathematicalExpressions).`);return r}function gn(e){if(e&&"object"==typeof e&&"success"in e){if(e.success)return"value"in e?e.value:void 0;const t=e.errors||[];throw Error(t.length>0?t[0].message:"Expression evaluation failed")}return e}async function vn(e,t){if(!e)throw Error("Cannot evaluate null or undefined AST node");if("literal"===e.type)return e.value;if("identifier"===e.type)return Sn(e,t);const r=e;switch(e.type){case"literal":return function(e){return e.value}(r);case"identifier":return Sn(r,t);case"binaryExpression":return async function(e,t){const r=e.operator,n=e.right,s=e.left;if("="===r){const r=await vn(e.right,t);if("identifier"===s?.type&&"string"==typeof s.name){const e=s.name;return e.startsWith("$")?$e(t,e.slice(1),r):"global"===s.scope?$e(t,e,r):"element"===s.scope?or(t,e,r):(t.locals||(t.locals=new Map),t.locals.set(e,r)),r}throw Error(`Assignment target must be a variable identifier (got '${s?.type??"undefined"}')`)}if("has"===r||"have"===r){const r=await vn(e.left,t);return!!(r instanceof Element&&"selector"===n.type&&"string"==typeof n.value&&n.value.startsWith("."))&&r.classList.contains(n.value.slice(1))}if("in"===r||"is in"===r){const r="callExpression"===s?.type&&"identifier"===s.callee?.type?s.callee.name:null;if(("first"===r||"last"===r)&&Array.isArray(s.arguments)){const n=s.arguments[0];if("selector"===n?.type&&"string"==typeof n.value){const s=await vn(e.right,t);if(s&&"function"==typeof s.querySelectorAll){const e=Array.from(s.querySelectorAll(n.value));return 0===e.length?null:"first"===r?e[0]:e[e.length-1]}}}if("selector"===s?.type&&s.fromQuery&&"string"==typeof s.value){const r=await vn(e.right,t),n=r&&"function"==typeof r.querySelectorAll?r:null;if(n)return Array.from(n.querySelectorAll(s.value))}}if("of"===r&&"selector"===s?.type&&"string"==typeof s.value&&/^\*[a-zA-Z][\w-]*$/.test(s.value)){const r=await vn(e.right,t);return yn(t,"styleRef").evaluate(t,s.value.slice(1),r)}if("of"===r){const r=An(e.left);if(r){const n=await vn(e.right,t);let s=n;for(const e of r){if(null==s)return;s=xr(s)?Or(s,e):s[e]}return"function"==typeof s?s.bind(n):s}}const i=await vn(e.left,t);if("and"===r){if(!i)return i;const r=await vn(e.right,t);return yn(t,"and").evaluate(t,i,r)}if("or"===r){if(i)return i;const r=await vn(e.right,t);return yn(t,"or").evaluate(t,i,r)}const a=await vn(e.right,t),o=e=>"string"==typeof e?e.toLowerCase():e,l=e.ignoringCase?o(i):i,c=e.ignoringCase?o(a):a;switch(r){case"+":{let r=i,n=a;return e.coerceNumeric&&("string"==typeof r&&(r=mr(r)),"string"==typeof n&&(n=mr(n))),"string"==typeof r||"string"==typeof n?(r??"")+""+(n??""):Array.isArray(r)?Array.isArray(n)?[...r,...n]:[...r,n]:gn(await yn(t,"addition").evaluate(t,{left:r,right:n}))}case"-":return gn(await yn(t,"subtraction").evaluate(t,{left:i,right:a}));case"*":return gn(await yn(t,"multiplication").evaluate(t,{left:i,right:a}));case"/":return gn(await yn(t,"division").evaluate(t,{left:i,right:a}));case"%":case"mod":return gn(await yn(t,"modulo").evaluate(t,{left:i,right:a}));case"^":case"**":return gn(await yn(t,"power").evaluate(t,{left:i,right:a}));case">":case"is greater than":return yn(t,"greaterThan").evaluate(t,i,a);case"<":case"is less than":return yn(t,"lessThan").evaluate(t,i,a);case">=":case"is greater than or equal to":return yn(t,"greaterThanOrEqual").evaluate(t,i,a);case"<=":case"is less than or equal to":return yn(t,"lessThanOrEqual").evaluate(t,i,a);case"==":return yn(t,"equals").evaluate(t,l,c);case"is":case"am":case"equals":case"is equal":case"is equal to":{const r=Ln(e,i,a);return void 0!==r?r:yn(t,"equals").evaluate(t,l,c)}case"!=":return yn(t,"notEquals").evaluate(t,l,c);case"is not":case"is not equal":case"is not equal to":{const r=Ln(e,i,a);return void 0!==r?!r:yn(t,"notEquals").evaluate(t,l,c)}case"===":case"really equals":case"is really":case"is really equal to":return yn(t,"strictEquals").evaluate(t,l,c);case"!==":case"is not really":case"is not really equal to":return yn(t,"strictNotEquals").evaluate(t,l,c);case"as":return yn(t,"as").evaluate(t,i,jn(a));case"contains":case"contain":case"includes":case"include":return yn(t,"contains").evaluate(t,l,c);case"does not contain":case"do not contain":case"does not contains":case"does not include":return yn(t,"doesNotContain").evaluate(t,l,c);case"starts with":return yn(t,"startsWith").evaluate(t,l,c);case"ends with":return yn(t,"endsWith").evaluate(t,l,c);case"does not start with":return!await yn(t,"startsWith").evaluate(t,l,c);case"does not end with":return!await yn(t,"endsWith").evaluate(t,l,c);case"match":case"matches":return yn(t,"matches").evaluate(t,l,On(e.right,c));case"does not match":case"do not match":return!await yn(t,"matches").evaluate(t,l,On(e.right,c));case"in":case"is in":case"am in":return Tn(i,a);case"is not in":case"am not in":return!Tn(i,a);case"of":return a&&"object"==typeof a?a[i]:void 0;case"precedes":return Pn(i,a,Node.DOCUMENT_POSITION_FOLLOWING);case"does not precede":return!Pn(i,a,Node.DOCUMENT_POSITION_FOLLOWING);case"follows":return Pn(i,a,Node.DOCUMENT_POSITION_PRECEDING);case"does not follow":return!Pn(i,a,Node.DOCUMENT_POSITION_PRECEDING);default:throw Error("Unknown binary operator: "+r)}}(r,t);case"asExpression":return async function(e,t){const r=await vn(e.expression,t),n=jn(e.targetType);return yn(t,"as").evaluate(t,r,n)}(r,t);case"betweenExpression":return async function(e,t){const r=await vn(e.value,t),n=await vn(e.min,t),s=await vn(e.max,t),i=e=>"string"==typeof e?e.toLowerCase():e,[a,o,l]=e.ignoringCase?[i(r),i(n),i(s)]:[r,n,s],c=await yn(t,"between").evaluate(t,a,o,l);return e.negated?!c:c}(r,t);case"typeCheckExpression":return async function(e,t){const r=function(e,t,r){if(null==e&&r)return!0;if(Object.prototype.toString.call(e).slice(8,-1)===t)return!0;const n=globalThis[t];return"function"==typeof n&&e instanceof n}(await vn(e.value,t),e.typeName+"",!1!==e.nullOk);return e.negated?!r:r}(r,t);case"collectionExpression":return async function(e,t){const r=await vn(e.collection,t);if(null==r)return r;const n=async(e,r)=>vn(e,{...t,it:r});switch(e.operator){case"where":return async function(e,t,r){const n=fn(e),s=[];for(const e of n)await r(t,e)&&s.push(e);return s}(r,e.right,n);case"sorted by":return async function(e,t,r,n){const s=[...fn(e)],i=await Promise.all(s.map(e=>n(t,e))),a=s.map((e,t)=>t);a.sort((e,t)=>{const r=i[e],n=i[t];return r===n?0:null==r?1:null==n||n>r?-1:1});const o=a.map(e=>s[e]);return"desc"===r?o.reverse():o}(r,e.right,e.order??"asc",n);case"mapped to":return async function(e,t,r){const n=fn(e);return Promise.all(n.map(e=>r(t,e)))}(r,e.right,n);case"split by":return i=await vn(e.right,t),null==(s=r)?[]:(s+"").split(null==i?"":i+"");case"joined by":return function(e,t){const r=null==t?"":t+"";return fn(e).map(e=>null==e?"":e+"").join(r)}(r,await vn(e.right,t));default:throw Error("Unknown collection operator: "+e.operator)}var s,i}(r,t);case"unaryExpression":return async function(e,t){const r=e.operand??e.argument;if(!r)throw Error(`Unary expression has no operand (operator: ${e.operator})`);const n=await vn(r,t);switch(e.operator){case"not":case"!":return yn(t,"not").evaluate(t,n);case"no":return yn(t,"no").evaluate(t,n);case"-":return-n;case"+":return+n;case"exists":case"some":return yn(t,"exists").evaluate(t,n);case"does not exist":return yn(t,"doesNotExist").evaluate(t,n);case"is empty":return yn(t,"isEmpty").evaluate(t,n);case"is not empty":return yn(t,"isNotEmpty").evaluate(t,n);default:throw Error("Unknown unary operator: "+e.operator)}}(r,t);case"memberExpression":return async function(e,t){const r=await vn(e.object,t);if(e.computed){const n=await vn(e.property,t);return Array.isArray(r)&&"number"==typeof n&&0>n?r[r.length+n]:r?.[n]}return qn(r,e.property.name,t)}(r,t);case"propertyAccess":return async function(e,t){let r=await vn(e.object,t);for(const n of(e.property+"").split(".")){if(null==r)return;r=await qn(r,n,t)}return r}(r,t);case"callExpression":return async function(e,t){const r=await vn(e.callee,t);if(e.isConstructor&&"function"==typeof r)return new r(...await Promise.all(e.arguments.map(e=>vn(e,t))));if("identifier"===e.callee.type){const n=e.callee.name,s=await async function(e,t,r){return Mn.has(t)?Promise.all(e.map(e=>"identifier"===e.type&&e.name?e.name:"selector"===e.type&&e.value?e.value:vn(e,r))):Promise.all(e.map(e=>vn(e,r)))}(e.arguments,n,t);switch(n){case"closest":return yn(t,"closest").evaluate(t,...s);case"previous":case"next":{const r=e.relativePositional;if(r){const e=r.from?_n(await vn(r.from,t)):t.me,i=r.within?_n(await vn(r.within,t)):void 0,a=r.inElt?await vn(r.inElt,t):void 0;return yn(t,n).evaluate(t,s[0],e,{within:i,inElt:a,inSearch:r.inSearch,wrapping:r.wrapping})}return yn(t,n).evaluate(t,...s)}case"first":return yn(t,"first").evaluate(t,...s);case"last":return yn(t,"last").evaluate(t,...s);default:if("function"==typeof r)return r(...s);throw Error("Cannot call non-function: "+n)}}if("function"==typeof r){const n=await Promise.all(e.arguments.map(e=>vn(e,t)));if("memberExpression"===e.callee.type&&e.callee.object){const s=await vn(e.callee.object,t);return r.apply(s,n)}return r(...n)}throw Error("Cannot call non-function")}(r,t);case"selector":return async function(e,t){let r=e.value;if("string"==typeof r&&!e.fromQuery&&/^\*[a-zA-Z][\w-]*$/.test(r))return yn(t,"styleRef").evaluate(t,r.slice(1));if("string"==typeof r&&e.fromQuery&&/\$[^=]/.test(r)){const{selector:n,elements:s}=await async function(e,t){const r=Bn(e),n=await Promise.all(r.filter(e=>"expr"in e).map(e=>En(e.expr,t)));return Fn(r,n)}(r,t),i=Dn(e,n);s.forEach((e,t)=>e.setAttribute("data-hs-query-id",t+""));try{return await yn(t,"elementWithSelector").evaluate(t,i)}finally{s.forEach(e=>e.removeAttribute("data-hs-query-id"))}}"string"==typeof r&&!e.fromQuery&&r.includes("{")&&(r=await function(e,t){return Rn(e,/\{([^}]*)\}/g,async(e,r)=>(await En(r.trim(),t)??"")+"")}(r,t));const n="string"==typeof r?Dn(e,r):r,s=await yn(t,"elementWithSelector").evaluate(t,n);return!e.fromQuery&&"string"==typeof r&&r.startsWith("#")&&Array.isArray(s)?s[0]??null:s}(r,t);case"contextReference":return async function(e,t){switch(e.contextType){case"me":case"you":case"it":return yn(t,e.contextType).evaluate(t);case"my":case"myself":case"I":return yn(t,"me").evaluate(t);case"your":case"yourself":return yn(t,"you").evaluate(t);case"its":return yn(t,"it").evaluate(t);case"event":return t.event;case"target":return t.target??t.event?.target??yn(t,"me").evaluate(t);case"body":return"undefined"!=typeof document?document.body:void 0;case"document":return yn(t,"document").evaluate(t);case"window":return yn(t,"window").evaluate(t);default:return}}(r,t);case"possessiveExpression":return async function(e,t){const r=await vn(e.object,t),n=e.property.name;return yn(t,"possessive").evaluate(t,r,n)}(r,t);case"eventHandler":return async function(e,t){return{event:e.event,selector:e.selector,commands:e.commands,handler:async r=>{const n={...t,event:r,target:r.target,currentTarget:r.currentTarget};for(const t of e.commands)await vn(t,n)}}}(r,t);case"conditionalExpression":return async function(e,t){return await vn(e.test,t)?vn(e.consequent,t):e.alternate?vn(e.alternate,t):void 0}(r,t);case"string":return r.value;case"arrayLiteral":return async function(e,t){const r=[];for(const n of e.elements)r.push(await vn(n,t));return r}(r,t);case"objectLiteral":return async function(e,t){const r={};for(const n of e.properties){const e=n.key;let s;s="identifier"===e.type?e.name:"literal"===e.type&&"string"===e.valueType?e.value:await vn(e,t)+"",r[s]=await vn(n.value,t)}return r}(r,t);case"attributeAccess":return async function(e,t){const r=e.attributeName;return t.me&&t.me instanceof Element?t.me.getAttribute(r):"@"+r}(r,t);case"propertyOfExpression":return async function(e,t){const r=e.property;if("identifier"!==r?.type)throw Error('Property name must be an identifier in "the X of Y" pattern');const n=r.name,s=await vn(e.target,t);if(null==s)throw Error(`Cannot access property "${n}" of ${s}`);return yn(t,"possessive").evaluate(t,s,n)}(r,t);case"templateLiteral":return async function(e,t){let r=e.value;return r=await Rn(r,/\$([a-zA-Z_$][a-zA-Z0-9_.$]*|\d+)/g,async(e,r)=>{try{if(/^\d+$/.test(r))return r;if(r.includes(".")){const e=r.split(".");let n=In(e[0],t);for(let t=1;e.length>t&&null!=n;t++)n=n[e[t]];return(n??"")+""}return(In(r,t)??"")+""}catch{return""}}),r=await Rn(r,/\$(?:\{([^}]+)\}|\(([^)]+)\))/g,async(e,r,n)=>{const s=r||n;try{return await En(s,t)+""}catch{return"undefined"}}),r}(r,t);case"stringPostfix":return async function(e,t){return`${await vn(e.expression,t)}${e.unit}`}(r,t);case"blockLiteral":return Nn(r,t);default:{const r=Te.get(e.type);if(r)return r(e,t);throw Error("Unknown AST node type: "+e.type)}}}class bn extends Error{constructor(e){super(`Expression node "${e}" is not synchronously evaluable`),this.name="NotSyncEvaluable"}}function wn(e,t){const r=e;switch(r?.type){case"literal":case"string":return r.value;case"selector":return function(e,t){const r=e.value;if("string"!=typeof r)throw new bn("selector");if(!e.fromQuery&&/^\*[a-zA-Z][\w-]*$/.test(r))throw new bn("selector");if(e.fromQuery&&/\$[^=]/.test(r)){const{selector:n,elements:s}=function(e,t){const r=Bn(e),n=r.filter(e=>"expr"in e).map(e=>kn(e.expr,t));return Fn(r,n)}(r,t),i=Dn(e,n),a=t?.me?.ownerDocument??("undefined"!=typeof document?document:null);if(!a)throw new bn("selector");s.forEach((e,t)=>e.setAttribute("data-hs-query-id",t+""));try{return Array.from(a.querySelectorAll(i))}finally{s.forEach(e=>e.removeAttribute("data-hs-query-id"))}}const n=!e.fromQuery&&r.includes("{")?function(e,t){return e.replace(/\{([^}]*)\}/g,(e,r)=>(kn(r.trim(),t)??"")+"")}(r,t):r,s=Dn(e,n),i=t?.me?.ownerDocument??("undefined"!=typeof document?document:null);if(!i)throw new bn("selector");const a=Array.from(i.querySelectorAll(s));return!e.fromQuery&&n.startsWith("#")?a[0]??null:a}(r,t);case"identifier":return function(e,t,r){return"me"===e||"my"===e||"I"===e?t.me:"you"===e||"your"===e||"yourself"===e?t.you:"it"===e||"its"===e?t.it??t.result:"window"===e?"undefined"!=typeof window?window:globalThis:"document"===e?"undefined"!=typeof document?document:void 0:"element"===r?ar(t,e):t.locals?.has(e)?t.locals.get(e):t.globals?.has(e)?t.globals.get(e):e.startsWith("$")&&t.globals?.has(e.slice(1))?t.globals.get(e.slice(1)):void 0!==t[e]?t[e]:"undefined"!=typeof globalThis&&e in globalThis?globalThis[e]:void 0}(r.name,t,r.scope);case"contextReference":return function(e,t){switch(e){case"me":return t.me;case"you":return t.you;case"it":return t.it??t.result;case"event":return t.event;case"target":return t.target??t.event?.target??t.me;default:throw new bn("contextReference")}}(r.contextType,t);case"arrayLiteral":return r.elements.map(e=>wn(e,t));case"objectLiteral":return function(e,t){const r={};for(const n of e.properties){const e=n.key;let s;s="identifier"===e.type?e.name:"literal"===e.type&&"string"===e.valueType?e.value:wn(e,t)+"",r[s]=wn(n.value,t)}return r}(r,t);case"asExpression":return cn(wn(r.expression,t),jn(r.targetType),t);case"stringPostfix":return`${wn(r.expression,t)}${r.unit}`;case"blockLiteral":return Nn(r,t);case"memberExpression":{const e=wn(r.object,t);if(null==e)return;if(e instanceof Element||Array.isArray(e)||"undefined"!=typeof Node&&e instanceof Node)throw new bn("memberExpression");const n=e[r.computed?wn(r.property,t)+"":r.property?.name];return"function"==typeof n?n.bind(e):n}default:throw new bn(r?.type??"unknown")}}function kn(e,t){const r=Xt(e);if(!r.success||!r.node){const e=r.error??r.errors?.[0];throw Error("Failed to parse expression: "+(e?.message??"unknown error"))}return wn(r.node,t)}async function En(e,t){const r=Xt(e);if(!r.success||!r.node){const e=r.error??r.errors?.[0];throw Error("Failed to parse expression: "+(e?.message??"unknown error"))}const n=t.registry?t:{...t,registry:await Cn()};return vn(r.node,n)}let xn=null;async function Cn(){if(!xn){const e=await Promise.resolve().then(function(){return au});xn=e.createFullExpressionRegistry()}return xn}async function Sn(e,t){const r=e.name;return"me"===r||"my"===r||"I"===r?yn(t,"me").evaluate(t):"you"===r||"your"===r||"yourself"===r?yn(t,"you").evaluate(t):"it"===r||"its"===r?yn(t,"it").evaluate(t):"window"===r?yn(t,"window").evaluate(t):"document"===r?yn(t,"document").evaluate(t):"global"===e.scope&&t.globals?.has(r)?(qe(r,t),t.globals.get(r)):"element"===e.scope?ar(t,r):t.locals&&t.locals.has(r)?(_e(r,t),t.locals.get(r)):t.globals&&t.globals.has(r)?(r.startsWith("$")&&qe(r.slice(1),t),t.globals.get(r)):r.startsWith("$")&&t.globals&&t.globals.has(r.slice(1))?(qe(r.slice(1),t),t.globals.get(r.slice(1))):void 0!==t[r]?t[r]:"undefined"!=typeof globalThis&&r in globalThis?globalThis[r]:void 0}function An(e){const t=e;if(!t)return null;if("identifier"===t.type&&"string"==typeof t.name)return[t.name];if("memberExpression"===t.type&&!t.computed){const e=An(t.object);if(!e)return null;const r=t.property,n="identifier"===r?.type&&"string"==typeof r.name?r.name:"string"==typeof r?.value?r.value:null;return null==n?null:[...e,n]}return null}function Tn(e,t){return Array.isArray(t)?t.includes(e):"string"==typeof t?t.includes(e+""):e instanceof Node&&t instanceof Node?e===t||t.contains(e):null!=t&&"object"==typeof t&&e in t}function On(e,t){return e&&"selector"===e.type&&"string"==typeof e.value?e.value:t}function Ln(e,t,r){if(void 0!==r)return;const n=e.right;if(!n||"identifier"!==n.type||"string"!=typeof n.name)return;if(null==t||"object"!=typeof t)return;const s=t[n.name];return"boolean"==typeof s?!0===s:void 0}function Pn(e,t,r){return e instanceof Node&&t instanceof Node&&0!==(e.compareDocumentPosition(t)&r)}function jn(e){if("string"==typeof e)return e;if(e&&"object"==typeof e){if("string"==typeof e.name)return e.name;if("string"==typeof e.value)return e.value}return e+""}function Nn(e,t){const r=e.parameters??[];return(...n)=>{const s=new Map(t.locals??new Map);r.forEach((e,t)=>s.set(e,n[t]));const i={...t,locals:s};try{return wn(e.body,i)}catch(t){if(t instanceof bn)return vn(e.body,i);throw t}}}function In(e,t){return t.locals?.has(e)?(_e(e,t),t.locals.get(e)):"me"===e&&t.me?t.me:"you"===e&&t.you?t.you:"it"===e&&t.it?t.it:"result"===e&&t.result?t.result:"undefined"!=typeof window&&"window"===e?window:t.globals?.has(e)?t.globals.get(e):void 0}async function Rn(e,t,r){const n=[];let s;for(;null!==(s=t.exec(e));)n.push({index:s.index,length:s[0].length,replacement:await r(s[0],...s.slice(1))});let i=e;for(let e=n.length-1;e>=0;e--){const{index:t,length:r,replacement:s}=n[e];i=i.substring(0,t)+s+i.substring(t+r)}return i}function qn(e,t,r){if("string"==typeof t&&t.startsWith("@")){const r=t.substring(1);return e&&"function"==typeof e.getAttribute?e.getAttribute(r):void 0}return e instanceof Element&&"string"==typeof t?Or(e,t):pn(e)&&!(t in e)?yn(r,"possessive").evaluate(r,e,t):e?.[t]}const Mn=new Set(["closest","previous","next"]);function _n(e){return e instanceof Element?e:Array.isArray(e)&&e[0]instanceof Element?e[0]:void 0}const $n=RegExp("(\\.[a-zA-Z0-9_-]+):(?!(hover|active|focus|visited|link|focus-within|focus-visible|first-child|last-child|only-child|nth-child|nth-last-child|nth-of-type|nth-last-of-type|first-of-type|last-of-type|only-of-type|empty|root|target|lang|dir|not|has|is|where|matches|before|after|first-letter|first-line|selection|placeholder|marker|backdrop|enabled|disabled|checked|indeterminate|required|optional|valid|invalid|in-range|out-of-range|read-only|read-write|default|defined|fullscreen|modal|picture-in-picture|autofill)(?![a-zA-Z0-9_-]))","g"),Vn=/[:&()[\]/]/g;function Dn(e,t){return e.fromQuery||!t.startsWith(".")||t.includes("{")?function(e){return e.replace($n,"$1\\:")}(t):function(e){return e[0]+e.slice(1).replace(Vn,"\\$&")}(t)}const zn=/\$\{([^}]+)\}|\$([a-zA-Z_$][a-zA-Z0-9_.$]*)/g;function Bn(e){const t=[];let r,n=0;for(zn.lastIndex=0;null!==(r=zn.exec(e));)r.index>n&&t.push({lit:e.slice(n,r.index)}),t.push({expr:r[1]??r[2]}),n=r.index+r[0].length;return e.length>n&&t.push({lit:e.slice(n)}),t}function Fn(e,t){let r="";const n=[];let s=0;for(const i of e){if("lit"in i){r+=i.lit;continue}const e=t[s++];xr(e)?(r+=`[data-hs-query-id='${n.length}']`,n.push(e)):r+=(e??"")+""}return{selector:r,elements:n}}class Hn{constructor(e){this.elementCleanups=new WeakMap,this.elementCount=0,this.typeCounts={listener:0,observer:0,interval:0,timeout:0,custom:0},this.globalCleanups=[],this.debugMode=e?.debug??!1}registerListener(e,t,r,n,s){this.addCleanup(e,{type:"listener",target:t,eventName:r,cleanup:()=>{t.removeEventListener(r,n,s),this.debugMode&&he(`CleanupRegistry: Removed listener '${r}'`)},description:r+" listener"})}registerObserver(e,t){this.addCleanup(e,{type:"observer",cleanup:()=>{t.disconnect(),this.debugMode&&he("CleanupRegistry: Disconnected MutationObserver")},description:"MutationObserver"})}registerInterval(e,t){this.addCleanup(e,{type:"interval",cleanup:()=>{clearInterval(t),this.debugMode&&he("CleanupRegistry: Cleared interval")},description:"Interval"})}registerTimeout(e,t){this.addCleanup(e,{type:"timeout",cleanup:()=>{clearTimeout(t),this.debugMode&&he("CleanupRegistry: Cleared timeout")},description:"Timeout"})}registerCustom(e,t,r){this.addCleanup(e,{type:"custom",cleanup:t,description:r||"Custom cleanup"})}registerGlobal(e,t="custom",r){this.globalCleanups.push({type:t,cleanup:e,description:r||"Global cleanup"}),this.debugMode&&he("CleanupRegistry: Registered global cleanup: "+(r||t))}addCleanup(e,t){const r=this.elementCleanups.get(e);r?r.push(t):(this.elementCleanups.set(e,[t]),this.elementCount++),this.typeCounts[t.type]++,this.debugMode&&he(`CleanupRegistry: Registered ${t.type} for element`,e)}cleanupElement(e){const t=this.elementCleanups.get(e);if(!t||0===t.length)return 0;let r=0;for(const e of t){try{e.cleanup(),r++}catch(e){this.debugMode&&he("CleanupRegistry: Error during cleanup:",e)}this.typeCounts[e.type]--}return this.elementCleanups.delete(e),this.elementCount--,this.debugMode&&he(`CleanupRegistry: Cleaned up ${r} resources for element`),r}cleanupElementTree(e){let t=this.cleanupElement(e);const r=e.querySelectorAll("*");for(const e of r)t+=this.cleanupElement(e);return t}cleanupGlobal(){let e=0;for(const t of this.globalCleanups)try{t.cleanup(),e++}catch(e){this.debugMode&&he("CleanupRegistry: Error during global cleanup:",e)}return this.globalCleanups=[],this.debugMode&&he(`CleanupRegistry: Cleaned up ${e} global resources`),e}cleanupAll(){return this.cleanupGlobal()}hasCleanups(e){const t=this.elementCleanups.get(e);return void 0!==t&&t.length>0}getCleanupCount(e){const t=this.elementCleanups.get(e);return t?.length??0}getStats(){let e=0,t=0,r=0,n=0,s=0;for(const i of this.globalCleanups)switch(i.type){case"listener":e++;break;case"observer":t++;break;case"interval":r++;break;case"timeout":n++;break;case"custom":s++}return{elementsTracked:this.elementCount,listeners:this.typeCounts.listener+e,observers:this.typeCounts.observer+t,intervals:this.typeCounts.interval+r,timeouts:this.typeCounts.timeout+n,custom:this.typeCounts.custom+s,global:this.globalCleanups.length}}setDebugMode(e){this.debugMode=e}}class Wn{constructor(){this.sources=new Map,this.subscriptions=new Map,this.nextId=1}register(e,t){const r=e.toLowerCase();this.sources.has(r)&&he("[EventSourceRegistry] Overwriting existing event source: "+e),this.sources.set(r,t)}unregister(e){const t=e.toLowerCase(),r=this.sources.get(t);if(r){for(const[e,r]of this.subscriptions.entries())r.source===t&&(r.unsubscribe(),this.subscriptions.delete(e));return r.destroy?.(),this.sources.delete(t)}return!1}get(e){return this.sources.get(e.toLowerCase())}has(e){return this.sources.has(e.toLowerCase())}subscribe(e,t,r){const n=this.get(e);if(!n)return void he("[EventSourceRegistry] Unknown event source: "+e);n.initialize?.();const s=n.subscribe(t,r);return this.subscriptions.set(s.id,s),s}unsubscribe(e){const t=this.subscriptions.get(e);return!!t&&(t.unsubscribe(),this.subscriptions.delete(e))}getSourceNames(){return Array.from(this.sources.keys())}getSubscriptions(){return Array.from(this.subscriptions.values())}findSourceForEvent(e){for(const[t,r]of this.sources.entries())if(r.supports?.(e)??r.supportedEvents?.includes(e))return t}generateId(){return`sub_${this.nextId++}_${Date.now().toString(36)}`}destroy(){for(const e of this.subscriptions.values())e.unsubscribe();this.subscriptions.clear();for(const e of this.sources.values())e.destroy?.();this.sources.clear()}}class Un{constructor(){this.providers=new Map,this.globalProviders=new Map}register(e,t,r){const n=e.toLowerCase();this.providers.set(n,"function"==typeof t?{name:n,provide:t,cache:r?.cache??!0,description:r?.description,dependencies:r?.dependencies}:t)}registerGlobal(e,t,r){const n=e.toLowerCase();this.globalProviders.set(n,"function"==typeof t?{name:n,provide:t,cache:r?.cache??!0,description:r?.description,dependencies:r?.dependencies}:t)}unregister(e){return this.providers.delete(e.toLowerCase())}unregisterGlobal(e){return this.globalProviders.delete(e.toLowerCase())}get(e){const t=e.toLowerCase();return this.providers.get(t)??this.globalProviders.get(t)}has(e){const t=e.toLowerCase();return this.providers.has(t)||this.globalProviders.has(t)}async resolve(e,t,r){const n=this.get(e);if(!n)return;const s="__provider_"+n.name;if(n.cache&&r?.has(s))return r.get(s);if(n.dependencies)for(const e of n.dependencies)await this.resolve(e,t,r);const i=await n.provide(t);return n.cache&&r&&r.set(s,i),i}resolveSync(e,t,r){const n=this.get(e);if(!n)return;const s="__provider_"+n.name;if(n.cache&&r?.has(s))return r.get(s);const i=n.provide(t);if(i instanceof Promise)throw Error(`Context provider '${e}' is async. Use resolve() instead of resolveSync().`);return n.cache&&r&&r.set(s,i),i}enhance(e){const t=this,r=new Map;return new Proxy(e,{get(e,n,s){if("string"==typeof n&&t.get(n))try{return t.resolveSync(n,e,r)}catch{return t.resolve(n,e,r)}return Reflect.get(e,n,s)},has:(e,r)=>!("string"!=typeof r||!t.has(r))||Reflect.has(e,r)})}async resolveAll(e){const t=new Map,r={},n=[...this.globalProviders.entries(),...this.providers.entries()];for(const[s,i]of n)try{r[s]=await this.resolve(s,e,t)}catch(e){he(`[ContextProviderRegistry] Failed to resolve '${s}':`,e),r[s]=void 0}return r}getProviderNames(){return[...new Set([...this.globalProviders.keys(),...this.providers.keys()])]}clear(){this.providers.clear(),this.globalProviders.clear()}}const Kn={evaluate:(e,t)=>vn(e,t)};class Jn{static toTyped(e){return{me:e.me,...void 0!==e.owner&&{owner:e.owner},it:e.it,you:e.you,result:e.result,...void 0!==e.event&&{event:e.event},variables:e.variables||new Map,locals:e.locals||new Map,globals:e.globals||new Map,...void 0!==e.events&&{events:e.events},meta:e.meta||{},...void 0!==e.registry&&{registry:e.registry},expressionStack:[],evaluationDepth:0,validationMode:"strict",evaluationHistory:[]}}static fromTyped(e,t){return{...t,me:e.me,it:e.it,you:e.you,result:e.result,...void 0!==e.event&&{event:e.event},...void 0!==e.variables&&{variables:e.variables},locals:e.locals,globals:e.globals,...void 0!==e.events&&{events:e.events},...void 0!==e.meta&&{meta:e.meta}}}}class Zn{constructor(e,t,r){this.impl=e,this.hookRegistry=r??null}setHookRegistry(e){this.hookRegistry=e}createHookContext(e,t,r={}){return{commandName:this.name,element:e.me instanceof Element?e.me:null,args:t,modifiers:r,event:e.event??void 0,executionContext:e}}get name(){const e=this.impl.name;if(e)return e;const t=this.impl.metadata?.name;return"string"==typeof t?t:""}get metadata(){const e=this.impl.metadata?.syntax;return{description:this.impl.metadata?.description||"",examples:this.impl.metadata?.examples||[],syntax:Array.isArray(e)?e.join(" | "):e||""}}async execute(e,...t){const r=t[0],n=this.createHookContext(e,t,r&&"object"==typeof r&&"modifiers"in r&&r.modifiers||{});try{if(de(`CommandAdapterV2: Executing '${this.name}' with args:`,t),this.hookRegistry&&await this.hookRegistry.runBeforeExecute(n),this.hookRegistry?.shouldIntercept(this.name,n))return void de(`CommandAdapterV2: '${this.name}' intercepted by hook`);const s=Jn.toTyped(e);let i,a;if(this.impl.parseInput&&"function"==typeof this.impl.parseInput)if(de(`CommandAdapterV2: '${this.name}' has parseInput(), calling it`),r&&"object"==typeof r&&("args"in r||"modifiers"in r)){const t=r.modifiers,n=t?.when||t?.where;if(n&&!await vn(n,e))return void de(`CommandAdapterV2: '${this.name}' skipped - when/where condition evaluated to false`);i=await this.impl.parseInput({args:r.args||[],modifiers:t||{},commandName:r.commandName},Kn,e)}else i=t;else de(`CommandAdapterV2: '${this.name}' has no parseInput(), using args as-is`),i=t;if(de("CommandAdapterV2: Calling execute with parsed input:",i),2===this.impl.execute.length)a=await this.impl.execute(i,s);else{const e=Array.isArray(i)?i:[i];a=await this.impl.execute(s,...e)}return de("CommandAdapterV2: Command result:",a),Object.assign(e,Jn.fromTyped(s,e)),this.hookRegistry&&await this.hookRegistry.runAfterExecute(n,a),a}catch(e){if(ts(e)||de(`CommandAdapterV2: Error executing '${this.name}':`,e),this.hookRegistry&&e instanceof Error)throw await this.hookRegistry.runOnError(n,e);throw e}}validate(e){return this.impl.validate?this.impl.validate(e):{isValid:!0,errors:[],suggestions:[]}}}class Xn{constructor(e,t){this.adapters=new Map,this.implementations=new Map,this.hookRegistry=t}setHookRegistry(e){this.hookRegistry=e;for(const t of this.adapters.values())t.setHookRegistry(e);he(`CommandRegistryV2: Hook registry set and propagated to ${this.adapters.size} adapters`)}getHookRegistry(){return this.hookRegistry}register(e){const t=e.name||e.metadata?.name;if(!t||"string"!=typeof t)throw Error("Cannot register command: no name found. Provide a 'name' property or 'metadata.name' on the implementation.");const r=t.toLowerCase();he(`CommandRegistryV2: Registering command '${r}'`),this.implementations.set(r,e);const n=new Zn(e,void 0,this.hookRegistry);this.adapters.set(r,n),k.add(r);const s=e.metadata?.aliases;if(s&&Array.isArray(s))for(const t of s){const r=t.toLowerCase();this.implementations.set(r,e),this.adapters.set(r,n),k.add(r)}}getAdapter(e){return this.adapters.get(e.toLowerCase())}has(e){return this.adapters.has(e.toLowerCase())}getCommandNames(){return Array.from(this.adapters.keys())}getImplementation(e){return this.implementations.get(e.toLowerCase())}getAdapters(){return new Map(this.adapters)}validateCommand(e,t){const r=this.getAdapter(e);return r?r.validate(t):{isValid:!1,errors:[{type:"runtime-error",message:"Unknown command: "+e,suggestions:["Available commands: "+this.getCommandNames().join(", ")]}],suggestions:["Available commands: "+this.getCommandNames().join(", ")]}}}let Yn=null;function Gn(){return Yn||(Yn=function(e){const t=e?.commands??new Xn,r=e?.eventSources??new Wn,n=e?.context??new Un,s=new Set,i={commands:t,eventSources:r,context:n,use(e){if(s.has(e.name))he(`[LokaScriptRegistry] Plugin '${e.name}' is already installed`);else{if(e.commands)for(const r of e.commands)t.register(r);if(e.eventSources)for(const t of e.eventSources)r.register(t.name,t);if(e.contextProviders)for(const{name:t,provide:r,options:s}of e.contextProviders)n.register(t,r,s);e.setup?.(i),s.add(e.name)}},reset(){s.clear()}};return i}()),Yn}class Qn{constructor(e={}){this.contextCache=new WeakMap;const t=Gn();this.options={enableContextProviders:e.enableContextProviders??!0,enableEventSources:e.enableEventSources??!0,registry:e.registry??{}},this.contextRegistry=this.options.registry.context??t.context,this.eventSourceRegistry=this.options.registry.eventSources??t.eventSources,he(`[RegistryIntegration] Initialized (context=${this.options.enableContextProviders}, events=${this.options.enableEventSources})`)}enhanceContext(e){if(!this.options.enableContextProviders)return e;const t=this.contextCache.get(e);if(t)return t;try{const t=this.contextRegistry.enhance(e);return this.contextCache.set(e,t),he(`[RegistryIntegration] Enhanced context with ${this.contextRegistry.getProviderNames().length} providers`),t}catch(t){return he("[RegistryIntegration] Failed to enhance context: "+(t instanceof Error?t.message:t+"")),e}}getEventSource(e){if(!this.options.enableEventSources)return;const t=this.eventSourceRegistry.get(e);if(t)return he(`[RegistryIntegration] Found event source for '${e}'`),t;const r=this.eventSourceRegistry.findSourceForEvent(e);if(r){const t=this.eventSourceRegistry.get(r);return he(`[RegistryIntegration] Found event source '${r}' supporting '${e}'`),t}}hasEventSource(e){return void 0!==this.getEventSource(e)}subscribeToEventSource(e,t,r){if(!this.options.enableEventSources)throw Error("Event sources are disabled in this runtime");const n=this.eventSourceRegistry.subscribe(e,t,r);if(!n)throw Error(`Failed to subscribe to event source '${e}'`);return he(`[RegistryIntegration] Subscribed to '${e}' event '${t.event}' (id: ${n.id})`),n}getEventSourceNames(){return this.eventSourceRegistry.getSourceNames()}getContextProviderNames(){return this.contextRegistry.getProviderNames()}destroy(){this.eventSourceRegistry.destroy(),this.contextCache=new WeakMap,he("[RegistryIntegration] Destroyed")}}function es(e){const t=Error(e.type.toUpperCase()+"_EXECUTION");return t["is"+e.type.charAt(0).toUpperCase()+e.type.slice(1)]=!0,"returnValue"in e&&(t.returnValue=e.returnValue),t}function ts(e){return e instanceof Error&&(null!==Gt(e)||"HALT_EXECUTION"===e.message||"EXIT_COMMAND"===e.message||"EXIT_EXECUTION"===e.message)}function rs(e){if(void 0===e)return;let t=e;if(t&&"object"==typeof t){const e=t;if("result"in e&&"wasAsync"in e)t=e.result;else if("result"in e&&"executed"in e){if(t=e.result,e.preserveArrayResult)return void 0!==t?t:void 0}else if("lastResult"in e&&"type"in e)t=e.lastResult;else if("conditionResult"in e&&"executedBranch"in e){if(void 0===e.result)return;t=e.result}else"value"in e&&1===Object.keys(e).length||"value"in e&&"target"in e&&"targetType"in e?t=e.value:"data"in e&&"status"in e&&"headers"in e&&(t=e.data)}return Array.isArray(t)&&t.length>0&&(t=t[0]),t}function ns(e){return null!==e&&"object"==typeof e&&"command"in e&&"selector"in e}const ss=new WeakMap;class is{constructor(e){this.autoCleanupObserver=null,this.registryIntegration=null,this.runtimeWarnings=[],this.options={commandTimeout:1e4,enableErrorReporting:!0,enableResultPattern:!0,enableAutoCleanup:!0,...e},this.registry=e.registry,this.expressionRegistry=e.expressionRegistry,this.behaviorRegistry=new Map,this.globalVariables=rr,this.hookRegistry=new Yt,e.hooks&&this.hookRegistry.register("default",e.hooks),this.registry.setHookRegistry(this.hookRegistry),this.cleanupRegistry=new Hn,this.options.enableAutoCleanup&&this.setupAutoCleanup(),!1!==e.registryIntegration&&(this.registryIntegration=new Qn("object"==typeof e.registryIntegration?e.registryIntegration:{}),he("RuntimeBase: Registry integration enabled")),this.behaviorAPI={has:e=>this.behaviorRegistry.has(e),get:e=>this.behaviorRegistry.get(e),set:(e,t)=>this.behaviorRegistry.set(e,t),resolve:null,install:async(e,t,r)=>await this.installBehaviorOnElement(e,t,r)}}setupAutoCleanup(){"undefined"!=typeof MutationObserver&&"undefined"!=typeof document&&(this.autoCleanupObserver=new MutationObserver(e=>{const t=[];for(const r of e)for(const e of r.removedNodes)e instanceof Element&&t.push(e);t.length>0&&queueMicrotask(()=>{for(const e of t)if(!e.isConnected){const t=this.cleanupRegistry.cleanupElementTree(e);t>0&&he(`RuntimeBase: Auto-cleaned ${t} resources for removed element`)}})}),document.body?this.autoCleanupObserver.observe(document.body,{childList:!0,subtree:!0}):document.addEventListener("DOMContentLoaded",()=>{this.autoCleanupObserver?.observe(document.body,{childList:!0,subtree:!0})},{once:!0}))}registerHooks(e,t){this.hookRegistry.register(e,t)}unregisterHooks(e){return this.hookRegistry.unregister(e)}getRegisteredHooks(){return this.hookRegistry.getRegisteredNames()}cleanup(e){return this.cleanupRegistry.cleanupElement(e)}trackListener(e,t,r,n,s){this.cleanupRegistry.registerListener(e,t,r,n,s)}cleanupTree(e){return this.cleanupRegistry.cleanupElementTree(e)}getCleanupStats(){return this.cleanupRegistry.getStats()}getCleanupRegistry(){return this.cleanupRegistry}logError(...e){this.options.enableErrorReporting&&console.error(...e)}logWarn(...e){this.options.enableErrorReporting&&console.warn(...e)}destroy(){this.autoCleanupObserver&&(this.autoCleanupObserver.disconnect(),this.autoCleanupObserver=null),this.cleanupRegistry.cleanupAll(),this.hookRegistry.clear(),this.behaviorRegistry.clear(),he("RuntimeBase: Destroyed")}hasErrorDiagnostics(e){const t=e.diagnostics;return!!t?.some(e=>"error"===e.severity)}getWarnings(){return this.runtimeWarnings}async execute(e,t){he(`RUNTIME BASE: execute() called with node type: '${e.type}'`),t.registry||(t.registry=this.expressionRegistry),t.locals.has("_behaviors")||t.locals.set("_behaviors",this.behaviorAPI),t.locals.has("_runtimeExecute")||t.locals.set("_runtimeExecute",(e,r)=>this.execute(e,r||t));try{if(this.hasErrorDiagnostics(e)){const t=e.diagnostics?.[0];return he("\u26a0\ufe0f RUNTIME: Skipping error node: "+(t?.message||"unknown error")),void this.runtimeWarnings.push(t?.message||"Skipped error node")}switch(e.type){case"command":if(this.options.enableResultPattern){const r=await this.processCommandWithResult(e,t);if(!tr(r)){if("return"===r.error.type){const e=r.error.returnValue;return void 0!==e&&Object.assign(t,{it:e,result:e}),e}throw es(r.error)}return r.value}try{return await this.processCommand(e,t)}catch(e){const r=Gt(e);if(r?.isReturn){const e=r.returnValue;return void 0!==e&&Object.assign(t,{it:e,result:e}),e}throw e}case"eventHandler":return await this.executeEventHandler(e,t);case"event":{const r={type:"eventHandler",event:e.event,events:[e.event],commands:e.body||[],target:e.filter,modifiers:e.modifiers||{}};return await this.executeEventHandler(r,t)}case"behavior":return await this.executeBehaviorDefinition(e,t);case"Program":return await this.executeProgram(e,t);case"initBlock":case"block":return await this.executeBlock(e,t);case"sequence":case"CommandSequence":if(this.options.enableResultPattern){const r=e,n=await this.executeCommandSequenceWithResult(r.commands||[],t);if(!tr(n))throw es(n.error);return n.value}return await this.executeCommandSequence(e,t);case"objectLiteral":return await this.executeObjectLiteral(e,t);default:if(this.options.enableResultPattern){const r=await this.evaluateExpressionWithResult(e,t);if(!tr(r))throw es(r.error);return r.value}return await this.evaluateExpression(e,t)}}catch(e){throw e}}async processCommand(e,t){const{name:r,args:n,modifiers:s}=e,i=r.toLowerCase();if(de(`RUNTIME BASE: Processing command '${i}'`),this.registry.has(i)){const e=await this.registry.getAdapter(i);if(!e)throw Error(`Command '${i}' is registered but failed to load adapter.`);try{return await e.execute(t,{args:n||[],modifiers:s||{},commandName:i,runtime:this})}catch(e){throw ts(e)||this.logError(`Error executing command '${i}':`,e),e}}const a=`Unknown command: ${r}. Ensure it is registered in the Runtime options.`;throw this.logWarn(a),Error(a)}toSignal(e){const t=Gt(e);if(t){if(t.isHalt||"HALT_EXECUTION"===t.message)return{type:"halt"};if(t.isExit||"EXIT_COMMAND"===t.message)return{type:"exit",returnValue:t.returnValue};if(t.isBreak)return{type:"break"};if(t.isContinue)return{type:"continue"};if(t.isReturn)return{type:"return",returnValue:t.returnValue}}if(e instanceof Error){if("HALT_EXECUTION"===e.message)return{type:"halt"};if("EXIT_COMMAND"===e.message)return{type:"exit"}}return null}async processCommandWithResult(e,t){const{name:r,args:n,modifiers:s}=e,i=r.toLowerCase();if(de(`RUNTIME BASE (Result): Processing command '${i}'`),!this.registry.has(i)){const e=`Unknown command: ${r}. Ensure it is registered in the Runtime options.`;throw this.logWarn(e),Error(e)}const a=await this.registry.getAdapter(i);if(!a)throw Error(`Command '${i}' is registered but failed to load adapter.`);try{return Qt(await a.execute(t,{args:n||[],modifiers:s||{},commandName:i,runtime:this}))}catch(e){const t=this.toSignal(e);if(t)return er(t);throw this.logError(`Error executing command '${i}':`,e),e}}async executeCommandSequenceWithResult(e,t){let r;for(const n of e){if(this.hasErrorDiagnostics(n)){const e=n.diagnostics?.[0];he("\u26a0\ufe0f RUNTIME: Skipping error node: "+(e?.message||"unknown error")),this.runtimeWarnings.push(e?.message||"Skipped error node");continue}if("command"===n.type){const e=await this.processCommandWithResult(n,t);if(!tr(e)){const r=e.error;switch(r.type){case"halt":case"exit":case"break":case"continue":return e;case"return":return void 0!==r.returnValue&&Object.assign(t,{it:r.returnValue,result:r.returnValue}),Qt(r.returnValue)}}r=e.value}else{const e=await this.evaluateExpressionWithResult(n,t);if(!tr(e))return e;r=e.value}}return Qt(r)}async evaluateExpression(e,t){const r=t.registry?t:{...t,registry:this.expressionRegistry},n=await vn(e,r);return ns(n)?await this.executeCommandFromPattern(n.command,n.selector,t):n}async evaluateExpressionWithResult(e,t){const r=t.registry?t:{...t,registry:this.expressionRegistry},n=await async function(e,t){try{return Qt(await vn(e,t))}catch(e){if(e instanceof Error){const t=e;if(t.isHalt||"HALT_EXECUTION"===t.message)return er({type:"halt"});if(t.isExit||"EXIT_COMMAND"===t.message)return er({type:"exit",returnValue:t.returnValue});if(t.isBreak)return er({type:"break"});if(t.isContinue)return er({type:"continue"});if(t.isReturn)return er({type:"return",returnValue:t.returnValue})}throw e}}(e,r);if(!tr(n))return n;const s=n.value;if(ns(s)){if(this.options.enableResultPattern)return this.processCommandWithResult({type:"command",name:s.command,args:[{type:"literal",value:s.selector}]},t);try{return Qt(await this.executeCommandFromPattern(s.command,s.selector,t))}catch(e){const t=this.toSignal(e);if(t)return er(t);throw e}}return Qt(s)}async executeCommandFromPattern(e,t,r){return this.processCommand({type:"command",name:e,args:[{type:"literal",value:t}]},r)}async executeProgram(e,t){if(!e.statements||!Array.isArray(e.statements))return;let r;const n=[],s=[],i=[];for(const t of e.statements)"eventHandler"===t.type?n.push(t):"initBlock"===t.type?s.push(t):i.push(t);for(const e of n)try{await this.execute(e,t)}catch(e){if(ts(e)&&(e.isHalt||e.isExit))break;throw e}for(const e of s)try{r=await this.execute(e,t)}catch(e){if(ts(e)&&(e.isHalt||e.isExit))break;throw e}for(const e of i)try{r=await this.execute(e,t)}catch(e){if(ts(e)&&(e.isHalt||e.isExit))break;throw e}return r}async executeBlock(e,t){if(e.commands&&Array.isArray(e.commands))for(const r of e.commands)try{await this.execute(r,t)}catch(e){if(ts(e)&&e.isHalt)break;throw e}}async executeCommandSequence(e,t){if(!e.commands||!Array.isArray(e.commands))return;let r;for(const n of e.commands)try{r=await this.execute(n,t)}catch(e){if(ts(e)){if(e.isHalt||e.isExit)break;if(e.isReturn){if(void 0!==e.returnValue)return Object.assign(t,{it:e.returnValue,result:e.returnValue}),e.returnValue;break}if(e.isBreak)throw e}throw e}return r}async executeObjectLiteral(e,t){const r={};if(!e.properties)return r;for(const n of e.properties){let e;e="identifier"===n.key.type?n.key.name:"literal"===n.key.type?n.key.value+"":await this.execute(n.key,t)+"";const s=await this.execute(n.value,t);r[e]=s}return r}enhanceContext(e){return this.registryIntegration?this.registryIntegration.enhanceContext(e):e}async executeBehaviorDefinition(e,t){const{name:r,parameters:n=[],eventHandlers:s=[],initBlock:i}=e,a=e.imperativeInstaller;"function"==typeof a?(this.behaviorRegistry.set(r,{name:r,parameters:n,type:"imperative",install:a}),he(`RUNTIME BASE: Registered imperative behavior '${r}'`)):(this.behaviorRegistry.set(r,{name:r,parameters:n,eventHandlers:s,initBlock:i}),he(`RUNTIME BASE: Registered behavior '${r}'`))}async installBehaviorOnElement(e,t,r){he("BEHAVIOR: installBehaviorOnElement called: "+e);let n=this.behaviorRegistry.get(e);if(!n&&(this.behaviorAPI.resolve&&this.behaviorAPI.resolve(e)&&(n=this.behaviorRegistry.get(e)),!n))throw Error(`Behavior "${e}" not found`);if("imperative"===n.type)return void("function"==typeof n.install&&(he(`BEHAVIOR: Installing imperative behavior '${e}'`),n.install(t,r),he(`BEHAVIOR: Finished installing imperative behavior '${e}'`)));he("BEHAVIOR: Found behavior, eventHandlers count: "+(n.eventHandlers?.length||0));const s={me:t,owner:t,you:null,it:null,result:null,locals:new Map,globals:this.globalVariables,registry:this.expressionRegistry,halted:!1,returned:!1,broke:!1,continued:!1,async:!1},i=this.enhanceContext(s);if(n.parameters)for(const e of n.parameters)i.locals.set(e,e in r?r[e]:void 0);for(const[e,t]of Object.entries(r))n.parameters?.includes(e)||i.locals.set(e,t);if(n.initBlock){he("BEHAVIOR: Running init block for "+e);const t=this.options.commandTimeout??1e4;try{await Promise.race([this.execute(n.initBlock,i),new Promise((r,n)=>setTimeout(()=>n(Error(`Behavior "${e}" init block timed out after ${t}ms`)),t))]),he("BEHAVIOR: Init block completed for "+e)}catch(t){if(he(`BEHAVIOR: Init block error for ${e}:`,t),!(t instanceof Error&&ts(t)))throw t}}if(he(`BEHAVIOR: About to attach ${n.eventHandlers?.length||0} handlers for ${e}`),n.eventHandlers){const t=this.options.commandTimeout??1e4;for(const r of n.eventHandlers)await Promise.race([this.executeEventHandler(r,i),new Promise((r,n)=>setTimeout(()=>n(Error(`Behavior "${e}" handler attachment timed out after ${t}ms`)),t))])}he("BEHAVIOR: Finished installing "+e)}async executeEventHandler(e,t){const{event:r,events:n,commands:s,target:i,args:a,selector:o,attributeName:l,watchTarget:c,modifiers:u,errorSymbol:d,errorHandler:m,finallyHandler:p}=e,h=n&&n.length>0?n:[r];he(`BEHAVIOR: executeEventHandler: event='${r}', target='${i}'`);let f=[],y=null;if(i){const e="string"==typeof i?i.toLowerCase():"";if("window"===e||"the window"===e)y=window;else if("document"===e||"the document"===e||"body"===e)y=document;else if("me"===e||"myself"===e)f=t.me?[t.me]:[];else if("string"==typeof i&&t.locals.has(i)){const e=t.locals.get(i);he(`BEHAVIOR: Target resolution: found local '${i}', isElement: ${this.isElement(e)}`),this.isElement(e)?f=[e]:Array.isArray(e)?f=e.filter(e=>this.isElement(e)):"string"==typeof e&&(f=this.queryElements(e,t))}else he(`BEHAVIOR: Target resolution: querying for '${i}'`),f=this.queryElements(i,t)}else f=t.me?[t.me]:[];if(0===f.length&&!y)return void he(`BEHAVIOR: executeEventHandler - No targets found for event '${r}', returning early`);if("mutation"===r&&l)return void this.setupMutationObserver(f,l,s,t);if("change"===r&&c)return void this.setupChangeObserver(c,s,t);const g=e.customEventSource;if(g&&this.registryIntegration){he(`BEHAVIOR: executeEventHandler - Using custom event source '${g}' for event '${r}'`);const e=async e=>{const n=new Map(t.locals),i={...t,locals:n,it:e,event:e},a=this.enhanceContext(i);he(`CUSTOM EVENT: Executing commands for event '${r}'`);try{await this.execute({type:"program",commands:s},a)}catch(e){this.logError(`[HyperFixi] Error executing commands for custom event '${r}':`,e)}};try{const n=this.registryIntegration.subscribeToEventSource(g,{event:r,handler:e,target:i,selector:o},t);he(`BEHAVIOR: Subscribed to custom event source '${g}' (id: ${n.id})`),this.cleanupRegistry.registerGlobal(()=>n.unsubscribe(),"listener",`Custom event source '${g}' subscription ${n.id}`)}catch(e){this.logError(`[HyperFixi] Failed to subscribe to custom event source '${g}':`,e)}return}const v=is.createEventHandler(this,s,t,o,a,{errorSymbol:d,errorHandler:m,finallyHandler:p});let b,w=null;if(u){let e=v;if(u.prevent){const t=e;e=async e=>(e.preventDefault(),t(e))}if(u.stop){const t=e;e=async e=>(e.stopPropagation(),t(e))}if(u.debounce){const t=u.debounce;let r;b=n=>{r&&clearTimeout(r),r=setTimeout(()=>e(n),t)},w=()=>{r&&(clearTimeout(r),r=void 0)}}else if(u.throttle){const t=u.throttle;let r=0;b=n=>{const s=Date.now();t>s-r||(r=s,e(n))}}else b=e}else b=v;const k=u?.once?{once:!0}:void 0;if(y){for(const e of h)y.addEventListener(e,b,k),f.length>0?this.cleanupRegistry.registerListener(f[0],y,e,b):this.cleanupRegistry.registerGlobal(()=>y.removeEventListener(e,b),"listener",`Global ${e} listener`);w&&(f.length>0?this.cleanupRegistry.registerCustom(f[0],w,"debounce-timeout"):this.cleanupRegistry.registerGlobal(w,"timeout","debounce-timeout"))}else for(const e of f){for(const t of h){if("resize"===t&&"undefined"!=typeof ResizeObserver){const t=new ResizeObserver(e=>{for(const r of e){const e=new CustomEvent("resize",{detail:r,bubbles:!1,cancelable:!1});if(e.synthetic=!0,b(e),k?.once){t.disconnect();break}}});t.observe(e),this.cleanupRegistry.registerCustom(e,()=>t.disconnect(),"resize-observer");continue}e.addEventListener(t,b,k),this.cleanupRegistry.registerListener(e,e,t,b)}w&&this.cleanupRegistry.registerCustom(e,w,"debounce-timeout")}}static createEventHandler(e,t,r,n,s,i){return async a=>{const o=ss.get(a)??0;if(o>=100)return;if(ss.set(a,o+1),n&&a.target instanceof Element)try{if(!a.target.matches(n)&&!a.target.closest(n))return}catch{he(`Event delegation: invalid CSS selector '${n}', skipping filter`)}const l=new Map(r.locals),c={...r,locals:l,it:a,event:a};l.has("target")||c.locals.set("target",a.target);const u=e.enhanceContext(c);if(s&&s.length>0){const e=a,t=e.detail;for(const r of s)u.locals.set(r,e[r]??t?.[r]??null)}const d=async t=>{for(const r of t)try{const t=rs(await e.execute(r,u));void 0!==t&&Object.assign(u,{it:t,result:t})}catch(t){if(ts(t)){if(t.isHalt||t.isExit)break;if(t.isReturn){void 0!==t.returnValue&&Object.assign(u,{it:t.returnValue,result:t.returnValue});break}}throw e.logError("COMMAND FAILED:",t),t}},m=i?.errorHandler,p=i?.finallyHandler;if(m||p)try{await d(t)}catch(e){if(!m||ts(e))throw e;i?.errorSymbol&&u.locals.set(i.errorSymbol,e),await d(m)}finally{p&&await d(p)}else await d(t)}}setupMutationObserver(e,t,r,n){he(`RUNTIME BASE: Setting up MutationObserver for attribute '${t}' on ${e.length} elements`);for(const s of e){const e=new MutationObserver(async e=>{for(const i of e)if("attributes"===i.type&&i.attributeName===t){me(`MUTATION DETECTED: attribute '${t}' changed on`,s);const e={...n,me:s,it:i,locals:new Map(n.locals)},a=i.oldValue,o=s.getAttribute(t);e.locals.set("oldValue",a),e.locals.set("newValue",o);const l=this.enhanceContext(e);for(const e of r)try{await this.execute(e,l)}catch(e){if(ts(e)){if(e.isHalt||e.isExit||e.isReturn)break}else this.logError("Error executing mutation handler command:",e)}}});e.observe(s,{attributes:!0,attributeOldValue:!0,attributeFilter:[t]}),this.cleanupRegistry.registerObserver(s,e),he("RUNTIME BASE: MutationObserver attached to",s,`for attribute '${t}'`)}}async setupChangeObserver(e,t,r){he("RUNTIME BASE: Setting up MutationObserver for content changes on watch target");const n=await this.execute(e,r);let s=[];this.isElement(n)?s=[n]:Array.isArray(n)&&(s=n.filter(e=>this.isElement(e))),he(`RUNTIME BASE: Watching ${s.length} target elements for content changes`);for(const e of s){const n=new MutationObserver(async n=>{for(const s of n)if("childList"===s.type||"characterData"===s.type){me("CONTENT CHANGE DETECTED on",e,"mutation type:",s.type);const n={...r,me:r.me,it:s,locals:new Map(r.locals)};n.locals.set("target",e);const i=s.oldValue,a=e.textContent;null!==i&&n.locals.set("oldValue",i),n.locals.set("newValue",a);const o=this.enhanceContext(n);for(const e of t)try{await this.execute(e,o)}catch(e){if(ts(e)){if(e.isHalt||e.isExit||e.isReturn)break}else this.logError("Error executing change handler command:",e)}}});n.observe(e,{childList:!0,characterData:!0,subtree:!0,characterDataOldValue:!0}),this.cleanupRegistry.registerObserver(e,n),he("RUNTIME BASE: MutationObserver attached to",e,"for content changes")}}queryElements(e,t){const r=t.me,n=(r instanceof Element?r.ownerDocument:null)??("undefined"!=typeof document?document:null);if(!n)return[];let s=e;s.startsWith("<")&&s.endsWith("/>")&&(s=s.slice(1,-2).trim());try{return Array.from(n.querySelectorAll(s))}catch{return he(`queryElements: invalid CSS selector '${s}'`),[]}}isElement(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement||!(!e||"object"!=typeof e)&&(!!e.style&&!!e.classList)}}function as(...e){const t=new Map;for(const r of e)for(const[e,n]of Object.entries(r))t.set(e,n);return t}class os{constructor(e){this.observer=null,this.initialized=!1,this.runtime=e}init(){"undefined"!=typeof document&&(this.initialized||(this.initialized=!0,this.scanDocument(),this.observer=new MutationObserver(e=>{for(const t of e)"childList"===t.type?t.addedNodes.forEach(e=>{e.nodeType===Node.ELEMENT_NODE&&(this.processElement(e),this.scanElement(e))}):"attributes"===t.type&&"_"===t.attributeName&&this.processElement(t.target)}),this.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["_"]})))}destroy(){this.observer&&(this.observer.disconnect(),this.observer=null),this.initialized=!1}reset(){this.destroy()}scanAndProcessAll(){this.scanDocument()}scanDocument(){document.body&&this.scanElement(document.body)}scanElement(e){e.hasAttribute("_")&&this.processElement(e),e.querySelectorAll("[_]").forEach(e=>this.processElement(e))}processElement(e){const t=e.getAttribute("_");if(!t)return;const r=lr(e);this.runtime.execute(t,r).catch(r=>{console.error('[HyperFixi] Error executing _="" attribute:',r),console.error("Element:",e),console.error("Code:",t)})}}const ls=Wr({selector:Br().min(1),single:Hr().optional().default(!1)});new class extends Xr{constructor(){super(...arguments),this.name="me",this.category="Reference",this.syntax="me",this.description="References the current element in the execution context",this.inputSchema=Zr(),this.outputType="Element",this.metadata={category:"Reference",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=e.me,s=this.isElement(n)?n:null,i=this.success(s,"element");return this.trackPerformance(e,t,i,r),i}catch(n){const s=this.failure("MeExpressionError","runtime-error",n instanceof Error?n.message:'Failed to evaluate "me"',"ME_EVALUATION_FAILED",["Ensure element context is properly set",'Check if "me" is available in current scope']);return this.trackPerformance(e,t,s,r),s}}validate(e){return void 0!==e?this.validationFailure("type-mismatch",'"me" expression takes no arguments',['Use "me" without any parameters']):this.validationSuccess()}},new class extends Xr{constructor(){super(...arguments),this.name="you",this.category="Reference",this.syntax="you",this.description="References the target element (usually event target or command target)",this.inputSchema=Zr(),this.outputType="Element",this.metadata={category:"Reference",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=e.you,s=this.isElement(n)?n:null,i=this.success(s,"element");return this.trackPerformance(e,t,i,r),i}catch(n){const s=this.failure("YouExpressionError","runtime-error",n instanceof Error?n.message:'Failed to evaluate "you"',"YOU_EVALUATION_FAILED",["Ensure target element is available in context",'Check if "you" is set by event or command']);return this.trackPerformance(e,t,s,r),s}}validate(e){return void 0!==e?this.validationFailure("type-mismatch",'"you" expression takes no arguments',['Use "you" without any parameters']):this.validationSuccess()}},new class extends Xr{constructor(){super(...arguments),this.name="it",this.category="Reference",this.syntax="it",this.description="References the current context variable (result of previous operation or loop item)",this.inputSchema=Zr(),this.outputType="Any",this.metadata={category:"Reference",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=e.it,s={success:!0,value:n,type:this.inferType(n)};return this.trackPerformance(e,t,s,r),s}catch(n){const s=this.failure("ItExpressionError","runtime-error",n instanceof Error?n.message:'Failed to evaluate "it"',"IT_EVALUATION_FAILED",['Ensure "it" is set by previous operation',"Check if context variable is available"]);return this.trackPerformance(e,t,s,r),s}}validate(e){return void 0!==e?this.validationFailure("type-mismatch",'"it" expression takes no arguments',['Use "it" without any parameters']):this.validationSuccess()}},new class extends Xr{constructor(){super(...arguments),this.name="css-selector",this.category="Reference",this.syntax="<selector/> or <selector/> (single)",this.description="Queries DOM elements using CSS selectors with validation",this.inputSchema=ls,this.outputType="ElementList",this.metadata={category:"Reference",complexity:"medium"}}async evaluate(e,t){const r=Date.now();try{if(!this.isValidCSSSelector(t.selector)){const n=this.failure("CSSSelectorError","invalid-argument",`Invalid CSS selector: "${t.selector}"`,"INVALID_CSS_SELECTOR",["Check selector syntax","Use valid CSS selector patterns like .class, #id, tag[attr]","Avoid special characters that need escaping"]);return this.trackPerformance(e,t,n,r),n}let n;if(t.single)n=document.querySelector(t.selector);else{const e=Array.from(document.querySelectorAll(t.selector));n=e.length>0?e:null}const s={success:!0,value:n,type:Array.isArray(n)?"element-list":"element"};return this.trackPerformance(e,t,s,r),s}catch(n){const s=this.failure("CSSSelectorError","runtime-error",n instanceof Error?n.message:"CSS selector evaluation failed","CSS_SELECTOR_EVALUATION_FAILED",["Check if selector is valid CSS","Ensure DOM is ready when query executes","Verify elements exist in document"]);return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);if(!t.success)return{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid input: "+e.message,suggestions:this.getValidationSuggestion(e.code??"unknown")}))??[],suggestions:["Provide valid CSS selector string","Check selector syntax"]};const{selector:r}=t.data;return this.isValidCSSSelector(r)?this.validationSuccess():this.validationFailure("syntax-error",`Invalid CSS selector syntax: "${r}"`,["Use .class for class selectors","Use #id for ID selectors","Use tag for element selectors","Use [attr] for attribute selectors"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Ensure input matches expected format"])}}isValidCSSSelector(e){try{return document.querySelector(e),!0}catch{return!1}}getValidationSuggestion(e){return[{too_small:"CSS selector cannot be empty",invalid_type:"Selector must be a string",required:"CSS selector is required"}[e]||"Check input format and types"]}};const cs={name:"me",category:"Reference",evaluatesTo:"Element",evaluate:async e=>e.me??null,validate:Rr},us={name:"you",category:"Reference",evaluatesTo:"Element",evaluate:async e=>e.you??null,validate:Rr},ds={name:"it",category:"Reference",evaluatesTo:"Any",evaluate:async e=>e.it,validate:Rr},ms={name:"its",category:"Reference",evaluatesTo:"Any",evaluate:async e=>e.it,validate:Rr},ps={name:"result",category:"Reference",evaluatesTo:"Any",evaluate:async e=>e.result,validate:Rr},hs={name:"querySelector",category:"Reference",evaluatesTo:"Element",async evaluate(e,...t){const[r]=t;if("string"!=typeof r)throw Error("querySelector requires a string selector");return document.querySelector(r)},validate:e=>Nr(e,"querySelector","selector")},fs={name:"querySelectorAll",category:"Reference",evaluatesTo:"Array",async evaluate(e,...t){const r=t[0];if("string"!=typeof r)throw Error("querySelectorAll requires a string selector");const n=document.querySelectorAll(r);return Array.from(n)},validate:e=>Nr(e,"querySelectorAll","selector")},ys={name:"getElementById",category:"Reference",evaluatesTo:"Element",async evaluate(e,...t){const r=t[0];if("string"!=typeof r)throw Error("getElementById requires a string ID");return document.getElementById(r)},validate:e=>Nr(e,"getElementById","ID")};function gs(e,t){if(t.startsWith("computed-")){const r=t.substring(9);return getComputedStyle(e).getPropertyValue(r)||""}const r=t.replace(/-([a-z])/g,(e,t)=>t.toUpperCase());return e.style[r]}const vs={me:cs,you:us,it:ds,its:ms,result:ps,querySelector:hs,querySelectorAll:fs,getElementById:ys,getElementsByClassName:{name:"getElementsByClassName",category:"Reference",evaluatesTo:"Array",async evaluate(e,...t){const r=t[0];if("string"!=typeof r)throw Error("getElementsByClassName requires a string class name");const n=document.getElementsByClassName(r);return Array.from(n)},validate:e=>Nr(e,"getElementsByClassName","className")},closest:{name:"closest",category:"Reference",evaluatesTo:"Element",async evaluate(e,...t){let r=t[0];if(r&&"object"==typeof r&&"type"in r){const e=r;"identifier"===e.type&&e.name?r=e.name:"literal"===e.type&&"string"==typeof e.value&&(r=e.value)}if("string"!=typeof r)throw Error("closest requires a string selector");return e.me?e.me.closest(r):null},validate(e){if(1!==e.length)return"closest requires exactly 1 argument (selector)";const t=e[0];return"string"==typeof t||t&&"object"==typeof t&&"type"in t&&("identifier"===t.type||"literal"===t.type)?null:"closest selector must be a string or identifier"}},parent:{name:"parent",category:"Reference",evaluatesTo:"Element",evaluate:async e=>e.me?e.me.parentElement:null,validate:Rr},window:{name:"window",category:"Reference",evaluatesTo:"Object",evaluate:async e=>window,validate:Rr},document:{name:"document",category:"Reference",evaluatesTo:"Object",evaluate:async e=>document,validate:Rr},elementWithSelector:{name:"elementWithSelector",category:"Reference",evaluatesTo:"Array",async evaluate(e,...t){const r=t[0];if("string"!=typeof r)throw Error("Selector must be a string");const n=e?.me?.ownerDocument??("undefined"!=typeof document?document:null);if(!n)throw Error("DOM not available - cannot resolve element selector");const s=n.querySelectorAll(r);return Array.from(s)},validate:e=>Nr(e,"elementWithSelector","selector")},styleRef:{name:"styleRef",category:"Reference",evaluatesTo:"String",async evaluate(e,...t){const r=t[0],n=t[1];if("string"!=typeof r)throw Error("StyleRef requires a string property name");const s=n||e.me;if(s&&s instanceof HTMLElement)return gs(s,r)},validate:e=>Mr(e,1,2,"styleRef","property, optional element")??jr(e,0,"styleRef","property")??(2===e.length&&e[1]&&"object"!=typeof e[1]?"styleRef element must be an HTMLElement":null)},possessiveStyleRef:{name:"possessiveStyleRef",category:"Reference",evaluatesTo:"String",async evaluate(e,...t){const r=t[0],n=t[1];if("string"!=typeof r||"string"!=typeof n)throw Error("Possessive styleRef requires possessor and property strings");let s=null;if("my"===r&&e.me?s=e.me instanceof HTMLElement?e.me:null:"its"===r&&e.it&&(s=e.it instanceof HTMLElement?e.it:null),s)return gs(s,n)},validate:e=>Pr(e,2,"possessiveStyleRef","possessor, property")??jr(e,0,"possessiveStyleRef","possessor")??jr(e,1,"possessiveStyleRef","property")},ofStyleRef:{name:"ofStyleRef",category:"Reference",evaluatesTo:"String",async evaluate(e,...t){const r=t[0],n=t[1];if("string"!=typeof r||"string"!=typeof n)throw Error("Of styleRef requires property and reference strings");let s=null;if("me"===n&&e.me?s=e.me instanceof HTMLElement?e.me:null:"it"===n&&e.it&&(s=e.it instanceof HTMLElement?e.it:null),s)return gs(s,r)},validate:e=>Pr(e,2,"ofStyleRef","property, reference")??jr(e,0,"ofStyleRef","property")??jr(e,1,"ofStyleRef","reference")}};class bs{constructor(e=100,t=5e3){this.maxSize=e,this.ttl=t,this.cache=new Map,this.accessOrder=new Map,this.accessCounter=0}get(e){const t=this.cache.get(e);if(t){if(this.ttl>=Date.now()-t.timestamp)return t.accessCount++,this.accessOrder.set(e,++this.accessCounter),t.result;this.delete(e)}}set(e,t){this.maxSize>this.cache.size||this.cache.has(e)||this.evictLRU(),this.cache.set(e,{result:t,timestamp:Date.now(),accessCount:1}),this.accessOrder.set(e,++this.accessCounter)}delete(e){return this.accessOrder.delete(e),this.cache.delete(e)}clear(){this.cache.clear(),this.accessOrder.clear(),this.accessCounter=0}size(){return this.cache.size}evictLRU(){let e,t=1/0;for(const[r,n]of this.accessOrder)t>n&&(t=n,e=r);void 0!==e&&this.delete(e)}getStats(){const e=Array.from(this.cache.values()),t=Date.now();return{size:this.cache.size,maxSize:this.maxSize,hitRate:e.length>0?e.filter(e=>e.accessCount>1).length/e.length:0,avgAge:e.length>0?e.reduce((e,r)=>e+(t-r.timestamp),0)/e.length:0,totalAccesses:e.reduce((e,t)=>e+t.accessCount,0)}}}const ws=new class{constructor(){this.domQueryCache=new bs(200,3e3),this.exprResultCache=new bs(500,2e3),this.cssMatchCache=new bs(100,5e3),this.formValueCache=new bs(50,1e3),this.hits=0,this.misses=0}querySelector(e){const t="querySelector:"+e,r=this.domQueryCache.get(t);if(void 0!==r)return this.hits++,r;this.misses++;const n=document.querySelector(e);return this.domQueryCache.set(t,n),n}querySelectorAll(e){const t="querySelectorAll:"+e,r=this.domQueryCache.get(t);if(void 0!==r)return this.hits++,r;this.misses++;const n=Array.from(document.querySelectorAll(e));return this.domQueryCache.set(t,n),n}getElementById(e){const t="getElementById:"+e,r=this.domQueryCache.get(t);if(void 0!==r)return this.hits++,r;this.misses++;const n=document.getElementById(e);return this.domQueryCache.set(t,n),n}getElementsByClassName(e){const t="getElementsByClassName:"+e,r=this.domQueryCache.get(t);if(void 0!==r)return this.hits++,r;this.misses++;const n=Array.from(document.getElementsByClassName(e));return this.domQueryCache.set(t,n),n}matches(e,t){const r=`matches:${this.getElementCacheKey(e)}:${t}`,n=this.cssMatchCache.get(r);if(void 0!==n)return this.hits++,n;this.misses++;const s=e.matches(t);return this.cssMatchCache.set(r,s),s}getExpressionResult(e){const t=this.exprResultCache.get(e);if(void 0!==t)return this.hits++,t;this.misses++}setExpressionResult(e,t){this.exprResultCache.set(e,t)}getFormValue(e){const t=this.getElementCacheKey(e),r=this.formValueCache.get("formValue:"+t);if(void 0!==r)return this.hits++,r;this.misses++}setFormValue(e,t){const r=this.getElementCacheKey(e);this.formValueCache.set("formValue:"+r,t)}invalidateElementCache(e){const t=this.getElementCacheKey(e);for(const e of[this.domQueryCache,this.cssMatchCache,this.formValueCache])for(const r of Array.from(e.cache.keys()))"string"==typeof r&&r.includes(t)&&e.delete(r)}invalidateAll(){this.domQueryCache.clear(),this.exprResultCache.clear(),this.cssMatchCache.clear(),this.formValueCache.clear(),this.hits=0,this.misses=0}getElementCacheKey(e){if(e.id)return"#"+e.id;const t=Array.from(e.classList).sort().join("."),r=this.getElementPosition(e);return`${e.tagName.toLowerCase()}${t?"."+t:""}@${r}`}getElementPosition(e){return""+Array.from(e.parentElement?.children||[]).indexOf(e)}getPerformanceStats(){const e=this.hits+this.misses;return{hits:this.hits,misses:this.misses,hitRate:Math.round(100*(e>0?this.hits/e*100:0))/100,domQueryCache:this.domQueryCache.getStats(),exprResultCache:this.exprResultCache.getStats(),cssMatchCache:this.cssMatchCache.getStats(),formValueCache:this.formValueCache.getStats()}}cleanup(){const e=Date.now();[this.domQueryCache,this.exprResultCache,this.cssMatchCache,this.formValueCache].forEach(t=>{Array.from(t.cache.entries()).forEach(([r,n])=>{e-n.timestamp>t.ttl&&t.delete(r)})})}};"undefined"!=typeof window&&setInterval(()=>{ws.cleanup()},1e4);const ks=new class{constructor(){this.metrics={tokenizationTime:0,evaluationTime:0,cacheHitRate:0,memoryUsage:0,domOperations:0},this.startTimes=new Map}startTimer(e){this.startTimes.set(e,performance.now())}endTimer(e){const t=this.startTimes.get(e);if(t){const r=performance.now()-t;return this.startTimes.delete(e),r}return 0}recordTokenization(e){this.metrics.tokenizationTime+=e}recordEvaluation(e){this.metrics.evaluationTime+=e}updateCacheMetrics(){const e=ws.getPerformanceStats();this.metrics.cacheHitRate=e.hitRate}getMetrics(){return this.updateCacheMetrics(),{...this.metrics}}reset(){this.metrics={tokenizationTime:0,evaluationTime:0,cacheHitRate:0,memoryUsage:0,domOperations:0}}};function Es(){ws.cleanup(),ks.getMetrics().memoryUsage>52428800&&ks.reset()}let xs=null;function Cs(e,t){if("number"==typeof e){if(!Number.isFinite(e))throw Error(`${t} must be a finite number, got ${e}`);return e}if("string"==typeof e){const r=e.trim();if(""===r)return 0;const n=parseFloat(r);if(isNaN(n))throw Error(`${t} cannot be converted to number: "${e}"`);return n}if("boolean"==typeof e)return e?1:0;if(null==e)return 0;if("object"==typeof e&&null!==e){if(Array.isArray(e)&&1===e.length){const r=e[0];if(Array.isArray(r))throw Error(t+" is a nested array, cannot convert to number");return Cs(r,t)}if("string"==typeof e.textContent||"value"in e){const t=e.value??e.textContent;if(null!=t){const e=(t+"").trim();if(""===e)return 0;const r=parseFloat(e);if(!isNaN(r))return r}}const r=e.valueOf();if("number"==typeof r&&Number.isFinite(r))return r}throw Error(`${t} cannot be converted to number: ${typeof e}`)}function Ss(e){if("number"==typeof e)return Number.isFinite(e)?e:null;if("string"==typeof e){const t=e.trim();if(""===t)return 0;const r=parseFloat(t);return isNaN(r)?null:r}return"boolean"==typeof e?e?1:0:null==e?0:null}function As(e,t){if(!Number.isFinite(e)){if(Number.isNaN(e))throw Error(t+" resulted in non-finite value: NaN");throw Error(`${t} resulted in non-finite value: ${e>0?"Infinity":"-Infinity"}`)}return e}function Ts(e){try{return Cs(e,"_"),!0}catch{return!1}}function Os(e,t,r){if("==="===r)return e===t;if("!=="===r)return e!==t;if(null==e||null==t)return function(e,t,r){if(null==e&&null==t)switch(r){case"==":case">=":case"<=":return!0;default:return!1}switch(r){case"==":case">":case"<":case">=":case"<=":default:return!1;case"!=":return!0}}(e,t,r);const[n,s]=function(e,t){if("number"==typeof e&&"number"==typeof t)return[e,t];if("string"==typeof e&&"string"==typeof t){const r=parseFloat(e),n=parseFloat(t);return isNaN(r)||isNaN(n)?[e,t]:[r,n]}const r=Ss(e),n=Ss(t);return null!==r&&null!==n?[r,n]:[e+"",t+""]}(e,t);switch(r){case">":return n>s;case"<":return s>n;case">=":return n>=s;case"<=":return s>=n;case"==":return Ls(e,t);case"!=":return!Ls(e,t);default:return!1}}function Ls(e,t){if(e===t)return!0;if(typeof e==typeof t)return("string"==typeof e||"number"==typeof e)&&e===t;if("number"==typeof e&&"string"==typeof t){const r=parseFloat(t);return!isNaN(r)&&e===r}if("string"==typeof e&&"number"==typeof t){const r=parseFloat(e);return!isNaN(r)&&r===t}return"boolean"==typeof e?Ls(e?1:0,t):"boolean"==typeof t?Ls(e,t?1:0):e+""==t+""}function Ps(e,t=[]){return{isValid:!1,errors:e,suggestions:t}}function js(e,t,r=[],n="error"){return{type:e,message:t,suggestions:r,severity:n}}function Ns(e,t,r,n,s,i=!0,a){return t&&"object"==typeof t&&"evaluationHistory"in t&&Array.isArray(t.evaluationHistory)&&t.evaluationHistory.push({expressionName:e.name,category:e.category,input:r,output:n,timestamp:s,duration:Date.now()-s,success:i,...void 0!==a&&{error:a}}),n}"undefined"!=typeof window&&function(e=3e4){xs&&clearInterval(xs),xs=setInterval(Es,e)}();const Is=Wr({left:Kr().describe("Left operand value"),right:Kr().describe("Right operand value")}).strict(),Rs=Wr({operand:Kr().describe("Operand value to negate")}).strict();function qs(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&1===e.nodeType}new class extends Xr{constructor(){super(...arguments),this.name="and",this.category="Logical",this.syntax="left and right",this.description="Logical AND operation with comprehensive boolean type coercion",this.inputSchema=Is,this.outputType="Boolean",this.metadata={category:"Logical",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.toBoolean(t.left);if(!s)return this.trackSimple(e,r,!0,"boolean"),this.success(!1,"boolean");const i=this.toBoolean(t.right),a=s&&i;return this.trackSimple(e,r,!0,"boolean"),this.success(a,"boolean")}catch(t){return this.trackSimple(e,r,!1),this.failure("AndExpressionError","runtime-error","Logical AND operation failed: "+(t instanceof Error?t.message:t+""),"AND_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid AND operation input: "+e.message,suggestions:[]}))??[],suggestions:["Provide both left and right operands","Ensure operands are valid values"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}},new class extends Xr{constructor(){super(...arguments),this.name="or",this.category="Logical",this.syntax="left or right",this.description="Logical OR operation with comprehensive boolean type coercion",this.inputSchema=Is,this.outputType="Boolean",this.metadata={category:"Logical",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.toBoolean(t.left);if(s)return this.trackSimple(e,r,!0,"boolean"),this.success(!0,"boolean");const i=this.toBoolean(t.right),a=s||i;return this.trackSimple(e,r,!0,"boolean"),this.success(a,"boolean")}catch(t){return this.trackSimple(e,r,!1),this.failure("OrExpressionError","runtime-error","Logical OR operation failed: "+(t instanceof Error?t.message:t+""),"OR_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid OR operation input: "+e.message,suggestions:[]}))??[],suggestions:["Provide both left and right operands","Ensure operands are valid values"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}},new class extends Xr{constructor(){super(...arguments),this.name="not",this.category="Logical",this.syntax="not operand",this.description="Logical NOT operation with comprehensive boolean type coercion",this.inputSchema=Rs,this.outputType="Boolean",this.metadata={category:"Logical",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=!this.toBoolean(t.operand);return this.trackSimple(e,r,!0,"boolean"),this.success(s,"boolean")}catch(t){return this.trackSimple(e,r,!1),this.failure("NotExpressionError","runtime-error","Logical NOT operation failed: "+(t instanceof Error?t.message:t+""),"NOT_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid NOT operation input: "+e.message,suggestions:[]}))??[],suggestions:["Provide a single operand","Ensure operand is a valid value"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}};const Ms=Ur([Kr(),Kr()]),_s=Ur([Kr(),Br()]),$s={name:"equals",category:"Comparison",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["is","==","equals"],async evaluate(e,t,r){const n=Date.now();try{return Ns(this,e,[t,r],t==r,n)}catch(s){throw Ns(this,e,[t,r],!1,n,!1,s instanceof Error?s:Error(s+"")),s}},validate:e=>Ir(e,"equals"),inputSchema:Ms,metadata:{category:"Logical",complexity:"simple",sideEffects:[],dependencies:[],returnTypes:["Boolean"],examples:[{input:"value is 5",description:"Check if value equals 5 using loose equality",expectedOutput:!0,context:{result:5}},{input:'"5" == 5',description:'String "5" equals number 5 with type coercion',expectedOutput:!0}],relatedExpressions:["strictEquals","notEquals"],performance:{averageTime:.001,complexity:"O(1)"}},documentation:{summary:"Compares two values for loose equality, allowing type coercion",parameters:[{name:"left",type:"unknown",description:"Left operand for comparison",optional:!1,examples:["5",'"hello"',"true","null"]},{name:"right",type:"unknown",description:"Right operand for comparison",optional:!1,examples:["5",'"hello"',"true","null"]}],returns:{type:"Boolean",description:"True if values are loosely equal, false otherwise",examples:["true","false"]},examples:[{title:"Basic equality check",code:"if my.value is 10",explanation:"Check if element value equals 10",output:"Boolean result"},{title:"Type coercion",code:'if "5" == 5',explanation:'String "5" equals number 5 with automatic type conversion',output:"true"},{title:"Null checks",code:"if value is null",explanation:"Check if value is null or undefined",output:"Boolean result"}],seeAlso:["strictEquals","notEquals","matches"],tags:["comparison","equality","logic","type-coercion"]}},Vs={name:"strictEquals",category:"Comparison",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["==="],async evaluate(e,t,r){const n=e.evaluationHistory,s=t===r;return n&&Ns(this,e,[t,r],s,n?Date.now():0),s},validate:e=>Ir(e,"strictEquals")},Ds={name:"notEquals",category:"Comparison",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["!=","is not","does not equal"],async evaluate(e,t,r){const n=e.evaluationHistory,s=t!=r;return n&&Ns(this,e,[t,r],s,n?Date.now():0),s},validate:e=>Ir(e,"notEquals")},zs={name:"strictNotEquals",category:"Comparison",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["!=="],async evaluate(e,t,r){const n=e.evaluationHistory,s=t!==r;return n&&Ns(this,e,[t,r],s,n?Date.now():0),s},validate:e=>Ir(e,"strictNotEquals")},Bs={name:"lessThan",category:"Comparison",evaluatesTo:"Boolean",precedence:12,associativity:"Left",operators:["<","is less than"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=Os(t,r,"<");return n&&Ns(this,e,[t,r],i,s),i},validate:e=>Ir(e,"lessThan")},Fs={name:"lessThanOrEqual",category:"Comparison",evaluatesTo:"Boolean",precedence:12,associativity:"Left",operators:["<=","is less than or equal to"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=Os(t,r,"<=");return n&&Ns(this,e,[t,r],i,s),i},validate:e=>Ir(e,"lessThanOrEqual")},Hs={name:"greaterThan",category:"Comparison",evaluatesTo:"Boolean",precedence:12,associativity:"Left",operators:[">","is greater than"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=Os(t,r,">");return n&&Ns(this,e,[t,r],i,s),i},validate:e=>Ir(e,"greaterThan")},Ws={name:"greaterThanOrEqual",category:"Comparison",evaluatesTo:"Boolean",precedence:12,associativity:"Left",operators:[">=","is greater than or equal to"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=Os(t,r,">=");return n&&Ns(this,e,[t,r],i,s),i},validate:e=>Ir(e,"greaterThanOrEqual")},Us={name:"and",category:"Logical",evaluatesTo:"Boolean",precedence:6,associativity:"Left",operators:["and","&&"],async evaluate(e,t,r){const n=Date.now();try{return Ns(this,e,[t,r],t&&r,n)}catch(s){throw Ns(this,e,[t,r],!1,n,!1,s instanceof Error?s:Error(s+"")),s}},validate:e=>Ir(e,"and"),inputSchema:Ms,metadata:{category:"Logical",complexity:"simple",sideEffects:[],dependencies:[],returnTypes:["Boolean"],examples:[{input:"true and false",description:"Logical AND of boolean values",expectedOutput:!1},{input:"name and age",description:"Both name and age must be truthy",expectedOutput:!0,context:{variables:new Map([["name","John"],["age",25]])}}],relatedExpressions:["or","not"],performance:{averageTime:.001,complexity:"O(1)"}},documentation:{summary:"Logical AND operation that returns true only if both operands are truthy",parameters:[{name:"left",type:"unknown",description:"Left operand (evaluated for truthiness)",optional:!1,examples:["true","name","5",'"hello"']},{name:"right",type:"unknown",description:"Right operand (evaluated for truthiness)",optional:!1,examples:["false","age","0",'""']}],returns:{type:"Boolean",description:"True if both operands are truthy, false otherwise",examples:["true","false"]},examples:[{title:"Form validation",code:"if name and email",explanation:"Check if both name and email have values",output:"Boolean result"},{title:"Multiple conditions",code:"if age > 18 and hasLicense",explanation:"Combine multiple conditions",output:"Boolean result"},{title:"Short-circuit evaluation",code:"if element and element.value",explanation:"Check element exists before accessing properties",output:"Boolean result"}],seeAlso:["or","not","exists"],tags:["logic","boolean","conditions","validation"]}},Ks={name:"or",category:"Logical",evaluatesTo:"Boolean",precedence:5,associativity:"Left",operators:["or","||"],async evaluate(e,t,r){const n=e.evaluationHistory,s=t||r;return n&&Ns(this,e,[t,r],s,n?Date.now():0),s},validate:e=>Ir(e,"or")},Js={name:"not",category:"Logical",evaluatesTo:"Boolean",precedence:15,associativity:"Right",operators:["not","!"],async evaluate(e,t){const r=e.evaluationHistory,n=!t;return r&&Ns(this,e,[t],n,r?Date.now():0),n},validate:e=>Pr(e,1,"not","operand")},Zs={name:"isEmpty",category:"Logical",evaluatesTo:"Boolean",operators:["is empty","isEmpty"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0;let s;return s=null==t||(gr(t)||Array.isArray(t)||t instanceof NodeList?0===t.length:!(t instanceof Node||t instanceof Element||!wr(t)||0!==Object.keys(t).length)),r&&Ns(this,e,[t],s,n),s},validate:e=>Pr(e,1,"isEmpty","value")},Xs={name:"no",category:"Logical",evaluatesTo:"Boolean",operators:["no"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0;let s;return s=null==t||!1===t||(Array.isArray(t)||t instanceof NodeList?0===t.length:(gr(t),!1)),r&&Ns(this,e,[t],s,n),s},validate:e=>Pr(e,1,"no","value")},Ys={name:"isNotEmpty",category:"Logical",evaluatesTo:"Boolean",operators:["is not empty","isNotEmpty"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0,s=!await Zs.evaluate(e,t);return r&&Ns(this,e,[t],s,n),s},validate:e=>Pr(e,1,"isNotEmpty","value")},Gs={name:"exists",category:"Logical",evaluatesTo:"Boolean",operators:["exists"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0,s=Qs(t);return r&&Ns(this,e,[t],s,n),s},validate:e=>Pr(e,1,"exists","value")};function Qs(e){return null!=e&&(Array.isArray(e)?e.length>0:!("undefined"!=typeof NodeList&&e instanceof NodeList)||e.length>0)}const ei={name:"doesNotExist",category:"Logical",evaluatesTo:"Boolean",operators:["does not exist","doesNotExist"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0,s=!Qs(t);return r&&Ns(this,e,[t],s,n),s},validate:e=>Pr(e,1,"doesNotExist","value")},ti={name:"contains",category:"Logical",evaluatesTo:"Boolean",operators:["contains","includes","include"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0;let i;if(t&&r){if(qs(t)&&qs(r))return i=t.contains(r),n&&Ns(this,e,[t,r],i,s),i;if(gr(t)&&t.match(/^[.#][\w-]+$/)){const a=document.querySelector(t);if(a&&qs(r))return i=a.contains(r),n&&Ns(this,e,[t,r],i,s),i;if(a&&gr(r)&&r.match(/^[.#][\w-]+$/)){const o=document.querySelector(r);return i=!!o&&a.contains(o),n&&Ns(this,e,[t,r],i,s),i}}if(gr(r)&&r.match(/^[.#][\w-]+$/)&&qs(t)){const a=document.querySelector(r);return i=!!a&&t.contains(a),n&&Ns(this,e,[t,r],i,s),i}}if(gr(t)&&gr(r))i=t.includes(r);else if(Array.isArray(t)||"undefined"!=typeof NodeList&&t instanceof NodeList){const e=Array.from(t);i=e.includes(r)||r instanceof Node&&e.some(e=>e instanceof Node&&e.contains(r))}else i=!(!wr(t)||!gr(r))&&r in t;return n&&Ns(this,e,[t,r],i,s),i},validate:e=>Pr(e,2,"contains","container, value")},ri={name:"doesNotContain",category:"Logical",evaluatesTo:"Boolean",operators:["does not contain","doesNotContain","does not include","doesNotInclude"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=!await ti.evaluate(e,t,r);return n&&Ns(this,e,[t,r],i,s),i},validate:e=>Pr(e,2,"doesNotContain","container, value")},ni={name:"startsWith",category:"Logical",evaluatesTo:"Boolean",operators:["starts with","startsWith"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=null!=t&&null!=r&&(t+"").startsWith(r+"");return n&&Ns(this,e,[t,r],i,s),i},validate:e=>Pr(e,2,"startsWith","str, prefix")},si={name:"endsWith",category:"Logical",evaluatesTo:"Boolean",operators:["ends with","endsWith"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=null!=t&&null!=r&&(t+"").endsWith(r+"");return n&&Ns(this,e,[t,r],i,s),i},validate:e=>Pr(e,2,"endsWith","str, suffix")},ii={name:"between",category:"Logical",evaluatesTo:"Boolean",operators:["is between","between"],async evaluate(e,t,r,n){const s=e.evaluationHistory;let i=r,a=n;if(null!=i&&null!=a&&i>a){const e=i;i=a,a=e}const o=null!=i&&null!=a&&t>=i&&a>=t;return s&&Ns(this,e,[t,r,n],o,s?Date.now():0),o},validate:e=>Pr(e,3,"between","value, min, max")},ai={name:"matches",category:"Logical",evaluatesTo:"Boolean",operators:["matches"],async evaluate(e,t,r){const n=Date.now();try{let s;if(t instanceof Element&&gr(r)){const e=r;if(e.startsWith(".")||e.startsWith("#")||e.startsWith(":")||e.startsWith("[")||/^[a-zA-Z][\w-]*$/.test(e))try{s=function(e,t){return ws.matches(e,t)}(t,e)}catch(e){s=!1}else s=!1}else if(gr(t)&&gr(r)){const e=t,n=r;try{s=(n.startsWith("/")&&n.endsWith("/")?RegExp(n.slice(1,-1)):RegExp(n)).test(e)}catch(t){s=e.includes(n)}}else s=!1;return Ns(this,e,[t,r],s,n)}catch(s){throw Ns(this,e,[t,r],!1,n,!1,s instanceof Error?s:Error(s+"")),s}},validate:e=>Pr(e,2,"matches","element, selector"),inputSchema:_s,metadata:{category:"Logical",complexity:"medium",sideEffects:["dom-query"],dependencies:[],returnTypes:["Boolean"],examples:[{input:'element matches ".active"',description:"Check if element has active class",expectedOutput:!0},{input:'text matches "/^hello/"',description:'Check if text starts with "hello" using regex',expectedOutput:!0,context:{variables:new Map([["text","hello world"]])}}],relatedExpressions:["contains","startsWith","endsWith"],performance:{averageTime:.5,complexity:"O(n)"}},documentation:{summary:"Tests if element matches CSS selector or string matches regex pattern",parameters:[{name:"element",type:"Element | string",description:"DOM element or string to test",optional:!1,examples:["<div>",'"hello world"',"me","target"]},{name:"selector",type:"string",description:"CSS selector or regex pattern to match against",optional:!1,examples:['".active"','"#navbar"','"/^hello/"','"\\\\d+"']}],returns:{type:"Boolean",description:"True if element matches selector/pattern",examples:["true","false"]},examples:[{title:"CSS class matching",code:'if me matches ".active"',explanation:'Check if current element has "active" class',output:"Boolean result"},{title:"Attribute matching",code:'if target matches "[data-role=\\"button\\"]"',explanation:"Check if element has specific data attribute",output:"Boolean result"},{title:"Regex pattern matching",code:'if email matches "/^[^@]+@[^@]+\\\\.[^@]+$/"',explanation:"Validate email format with regex",output:"Boolean result"},{title:"Complex CSS selector",code:'if element matches ".card:hover .button"',explanation:"Match complex CSS selector with pseudo-classes",output:"Boolean result"}],seeAlso:["contains","startsWith","endsWith","querySelector"],tags:["pattern","css","regex","validation","dom"]}},oi={name:"has",category:"Logical",evaluatesTo:"Boolean",operators:["has","have"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0;let i=!1;if(t instanceof Element&&gr(r)){const e=r;e.startsWith(".")?i=t.classList.contains(e.slice(1)):e.startsWith("[")&&e.endsWith("]")&&(i=t.hasAttribute(e.slice(1,-1)))}return n&&Ns(this,e,[t,r],i,s),i},validate:e=>Pr(e,2,"has","element, selector")},li={name:"doesNotHave",category:"Logical",evaluatesTo:"Boolean",operators:["does not have"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=!await oi.evaluate(e,t,r);return n&&Ns(this,e,[t,r],i,s),i},validate:e=>Pr(e,2,"doesNotHave","element, selector")},ci={equals:$s,strictEquals:Vs,notEquals:Ds,strictNotEquals:zs,lessThan:Bs,lessThanOrEqual:Fs,greaterThan:Hs,greaterThanOrEqual:Ws,and:Us,or:Ks,not:Js,no:Xs,isEmpty:Zs,isNotEmpty:Ys,exists:Gs,doesNotExist:ei,contains:ti,doesNotContain:ri,startsWith:ni,endsWith:si,between:ii,matches:ai,has:oi,doesNotHave:li},ui=Wr({value:Br().describe("String literal value")}).strict(),di=Wr({value:Fr().describe("Number literal value")}).strict(),mi=Wr({value:Hr().describe("Boolean literal value")}).strict(),pi=Wr({left:Kr().describe("Left operand"),right:Kr().describe("Right operand")}).strict();const hi={stringLiteral:new class extends Xr{constructor(){super(...arguments),this.name="stringLiteral",this.category="Special",this.syntax="\"string\" or 'string'",this.description="String literals with template interpolation support",this.outputType="String",this.inputSchema=ui,this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid){const t=this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions);return this.trackSimple(e,r,!1),t}let s=t.value;(s.includes("${")||s.includes("$"))&&(s=this.interpolateString(s,e));const i=this.success(s,"string");return this.trackSimple(e,r,!0,s),i}catch(t){return this.trackSimple(e,r,!1),this.failure("StringEvaluationError","runtime-error","String literal evaluation failed: "+(t instanceof Error?t.message:t+""),"STRING_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid string literal input",["Provide a value parameter","Ensure value is a string"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}interpolateString(e,t){let r=e.replace(/\$\{([^}]+)\}/g,(e,r)=>{try{const e=this.resolveExpression(r.trim(),t);return void 0!==e?e+"":""}catch(e){return""}});return r=r.replace(/\$([a-zA-Z_$][a-zA-Z0-9_.$]*)/g,(e,r)=>{try{const e=this.resolveVariable(r,t);return void 0!==e?e+"":""}catch(e){return""}}),r}resolveExpression(e,t){if(e.includes(".")){const r=e.split(".");let n=this.resolveVariable(r[0],t);for(let e=1;r.length>e&&null!=n;e++)n=n[r[e]];return n}return this.resolveVariable(e,t)}resolveVariable(e,t){return"me"===e&&t.me?t.me:"you"===e&&t.you?t.you:"it"===e&&t.it?t.it:"result"===e&&t.result?t.result:t.locals?.has(e)?(_e(e,t),t.locals.get(e)):t.globals?.has(e)?t.globals.get(e):void 0}},numberLiteral:new class extends Xr{constructor(){super(...arguments),this.name="numberLiteral",this.category="Special",this.syntax="123 or 3.14",this.description="Numeric literal with validation",this.inputSchema=di,this.outputType="Number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);return n.isValid?Number.isFinite(t.value)?(this.trackSimple(e,r,!0,t.value),this.success(t.value,"number")):(this.trackSimple(e,r,!1),this.failure("NumberValidationError","invalid-argument","Number literal must be finite","NUMBER_NOT_FINITE")):(this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions))}catch(t){return this.trackSimple(e,r,!1),this.failure("NumberEvaluationError","runtime-error","Number literal evaluation failed: "+(t instanceof Error?t.message:t+""),"NUMBER_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?Number.isFinite(t.data.value)?this.validationSuccess():this.validationFailure("invalid-argument","Number literal value must be finite",["Use finite numbers only","Avoid Infinity and NaN values"]):this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid number literal input",["Provide a value parameter","Ensure value is a number"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}},booleanLiteral:new class extends Xr{constructor(){super(...arguments),this.name="booleanLiteral",this.category="Special",this.syntax="true or false",this.description="Boolean literal values",this.inputSchema=mi,this.outputType="Boolean",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);return n.isValid?(this.trackSimple(e,r,!0,t.value),this.success(t.value,"boolean")):(this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions))}catch(t){return this.trackSimple(e,r,!1),this.failure("BooleanEvaluationError","runtime-error","Boolean literal evaluation failed: "+(t instanceof Error?t.message:t+""),"BOOLEAN_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid boolean literal input",["Provide a value parameter","Ensure value is a boolean"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}},addition:new class extends Xr{constructor(){super(...arguments),this.name="addition",this.category="Special",this.syntax="left + right",this.description="Addition of two numeric values",this.inputSchema=pi,this.outputType="Number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions);const s=Cs(t.left,"left operand")+Cs(t.right,"right operand");return this.trackSimple(e,r,!0,s),this.success(s,"number")}catch(t){return this.trackSimple(e,r,!1),this.failure("AdditionError","runtime-error","Addition failed: "+(t instanceof Error?t.message:t+""),"ADDITION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid addition input",["Provide left and right operands"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}},stringConcatenation:new class extends Xr{constructor(){super(...arguments),this.name="stringConcatenation",this.category="Special",this.syntax="left + right (string concatenation)",this.description="Concatenation of two values into a string",this.inputSchema=pi,this.outputType="String",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors[0]?.message||"Invalid input","STRING_CONCATENATION_VALIDATION_FAILED",n.suggestions);const s=this.convertToString(t.left)+this.convertToString(t.right);return this.trackSimple(e,r,!0,s),this.success(s,"string")}catch(t){return this.trackSimple(e,r,!1),this.failure("StringConcatenationError","runtime-error",t instanceof Error?t.message:"String concatenation failed","STRING_CONCATENATION_ERROR",["Check that operands can be converted to strings"])}}validate(e){const t=pi.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid string concatenation input",["Provide left and right operands for concatenation"])}convertToString(e){if(null===e)return"null";if(void 0===e)return"undefined";if(gr(e))return e;if(vr(e))return""+e;if(br(e))return""+e;if(e instanceof Date)return""+e;try{return e+""}catch{return"[object Object]"}}},multiplication:new class extends Xr{constructor(){super(...arguments),this.name="multiplication",this.category="Special",this.syntax="left * right",this.description="Multiplication of two numeric values",this.inputSchema=pi,this.outputType="Number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions);const s=Cs(t.left,"left operand")*Cs(t.right,"right operand");return this.trackSimple(e,r,!0,s),this.success(s,"number")}catch(t){return this.trackSimple(e,r,!1),this.failure("MultiplicationError","runtime-error","Multiplication failed: "+(t instanceof Error?t.message:t+""),"MULTIPLICATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid multiplication input",["Provide left and right operands"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}},fi={String:"string",Number:"number",Boolean:"boolean",Element:"element",ElementList:"element-list",Array:"array",Object:"object",Promise:"promise",Context:"object",Null:"null",Undefined:"undefined",Any:"object"},yi=Wr({collection:Kr().describe("Collection to operate on (array, NodeList, or string)")}).strict(),gi=Wr({collection:Kr().describe("Collection to access"),index:Fr().describe("Index position to access")}).strict(),vi=Wr({collection:Kr().describe("Collection to select random item from")}).strict();new class extends Xr{constructor(){super(...arguments),this.name="first",this.category="Positional",this.syntax="first in collection",this.description="Gets the first element from a collection",this.inputSchema=yi,this.outputType="Any",this.metadata={category:"Positional",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.normalizeCollection(t.collection),i=s.length>0?s[0]:void 0,a={success:!0,value:i,type:fi[this.inferEvaluationType(i)]};return this.trackPerformance(e,t,a,r),a}catch(n){const s=this.failure("FirstExpressionError","runtime-error","First operation failed: "+(n instanceof Error?n.message:n+""),"FIRST_OPERATION_FAILED");return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid first input: "+e.message,suggestions:[]}))??[],suggestions:["Provide a collection parameter","Ensure collection is array, NodeList, or string"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}},new class extends Xr{constructor(){super(...arguments),this.name="last",this.category="Positional",this.syntax="last in collection",this.description="Gets the last element from a collection",this.inputSchema=yi,this.outputType="Any",this.metadata={category:"Positional",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.normalizeCollection(t.collection),i=s.length>0?s[s.length-1]:void 0,a={success:!0,value:i,type:fi[this.inferEvaluationType(i)]};return this.trackPerformance(e,t,a,r),a}catch(n){const s=this.failure("LastExpressionError","runtime-error","Last operation failed: "+(n instanceof Error?n.message:n+""),"LAST_OPERATION_FAILED");return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid last input: "+e.message,suggestions:[]}))??[],suggestions:["Provide a collection parameter","Ensure collection is array, NodeList, or string"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}},new class extends Xr{constructor(){super(...arguments),this.name="at",this.category="Positional",this.syntax="collection[index] or collection at index",this.description="Gets element at specific index from a collection",this.inputSchema=gi,this.outputType="Any",this.metadata={category:"Positional",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.normalizeCollection(t.collection),i=this.normalizeIndex(t.index,s.length),a=i>=0&&s.length>i?s[i]:void 0,o={success:!0,value:a,type:fi[this.inferEvaluationType(a)]};return this.trackPerformance(e,t,o,r),o}catch(n){const s=this.failure("AtExpressionError","runtime-error","At operation failed: "+(n instanceof Error?n.message:n+""),"AT_OPERATION_FAILED");return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid at input: "+e.message,suggestions:[]}))??[],suggestions:["Provide collection and index parameters","Ensure index is a number"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}normalizeIndex(e,t){return 0>e?t+e:e}},new class extends Xr{constructor(){super(...arguments),this.name="random",this.category="Positional",this.syntax="random in collection",this.description="Gets a random element from a collection",this.inputSchema=vi,this.outputType="Any",this.metadata={category:"Positional",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.normalizeCollection(t.collection);if(0===s.length){const n={success:!0,value:void 0,type:"undefined"};return this.trackPerformance(e,t,n,r),n}const i=s[this.getSecureRandomIndex(s.length)],a={success:!0,value:i,type:fi[this.inferEvaluationType(i)]};return this.trackPerformance(e,t,a,r),a}catch(n){const s=this.failure("RandomExpressionError","runtime-error","Random operation failed: "+(n instanceof Error?n.message:n+""),"RANDOM_OPERATION_FAILED");return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid random input: "+e.message,suggestions:[]}))??[],suggestions:["Provide a collection parameter","Ensure collection is array, NodeList, or string"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}getSecureRandomIndex(e){if("undefined"!=typeof crypto&&crypto.getRandomValues){const t=new Uint32Array(1);return crypto.getRandomValues(t),t[0]%e}return Math.floor(Math.random()*e)}};const bi={name:"first",category:"Reference",evaluatesTo:"Any",operators:["first"],async evaluate(e,t){const r=void 0!==t?t:e.it;return null==r?null:Array.isArray(r)||r instanceof NodeList||r instanceof HTMLCollection?r.length>0?r[0]:null:r instanceof Element?r.children.length>0?r.children[0]:null:gr(r)?r.length>0?r[0]:null:wr(r)&&"length"in r&&vr(r.length)&&r.length>0?r[0]:null},validate:e=>qr(e,1,"first","collection")},wi={name:"last",category:"Reference",evaluatesTo:"Any",operators:["last"],async evaluate(e,t){const r=void 0!==t?t:e.it;if(null==r)return null;if(Array.isArray(r))return r.length>0?r[r.length-1]:null;if(r instanceof NodeList||r instanceof HTMLCollection)return r.length>0?r[r.length-1]:null;if(r instanceof Element){const e=r.children;return e.length>0?e[e.length-1]:null}return gr(r)?r.length>0?r[r.length-1]:null:wr(r)&&"length"in r&&vr(r.length)&&r.length>0?r[r.length-1]:null},validate:e=>qr(e,1,"last","collection")},ki={name:"at",category:"Reference",evaluatesTo:"Any",operators:["at"],async evaluate(e,...t){const[r,n]=t;if(!vr(r))throw Error("Index must be a number");const s=r,i=void 0!==n?n:e.it;if(null==i)return null;if(Array.isArray(i)){const e=0>s?i.length+s:s;return e>=0&&i.length>e?i[e]:null}if(i instanceof NodeList||i instanceof HTMLCollection){const e=0>s?i.length+s:s;return e>=0&&i.length>e?i[e]:null}if(i instanceof Element){const e=i.children,t=0>s?e.length+s:s;return t>=0&&e.length>t?e[t]:null}if(gr(i)){const e=0>s?i.length+s:s;return e>=0&&i.length>e?i[e]:null}if(wr(i)&&"length"in i&&vr(i.length)){const e=0>s?i.length+s:s;return e>=0&&i.length>e?i[e]:null}return null},validate:e=>Mr(e,1,2,"at","index, optional collection")??function(e){return"number"!=typeof e[0]?"at index must be a number":null}(e)};function Ei(e,t){let r=e.nextElementSibling;for(;r;){if(r.matches(t))return r;const e=r.querySelector(t);if(e)return e;r=r.nextElementSibling}const n=e.parentElement;return n&&n!==document.documentElement?Ei(n,t):null}function xi(e,t){let r=e.previousElementSibling;for(;r;){const e=Array.from(r.querySelectorAll(t)).reverse();if(e.length>0)return e[0];if(r.matches(t))return r;r=r.previousElementSibling}const n=e.parentElement;return n&&n!==document.documentElement?xi(n,t):null}function Ci(e,t,r,n){if(r.inSearch){if(null==r.inElt)return;return function(e,t,r,n){const s=Array.from(t??[]),i=[];for(const t of s)(t.matches&&t.matches(r)||t===e)&&i.push(t);for(let t=0;i.length-1>t;t++)if(i[t]===e)return i[t+1];if(n){const e=i[0];if(e&&e.matches&&e.matches(r))return e}}(e,n?Array.from(r.inElt):Array.from(r.inElt).reverse(),t,!!r.wrapping)}const s=r.within??("undefined"!=typeof document?document.body:null);if(s)return n?function(e,t,r,n){const s=t.querySelectorAll(r);for(let t=0;s.length>t;t++){const r=s[t];if(2===r.compareDocumentPosition(e))return r}return n?s[0]:void 0}(e,s,t,!!r.wrapping):function(e,t,r,n){const s=t.querySelectorAll(r);for(let t=s.length-1;t>=0;t--){const r=s[t];if(4===r.compareDocumentPosition(e))return r}return n?s[s.length-1]:void 0}(e,s,t,!!r.wrapping)}function Si(e){let t=0,r=e;for(;r&&r.parentElement;)t+=Array.from(r.parentElement.children).indexOf(r),r=r.parentElement,t+=1e3;return t}const Ai={first:bi,last:wi,at:ki,next:{name:"next",category:"Reference",evaluatesTo:"Element",operators:["next"],async evaluate(e,...t){const[r,n,s]=t,i=n||e.me;return i&&i instanceof Element?r?s?Ci(i,r,s,!0):Ei(i,r):i.nextElementSibling:null},validate:e=>qr(e,3,"next","optional selector, optional fromElement, optional modifiers")||(1>e.length||null==e[0]||"string"==typeof e[0]?2>e.length||null==e[1]||e[1]instanceof Element?null:"fromElement must be an Element":"selector must be a string")},previous:{name:"previous",category:"Reference",evaluatesTo:"Element",operators:["previous","prev"],async evaluate(e,...t){const[r,n,s]=t,i=n||e.me;return i&&i instanceof Element?r?s?Ci(i,r,s,!1):xi(i,r):i.previousElementSibling:null},validate:e=>qr(e,3,"previous","optional selector, optional fromElement, optional modifiers")||(1>e.length||null==e[0]||"string"==typeof e[0]?2>e.length||null==e[1]||e[1]instanceof Element?null:"fromElement must be an Element":"selector must be a string")},nextWithin:{name:"nextWithin",category:"Reference",evaluatesTo:"Element",operators:["next within"],async evaluate(e,...t){const[r,n,s]=t,i=s||e.me;if(!(i&&i instanceof Element))return null;const a=i.closest(n);return a?function(e,t,r){const n=Array.from(r.querySelectorAll(t)),s=Si(e);for(const e of n)if(Si(e)>s)return e;return null}(i,r,a):null},validate:e=>Mr(e,2,3,"nextWithin","selector, withinSelector, optional fromElement")||("string"!=typeof e[0]?"selector must be a string":"string"!=typeof e[1]?"withinSelector must be a string":3>e.length||null==e[2]||e[2]instanceof Element?null:"fromElement must be an Element")},previousWithin:{name:"previousWithin",category:"Reference",evaluatesTo:"Element",operators:["previous within"],async evaluate(e,...t){const[r,n,s]=t,i=s||e.me;if(!(i&&i instanceof Element))return null;const a=i.closest(n);return a?function(e,t,r){const n=Array.from(r.querySelectorAll(t)),s=Si(e);for(let e=n.length-1;e>=0;e--){const t=n[e];if(s>Si(t))return t}return null}(i,r,a):null},validate:e=>Mr(e,2,3,"previousWithin","selector, withinSelector, optional fromElement")||("string"!=typeof e[0]?"selector must be a string":"string"!=typeof e[1]?"withinSelector must be a string":3>e.length||null==e[2]||e[2]instanceof Element?null:"fromElement must be an Element")}};function Ti(e,t,r,n,s,i){function a(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var o,l=n.kind,c="getter"===l?"get":"setter"===l?"set":"value",u=!t&&e?n.static?e:e.prototype:null,d=t||(u?Object.getOwnPropertyDescriptor(u,n.name):{}),m=!1,p=r.length-1;p>=0;p--){var h={};for(var f in n)h[f]="access"===f?{}:n[f];for(var f in n.access)h.access[f]=n.access[f];h.addInitializer=function(e){if(m)throw new TypeError("Cannot add initializers after decoration has completed");i.push(a(e||null))};var y=(0,r[p])("accessor"===l?{get:d.get,set:d.set}:d[c],h);if("accessor"===l){if(void 0===y)continue;if(null===y||"object"!=typeof y)throw new TypeError("Object expected");(o=a(y.get))&&(d.get=o),(o=a(y.set))&&(d.set=o),(o=a(y.init))&&s.unshift(o)}else(o=a(y))&&("field"===l?s.unshift(o):d[c]=o)}u&&Object.defineProperty(u,n.name,d),m=!0}function Oi(e,t,r){for(var n=arguments.length>2,s=0;t.length>s;s++)r=n?t[s].call(e,r):t[s].call(e);return n?r:void 0}function Li(e,t,r){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:r?"".concat(r," ",t):t})}function Pi(e){const t=e.trim();return!(!t.startsWith("[@")||!t.endsWith("]"))||!!t.startsWith("@")}function ji(e){const t=e.trim();if(t.startsWith("[@")&&t.endsWith("]")){const e=t.slice(2,-1),r=e.indexOf("=");if(-1===r)return{name:e.trim()};const n=e.slice(0,r).trim();let s=e.slice(r+1).trim();return(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),{name:n,value:s}}if(t.startsWith("@"))return{name:t.substring(1).trim()};throw Error("Invalid attribute syntax: "+e)}function Ni(e,t){for(const r of e)t(r);return e}function Ii(e,t,r){for(const n of e)for(const e of t)r(n,e);return e}function Ri(e,t,r){const n=e.hasAttribute(t);void 0!==r?n&&e.getAttribute(t)===r?e.removeAttribute(t):e.setAttribute(t,r):n?e.removeAttribute(t):e.setAttribute(t,"")}function qi(e){if(!e)return[];if("string"==typeof e)return e.trim().split(/[\s,]+/).map(e=>{const t=e.trim();return t.startsWith(".")?t.substring(1):t}).filter(e=>e.length>0&&_i(e));if(Array.isArray(e))return e.map(e=>{const t=(e+"").trim();return t.startsWith(".")?t.substring(1):t}).filter(e=>e.length>0&&_i(e));const t=(e+"").trim(),r=t.startsWith(".")?t.substring(1):t;return r.length>0&&_i(r)?[r]:[]}function Mi(e){const t=e.trim();return/^\{[^}]+\}$/.test(t)}function _i(e){if(!e||0===e.trim().length)return!1;const t=e.trim();return!!Mi(t)||/^[a-zA-Z_-][a-zA-Z0-9_-]*$/.test(t)}function $i(e,t){return e.map(e=>{if(Mi(e)){const r=function(e){const t=e.trim(),r=t.match(/^\{(.+)\}$/);return r?r[1].trim():t}(e),n=t.locals.get(r)??t.globals.get(r);return null!=n?n+"":(de(`Dynamic class variable '${r}' not found in context`),"")}return e}).filter(e=>e.length>0)}"function"==typeof SuppressedError&&SuppressedError;const Vi=Symbol("command:name"),Di=Symbol("command:category"),zi=Symbol("command:metadata");function Bi(e){return function(t,r){const n=t;n[Vi]=e.name,n[Di]=e.category,Object.defineProperty(t.prototype,"name",{value:e.name,writable:!1,enumerable:!0})}}function Fi(e){return function(t,r){const n=t,s=n[Di];if(!s)throw Error("@meta decorator requires @command decorator to be applied first on "+t.name);const i={description:e.description,syntax:e.syntax,examples:e.examples,category:s,sideEffects:e.sideEffects,deprecated:e.deprecated,deprecationMessage:e.deprecationMessage,aliases:e.aliases,relatedCommands:e.relatedCommands,isBlocking:e.isBlocking??!1,hasBody:e.hasBody??!1,version:"1.0.0",compatibility:e.compatibility};n[zi]=i,Object.defineProperty(t,"metadata",{value:i,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(t.prototype,"metadata",{get:()=>i,enumerable:!0,configurable:!1})}}function Hi(e){return()=>new e}function Wi(e,t){return e?`[${e}] ${t}`:t}function Ui(e,t,r){if(ur(e))return e;if(!e){const e=t.me;if(!e)throw Error(Wi(r,"No target element \u2014 provide explicit target or ensure context.me is set"));return Ji(e)}if("string"==typeof e){const n=e.trim();if("me"===n){if(!t.me)throw Error(Wi(r,'Context reference "me" is not available'));return Ji(t.me)}if("it"===n){if(!ur(t.it))throw Error(Wi(r,'Context reference "it" is not an HTMLElement'));return t.it}if("you"===n){if(!t.you)throw Error(Wi(r,'Context reference "you" is not available'));return Ji(t.you)}const s=t.me?.ownerDocument??("undefined"!=typeof document?document:null);if(!s)throw Error(Wi(r,"DOM not available \u2014 cannot resolve element selector"));const i=s.querySelector(n);if(!i)throw Error(Wi(r,"Element not found with selector: "+n));if(!ur(i))throw Error(Wi(r,"Element found but is not an HTMLElement: "+n));return i}throw Error(Wi(r,"Invalid target type: "+typeof e))}function Ki(e,t){if(Array.isArray(e))return e.filter(ur);if(dr(e))return Array.from(e).filter(ur);if(ur(e))return[e];if(!e){const e=t.me;return e&&ur(e)?[e]:[]}if("string"==typeof e){const r=e.trim();if("me"===r)return t.me&&ur(t.me)?[t.me]:[];if("it"===r)return ur(t.it)?[t.it]:[];if("you"===r)return t.you&&ur(t.you)?[t.you]:[];const n=t.me?.ownerDocument??("undefined"!=typeof document?document:null);if(n){let e=r;e.startsWith("<")&&e.endsWith("/>")&&(e=e.slice(1,-2).trim());const t=n.querySelectorAll(e);return Array.from(t).filter(ur)}}return[]}function Ji(e){if(ur(e))return e;throw Error("Value is not an HTMLElement")}function Zi(e,t,r){switch(e.toLowerCase()){case"my":case"me":if(!t.me)throw Error(Wi(r,'No "me" element in context'));if(!ur(t.me))throw Error(Wi(r,"context.me is not an HTMLElement"));return t.me;case"its":case"it":if(!t.it)throw Error(Wi(r,'No "it" value in context'));if(!ur(t.it))throw Error(Wi(r,"context.it is not an HTMLElement"));return t.it;case"your":case"you":if(!t.you)throw Error(Wi(r,'No "you" element in context'));if(!ur(t.you))throw Error(Wi(r,"context.you is not an HTMLElement"));return t.you;default:throw Error(Wi(r,"Unknown possessive: "+e))}}const Xi=["on","from","to","in","with","at"];async function Yi(e,t,r,n,s={},i){let a=e;if(s.filterPrepositions&&e&&(a=e.filter(e=>{const t=e;return"identifier"!==t?.type||"string"!=typeof t.name||!Xi.includes(t.name.toLowerCase())})),(!a||0===a.length)&&s.fallbackModifierKey&&i){const e=i[s.fallbackModifierKey];e&&(a=[e])}if(!a||0===a.length){if(!r.me)throw Error(n+" command: no target specified and context.me is null");if(!ur(r.me))throw Error(n+" command: context.me must be an HTMLElement");return[r.me]}const o=[];for(const e of a){const s=await t.evaluate(e,r);if(""!==s&&("string"!=typeof s||""!==s.trim()))if(ur(s))o.push(s);else if(dr(s)){const e=Array.from(s).filter(ur);o.push(...e)}else if(Array.isArray(s)){const e=s.filter(ur);o.push(...e)}else{if("string"!=typeof s){if(null==s)continue;throw Error(`Invalid ${n} target: expected HTMLElement or CSS selector, got ${typeof s}`)}try{let e=s;e.startsWith("<")&&e.endsWith("/>")&&(e=e.slice(1,-2).trim());const t=r.me?.ownerDocument??("undefined"!=typeof document?document:null);if(!t)throw Error("DOM not available - cannot resolve element selector");const n=t.querySelectorAll(e),i=Array.from(n).filter(ur);o.push(...i)}catch(e){throw Error(`Invalid CSS selector: "${s}" - ${e instanceof Error?e.message:e+""}`)}}}if(0===o.length){if(!r.me)throw Error(n+" command: no target specified and context.me is null");if(!ur(r.me))throw Error(n+" command: context.me must be an HTMLElement");return[r.me]}return o}function Gi(e){return"string"==typeof e&&e.trim().startsWith("*")}function Qi(e){const t=function(e){const t=e.trim();if(!t.startsWith("*"))return null;const r=t.substring(1).trim();return r?{property:r}:null}(e);if(!t)return null;const r=t.property.toLowerCase();return["display","visibility","opacity"].includes(r)?r:null}function ea(e,t,r){e.style.setProperty(t,r)}const ta=["dialog","details","summary","select"];function ra(e){return e&&"object"==typeof e?"string"==typeof e.selector?e.selector:"string"==typeof e.value?e.value:"string"==typeof e.name?e.name:null:null}async function na(e,t,r){return function(e){if(!e||"object"!=typeof e)return!1;const t=e.type;if("selector"!==t&&"cssSelector"!==t&&"classSelector"!==t)return!1;const r=ra(e);return"string"==typeof r&&r.startsWith(".")}(e)||function(e){if(!e||"object"!=typeof e)return!1;const t=e.type;if("selector"!==t&&"cssSelector"!==t&&"cssProperty"!==t)return!1;const r=ra(e);return"string"==typeof r&&r.startsWith("*")}(e)?{value:ra(e),extractedFromNode:!0}:function(e){if(!e||"object"!=typeof e)return!1;if("attributeAccess"===e.type)return!0;if("selector"===e.type||"cssSelector"===e.type){const t=ra(e);return"string"==typeof t&&t.startsWith("@")}return!1}(e)?{value:(n=e,"attributeAccess"===n.type?"@"+n.attributeName:ra(n)),extractedFromNode:!0}:{value:await t.evaluate(e,r),extractedFromNode:!1};var n}class sa{async resolveTargets(e,t,r,n){return Yi(e,t,r,this.mode,{filterPrepositions:!0,fallbackModifierKey:this.preposition},n)}async evaluateFirst(e,t,r){return na(e,t,r)}parseClassNames(e){return qi(e)}isAttribute(e){return Pi(e.trim())}isCSSProperty(e){return Gi(e.trim())}validateTargets(e){return Array.isArray(e)&&function(e){return Array.isArray(e)&&e.length>0&&e.every(e=>ur(e))}(e)}validateType(e,t){return function(e,t){return"string"==typeof e&&t.includes(e)}(e,t)}validateStringArray(e,t=1){return Array.isArray(e)&&function(e,t=1){return Array.isArray(e)&&e.length>=t&&e.every(e=>"string"==typeof e&&e.length>0)}(e,t)}}let ia=(()=>{let e,t,r=[Fi({description:"Add CSS classes, attributes, or styles to elements",syntax:"add <classes|@attr|{styles}> [to <target>]",examples:["add .active to me",'add "active selected" to <button/>',"add .highlighted to #modal",'add [@data-test="value"] to #element'],sideEffects:["dom-mutation"]}),Bi({name:"add",category:"dom"})],n=[],s=sa;return t=class extends s{constructor(){super(...arguments),this.mode="add",this.preposition="to"}async parseInput(e,t,r){if(!e.args||0===e.args.length)throw Error("add command requires an argument");const{value:n}=await this.evaluateFirst(e.args[0],t,r);if("object"==typeof n&&null!==n&&!Array.isArray(n))return{type:"styles",styles:n,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)};if("string"==typeof n){const s=n.trim();if(this.isAttribute(s)){const{name:n,value:i}=function(e){const t=ji(e);return{name:t.name,value:t.value??""}}(s);return{type:"attribute",name:n,value:i,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)}}if(this.isCSSProperty(s)){const n=s.substring(1).trim();if(2>e.args.length)throw Error("add *property requires a value argument");const i=await t.evaluate(e.args[1],r);return{type:"styles",styles:{[n]:i+""},targets:await this.resolveTargets(e.args.slice(2),t,r,e.modifiers)}}}const s=this.parseClassNames(n);if(0===s.length)throw Error("add command: no valid class names found");return{type:"classes",classes:s,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)}}async execute(e,t){switch(e.type){case"classes":{const r=$i(e.classes,t);r.length>0&&Ii(e.targets,r,(e,t)=>{e.classList.contains(t)||e.classList.add(t)});break}case"attribute":r=e.name,n=e.value,Ni(e.targets,e=>{e.setAttribute(r,n)});break;case"styles":!function(e,t){Ii(e,Object.entries(t),(e,[t,r])=>{e.style.setProperty(t,r)})}(e.targets,e.styles)}var r,n}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;if(!this.validateType(t.type,["classes","attribute","styles"]))return!1;if(!this.validateTargets(t.targets))return!1;if("classes"===t.type){if(!this.validateStringArray(e.classes,1))return!1}else if("attribute"===t.type){if("string"!=typeof e.name||0===e.name.length)return!1;if("string"!=typeof e.value)return!1}else if("styles"===t.type){const t=e;if("object"!=typeof t.styles||null===t.styles)return!1;if(Array.isArray(t.styles))return!1;const r=t.styles;if(0===Object.keys(r).length)return!1;if(!Object.values(r).every(e=>"string"==typeof e))return!1}return!0}},Li(t,"AddCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),Oi(t,n)})(),t})();const aa=Hi(ia);function oa(e){return!!e.parentNode&&(e.remove(),!0)}let la=(()=>{let e,t,r=[Fi({description:"Remove CSS classes, attributes, styles, or elements from the DOM",syntax:"remove <classes|@attr|*prop|element> [from <target>]",examples:["remove .active from me",'remove "active selected" from <button/>',"remove .highlighted from #modal","remove me","remove closest .item"],sideEffects:["dom-mutation"]}),Bi({name:"remove",category:"dom"})],n=[],s=sa;return t=class extends s{constructor(){super(...arguments),this.mode="remove",this.preposition="from"}async parseInput(e,t,r){if(!e.args||0===e.args.length)throw Error("remove command requires an argument");const{value:n}=await this.evaluateFirst(e.args[0],t,r);if(ur(n))return{type:"element",targets:[n]};if(Array.isArray(n)&&n.length>0&&ur(n[0]))return{type:"element",targets:n.filter(e=>ur(e))};if("string"==typeof n){const s=n.trim();if(this.isAttribute(s))return{type:"attribute",name:ji(s).name,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)};if(this.isCSSProperty(s))return{type:"styles",properties:[s.substring(1).trim()],targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)}}const s=this.parseClassNames(n);if(0===s.length)throw Error("remove command: no valid class names found");return{type:"classes",classes:s,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)}}execute(e,t){switch(e.type){case"classes":{const r=$i(e.classes,t);r.length>0&&Ii(e.targets,r,(e,t)=>{e.classList.remove(t)});break}case"attribute":r=e.name,Ni(e.targets,e=>{e.removeAttribute(r)});break;case"styles":!function(e,t){Ii(e,t,(e,t)=>{e.style.removeProperty(t)})}(e.targets,e.properties);break;case"element":for(const t of e.targets)oa(t)}var r}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;if(!this.validateType(t.type,["classes","attribute","styles","element"]))return!1;if(!this.validateTargets(t.targets))return!1;if("classes"===t.type){if(!this.validateStringArray(e.classes,1))return!1}else if("attribute"===t.type){if("string"!=typeof e.name||0===e.name.length)return!1}else if("styles"===t.type&&!this.validateStringArray(e.properties,1))return!1;return!0}},Li(t,"RemoveCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),Oi(t,n)})(),t})();const ca=Hi(la);function ua(e){const t=e.trim().match(/^(\d+(?:\.\d+)?)\s*(s|ms|sec|seconds?|milliseconds?)?$/i);if(!t)return null;const r=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();return"ms"===n||"millisecond"===n||"milliseconds"===n?{number:r,milliseconds:Math.floor(r)}:"s"===n||"sec"===n||"second"===n||"seconds"===n?{number:r,milliseconds:Math.floor(1e3*r)}:null}function da(e,t=300){if("number"==typeof e)return Math.max(0,Math.floor(e));if("string"==typeof e){const r=ua(e);return r?r.milliseconds:t}return t}function ma(e){if("number"==typeof e){if(0>e)throw Error("Duration must be >= 0");return Math.floor(e)}if("string"==typeof e){const t=ua(e);if(!t)throw Error(`Invalid duration format: "${e}"`);return t.milliseconds}throw Error("Invalid duration type: "+typeof e)}function pa(e){return e&&"none"!==e?e.split(",").map(e=>{const t=parseFloat(e.trim());return isNaN(t)?0:e.includes("s")&&!e.includes("ms")?1e3*t:t}):[0]}function ha(e,t){let r=0;for(let n=0;e.length>n;n++)r=Math.max(r,(e[n]||0)+(t[n]||0));return r}function fa(e){return 0===e.length?[]:"SUMMARY"===e[0].tagName?e.map(e=>e.closest("details")).filter(e=>null!==e):e}function ya(e){return"DIALOG"===e.tagName}function ga(e){return"DETAILS"===e.tagName}function va(e,t,r){return()=>{"class"===t?e.classList.toggle(r):"attribute"===t&&Ri(e,r)}}function ba(e,t,r,n){const s=va(e,t,r),i=setTimeout(s,n);return()=>{clearTimeout(i)}}function wa(e,t,r,n){const s=va(e,t,r),i=()=>{s(),e.removeEventListener(n,i)};return e.addEventListener(n,i,{once:!0}),()=>{e.removeEventListener(n,i)}}function ka(e,t,r){if(t.startsWith("@")){const n=t.substring(1);return void(!1===r?e.removeAttribute(n):e.setAttribute(n,!0===r?"":r+""))}const n=r+"";switch(t){case"textContent":return void(e.textContent=n);case"innerHTML":return void(e.innerHTML=n);case"innerText":return void(e.innerText=n);case"id":return void(e.id=n);case"className":return void(e.className=n);case"value":return void("value"in e&&(e.value=n));case"checked":return void("checked"in e&&(e.checked=!!r))}if(t.includes(".")){const n=t.split(".");let s=e;for(let e=0;n.length-1>e;e++)if(s=s[n[e]],null==s)return;return void(s[n[n.length-1]]=r)}if(t.includes("-")||t in e.style)e.style.setProperty(t,n);else try{e[t]=r}catch(e){if(!(e instanceof TypeError&&(e.message.includes("only a getter")||e.message.includes("read only"))))throw Error(`Cannot set property '${t}': ${e instanceof Error?e.message:"Unknown error"}`)}}function Ea(e){return null==e||""===e}const xa=/^the\s+(.+?)\s+of\s+(.+)$/i,Ca=new Set(["disabled","checked","hidden","readOnly","readonly","required","multiple","selected","autofocus","autoplay","controls","loop","muted","open","reversed","async","defer","noValidate","novalidate","formNoValidate","formnovalidate","draggable","spellcheck","contentEditable"]);function Sa(e){return"string"==typeof e&&xa.test(e)}function Aa(e,t){const r=e.match(xa);if(!r)return null;try{return{element:Ui(r[2].trim(),t),property:r[1].trim()}}catch{return null}}async function Ta(e,t,r){if(function(e){return!(!e||"object"!=typeof e)&&"propertyOfExpression"===e.type&&"object"==typeof e.property&&null!==e.property}(e))return async function(e,t,r){const n=e.property?.name;if(!n)return null;let s=await t.evaluate(e.target,r);return Array.isArray(s)&&(s=s[0]),ur(s)?{element:s,property:n}:null}(e,t,r);if(function(e){return!(!e||"object"!=typeof e)&&"propertyAccess"===e.type&&("string"==typeof e.property||"object"==typeof e.property&&null!==e.property&&"string"==typeof e.property.name)}(e))return async function(e,t,r){const n="string"==typeof e.property?e.property:e.property?.name;if(!n)return null;let s=await t.evaluate(e.object,r);return Array.isArray(s)&&(s=s[0]),ur(s)?{element:s,property:n}:null}(e,t,r);const n=e;if("possessiveExpression"===n?.type||"memberExpression"===n?.type){const e=n.object,s=n.property;let i=await t.evaluate(e,r);if(Array.isArray(i)&&(i=i[0]),!ur(i))return null;const a=s?.name||s?.value;return a?{element:i,property:a}:null}return null}function Oa(e,t){const{element:r,property:n}=e;n.startsWith("*")?ea(r,n.substring(1),t+""):ka(r,n,t)}async function La(e,t,r){let n,s;if(e?.for){const s=await t.evaluate(e.for,r);n="number"==typeof s?s:"string"==typeof s?da(s):void 0}if(e?.until){const n=await t.evaluate(e.until,r);"string"==typeof n&&(s=n)}return{duration:n,untilEvent:s}}function Pa(e,t){const r=t?.name,n=function(e){if(!e||"object"!=typeof e)return!1;if("identifier"!==e.type)return!1;const t=e.name;return"string"==typeof t&&function(e){if("string"!=typeof e)return!1;const t=e.toLowerCase();return ta.includes(t)}(t)}(t);if(ur(e)||Array.isArray(e)&&e.every(e=>ur(e)))return{type:"element",expression:""};if(n&&r)return{type:"element",expression:r};if("string"==typeof e){const t=e.trim();return t.startsWith("@")||t.startsWith("[@")?{type:"attribute",expression:t}:t.startsWith("*")?{type:"css-property",expression:t}:t.startsWith(".")?{type:"class",expression:t}:t.startsWith("#")||function(e){if("string"!=typeof e)return!1;const t=e.toLowerCase();return ta.some(e=>t.includes(e))}(t)?{type:"element",expression:t}:{type:"class",expression:t}}return{type:"class",expression:""}}const ja=Hi((()=>{let e,t,r=[Fi({description:"Toggle classes, attributes, or interactive elements",syntax:["toggle <class> [on <target>]","toggle @attr","toggle <element> [as modal]","toggle <expr> for <duration>"],examples:["toggle .active on me","toggle @disabled","toggle #myDialog as modal","toggle .loading for 2s"],sideEffects:["dom-mutation"]}),Bi({name:"toggle",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("toggle command requires an argument");let n=!1;if(function(e){if(!e||"asExpression"!==e.type)return!1;const t=e.targetType,r="string"==typeof t?t:t?.name;return"string"==typeof r&&"modal"===r.toLowerCase()}(e.args[0])){n=!0;const t=e.args[0].expression;e={...e,args:[t,...e.args.slice(1)]}}const s=e.args[0],i=s?.name;if("between"===i&&e.args.length>=4){const{duration:n,untilEvent:s}=await La(e.modifiers,t,r),i=async e=>{const n=e;return"selector"===n?.type?n.value:t.evaluate(e,r)},a=await i(e.args[1]),o=await i(e.args[3]),l=[];for(let t=4;e.args.length>t;t++){const r=e.args[t]?.name;"on"!==r&&"from"!==r&&l.push(e.args[t])}const c={filterPrepositions:!0,fallbackModifierKey:"on"},u=await Yi(l,t,r,"toggle",c,e.modifiers);return{type:"classes-between",classA:(a+"").replace(/^\./,""),classB:(o+"").replace(/^\./,""),targets:u,duration:n,untilEvent:s}}const a=await Ta(s,t,r);if(a)return{type:"property",target:a};if("selector"===s.type&&"string"==typeof s.value&&s.value.startsWith("*")){let n=s.value,i=1;if("*"===n&&e.args.length>1&&"identifier"===e.args[1].type&&(n="*"+e.args[1].name,i=2),"*"===n&&e.modifiers?.on){const s=e.modifiers.on?.name;if(s&&["display","visibility","opacity"].includes(s)){n="*"+s;const{duration:i,untilEvent:a}=await La(e.modifiers,t,r),o=Qi(n);if(o){const e=r.me;return{type:"css-property",property:o,targets:e?[e]:[],duration:i,untilEvent:a}}}}const a=Qi(n);if(a){const{duration:n,untilEvent:s}=await La(e.modifiers,t,r),o={filterPrepositions:!0,fallbackModifierKey:"on"};return{type:"css-property",property:a,targets:await Yi(e.args.slice(i),t,r,"toggle",o,e.modifiers),duration:n,untilEvent:s}}}const{duration:o,untilEvent:l}=await La(e.modifiers,t,r),{value:c}=await na(s,t,r);if(Sa(c)){const e=Aa(c,r);if(e)return{type:"property",target:e}}const{type:u,expression:d}=Pa(c,s),m={filterPrepositions:!0,fallbackModifierKey:"on"};switch(u){case"attribute":{const{name:n,value:s}=ji(d);return{type:"attribute",name:n,value:s,targets:await Yi(e.args.slice(1),t,r,"toggle",m,e.modifiers),duration:o,untilEvent:l}}case"css-property":{const n=Qi(d);if(!n)throw Error("Invalid CSS property: "+d);return{type:"css-property",property:n,targets:await Yi(e.args.slice(1),t,r,"toggle",m,e.modifiers)}}case"element":{let i;if(ur(c))i=[c];else if(Array.isArray(c)&&c.every(e=>ur(e)))i=c;else if(d){const e=document.querySelectorAll(d);i=Array.from(e).filter(e=>ur(e))}else i=await Yi([s],t,r,"toggle",m,e.modifiers);const a=function(e){if(0===e.length)return null;const t=e[0].tagName;if(!e.every(e=>e.tagName===t))return null;switch(t){case"DIALOG":return"dialog";case"DETAILS":return"details";case"SELECT":return"select";case"SUMMARY":return e.map(e=>e.closest("details")).filter(e=>null!==e).length>0?"details":null;default:return null}}(i);if("dialog"===a){const s=n?"modal":await async function(e,t,r,n){if(t?.as){const e=await r.evaluate(t.as,n);if("string"==typeof e&&"modal"===e.toLowerCase())return"modal"}if(e.length>=2){const t=await r.evaluate(e[1],n);if("string"==typeof t){const s=t.toLowerCase();if("modal"===s||"as modal"===s)return"modal";if("as"===s&&e.length>=3){const t=await r.evaluate(e[2],n);if("string"==typeof t&&"modal"===t.toLowerCase())return"modal"}}}return"non-modal"}(e.args,e.modifiers,t,r);return{type:"dialog",mode:s,targets:i}}return"details"===a?{type:"details",targets:fa(i)}:"select"===a?{type:"select",targets:i}:{type:"classes",classes:qi(d),targets:i,duration:o,untilEvent:l}}default:{const n=qi(d||c);if(!n.length)throw Error("toggle command: no valid class names found");return{type:"classes",classes:n,targets:await Yi(e.args.slice(1),t,r,"toggle",m,e.modifiers),duration:o,untilEvent:l}}}}async execute(e,t){switch(e.type){case"classes":{const r=$i(e.classes,t);if(0===r.length)return[...e.targets];if(Ii(e.targets,r,(e,t)=>{e.classList.toggle(t)}),(e.duration||e.untilEvent)&&r.length)for(const t of e.targets)e.duration&&ba(t,"class",r[0],e.duration),e.untilEvent&&wa(t,"class",r[0],e.untilEvent);return[...e.targets]}case"attribute":if(r=e.name,n=e.value,Ni(e.targets,e=>{Ri(e,r,n)}),e.duration||e.untilEvent)for(const t of e.targets)e.duration&&ba(t,"attribute",e.name,e.duration),e.untilEvent&&wa(t,"attribute",e.name,e.untilEvent);return[...e.targets];case"css-property":return Ni(e.targets,t=>function(e,t){const r=window.getComputedStyle(e);switch(t){case"display":"none"===r.display?(e.style.display=e.dataset.previousDisplay||"block",delete e.dataset.previousDisplay):(e.dataset.previousDisplay=r.display,e.style.display="none");break;case"visibility":e.style.visibility="hidden"===r.visibility?"visible":"hidden";break;case"opacity":e.style.opacity=0===parseFloat(r.opacity)?"1":"0"}}(t,e.property));case"property":return function(e){const t=function(e){const{element:t,property:r}=e;return r.startsWith("*")?function(e,t){return window.getComputedStyle(e).getPropertyValue(t)}(t,r.substring(1)):Or(t,r)}(e),r=e.property,n=r.startsWith("@")?r.substring(1):r;if("boolean"==typeof t||Ca.has(n)||Ca.has(n.toLowerCase())){const r=!t;return Oa(e,r),r}if("number"==typeof t){const r=0===t?1:0;return Oa(e,r),r}if("string"==typeof t){const n="__ht_"+r,s=e.element[n];return""===t&&void 0!==s?(Oa(e,s),s):(e.element[n]=t,Oa(e,""),"")}Oa(e,!t)}(e.target),[e.target.element];case"dialog":return Ni(e.targets,t=>{return n=e.mode,void((r=t).open?r.close():"modal"===n?r.showModal():r.show());var r,n});case"details":return Ni(e.targets,e=>{var t;(t=e).open=!t.open});case"select":return Ni(e.targets,e=>function(e){if(document.activeElement===e)e.blur();else{if(e.focus(),"showPicker"in e&&"function"==typeof e.showPicker)try{return void e.showPicker()}catch{}const t=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});e.dispatchEvent(t)}}(e));case"classes-between":for(const t of e.targets){const r=t.classList.contains(e.classA),n=t.classList.contains(e.classB);r?(t.classList.remove(e.classA),t.classList.add(e.classB)):n?(t.classList.remove(e.classB),t.classList.add(e.classA)):t.classList.add(e.classA)}if(e.duration||e.untilEvent)for(const t of e.targets)e.duration&&ba(t,"class",e.classA,e.duration),e.untilEvent&&wa(t,"class",e.classA,e.untilEvent);return[...e.targets]}var r,n}},Li(t,"ToggleCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})());const Na=Hi((()=>{let e,t,r=[Fi({description:"Insert content into elements or properties",syntax:["put <value> into <target>","put <value> before <target>","put <value> after <target>"],examples:['put "Hello World" into me',"put <div>Content</div> before #target","put value into #elem's innerHTML"],sideEffects:["dom-mutation"]}),Bi({name:"put",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("put requires arguments");const n=e=>e?.type||"unknown",s=["into","before","after","at","at start of","at end of"];let i=-1,a=null;for(let t=0;e.args.length>t;t++){const r=e.args[t],o=n(r),l="literal"===o?r.value:r.name;if(("literal"===o||"identifier"===o)&&s.includes(l)){i=t,a=l;break}}let o=null,l=null;if(-1===i){const t=s.find(t=>e.modifiers[t]);if(t)o=e.args[0],a=t,l=e.modifiers[t];else if(3>e.args.length){if(2>e.args.length)throw Error("put requires content and position");o=e.args[0],a=e.args[1]?.value||e.args[1]?.name||"into"}else o=e.args[0],a=e.args[1]?.value||e.args[1]?.name||null,l=e.args[2]}else o=e.args.slice(0,i)[0]||null,l=e.args.slice(i+1)[0]||null;if(!o)throw Error("put requires content");if(!a)throw Error("put requires position keyword");const c=await t.evaluate(o,r),u=this.mapPosition(a);let d,m,p=null;if(l){const e=n(l),s=await Ta(l,t,r);if(s)return{value:c,targets:[s.element],position:"replace",memberPath:s.property};if("memberExpression"===e){const e=l.object,n=l.property;if("selector"===e?.type)p=e.value;else if("identifier"===e?.type){const s=e.name;if("my"===s||"me"===s||"I"===s){if(r.me&&n?.name)return{value:c,targets:[r.me],position:"replace",memberPath:n.name}}else if("its"===s||"it"===s){const e=await t.evaluate(l,r);"string"==typeof e&&(p=e)}else p=s}if(p&&n?.name)d=n.name;else if(!p&&!d){const e=await t.evaluate(l,r);"string"==typeof e&&(p=e)}}else if("identifier"===e&&"me"===l.name)p=null;else if("selector"===e||"cssSelector"===e)p=l.value||l.selector;else if("literal"===e){const e=l.value;if("string"==typeof e&&Sa(e)){const t=Aa(e,r);if(t)return{value:c,targets:[t.element],position:"replace",memberPath:t.property}}"string"==typeof e&&this.looksLikeCss(e)?p=e:m=e+""}else if("identifier"===e){const e=l.name;if(this.looksLikeCss(e))p=e;else{const n=await t.evaluate(l,r),s=this.resolveEvaluatedAsElements(n);if(s)return{value:c,targets:s,position:u,memberPath:d};m=e}}else{const e=await t.evaluate(l,r),n=this.resolveEvaluatedAsElements(e);if(n)return{value:c,targets:n,position:u,memberPath:d};"string"==typeof e&&(this.looksLikeCss(e)?p=e:m=e)}}return m?{value:c,targets:[],position:u,memberPath:d,variableName:m}:{value:c,targets:await this.resolveTargets(p,r),position:u,memberPath:d}}async execute(e,t){const{value:r,targets:n,position:s,memberPath:i,variableName:a}=e;if(a)return t.locals&&t.locals.set(a,r),t[a]=r,void Object.assign(t,{it:r});if(i)for(const e of n)this.setProperty(e,i,r);else for(const e of n){const t=this.parseValue(r);this.insertContent(e,t,s)}return n}mapPosition(e){switch(e){case"into":return"replace";case"before":return"beforebegin";case"after":return"afterend";case"at start of":return"afterbegin";case"at end of":return"beforeend";default:throw Error("Invalid position: "+e)}}async resolveTargets(e,t){if(!e||"me"===e){if(!t.me||!ur(t.me))throw Error("put: no target and context.me is null");return[t.me]}const r=Array.from(document.querySelectorAll(e)).filter(e=>ur(e));if(!r.length)throw Error(`No elements: "${e}"`);return r}parseValue(e){return ur(e)?e:null==e?"":e+""}insertContent(e,t,r){if("replace"!==r)if(ur(t)){const n=t;switch(r){case"beforebegin":e.parentElement?.insertBefore(n,e);break;case"afterbegin":e.insertBefore(n,e.firstChild);break;case"beforeend":e.appendChild(n);break;case"afterend":e.parentElement?.insertBefore(n,e.nextSibling)}}else t.includes("<")&&t.includes(">")?e.insertAdjacentHTML(r,t):e.insertAdjacentText(r,t);else ur(t)?(e.innerHTML="",e.appendChild(t)):t.includes("<")&&t.includes(">")?e.innerHTML=t:e.textContent=t}resolveEvaluatedAsElements(e){if(ur(e))return[e];if(Array.isArray(e)){const t=e.filter(ur);return t.length>0?t:null}if("undefined"!=typeof NodeList&&e instanceof NodeList){const t=Array.from(e).filter(ur);return t.length>0?t:null}return null}looksLikeCss(e){return!!e&&(!!/^[#.\[]/.test(e)||(!(!/[>+~\s]/.test(e)||1>=e.length)||["div","span","p","a","button","input","form","ul","li","ol","table","tr","td","th","img","h1","h2","h3","h4","h5","h6","section","article","header","footer","nav","main","aside","dialog","label","select","option","textarea"].includes(e.toLowerCase())))}setProperty(e,t,r){const n=t.split(".");let s=e;for(let e=0;n.length-1>e;e++){if(!s[n[e]])throw Error(`Property path "${t}" does not exist`);s=s[n[e]]}s[n[n.length-1]]=r}},Li(t,"PutCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})());class Ia{async parseInput(e,t,r){const{targets:n}=await async function(e,t,r,n){return{targets:await Yi(e.args,t,r,n)}}(e,t,r,this.mode);return{targets:n,mode:this.mode,defaultDisplay:"show"===this.mode?"block":void 0}}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!(!Array.isArray(t.targets)||!t.targets.every(e=>ur(e))||"show"!==t.mode&&"hide"!==t.mode||"show"===t.mode&&"string"!=typeof t.defaultDisplay)}showElement(e,t="block"){const r=e.dataset.originalDisplay;void 0!==r?(e.style.display=r||t,delete e.dataset.originalDisplay):"none"===e.style.display&&(e.style.display=t),e.classList.add("show")}hideElement(e){if(!e.dataset.originalDisplay){const t=e.style.display;e.dataset.originalDisplay="none"===t?"":t}e.style.display="none",e.classList.remove("show")}}let Ra=(()=>{let e,t,r=[Fi({description:"Hide elements by setting display to none",syntax:"hide [<target>]",examples:["hide me","hide #modal","hide .warnings","hide <button/>"],sideEffects:["dom-mutation"]}),Bi({name:"hide",category:"dom"})],n=[],s=Ia;return t=class extends s{constructor(){super(...arguments),this.mode="hide"}async execute(e,t){for(const t of e.targets)this.hideElement(t)}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&!!t.targets.every(e=>ur(e))}},Li(t,"HideCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),Oi(t,n)})(),t})();const qa=Hi(Ra);let Ma=(()=>{let e,t,r=[Fi({description:"Show elements by restoring display property",syntax:"show [<target>]",examples:["show me","show #modal","show .hidden","show <button/>"],sideEffects:["dom-mutation"]}),Bi({name:"show",category:"dom"})],n=[],s=Ia;return t=class extends s{constructor(){super(...arguments),this.mode="show"}async execute(e,t){const r=e.defaultDisplay||"block";for(const t of e.targets)this.showElement(t,r)}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&!!t.targets.every(e=>ur(e))&&"string"==typeof t.defaultDisplay}},Li(t,"ShowCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),Oi(t,n)})(),t})();const _a=Hi(Ma),$a={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function Va(e){return e.replace(/[&<>"']/g,e=>$a[e])}let Da=(()=>{let e,t,r=[Fi({description:"Create DOM elements or class instances",syntax:["make a <tag#id.class1.class2/>","make a <ClassName> from <args> called <identifier>"],examples:["make an <a.navlink/> called linkElement",'make a URL from "/path/", "https://origin.example.com"'],sideEffects:["dom-creation","data-mutation"]}),Bi({name:"make",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){const n=e.modifiers.an??e.modifiers.a??e.args[0];if(!n)throw Error("Make command requires class name or DOM element expression");const s=n.raw;let i="string"==typeof s&&s.startsWith("<")?s:await t.evaluate(n,r);if(null==i)throw Error("Make command requires class name or DOM element expression");"string"==typeof i&&i.startsWith("<")&&(i=await async function(e,t){if(!e.includes("{"))return e;const r=/\{([^{}]+)\}/g,n=[];let s;for(;null!==(s=r.exec(e));){let e=s[0];try{const r=await En(s[1].trim(),t);null!=r&&(e=Va(r+""))}catch{}n.push({index:s.index,length:s[0].length,text:e})}let i=e;for(let e=n.length-1;e>=0;e--){const{index:t,length:r,text:s}=n[e];i=i.slice(0,t)+s+i.slice(t+r)}return i}(i,r));const a=void 0!==e.modifiers.an?"an":"a",o=await async function(e,t,r){if(!e)return[];if("arrayLiteral"===e.type&&Array.isArray(e.args)){const n=[];for(const s of e.args)n.push(await t.evaluate(s,r));return n}const n=await t.evaluate(e,r);return Array.isArray(n)?n:[n]}(e.modifiers.from,t,r),l=await async function(e,t,r){if(!e)return;if(("symbol"===e.type||"identifier"===e.type)&&"string"==typeof e.name)return e.name;const n=await t.evaluate(e,r);return"string"==typeof n?n:void 0}(e.modifiers.called,t,r);return{article:a,expression:i,constructorArgs:o,variableName:l}}async execute(e,t){const{expression:r,constructorArgs:n=[],variableName:s}=e,i="string"==typeof r&&r.startsWith("<"),a=i&&r.endsWith("/>")?function(e){const t=e.slice(1,-2);let r="div",n=t;const s=t.match(/^([a-zA-Z][a-zA-Z0-9]*)/);s&&(r=s[1],n=t.slice(s[0].length));const i=document.createElement(r),a=n.split(/(?=[.#])/);for(const e of a)if(e.startsWith("#")){const t=e.slice(1);t&&(i.id=t)}else if(e.startsWith(".")){const t=e.slice(1);t&&i.classList.add(t)}return i}(r):i&&/<\/[a-zA-Z]/.test(r)?function(e){const t=document.createElement("template");t.innerHTML=e.trim();const r=t.content.firstElementChild;if(r&&ur(r))return r;const n=document.createElement("div");n.innerHTML=e.trim();const s=n.firstElementChild;return s&&ur(s)?s:n}(r):function(e,t,r){if(ur(e))return e;const n=e+"";let s;if("undefined"!=typeof window&&(s=window[n]),s||"undefined"==typeof global||(s=global[n]),!s&&r.variables?.has(n)&&(s=r.variables.get(n)),!s||"function"!=typeof s)throw Error(`Constructor '${n}' not found or is not a function`);return 0===t.length?new s:new s(...t)}(r,n,t);return Object.assign(t,{it:a}),s&&hr(s,a,t),a}},Li(t,"MakeCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})();const za=Hi(Da),Ba=Hi((()=>{let e,t,r=[Fi({description:"Remove all children from an element (sets innerHTML to empty)",syntax:["empty","empty <target>","empty the <target>"],examples:["empty me","empty #list","empty .results"],sideEffects:["dom-mutation"]}),Bi({name:"empty",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){return{targets:await Yi(e.args,t,r,"empty",{filterPrepositions:!0,fallbackModifierKey:"on"},e.modifiers)}}async execute(e,t){for(const t of e.targets)t.innerHTML=""}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&t.targets.every(e=>ur(e))}},Li(t,"EmptyCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})());function Fa(e){return e.hasAttribute("popover")}const Ha=Hi((()=>{let e,t,r=[Fi({description:"Open a dialog, details element, or popover",syntax:["open [<target>]","open <dialog> as modal","open <dialog> as non-modal"],examples:["open","open #myDialog","open #details","open #popup as non-modal"],sideEffects:["dom-mutation"]}),Bi({name:"open",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){const n=(e.args??[]).filter(e=>{const t=e;if("identifier"!==t?.type)return!0;const r=t.name?.toLowerCase();return"as"!==r&&"modal"!==r&&"non-modal"!==r&&"nonmodal"!==r}),s=fa(await Yi(n,t,r,"open",{filterPrepositions:!0,fallbackModifierKey:"on"},e.modifiers)),i=await async function(e,t,r,n){if(t?.as){const e=await r.evaluate(t.as,n);if("string"==typeof e){const t=e.toLowerCase().trim();if("non-modal"===t||"nonmodal"===t)return"non-modal";if("modal"===t)return"modal"}}for(let t=0;e.length-1>t;t++){const s=e[t];if("identifier"===s?.type&&"as"===s.name?.toLowerCase()){const s=await r.evaluate(e[t+1],n);if("string"==typeof s){const e=s.toLowerCase().trim();if("non-modal"===e||"nonmodal"===e)return"non-modal";if("modal"===e)return"modal"}}}return"modal"}(e.args??[],e.modifiers??{},t,r);return{targets:s,dialogMode:i}}async execute(e,t){for(const t of e.targets)if(ya(t))t.open||("modal"===e.dialogMode?t.showModal():t.show());else if(ga(t))t.open=!0;else if(Fa(t)){const e=t;if("function"==typeof e.showPopover)try{e.showPopover()}catch{}}}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!(!Array.isArray(t.targets)||!t.targets.every(e=>ur(e))||"modal"!==t.dialogMode&&"non-modal"!==t.dialogMode)}},Li(t,"OpenCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})());function Wa(e){return e.hasAttribute("popover")}const Ua=Hi((()=>{let e,t,r=[Fi({description:"Close a dialog, details element, or popover",syntax:["close","close <target>"],examples:["close","close #myDialog","close #details","close #popup"],sideEffects:["dom-mutation"]}),Bi({name:"close",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){return{targets:fa(await Yi(e.args,t,r,"close",{filterPrepositions:!0,fallbackModifierKey:"on"},e.modifiers))}}async execute(e,t){for(const t of e.targets)if(ya(t))t.open&&t.close();else if(ga(t))t.open=!1;else if(Wa(t)){const e=t;if("function"==typeof e.hidePopover)try{e.hidePopover()}catch{}}}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&t.targets.every(e=>ur(e))}},Li(t,"CloseCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})());function Ka(e){const t=e.tagName;return"INPUT"===t||"TEXTAREA"===t}const Ja=Hi((()=>{let e,t,r=[Fi({description:"Select the contents of a text field, or select the contents of a DOM element",syntax:["select","select <target>"],examples:["select #search","select <textarea/>","select me"],sideEffects:["focus","dom-mutation"]}),Bi({name:"select",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){return{targets:await Yi(e.args,t,r,"select",{filterPrepositions:!0,fallbackModifierKey:"on"},e.modifiers)}}async execute(e,t){if(0!==e.targets.length)for(const t of e.targets){if(Ka(t)){t.select();continue}const e=t.ownerDocument??("undefined"!=typeof document?document:null),r=e?.defaultView;if(!e||!r)continue;const n=r.getSelection?.();if(n)try{const r=e.createRange();r.selectNodeContents(t),n.removeAllRanges(),n.addRange(r)}catch{}}}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&t.targets.every(e=>ur(e))}},Li(t,"SelectCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})());function Za(e){return"FORM"===e.tagName}const Xa=Hi((()=>{let e,t,r=[Fi({description:"Reset a <form> element to its default values (HTMLFormElement.reset())",syntax:["reset","reset <target>"],examples:["reset","reset #myForm","reset <form/>"],sideEffects:["dom-mutation"]}),Bi({name:"reset",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){return{targets:await Yi(e.args,t,r,"reset",{filterPrepositions:!0,fallbackModifierKey:"on"},e.modifiers)}}async execute(e,t){for(const t of e.targets)Za(t)&&t.reset()}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&t.targets.every(e=>ur(e))}},Li(t,"ResetCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})());function Ya(e,t){if("boolean"==typeof e)return e;if("function"==typeof e)return!0;if(e instanceof Promise)throw Error("Condition must be awaited - use await in the condition expression");if("string"==typeof e){if("me"===e)return!!t.me;if("it"===e)return!!t.it;if("you"===e)return!!t.you;const r=pr(e,t);return void 0!==r?!!r:!!e}return!!e}const Ga=Hi((()=>{let e,t,r=[Fi({description:"Conditional execution based on boolean expressions",syntax:["if <condition> then <commands>","if <condition> then <commands> else <commands>","unless <condition> <commands>"],examples:["if x > 5 then add .active","if user.isAdmin then show #adminPanel else hide #adminPanel","unless user.isLoggedIn showLoginForm"],sideEffects:["conditional-execution"],aliases:["unless"]}),Bi({name:"if",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){const n="unless"===e.commandName?.toLowerCase()?"unless":"if";if(!e.args||0===e.args.length)throw Error(n+" command requires a condition to evaluate");let s,i;if("unless"===n){if(2>e.args.length)throw Error("unless command requires a condition and at least one command");s=e.args.slice(1)}else if(e.args.length>=2&&e.args[1]?(s=e.args[1],i=3>e.args.length?void 0:e.args[2]):e.modifiers?.then&&(s=e.modifiers.then,i=e.modifiers.else),!s)throw Error('if command requires "then" branch with commands');return{mode:n,condition:await t.evaluate(e.args[0],r),thenCommands:s,elseCommands:i}}async execute(e,t){const{mode:r,condition:n,thenCommands:s,elseCommands:i}=e,a=Ya(n,t);let o,l;return("unless"===r?!a:a)?(o="then",l=await this.executeCommandsOrBlock(s,t),"unless"===r&&Object.assign(t,{it:l})):i&&"if"===r?(o="else",l=await this.executeCommandsOrBlock(i,t)):o="none",{mode:r,conditionResult:a,executedBranch:o,result:l}}async executeCommandsOrBlock(e,t){return"block"===e?.type?this.executeBlock(e,t):Array.isArray(e)?this.executeCommands(e,t):e}async executeBlock(e,t){const r=t.locals.get("_runtimeExecute");if(!r)throw Error("Runtime execute function not available");let n;if(e.commands?.length)for(const s of e.commands)n=await r(s,t);return n}async executeCommands(e,t){let r;for(const n of e)r=n?.execute?await n.execute(t):"function"==typeof n?await n():n;return r}},Li(t,"ConditionalCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})()),Qa=Ga,eo=Ga;let to=(()=>{let e,t,r=[Fi({description:"Iteration in hyperscript - for-in, counted, conditional, event-driven, and infinite loops",syntax:["repeat for <var> in <collection> { <commands> }","repeat <count> times { <commands> }","repeat while <condition> { <commands> }","repeat until <condition> { <commands> }","repeat forever { <commands> }"],examples:["repeat for item in items { log item }",'repeat 5 times { log "hello" }'],sideEffects:["iteration","conditional-execution"]}),Bi({name:"repeat",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){let n;if(e.modifiers?.index){const s=await t.evaluate(e.modifiers.index,r);"string"==typeof s&&(n=s)}let s,i=e.modifiers?.block||e.modifiers?.commands;if(!i){const t=[];for(let r=e.args.length-1;r>=0;r--){const n=e.args[r];if("block"===n?.type&&n.commands&&(t.unshift(n),2===t.length))break}2===t.length?(i=t[0],s=t[1]):1===t.length&&(i=t[0])}const a=e.args[0],o="identifier"===a?.type?a.name:null,l=!!e.modifiers?.bottomTested&&await t.evaluate(e.modifiers.bottomTested,r);if("for"===o||e.modifiers?.for){const a=e.args[1],o=a?.value||a?.name,l=e.args[2]?await t.evaluate(e.args[2],r):void 0;if(!o||void 0===l)throw Error("for loops require variable and collection");return{type:"for",variable:o,collection:Array.isArray(l)?l:[l],indexVariable:n,commands:i,elseCommands:s}}if("times"===o||e.modifiers?.times){const a=e.args[1],o=a?await t.evaluate(a,r):void 0,l="number"==typeof o?o:parseInt(o+"",10);if(isNaN(l))throw Error("times loops require a count number");return{type:"times",count:l,indexVariable:n,commands:i,elseCommands:s}}if("while"===o||e.modifiers?.while){const t=e.args[1]||e.modifiers?.while;if(!t)throw Error("while loops require a condition");return{type:"while",condition:t,indexVariable:n,commands:i,elseCommands:s,bottomTested:l}}if("until"===o&&e.modifiers?.from||"until-event"===o){const a=e.args[1],o=a?.value||a?.name;if(!o)throw Error("until-event loops require an event name");let l=r.me;if(e.args[2]){const n=e.args[2];if("identifier"===n?.type&&"document"===n.name)l=document;else if("identifier"===n?.type&&"window"===n.name&&"undefined"!=typeof window)l=window;else{const n=await t.evaluate(e.args[2],r);n instanceof EventTarget?l=n:"document"===n?l=document:"undefined"!=typeof window&&n===window&&(l=window)}}return{type:"until-event",eventName:o,eventTarget:l,indexVariable:n,commands:i,elseCommands:s}}if("until"===o||e.modifiers?.until){const t=e.args[1]||e.modifiers?.until;if(!t)throw Error("until loops require a condition");return{type:"until",condition:t,indexVariable:n,commands:i,elseCommands:s,bottomTested:l}}if("forever"===o||e.modifiers?.forever)return{type:"forever",indexVariable:n,commands:i,elseCommands:s};throw Error("repeat command requires a loop type (for/times/while/until/forever)")}async execute(e,t){const{type:r,variable:n,collection:s,condition:i,count:a,indexVariable:o,commands:l,elseCommands:c,bottomTested:u,eventName:d,eventTarget:m}=e;let p,h;switch(r){case"for":({config:p,iterCtx:h}=function(e,t,r){return{config:{type:"for",shouldContinue:e=>(e.collection?.length??0)>e.index,beforeIteration:(e,t)=>{e.item=e.collection?.[e.index],e.itemVariable&&t.locals&&t.locals.set(e.itemVariable,e.item)}},iterCtx:{index:0,collection:e,itemVariable:t,indexVariable:r}}}(s,n,o));break;case"times":({config:p,iterCtx:h}=function(e,t){return{config:{type:"times",shouldContinue:e=>(e.count??0)>e.index,beforeIteration:(e,t)=>{Object.assign(t,{it:e.index+1})}},iterCtx:{index:0,count:e,indexVariable:t}}}(a,o));break;case"while":({config:p,iterCtx:h}=function(e,t,r,n){return{config:{type:"while",shouldContinue:()=>t(e,r)},iterCtx:{index:0,conditionExpr:e,indexVariable:n}}}(i,Ya,t,o));break;case"until":({config:p,iterCtx:h}=function(e,t,r,n){return{config:{type:"until",shouldContinue:()=>!t(e,r)},iterCtx:{index:0,conditionExpr:e,indexVariable:n}}}(i,Ya,t,o));break;case"until-event":({config:p,iterCtx:h}=function(e,t,r){const n={index:0,eventFired:!1,indexVariable:r};return{config:{type:"until-event",shouldContinue:e=>!e.eventFired,eventSetup:{eventName:e,target:t,onEvent:()=>{n.eventFired=!0}}},iterCtx:n}}(d,m,o));break;case"forever":({config:p,iterCtx:h}=function(e,t=1e4){return{config:{type:"forever",maxIterations:t,shouldContinue:()=>!0},iterCtx:{index:0,indexVariable:e}}}(o));break;default:throw Error("Unknown repeat type: "+r)}if(u){const e=p.shouldContinue;p.shouldContinue=async t=>0===t.index||await e(t)}try{const e=await async function(e,t,r,n,s){const i=e.maxIterations??1e4;let a,o=0,l=!1;e.eventSetup&&e.eventSetup.target.addEventListener(e.eventSetup.eventName,e.eventSetup.onEvent,{once:!0});try{for(;i>o&&await e.shouldContinue(n);){e.beforeIteration&&await e.beforeIteration(n,r),n.indexVariable&&r.locals&&r.locals.set(n.indexVariable,o);try{a=await s(t,r)}catch(t){if(t instanceof Error){if(t.message.includes("BREAK")){l=!0;break}if(t.message.includes("CONTINUE")){o++,n.index=o,"until-event"===e.type&&await new Promise(e=>setTimeout(e,0));continue}}throw t}o++,n.index=o,"until-event"===e.type&&await new Promise(e=>setTimeout(e,0))}}finally{e.eventSetup&&!n.eventFired&&e.eventSetup.target.removeEventListener(e.eventSetup.eventName,e.eventSetup.onEvent)}return{iterations:o,lastResult:a,interrupted:l}}(p,l,t,h,this.executeCommands.bind(this));if(0===e.iterations&&!e.interrupted&&c){const e=await this.executeCommands(c,t);return Object.assign(t,{it:e}),{type:r,iterations:0,completed:!0,lastResult:e}}return Object.assign(t,{it:e.lastResult}),{type:r,iterations:e.iterations,completed:!e.interrupted,lastResult:e.lastResult,interrupted:e.interrupted}}catch(e){if(e instanceof Error&&(e.message.includes("BREAK")||e.message.includes("CONTINUE")))return{type:r,iterations:0,completed:!0,interrupted:e.message.includes("BREAK")};throw e}}async executeCommands(e,t){if(e&&"object"==typeof e&&"block"===e.type){const r=e,n=t.locals.get("_runtimeExecute");if(!n)throw Error("Runtime execute function not available");let s;if(r.commands)for(const e of r.commands)s=await n(e,t);return s}if(Array.isArray(e)){let r;for(const n of e)r="function"==typeof n?await n(t):n&&"function"==typeof n.execute?await n.execute(t):n;return r}return"function"==typeof e?await e(t):e}},Li(t,"RepeatCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})();const ro=Hi(to);class no{async parseInput(e,t,r){return{signalType:this.signalType}}async execute(e,t){const r=Error(this.errorMessage);throw r[this.errorFlag]=!0,"exit"===this.signalType&&(r.returnValue=void 0,r.timestamp=Date.now()),r}}let so=(()=>{let e,t,r=[Fi({description:"Exit from the current loop (repeat, for, while, until)",syntax:["break"],examples:["break","if found then break","repeat for item in items { if item == target then break }"],sideEffects:["control-flow"]}),Bi({name:"break",category:"control-flow"})],n=[],s=no;return t=class extends s{constructor(){super(...arguments),this.signalType="break",this.errorMessage="BREAK_LOOP",this.errorFlag="isBreak"}},Li(t,"BreakCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),Oi(t,n)})(),t})();const io=Hi(so);let ao=(()=>{let e,t,r=[Fi({description:"Skip to the next iteration of the current loop",syntax:["continue"],examples:["continue","if item.isInvalid then continue","repeat for item in items { if item.skip then continue; process item }"],sideEffects:["control-flow"]}),Bi({name:"continue",category:"control-flow"})],n=[],s=no;return t=class extends s{constructor(){super(...arguments),this.signalType="continue",this.errorMessage="CONTINUE_LOOP",this.errorFlag="isContinue"}},Li(t,"ContinueCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),Oi(t,n)})(),t})();const oo=Hi(ao),lo=Hi((()=>{let e,t,r=[Fi({description:"Stop command execution or prevent event defaults",syntax:["halt","halt the event"],examples:["halt","halt the event","if error then halt",'on click halt the event then log "clicked"'],sideEffects:["control-flow","event-prevention"]}),Bi({name:"halt",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){if(e.args&&e.args.length>0){const n=e.args[0];return!n||"the"!==n.name&&"the"!==n.value?{target:await t.evaluate(e.args[0],r)}:{target:r.event}}return{}}async execute(e,t){let r=e.target;if(("the"===r&&t.event||"object"==typeof r&&null!==r&&"the"===r.target&&t.event)&&(r=t.event),this.isEvent(r)){const e=r;return e.preventDefault(),e.stopPropagation(),{halted:!0,timestamp:Date.now(),eventHalted:!0}}"halted"in t&&(t.halted=!0);const n=Error("HALT_EXECUTION");throw n.isHalt=!0,n}isEvent(e){return null!==e&&"object"==typeof e&&"preventDefault"in e&&"stopPropagation"in e}},Li(t,"HaltCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})()),co=Hi((()=>{let e,t,r=[Fi({description:"Return a value from a command sequence or function, terminating execution",syntax:["return","return <value>"],examples:["return","return 42","return user.name","if found then return result"],sideEffects:["control-flow","context-mutation"]}),Bi({name:"return",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){return e.args&&0!==e.args.length?{value:await t.evaluate(e.args[0],r)}:{value:void 0}}async execute(e,t){const{value:r}=e;"returnValue"in t&&(t.returnValue=r),Object.assign(t,{it:r});const n=Error("RETURN_VALUE");throw n.isReturn=!0,n.returnValue=r,n}},Li(t,"ReturnCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})());let uo=(()=>{let e,t,r=[Fi({description:"Immediately terminate execution of the current event handler or behavior",syntax:["exit"],examples:["exit","if no draggedItem exit","on click if disabled exit"],sideEffects:["control-flow"]}),Bi({name:"exit",category:"control-flow"})],n=[],s=no;return t=class extends s{constructor(){super(...arguments),this.signalType="exit",this.errorMessage="EXIT_COMMAND",this.errorFlag="isExit"}},Li(t,"ExitCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),Oi(t,n)})(),t})();const mo=Hi(uo),po=Hi((()=>{let e,t,r=[Fi({description:"Throw an error with a specified message",syntax:["throw <message>"],examples:['throw "Invalid input"','if not valid then throw "Validation failed"'],sideEffects:["error-throwing","execution-termination"]}),Bi({name:"throw",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){if(1>e.args.length)throw Error("throw command requires a message or error object");return{message:await t.evaluate(e.args[0],r)}}async execute(e,t){const{message:r}=e;let n;throw n=r instanceof Error?r:Error("string"==typeof r?r:r+""),n}},Li(t,"ThrowCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})()),ho=Hi((()=>{let e,t,r=[Fi({description:"Set values to variables, attributes, or properties",syntax:["set <target> to <value>"],examples:['set myVar to "value"','set @data-theme to "dark"','set my innerHTML to "content"'],sideEffects:["state-mutation","dom-mutation"]}),Bi({name:"set",category:"data"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("set command requires a target");const n=e.args[0],s=n?.name||n?.value,i=n?.scope,a=n?.type;if(a){const s=Re(a);if(s)return{type:"node-write",node:n,value:await this.extractValue(e,t,r),writer:s}}const o=await this.resolveAttributeWriteTarget(n,e,t,r);if(o){const n=await this.extractValue(e,t,r);return{type:"attribute",elements:o.elements,name:o.name,value:n}}const l=await Ta(n,t,r);if(l){const n=await this.extractValue(e,t,r);if(l.property.startsWith("*")){const e=l.property.substring(1);return{type:"style",element:l.element,property:e,value:n+""}}return{type:"property",element:l.element,property:l.property,value:n}}if("memberExpression"===n?.type||"propertyAccess"===n?.type){const s=await this.tryParseMemberExpression(n,e,t,r);if(s)return s}let c;if(c="identifier"!==n?.type&&"variable"!==n?.type||"string"!=typeof s?await t.evaluate(n,r):s,function(e){if("object"!=typeof e||null===e||Array.isArray(e))return!1;if(ur(e)||e instanceof Node)return!1;const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(c))return{type:"object-literal",properties:c,targets:await this.resolveTargets(e.modifiers.on,t,r)};if(Sa(c)){const n=Aa(c,r);if(n){const s=await this.extractValue(e,t,r);return{type:"property",element:n.element,property:n.property,value:s}}return this.parseTheXofY(c,e,t,r)}if("string"==typeof c&&Gi(c)){const n=c.substring(1).trim(),s=await this.extractValue(e,t,r);return{type:"style",element:await this.resolveElement(e.modifiers.on,t,r),property:n,value:s+""}}if("string"==typeof c&&Pi(c)){const n=c.substring(1).trim(),s=await this.extractValue(e,t,r);return{type:"attribute",elements:await this.resolveTargets(e.modifiers.on,t,r),name:n,value:s}}if("string"==typeof c){const n=c.match(/^(my|me|its?|your?)\s+(.+)$/i);if(n){const s=Zi(n[1],r),i=await this.extractValue(e,t,r);return{type:"property",element:s,property:n[2],value:i}}}if(ur(c))return{type:"property",element:c,property:"textContent",value:await this.extractValue(e,t,r)};if(Array.isArray(c)&&c.length>0&&ur(c[0])){const n=await this.extractValue(e,t,r);return{type:"property",element:c[0],property:"textContent",value:n}}if("string"!=typeof c)throw Error("set command target must be a string or object literal"+("memberExpression"===n?.type||"propertyAccess"===n?.type?` (a property chain evaluated to ${null===c?"null":typeof c} \u2014 check that all intermediate objects exist)`:""));return{type:"variable",name:c,value:await this.extractValue(e,t,r),scope:"element"===i||"global"===i?i:void 0}}async execute(e,t){switch(e.type){case"variable":return"element"===e.scope?or(t,e.name,e.value):"global"===e.scope?hr(e.name,e.value,t,"global"):hr(e.name,e.value,t),"result"!==e.name&&"it"!==e.name||Object.assign(t,{[e.name]:e.value}),Object.assign(t,{it:e.value}),{target:e.name,value:e.value,targetType:"variable"};case"attribute":for(const t of e.elements)t.setAttribute(e.name,e.value+"");return Object.assign(t,{it:e.value}),{target:"@"+e.name,value:e.value,targetType:"attribute"};case"property":return ka(e.element,e.property,e.value),Object.assign(t,{it:e.value}),{target:e.element,value:e.value,targetType:"property"};case"style":return ea(e.element,e.property,e.value),Object.assign(t,{it:e.value}),{target:e.element,value:e.value,targetType:"property"};case"object-literal":for(const t of e.targets)for(const[r,n]of Object.entries(e.properties))ka(t,r,n);return Object.assign(t,{it:e.properties}),{target:e.targets[0]||"unknown",value:e.properties,targetType:"property"};case"member-assignment":return e.container[e.property]=e.value,Object.assign(t,{it:e.value}),{target:e.property,value:e.value,targetType:"property"};case"node-write":return await e.writer(e.node,e.value,t),Object.assign(t,{it:e.value}),{target:e.node.name??"",value:e.value,targetType:"variable"};default:throw Error("Unknown input type: "+e.type)}}async resolveAttributeWriteTarget(e,t,r,n){const s=e;if("attributeAccess"===s?.type)return{elements:await this.resolveTargets(t.modifiers.on,r,n),name:s.attributeName};if("binaryExpression"===s?.type&&"of"===s.operator&&"attributeAccess"===s.left?.type){const e=await this.evaluateToElement(s.right,r,n);if(e)return{elements:[e],name:s.left.attributeName}}if("memberExpression"===s?.type&&"attributeAccess"===s.property?.type){const e=await this.evaluateToElement(s.object,r,n);if(e)return{elements:[e],name:s.property.attributeName}}return null}async evaluateToElement(e,t,r){const n=await t.evaluate(e,r),s=Array.isArray(n)?n[0]:n;return ur(s)?s:null}async tryParseMemberExpression(e,t,r,n){const s=e.object,i=e.property;if(s?.name&&i?.name){const e=s.name.toLowerCase();if(["me","my","it","its","you","your"].includes(e)){const s=Zi(e,n),a=await this.extractValue(t,r,n);return{type:"property",element:s,property:i.name,value:a}}}const a=e.object,o=e.computed;if(a){const s=a;let l;if("memberExpression"===s.type&&!s.computed&&"style"===s.property?.name&&s.object){const e=await r.evaluate(s.object,n);l=(e&&"object"==typeof e&&"style"in e?e.style:void 0)??await r.evaluate(a,n)}else l=await r.evaluate(a,n);if(null!=l&&"object"==typeof l){const s=o?await r.evaluate(e.property,n)+"":i?.name||"";if(s)return{type:"member-assignment",container:l,property:s,value:await this.extractValue(t,r,n)}}}return null}async extractValue(e,t,r){if(e.modifiers.to)return t.evaluate(e.modifiers.to,r);const n=e.args.findIndex(e=>"identifier"===e.type&&"to"===e.name);if(n>=0&&e.args.length>n+1)return t.evaluate(e.args[n+1],r);if(e.args.length>=2)return t.evaluate(e.args[1],r);throw Error('set command requires a value (use "to" keyword)')}async resolveElement(e,t,r){return Ui(e?await t.evaluate(e,r):void 0,r)}async resolveTargets(e,t,r){return Ki(e?await t.evaluate(e,r):void 0,r)}async parseTheXofY(e,t,r,n){const s=e.match(/^the\s+(.+?)\s+of\s+(.+)$/i);if(!s)throw Error('Invalid "the X of Y" syntax');const[,i,a]=s,o=Ui(a,n),l=await this.extractValue(t,r,n);return{type:"property",element:o,property:i.trim(),value:l}}validate(e){if(!e||"object"!=typeof e)return!1;const t=e;if(!t.type||"string"!=typeof t.type)return!1;if(!["variable","attribute","property","style","object-literal"].includes(t.type))return!1;switch(t.type){case"variable":return"string"==typeof t.name&&"value"in t;case"attribute":return"string"==typeof t.name&&Array.isArray(t.elements)&&t.elements.every(ur)&&"value"in t;case"property":return"string"==typeof t.property&&ur(t.element)&&"value"in t;case"style":return"string"==typeof t.property&&""!==t.property&&ur(t.element)&&"string"==typeof t.value;case"object-literal":return null!==t.properties&&"object"==typeof t.properties&&Array.isArray(t.targets)&&t.targets.length>0;default:return!1}}},Li(t,"SetCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})()),fo=Hi((()=>{let e,t,r=[Fi({description:"Evaluate an expression and store the result in it",syntax:"get <expression>",examples:["get #my-dialog","get <button/>","get me.parentElement"],sideEffects:["context-mutation"]}),Bi({name:"get",category:"data"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args||0===e.args.length)throw Error("get command requires an expression argument");const n=e.args[0],s=await t.evaluate(n,r);return s instanceof NodeList&&1===s.length||Array.isArray(s)&&1===s.length?{value:s[0]}:{value:s}}execute(e,t){return t.it=e.value,Object.assign(t,{result:e.value}),{value:e.value}}validate(e){return"object"==typeof e&&null!==e&&"value"in e}},Li(t,"GetCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})());function yo(e){return e&&"object"==typeof e&&e.type||"unknown"}let go=(()=>{let e,t,r=[Fi({description:"Modify a variable or property by a specified amount (default: 1)",syntax:["increment <target> [by <number>]","decrement <target> [by <number>]"],examples:["increment counter","increment counter by 5","decrement counter","decrement counter by 5"],sideEffects:["data-mutation","context-modification"],aliases:["decrement"]}),Bi({name:"increment",category:"data"})],n=[];return t=class{async parseInput(e,t,r){const n="decrement"===e.commandName?.toLowerCase()?"decrement":"increment",s=await async function(e,t,r,n){if(!e.args||0===e.args.length)throw Error(n+" command requires a target");const s=e.args[0];let i,a,o;const l=yo(s);if("identifier"===l)i=s.name,s.scope&&(a=s.scope);else if("literal"===l)i=s.value;else{const e=Re(l);if(e){const n=await t.evaluate(s,r),a="number"==typeof n?n:null==n?0:Number(n)||0;i=a,o={node:s,writer:e,currentValue:a}}else{const e=await t.evaluate(s,r);i=Array.isArray(e)&&e.length>0?e[0]:e}}let c=1,u=a;for(let n=1;e.args.length>n;n++){const s=e.args[n];if(s&&"literal"===s.type){const e=s.value;"global"===e?u="global":"number"==typeof e&&(c=e)}else if(s&&"literal"!==s.type){const e=await t.evaluate(s,r);"number"==typeof e&&(c=e)}}const d=e.modifiers?.by;if(d){const e=d.value;if("literal"===yo(d)&&"number"==typeof e)c=e;else if("literal"!==yo(d)){const e=await t.evaluate(d,r);"number"==typeof e&&(c=e)}}return{target:i,amount:c,...u&&{scope:u},...o&&{customWrite:o}}}(e,t,r,n);return{...s,operation:n}}async execute(e,t){const{target:r,property:n,scope:s,amount:i=1,operation:a="increment",customWrite:o}=e;if(o){const e=isFinite(i)?i:1,r="increment"===a?o.currentValue+e:o.currentValue-e;return await o.writer(o.node,r,t),Object.assign(t,{it:r}),r}const l=function(e,t,r,n){if("number"==typeof e)return e;if(ur(e)){const r=e;return t?t.startsWith("data-")||["id","class","title","alt","src","href"].includes(t)?mr(r.getAttribute(t)):mr(r[t]):mr(r.value||r.textContent)}return"string"==typeof e?"element"===r?mr(pr(e,n,"element")):"global"===r?mr(pr(e,n,"global")):e.includes(".")?function(e,t){const r=e.split("."),n=r[1],s=fr(r[0],t);return s?mr(s[n]):0}(e,n):mr("me"===e&&n.me?n.me.value||0:"it"===e?n.it||0:"you"===e&&n.you?n.you.value||0:pr(e,n)):mr(e)}(r,n,s,t);let c;if(isNaN(l))c=NaN;else{const e=isFinite(i)?i:1;c="increment"===a?l+e:l-e}return function(e,t,r,n,s){if(ur(e)){const r=e;return void(t?t.startsWith("data-")||["id","class","title","alt","src","href"].includes(t)?r.setAttribute(t,n+""):r[t]=n:"value"in r&&void 0!==r.value?r.value=n+"":r.textContent=n+"")}if("string"==typeof e){if("element"===r)return void hr(e,n,s,"element");if("global"===r)return void hr(e,n,s,"global");if(e.includes("."))return void function(e,t,r){const n=e.split("."),s=n[1],i=fr(n[0],r);i&&(i[s]=t)}(e,n,s);if("me"===e&&s.me)return void(s.me.value=n);if("it"===e)return void Object.assign(s,{it:n});if("you"===e&&s.you)return void(s.you.value=n);hr(e,n,s)}}(r,n,s,c,t),Object.assign(t,{it:c}),c}},Li(t,"NumericModifyCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})();const vo=Hi(go),bo=Hi(go),wo=Hi((()=>{let e,t,r=[Fi({description:"Set a value only if it doesn't already exist",syntax:["default <expression> to <expression>"],examples:['default myVar to "fallback"','default @data-theme to "light"','default my innerHTML to "No content"'],sideEffects:["data-mutation","dom-mutation"]}),Bi({name:"default",category:"data"})],n=[];return t=class{async parseInput(e,t,r){if(1>e.args.length)throw Error("default command requires a target");const n=await t.evaluate(e.args[0],r);let s;if(e.modifiers?.to)s=await t.evaluate(e.modifiers.to,r);else{if(2>e.args.length)throw Error('default command requires a value (use "to <value>")');s=await t.evaluate(e.args[1],r)}return{target:n,value:s}}async execute(e,t){const{target:r,value:n}=e;if("string"==typeof r){if(r.startsWith("@"))return this.defaultAttribute(t,r.substring(1),n);const e=r.match(/^(my|its?|your?)\s+(.+)$/);if(e){const[,r,s]=e;return this.defaultElementProperty(t,r,s,n)}return this.defaultVariable(t,r,n)}if(ur(r))return this.defaultElementValue(t,r,n);throw Error("Invalid target type: "+typeof r)}defaultVariable(e,t,r){const n=pr(t,e);return null!=n?{target:t,value:r,wasSet:!1,existingValue:n,targetType:"variable"}:(hr(t,r,e),Object.assign(e,{it:r}),{target:t,value:r,wasSet:!0,targetType:"variable"})}defaultAttribute(e,t,r){if(!e.me)throw Error("No element context available for attribute default");const n=e.me.getAttribute(t);return null!==n?{target:"@"+t,value:r,wasSet:!1,existingValue:n,targetType:"attribute"}:(e.me.setAttribute(t,r+""),Object.assign(e,{it:r}),{target:"@"+t,value:r,wasSet:!0,targetType:"attribute"})}defaultElementProperty(e,t,r,n){const s=Zi(t,e,"default"),i=function(e,t){if(t.startsWith("@"))return e.getAttribute(t.substring(1));switch(t){case"textContent":return e.textContent;case"innerHTML":return e.innerHTML;case"innerText":return e.innerText;case"id":return e.id;case"className":return e.className;case"value":return"value"in e?e.value:void 0;case"checked":return"checked"in e?e.checked:void 0}if(t.includes(".")){const r=t.split(".");let n=e;for(const e of r){if(null==n)break;n=n[e]}return n}return t.includes("-")||t in e.style?e.style.getPropertyValue(t)||e.style[t]:e[t]}(s,r),a=`${t} ${r}`;return Ea(i)?(ka(s,r,n),Object.assign(e,{it:n}),{target:a,value:n,wasSet:!0,targetType:"property"}):{target:a,value:n,wasSet:!1,existingValue:i,targetType:"property"}}defaultElementValue(e,t,r){const n=function(e){return"value"in e?e.value:e.textContent}(t);return Ea(n)?(function(e,t){"value"in e?e.value=t+"":e.textContent=t+""}(t,r),Object.assign(e,{it:r}),{target:"element",value:r,wasSet:!0,targetType:"element"}):{target:"element",value:r,wasSet:!1,existingValue:n,targetType:"element"}}},Li(t,"DefaultCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})());function ko(e){const t=e.tagName;return"INPUT"===t||"TEXTAREA"===t||"SELECT"===t}const Eo=Hi((()=>{let e,t,r=[Fi({description:"Reset a variable to null or clear the value of a form field (<input>, <textarea>, <select>)",syntax:["clear <var>","clear :var","clear <target>"],examples:["clear :count","clear myVar","clear #search","clear <textarea/>"],sideEffects:["state-mutation","dom-mutation"]}),Bi({name:"clear",category:"data"})],n=[];return t=class{async parseInput(e,t,r){const n=e.args?.[0],s=n?.type,i=n?.name;if(n&&("variable"===s||"identifier"===s&&"string"==typeof i))try{const e=await t.evaluate(n,r);if(!ur(e)&&!Array.isArray(e))return{type:"variable",name:i}}catch{return{type:"variable",name:i}}return{type:"form-fields",targets:await Yi(e.args,t,r,"clear",{filterPrepositions:!0,fallbackModifierKey:"on"},e.modifiers)}}async execute(e,t){if("variable"===e.type)return t.locals.set(e.name,null),void Object.assign(t,{it:null});for(const t of e.targets)ko(t)&&("SELECT"===t.tagName?t.selectedIndex=-1:t.value="")}validate(e){if("object"!=typeof e||null===e)return!1;if("variable"===e.type)return"string"==typeof e.name;if("form-fields"===e.type){const t=e.targets;return Array.isArray(t)&&t.every(e=>ur(e))}return!1}},Li(t,"ClearCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})());function xo(e,t,r,n){return e?new Promise(r=>{const s=()=>{i({event:null,timedOut:!1,cancelled:!0})},i=So(()=>{e.removeEventListener(t,a),n&&n.removeEventListener("abort",s)},r),a=e=>{i({event:e,timedOut:!1,cancelled:!1})};n?.aborted?r({event:null,timedOut:!1,cancelled:!0}):(e.addEventListener(t,a),n&&n.addEventListener("abort",s))}):Promise.reject(Error("waitForEvent: no target provided"))}function Co(e){return new Promise(t=>setTimeout(t,e))}function So(e,t){let r=!1;return n=>{r||(r=!0,e(),t(n))}}const Ao=Hi((()=>{let e,t,r=[Fi({description:"Wait for time delay, event, or race condition",syntax:["wait <time>","wait for <event>","wait for <event> or <condition>"],examples:["wait 2s","wait for click","wait for click or 1s","wait for mousemove(clientX, clientY)"],sideEffects:["time","event-listening"]}),Bi({name:"wait",category:"async"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("wait command requires an argument");if(e.modifiers.or)return this.parseRaceCondition(e,t,r);if(e.modifiers.for)return this.parseEventWait(e.modifiers.for,e.modifiers.from,t,r);const n=e.args[0];return"arrayLiteral"===n.type&&n.elements?this.parseEventArrayWait(n.elements,e.args[1],t,r):this.parseTimeWait(e.args[0],t,r)}async execute(e,t){const r=Date.now();if("time"===e.type)return await Co(e.milliseconds),{type:"time",result:e.milliseconds,duration:Date.now()-r};if("event"===e.type){const n=e.target??t.me??document,s=(await xo(n,e.eventName)).event;if(Object.assign(t,{it:s}),e.destructure)for(const r of e.destructure)r in s&&t.locals.set(r,s[r]);return{type:"event",result:s,duration:Date.now()-r}}const{result:n,winningCondition:s}=await this.executeRace(e.conditions,t);if(Object.assign(t,{it:n}),n instanceof Event&&"event"===s?.type&&s.destructure)for(const e of s.destructure)e in n&&t.locals.set(e,n[e]);return{type:n instanceof Event?"event":"time",result:n,duration:Date.now()-r}}async parseTimeWait(e,t,r){return{type:"time",milliseconds:ma(await t.evaluate(e,r))}}async parseEventWait(e,t,r,n){const s=await r.evaluate(e,n);if("string"!=typeof s)throw Error("wait for: event name must be a string");const i=s.match(/^(\w+)\(([^)]+)\)$/),a=i?i[1]:s,o=i?i[2].split(",").map(e=>e.trim()):void 0;let l;if(t){const e=await r.evaluate(t,n);if(!e||"object"!=typeof e||!("addEventListener"in e))throw Error("wait for from: target must be an EventTarget");l=e}else l=n.me??void 0;return{type:"event",eventName:a,target:l,destructure:o}}async parseEventArrayWait(e,t,r,n){const s=[];for(const t of e){const e=t;if("objectLiteral"===e.type&&e.properties){let t="",r=[];for(const n of e.properties){const e=n.key?.name||n.key?.value;"name"===e&&n.value?t=n.value.value||"":"args"===e&&n.value?.elements&&(r=n.value.elements.map(e=>e.value||e.name||""))}t&&s.push({name:t,params:r})}}let i;if(t){const e=await r.evaluate(t,n);e&&"object"==typeof e&&"addEventListener"in e&&(i=e)}return i||(i=n.me??void 0),1===s.length?{type:"event",eventName:s[0].name,target:i,destructure:s[0].params.length>0?s[0].params:void 0}:{type:"race",conditions:s.map(e=>({type:"event",eventName:e.name,target:i,destructure:e.params.length>0?e.params:void 0}))}}async parseRaceCondition(e,t,r){const n=[];e.modifiers.for?n.push(await this.parseEventWait(e.modifiers.for,e.modifiers.from,t,r)):e.args[0]&&n.push(await this.parseTimeWait(e.args[0],t,r));const s=await t.evaluate(e.modifiers.or,r),i=Array.isArray(s)?s:[s];for(const e of i)try{n.push({type:"time",milliseconds:ma(e)})}catch{if("string"==typeof e){const t=e.match(/^(\w+)\(([^)]+)\)$/);n.push(t?{type:"event",eventName:t[1],target:r.me??void 0,destructure:t[2].split(",").map(e=>e.trim())}:{type:"event",eventName:e,target:r.me??void 0})}}if(2>n.length)throw Error("wait: race requires at least 2 conditions");return{type:"race",conditions:n}}async executeRace(e,t){const r=new AbortController,n=r.signal,s=e.map(e=>"time"===e.type?Co(e.milliseconds).then(()=>({result:e.milliseconds,winningCondition:e})):xo(e.target??t.me??document,e.eventName,0,n).then(t=>({result:t.event,winningCondition:e})));try{return await Promise.race(s)}finally{r.abort()}}},Li(t,"WaitCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})()),To=new Map;let Oo=[/^4\d{2}$/,/^5\d{2}$/],Lo=(()=>{let e,t,r=[Fi({description:"Make HTTP requests with lifecycle event support",syntax:["fetch <url>","fetch <url> as <type>","fetch <url> with <options>"],examples:['fetch "/api/data"','fetch "/api/users" as json','fetch "/api/save" with { method:"POST" }'],sideEffects:["network","event-dispatching"]}),Bi({name:"fetch",category:"async"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("fetch requires a URL");const n=await this.parseURL(e.args[0],t,r),s=this.parseResponseType(e.modifiers.as);return{url:n,responseType:s,options:await this.parseRequestOptions(e.modifiers.with,t,r),throwOnError:!e.modifiers.doNotThrow&&"response"!==s}}async execute(e,t){const r=Date.now(),{url:n,responseType:s,options:i}=e,a=new AbortController;let o;t.me&&(o=()=>a.abort(),t.me.addEventListener("fetch:abort",o,{once:!0}));const l={...i,signal:a.signal},c=To.get(s);if(c?.accept){const e=new Headers(l.headers);e.has("Accept")||e.set("Accept",c.accept),l.headers=e}if(t.me){const e={...l,sender:t.me,headers:l.headers||{}};this.dispatchEvent(t.me,"fetch:beforeRequest",e),l.headers=e.headers}let u;i.timeout&&(u=setTimeout(()=>a.abort(),i.timeout));try{let i=await fetch(n,l);if(t.me){const e={response:i};this.dispatchEvent(t.me,"fetch:afterResponse",e),i=e.response}if(e.throwOnError&&function(e){const t=e+"";return Oo.some(e=>e.test(t))}(i.status)){const e=Error(`Fetch failed for ${n}: HTTP ${i.status} ${i.statusText}`.trim());throw e.response=i,e.isFetchStatusError=!0,e}const a=await this.handleResponse(i,s,t);t.me&&this.dispatchEvent(t.me,"fetch:afterRequest",{result:a});const o={status:i.status,statusText:i.statusText,headers:i.headers,data:a,url:i.url,duration:Date.now()-r};return Object.assign(t,{it:a}),o}catch(e){if(t.me&&this.dispatchEvent(t.me,"fetch:error",{reason:e instanceof Error?e.message:e+"",error:e}),e instanceof Error&&"AbortError"===e.name)throw Error("Fetch aborted for "+n);if(e instanceof Error&&!0===e.isFetchStatusError)throw e;throw Error(`Fetch failed for ${n}: ${e instanceof Error?e.message:e+""}`)}finally{u&&clearTimeout(u),t.me&&o&&t.me.removeEventListener("fetch:abort",o)}}async parseURL(e,t,r){const n=await t.evaluate(e,r);if("string"!=typeof n||!n){const t=e;if(null==n&&"identifier"===t?.type&&t.name)throw Error(`fetch: URL expression "${t.name}" evaluated to ${n+""} \u2014 check the variable is set, or quote it if you meant a literal URL (fetch 'https://example.com/path')`);throw Error("fetch: URL must be a non-empty string")}return n}parseResponseType(e){if(!e)return"text";if(("identifier"===e.type||"expression"===e.type)&&e.name){const t=e.name.toLowerCase();if("object"===t)return"json";if(["text","json","html","response","blob","arraybuffer"].includes(t))return"arraybuffer"===t?"arrayBuffer":t;if(To.has(t))return t;throw Error(`fetch: invalid response type "${t}"`)}return"text"}async parseRequestOptions(e,t,r){if(!e)return{};const n=await t.evaluate(e,r);if("object"!=typeof n||null===n)throw Error('fetch: "with" options must be an object');const s={};return"method"in n&&(s.method=(n.method+"").toUpperCase()),"headers"in n&&(s.headers=this.parseHeaders(n.headers)),"body"in n&&(s.body=this.parseBody(n.body)),"credentials"in n&&(s.credentials=n.credentials),"mode"in n&&(s.mode=n.mode),"cache"in n&&(s.cache=n.cache),s}parseHeaders(e){if(e instanceof Headers)return e;const t=new Headers;if("object"==typeof e&&null!==e)for(const[r,n]of Object.entries(e))t.set(r,n+"");return t}parseBody(e){return null==e?null:e instanceof FormData||e instanceof Blob||e instanceof ArrayBuffer||e instanceof URLSearchParams||"string"==typeof e?e:"object"==typeof e?JSON.stringify(e):e+""}async handleResponse(e,t,r){switch(t){case"response":return e;case"json":return e.json();case"html":return this.parseHTML(await e.text());case"blob":return e.blob();case"arrayBuffer":return e.arrayBuffer();case"text":return e.text();default:{const n=To.get(t);return n?n.handler(e,r):e.text()}}}parseHTML(e){const t=(new DOMParser).parseFromString(e,"text/html"),r=document.createDocumentFragment();return Array.from(t.body.childNodes).forEach(e=>r.appendChild(e.cloneNode(!0))),1===r.childNodes.length&&ur(r.firstChild)?r.firstChild:r}dispatchEvent(e,t,r){e.dispatchEvent(new CustomEvent(t,{detail:r,bubbles:!0,cancelable:!0}))}},Li(t,"FetchCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})();const Po=Hi(Lo);function jo(e){const t=e.trim();return/^\d+$/.test(t)?parseInt(t,10):/^\d*\.\d+$/.test(t)?parseFloat(t):"true"===t||"false"!==t&&("null"===t?null:"undefined"!==t?t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'")?t.slice(1,-1):t:void 0)}let No=(()=>{let e,t,r=[Fi({description:"Dispatch events on elements",syntax:["trigger <event> on <target>","trigger <event>(<detail>) on <target>","send <event> to <target>","send <event>(<detail>) to <target>"],examples:["trigger click on #button","trigger customEvent on me","send dataEvent to #target","send myEvent(count: 42) to me"],sideEffects:["event-dispatch"],aliases:["send"]}),Bi({name:"trigger",category:"event"})],n=[];return t=class{async parseInput(e,t,r){const n="send"===e.commandName?.toLowerCase()?"send":"trigger",s=n;if(!e.args?.length)throw Error(s+" command requires an event name");const i=e=>e?.type||"unknown",a=e.args[0];let o,l,c;if("functionCall"===i(a)||"callExpression"===i(a)){o=a.name||a.callee?.name;const e=a.args||a.arguments;e?.length&&(l=await this.parseEventDetail(e,t,r))}else if("identifier"===i(a)||"keyword"===i(a))o=a.name;else{const e=await t.evaluate(a,r);o="string"==typeof e?e:e+""}const u=e.modifiers?.on||e.modifiers?.to;if(u)c=await this.resolveTargets([u],t,r,s);else{const n=e.args.findIndex((e,t)=>{if(0===t)return!1;const r=e.name||e.value;return"on"===r||"to"===r});if(-1!==n&&e.args.length-1>n){const i=e.args.slice(n+1),a=i.findIndex(e=>"with"===(e.name||e.value)),o=-1===a?i:i.slice(0,a);c=await this.resolveTargets(o,t,r,s)}else{if(!r.me)throw Error(s+": no target specified and context.me is null");c=[r.me]}}return{eventName:o,detail:l,targets:c,options:await this.parseEventOptions(e.args,t,r),mode:n}}async execute(e,t){const r=function(e,t,r={}){return new CustomEvent(e,{detail:void 0!==t?t:{},bubbles:void 0===r.bubbles||r.bubbles,cancelable:void 0===r.cancelable||r.cancelable,composed:void 0!==r.composed&&r.composed})}(e.eventName,e.detail,e.options);for(const t of e.targets)t.dispatchEvent(r);t.it=r}async resolveTargets(e,t,r,n){const s=[];for(const n of e){const e=await t.evaluate(n,r);if("window"!==e&&e!==window)if("document"!==e&&e!==document)if("me"===e&&r.me)s.push(r.me);else if("you"===e&&r.you)s.push(r.you);else if("it"===e&&r.it)s.push(r.it);else if(ur(e))s.push(e);else if(e instanceof NodeList)s.push(...Array.from(e).filter(ur));else if(Array.isArray(e))s.push(...e.filter(ur));else{if("string"==typeof e){const t=document.querySelectorAll(e);if(0===t.length)throw Error(`No elements found: "${e}"`);s.push(...Array.from(t).filter(ur));continue}if(!e||"object"!=typeof e||!("addEventListener"in e))throw Error("Invalid target: "+typeof e);s.push(e)}else s.push(document);else s.push(window)}if(!s.length)throw Error(n+": no valid targets");return s}async parseEventDetail(e,t,r){if(!e?.length)return;if(1===e.length){const n=e[0];if("objectLiteral"!==n?.type)return await t.evaluate(n,r)}const n={};for(const s of e){const e=await t.evaluate(s,r);if("object"!=typeof e||null===e||Array.isArray(e)){if("string"==typeof e&&e.includes(":")){const[t,r]=e.split(":",2);n[t.trim()]=jo(r.trim())}}else Object.assign(n,e)}return Object.keys(n).length?n:void 0}async parseEventOptions(e,t,r){const n={bubbles:!0,cancelable:!0,composed:!1},s=e.findIndex(e=>"with"===(e.name||e.value));if(-1===s)return n;for(const i of e.slice(s+1)){const e=await t.evaluate(i,r);if("string"==typeof e){const t=e.toLowerCase();"bubbles"===t?n.bubbles=!0:"nobubbles"===t?n.bubbles=!1:"cancelable"===t?n.cancelable=!0:"nocancelable"===t?n.cancelable=!1:"composed"===t&&(n.composed=!0)}}return n}},Li(t,"EventDispatchCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})();const Io=Hi(No),Ro=Hi(No),qo=Hi((()=>{let e,t,r=[Fi({description:"Animate CSS properties using CSS transitions",syntax:"transition <property> to <value> [over <duration>] [with <timing>]",examples:["transition opacity to 0.5","transition left to 100px over 500ms","transition background-color to red over 1s with ease-in-out"],sideEffects:["style-change","timing"]}),Bi({name:"transition",category:"animation"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("transition requires property and value");let n,s;const i=await t.evaluate(e.args[0],r);if(ur(i)||"string"==typeof i&&/^[#.]|^(?:me|it|you)$/.test(i)?(s=i,n=await t.evaluate(e.args[1],r)+""):n=i+"",!n)throw Error("transition requires a CSS property");if(!e.modifiers?.to)throw Error('transition requires "to <value>"');let a=await t.evaluate(e.modifiers.to,r);void 0===a&&"identifier"===e.modifiers.to.type&&(a=e.modifiers.to.name);const o={property:n,value:a};return void 0!==s&&(o.target=s),e.modifiers?.over&&(o.duration=await t.evaluate(e.modifiers.over,r)),e.modifiers?.with&&(o.timingFunction=await t.evaluate(e.modifiers.with,r)+""),o}async execute(e,t){let{property:r}=e;const{target:n,value:s,duration:i,timingFunction:a}=e;r.startsWith("*")&&(r=r.substring(1)),r=r.replace(/([A-Z])/g,"-$1").toLowerCase();const o=Ui(n,t,"transition"),l=da(i,300),c=getComputedStyle(o).getPropertyValue(r),u=o.style.transition,d=`${r} ${l}ms ${a||"ease"}`;o.style.transition=u?`${u}, ${d}`:d;let m=s+"",p=!1;if("initial"===m||"inherit"===m||"unset"===m||"revert"===m){const e=o.style.getPropertyValue(r);o.style.removeProperty(r),m=getComputedStyle(o).getPropertyValue(r),e&&o.style.setProperty(r,e),p=!0}o.style.setProperty(r,m);const h=await function(e,t,r){return new Promise(n=>{const s=r=>{r.target===e&&r.propertyName===t&&a({completed:!0,cancelled:!1})},i=r=>{r.target===e&&r.propertyName===t&&a({completed:!1,cancelled:!0})},a=So(()=>{e.removeEventListener("transitionend",s),e.removeEventListener("transitioncancel",i),clearTimeout(o)},n);e.addEventListener("transitionend",s),e.addEventListener("transitioncancel",i);const o=setTimeout(()=>{a({completed:!0,cancelled:!1})},r+50)})}(o,r,l);return o.style.transition=u,p&&o.style.removeProperty(r),Object.assign(t,{it:o}),{element:o,property:r,fromValue:c,toValue:m,duration:l,completed:h.completed}}},Li(t,"TransitionCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})()),Mo=Hi((()=>{let e,t,r=[Fi({description:"Measure DOM element dimensions, positions, and properties",syntax:["measure","measure <property>","measure <target> <property>"],examples:["measure","measure width","measure #element height","measure x and set dragX"],sideEffects:["data-mutation"]}),Bi({name:"measure",category:"animation"})],n=[];return t=class{async parseInput(e,t,r){let n,s,i;if(e.args?.length){const i=e.args[0];if("identifier"===i.type&&i.name){const a=i.name.toLowerCase();if("me"===a||"it"===a||"you"===a){const a=await t.evaluate(i,r);if(ur(a)&&(n=a,e.args.length>1)){const n=e.args[1];s="identifier"===n.type?n.name:await t.evaluate(n,r)+""}}else s=i.name}else{const a=await t.evaluate(i,r);if(ur(a)||"string"==typeof a&&/^[#.]/.test(a)){if(n=a,e.args.length>1){const n=e.args[1];s="identifier"===n.type?n.name:await t.evaluate(n,r)+""}}else"string"==typeof a&&(s=a)}}e.modifiers?.set&&(i=await t.evaluate(e.modifiers.set,r)+"");const a={};return void 0!==n&&(a.target=n),void 0!==s&&(a.property=s),void 0!==i&&(a.variable=i),a}async execute(e,t){const r=Ui(e.target,t,"measure"),n=e.property||"width",s=this.getMeasurement(r,n);return e.variable&&t.locals&&t.locals.set(e.variable,s.value),Object.assign(t,{it:s.value}),{result:s.value,wasAsync:!1,element:r,property:n,value:s.value,unit:s.unit,stored:!!e.variable}}getMeasurement(e,t){const r=getComputedStyle(e);if(t.startsWith("*")){const e=r.getPropertyValue(t.substring(1)),n=parseFloat(e);if(!isNaN(n)){const t=e.match(/([a-zA-Z%]+)$/);return{value:n,unit:t?t[1]:""}}return{value:e,unit:""}}const n=t.toLowerCase(),s=e.getBoundingClientRect(),i={width:()=>s.width,height:()=>s.height,top:()=>s.top,left:()=>s.left,right:()=>s.right,bottom:()=>s.bottom,x:()=>e.offsetLeft,y:()=>e.offsetTop,clientwidth:()=>e.clientWidth,"client-width":()=>e.clientWidth,clientheight:()=>e.clientHeight,"client-height":()=>e.clientHeight,offsetwidth:()=>e.offsetWidth,"offset-width":()=>e.offsetWidth,offsetheight:()=>e.offsetHeight,"offset-height":()=>e.offsetHeight,scrollwidth:()=>e.scrollWidth,"scroll-width":()=>e.scrollWidth,scrollheight:()=>e.scrollHeight,"scroll-height":()=>e.scrollHeight,scrolltop:()=>e.scrollTop,"scroll-top":()=>e.scrollTop,scrollleft:()=>e.scrollLeft,"scroll-left":()=>e.scrollLeft,offsettop:()=>e.offsetTop,"offset-top":()=>e.offsetTop,offsetleft:()=>e.offsetLeft,"offset-left":()=>e.offsetLeft};if(i[n])return{value:i[n](),unit:"px"};const a=r.getPropertyValue(t),o=parseFloat(a);if(!isNaN(o)){const e=a.match(/([a-zA-Z%]+)$/);return{value:o,unit:e?e[1]:"px"}}return{value:0,unit:"px"}}},Li(t,"MeasureCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})()),_o=Hi((()=>{let e,t,r=[Fi({description:"Wait for CSS transitions and animations to complete",syntax:"settle [<target>] [for <timeout>]",examples:["settle","settle #animated-element","settle for 3000"],sideEffects:["timing"]}),Bi({name:"settle",category:"animation"})],n=[];return t=class{async parseInput(e,t,r){let n,s;if(e.args&&e.args.length>0){const s=await t.evaluate(e.args[0],r);(ur(s)||"string"==typeof s&&(s.startsWith("#")||s.startsWith(".")||"me"===s||"it"===s||"you"===s))&&(n=s)}e.modifiers?.for&&(s=await t.evaluate(e.modifiers.for,r));const i={};return void 0!==n&&(i.target=n),void 0!==s&&(i.timeout=s),i}async execute(e,t){const{target:r,timeout:n}=e,s=Ui(r,t,"settle"),i=da(n,5e3),a=Date.now(),o=getComputedStyle(s),l=pa(o.transitionDuration),c=pa(o.transitionDelay),u=pa(o.animationDuration),d=pa(o.animationDelay),m=ha(l,c),p=ha(u,d),h=Math.max(m,p),f=await(y=s,g=h,v=i,g>0?new Promise(e=>{const t=e=>{e.target===y&&n({completed:!0,type:"transition"})},r=e=>{e.target===y&&n({completed:!0,type:"animation"})},n=So(()=>{y.removeEventListener("transitionend",t),y.removeEventListener("animationend",r),clearTimeout(s),clearTimeout(i)},e);y.addEventListener("transitionend",t),y.addEventListener("animationend",r);const s=setTimeout(()=>{n({completed:!0,type:"timeout"})},g+50),i=setTimeout(()=>{n({completed:!1,type:"timeout"})},v)}):Promise.resolve({completed:!0,type:"timeout"}));var y,g,v;const b=Date.now()-a;return Object.assign(t,{it:s}),{element:s,settled:f.completed,timeout:i,duration:b}}},Li(t,"SettleCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})());const $o=Hi((()=>{let e,t,r=[Fi({description:"Move classes, attributes, and properties from one element to another",syntax:["take <property> from <source>","take <property> from <source> and put it on <target>"],examples:["take class from <#source/>","take @data-value from <.source/> and put it on <#target/>"],sideEffects:["dom-mutation","property-transfer"]}),Bi({name:"take",category:"animation"})],n=[];return t=class{async parseInput(e,t,r){if(3>e.args.length)throw Error('take requires property, "from", and source');const n=await t.evaluate(e.args[0],r)+"";if("from"!==await t.evaluate(e.args[1],r))throw Error("take syntax: take <property> from <source>");const s=await t.evaluate(e.args[2],r);let i;if(8>e.args.length)e.args.length>3&&(i=await t.evaluate(e.args[3],r));else{const n=await Promise.all([3,4,5,6].map(n=>t.evaluate(e.args[n],r)));"and"===n[0]&&"put"===n[1]&&"it"===n[2]&&"on"===n[3]&&e.args[7]&&(i=await t.evaluate(e.args[7],r))}return!i&&e.modifiers?.on&&(i=await t.evaluate(e.modifiers.on,r)),{property:n,source:s,target:i}}async execute(e,t){const r=Ui(e.source,t,"take"),n=Ui(e.target?e.target:void 0,t,"take"),s=this.takeProperty(r,e.property);return this.putProperty(n,e.property,s),{targetElement:n,property:e.property,value:s}}takeProperty(e,t){const r=t.trim(),n=r.toLowerCase();if("class"===n||"classes"===n){const t=Array.from(e.classList);return e.className="",t}if(r.startsWith(".")){const t=r.substring(1);return e.classList.contains(t)?(e.classList.remove(t),t):null}if(r.startsWith("@")){const t=r.substring(1),n=e.getAttribute(t);return e.removeAttribute(t),n}if(r.startsWith("data-")){const t=e.getAttribute(r);return e.removeAttribute(r),t}if("id"===n){const t=e.id;return e.id="",t}if("title"===n){const t=e.title;return e.title="",t}if("value"===n&&"value"in e){const t=e.value;return e.value="",t}const s=r.replace(/-([a-z])/g,(e,t)=>t.toUpperCase());if(r.includes("-")||s in e.style||r in e.style){let t;return s in e.style?(t=e.style[s],e.style[s]=""):r in e.style?(t=e.style[r],e.style[r]=""):(t=e.style.getPropertyValue(r),e.style.removeProperty(r)),t}const i=e.getAttribute(t);return null!==i?(e.removeAttribute(t),i):null}putProperty(e,t,r){if(null==r)return;const n=t.trim(),s=n.toLowerCase();if("class"===s||"classes"===s)return void(Array.isArray(r)?r.forEach(t=>t&&"string"==typeof t&&e.classList.add(t)):"string"==typeof r&&(e.className=r));if(n.startsWith("."))return void(r&&e.classList.add(n.substring(1)));if(n.startsWith("@"))return void e.setAttribute(n.substring(1),r+"");if(n.startsWith("data-"))return void e.setAttribute(n,r+"");if("id"===s)return void(e.id=r+"");if("title"===s)return void(e.title=r+"");if("value"===s&&"value"in e)return void(e.value=r+"");const i=n.replace(/-([a-z])/g,(e,t)=>t.toUpperCase());n.includes("-")||i in e.style||n in e.style?i in e.style?e.style[i]=r+"":n in e.style?e.style[n]=r+"":e.style.setProperty(n,r+""):e.setAttribute(t,r+"")}},Li(t,"TakeCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})()),Vo=Hi((()=>{let e,t,r=[Fi({description:"Log values to the console",syntax:"log [<values...>]",examples:['log "Hello World"',"log me.value","log x y z",'log "Result:" result'],sideEffects:["console-output"]}),Bi({name:"log",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){return e.args&&0!==e.args.length?{values:await Promise.all(e.args.map(e=>t.evaluate(e,r)))}:{values:[]}}async execute(e,t){const r="undefined"!=typeof window?window.console:console;0===e.values.length?r.log():r.log(...e.values)}validate(e){return"object"==typeof e&&null!==e&&Array.isArray(e.values)}},Li(t,"LogCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})()),Do=Hi((()=>{let e,t,r=[Fi({description:"Execute commands in the context of target elements",syntax:["tell <target> <command> [<command> ...]"],examples:["tell #sidebar hide","tell .buttons add .disabled","tell closest <form/> submit"],sideEffects:["context-switching","command-execution"]}),Bi({name:"tell",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){if(2>e.args.length)throw Error("tell command requires a target and at least one command");return{target:await t.evaluate(e.args[0],r),commands:e.args.slice(1)}}async execute(e,t){const{target:r,commands:n}=e,s=Ki(r,t);if(0===s.length)throw Error("tell command found no target elements");const i=t.locals.get("_runtimeExecute"),a=[];for(const e of s){const r={...t,me:e,you:e};for(const e of n)try{const t=await this.executeCommand(e,r,i);a.push(t),Object.assign(r,{it:t})}catch(e){throw Error("Command execution failed in tell block: "+(e instanceof Error?e.message:"Unknown error"))}}return{targetElements:s,commandResults:a,executionCount:s.length*n.length}}async executeCommand(e,t,r){if(e&&"object"==typeof e&&"command"===e.type&&r)return await r(e,t);if("function"==typeof e)return await e(t);if(e&&"object"==typeof e&&"function"==typeof e.execute)return await e.execute(t);throw Error("Invalid command: must be a function or object with execute method")}},Li(t,"TellCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})()),zo=Hi((()=>{let e,t,r=[Fi({description:"Evaluate an expression and store the result in the it variable",syntax:["call <expression>"],examples:["call myFunction()",'call fetch("/api/data")',"call element.focus()"],sideEffects:["function-execution","context-mutation"]}),Bi({name:"call",category:"execution"})],n=[];return t=class{parseInput(e,t,r){if(!e.args?.length)throw Error("call command requires an expression");return Promise.resolve({expression:e.args[0]})}async execute(e,t){const{expression:r}=e,n=t.locals?.get("__evaluator"),s=n?await n.evaluate(r,t):await vn(r,t);let i,a,o=!1;return"function"==typeof s?(a="function",i=s(),i instanceof Promise&&(o=!0,i=await i)):s instanceof Promise?(a="promise",o=!0,i=await s):(a="value",i=s),Object.assign(t,{it:i,result:i}),{result:i,wasAsync:o,expressionType:a}}},Li(t,"CallCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})()),Bo=Hi((()=>{let e,t,r=[Fi({description:"Focus an element (calls HTMLElement.focus())",syntax:["focus","focus <target>","focus on <target>"],examples:["focus","focus #search","focus on <input/>"],sideEffects:["focus"]}),Bi({name:"focus",category:"execution"})],n=[];return t=class{async parseInput(e,t,r){return{targets:await Yi(e.args,t,r,"focus",{filterPrepositions:!0,fallbackModifierKey:"on"},e.modifiers)}}async execute(e,t){for(const t of e.targets)t.focus()}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&t.targets.every(e=>ur(e))}},Li(t,"FocusCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})()),Fo=Hi((()=>{let e,t,r=[Fi({description:"Remove focus from an element (calls HTMLElement.blur())",syntax:["blur","blur <target>","blur on <target>"],examples:["blur","blur #search","blur on <input/>"],sideEffects:["focus"]}),Bi({name:"blur",category:"execution"})],n=[];return t=class{async parseInput(e,t,r){return{targets:await Yi(e.args,t,r,"blur",{filterPrepositions:!0,fallbackModifierKey:"on"},e.modifiers)}}async execute(e,t){for(const t of e.targets)t.blur()}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&t.targets.every(e=>ur(e))}},Li(t,"BlurCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})());let Ho=(()=>{let e,t,r=[Fi({description:"Copy text or element content to the clipboard",syntax:["copy <source>","copy <source> to clipboard"],examples:['copy "Hello World"',"copy #code-snippet","copy my textContent"],sideEffects:["clipboard-write","custom-events"]}),Bi({name:"copy",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){if(1>e.args.length)throw Error("copy command requires a source (text or element)");const n=await t.evaluate(e.args[0],r);let s="text";if(e.modifiers?.format){const n=await t.evaluate(e.modifiers.format,r);"html"!==n&&"text"!==n||(s=n)}return{source:n,format:s}}async execute(e,t){const{source:r,format:n="text"}=e,s=this.extractText(r,n,t);if("undefined"!=typeof navigator&&navigator.clipboard)try{return await navigator.clipboard.writeText(s),this.dispatchCopyEvent(t,"copy:success",{text:s,method:"clipboard-api"}),{success:!0,text:s,format:n,method:"clipboard-api"}}catch{}try{if(this.copyUsingExecCommand(s))return this.dispatchCopyEvent(t,"copy:success",{text:s,method:"execCommand"}),{success:!0,text:s,format:n,method:"execCommand"}}catch{}return this.dispatchCopyEvent(t,"copy:error",{text:s,error:"All copy methods failed"}),{success:!1,text:s,format:n,method:"fallback"}}extractText(e,t,r){if("string"==typeof e)return e;if(ur(e))return"html"===t?e.outerHTML:e.textContent||"";if(e===r.me&&ur(r.me)){const e=r.me;return"html"===t?e.outerHTML:e.textContent||""}return e+""}copyUsingExecCommand(e){if("undefined"==typeof document)return!1;const t=document.createElement("textarea");t.value=e,t.style.cssText="position:fixed;top:0;left:-9999px",t.setAttribute("readonly",""),document.body.appendChild(t);try{t.select(),t.setSelectionRange(0,e.length);const r=document.execCommand("copy");return document.body.removeChild(t),r}catch{return t.parentNode?.removeChild(t),!1}}dispatchCopyEvent(e,t,r){if(ur(e.me)){const n=new CustomEvent(t,{detail:r,bubbles:!0,cancelable:!1});e.me.dispatchEvent(n)}}},Li(t,"CopyCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})();const Wo=Hi(Ho);const Uo=Hi((()=>{let e,t,r=[Fi({description:"Select from a collection (first/last/random/range/regex match)",syntax:["pick first <count> of <expr>","pick last <count> of <expr>","pick random [<count>] of <expr>","pick items <i> to <j> of <expr>","pick match of <regex> from <expr>","pick from <array>","pick <item1>, <item2>, ..."],examples:["pick first 3 of items","pick last 2 of items","pick random 2 of items","pick items 1 to 3 of items",'pick match of "[0-9]+" from text',"pick from colors",'pick "red", "green", "blue"'],sideEffects:["random-selection"]}),Bi({name:"pick",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){const n=e.modifiers?.variant,s=n?.value;if("first"===s||"last"===s){const n=await t.evaluate(e.args[0],r),i=await t.evaluate(e.modifiers.count,r);if(!Array.isArray(n))throw Error(`pick ${s}: source must be an array, got ${typeof n}`);if("number"!=typeof i||!Number.isFinite(i))throw Error(`pick ${s}: count must be a number, got ${typeof i}`);return{variant:s,array:n,count:i}}if("random"===s){const n=await t.evaluate(e.args[0],r);if(!Array.isArray(n))throw Error("pick random: source must be an array");let s;if(e.modifiers.count){const n=await t.evaluate(e.modifiers.count,r);if("number"!=typeof n||!Number.isFinite(n))throw Error("pick random: count must be a number, got "+typeof n);s=n}return{variant:"random",array:n,count:s}}if("range"===s){const n=await t.evaluate(e.args[0],r);if(!Array.isArray(n)&&"string"!=typeof n)throw Error("pick items: source must be an array or string");const s=e.modifiers.rangeStart,i="start"===s?.value?"start":await t.evaluate(e.modifiers.rangeStart,r),a="start"===i?"start":Number(i);let o;if(e.modifiers.rangeEnd)if("end"===e.modifiers.rangeEnd.value)o="end";else{const n=await t.evaluate(e.modifiers.rangeEnd,r);o=Number(n)}const l=e.modifiers.rangeMode;return{variant:"range",array:n,rangeStart:a,rangeEnd:o,rangeMode:l?.value??"default"}}if("match"===s||"matches"===s){const n=await t.evaluate(e.args[0],r);if("string"!=typeof n)throw Error(`pick ${s}: source must be a string, got ${typeof n}`);const i=await t.evaluate(e.modifiers.regex,r),a="string"==typeof i?i:i+"",o=e.modifiers.flags,l=o?.value;return{variant:s,source:n,regex:a,flags:l}}if(e.modifiers?.from){const n=await t.evaluate(e.modifiers.from,r);if(!Array.isArray(n))throw Error("pick from requires an array");if(0===n.length)throw Error("Cannot pick from empty array");return{variant:"random",array:n}}if(0===e.args.length)throw Error("pick command requires items to choose from");return{variant:"random",items:await Promise.all(e.args.map(e=>t.evaluate(e,r)))}}async execute(e,t){const r=e.variant??"random";if("first"===r){const r=e.array??[],n=r.slice(0,e.count??0);return Object.assign(t,{it:n}),{selectedItem:n,sourceLength:r.length,sourceType:"array",variant:"first"}}if("last"===r){const r=e.array??[],n=e.count??0,s=n>0?r.slice(-n):[];return Object.assign(t,{it:s}),{selectedItem:s,sourceLength:r.length,sourceType:"array",variant:"last"}}if("range"===r){const r=e.array??[];let n="start"===e.rangeStart?0:e.rangeStart??0,s=void 0===e.rangeEnd?n+1:"end"===e.rangeEnd?r.length:e.rangeEnd;"inclusive"===e.rangeMode?s++:"exclusive"===e.rangeMode&&n++;const i=r.slice(n,s);return Object.assign(t,{it:i}),{selectedItem:i,sourceLength:r.length,sourceType:"array",variant:"range"}}if("match"===r){const r=e.source??"",n=RegExp(e.regex??"",e.flags).exec(r);return Object.assign(t,{it:n}),{selectedItem:n,sourceLength:r.length,sourceType:"string",variant:"match"}}if("matches"===r){const r=e.source??"",n=e.flags??"g",s=RegExp(e.regex??"",n.includes("g")?n:"g"+n),i=Array.from(r.matchAll(s));return Object.assign(t,{it:i}),{selectedItem:i,sourceLength:r.length,sourceType:"string",variant:"matches"}}const n=e.items??e.array??[];if(0===n.length)throw Error("Cannot pick from empty collection");if(void 0===e.count){const r=Math.floor(Math.random()*n.length),s=n[r];return Object.assign(t,{it:s}),{selectedItem:s,selectedIndex:r,sourceLength:n.length,sourceType:e.items?"items":"array",variant:"random"}}const s=n.slice(),i=[];for(let t=0;e.count>t&&s.length>0;t++){const e=Math.floor(Math.random()*s.length);i.push(s.splice(e,1)[0])}return Object.assign(t,{it:i}),{selectedItem:i,sourceLength:n.length,sourceType:e.items?"items":"array",variant:"random"}}},Li(t,"PickCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})());const Ko=Hi((()=>{let e,t,r=[Fi({description:"Debug output for expressions with type information",syntax:["beep!","beep! <expression>","beep! <expression>, <expression>, ..."],examples:["beep!","beep! myValue","beep! me.id, me.className"],sideEffects:["console-output","debugging"]}),Bi({name:"beep",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){return 0===e.args.length?{expressions:[]}:{expressions:await Promise.all(e.args.map(e=>t.evaluate(e,r)))}}async execute(e,t){const r=e.expressions||[];if(0===r.length)return this.debugContext(t),{expressionCount:0,debugged:!0,outputs:[]};const n=[];console.group("\ud83d\udd14 beep! Debug Output");for(const e of r){const t=this.debugExpression(e);n.push(t),console.log("Value:",e),console.log("Type:",t.type),console.log("Representation:",t.representation),console.log("---")}return console.groupEnd(),{expressionCount:r.length,debugged:!0,outputs:n}}debugContext(e){console.group("\ud83d\udd14 beep! Context Debug"),console.log("me:",e.me),console.log("it:",e.it),console.log("you:",e.you),console.log("locals:",e.locals),console.log("globals:",e.globals),console.log("variables:",e.variables),console.groupEnd()}debugExpression(e){return{value:e,type:this.getType(e),representation:this.getRepresentation(e)}}getType(e){return null===e?"null":void 0===e?"undefined":Array.isArray(e)?"array":ur(e)?"HTMLElement":e instanceof Element?"Element":e instanceof Node?"Node":e instanceof Error?"Error":e instanceof Date?"Date":e instanceof RegExp?"RegExp":typeof e}getRepresentation(e){if(null===e)return"null";if(void 0===e)return"undefined";if(Array.isArray(e))return`Array(${e.length}) [${e.slice(0,3).map(e=>this.getRepresentation(e)).join(", ")}${e.length>3?"...":""}]`;if(ur(e)){const t=e;return`<${t.tagName.toLowerCase()}${t.id?"#"+t.id:""}${t.className?"."+t.className.split(" ").join("."):""}/>`}if(e instanceof Error)return"Error: "+e.message;if("string"==typeof e)return e.length>50?`"${e.substring(0,47)}..."`:`"${e}"`;if("object"==typeof e)try{const t=Object.keys(e);return`Object {${t.slice(0,3).join(", ")}${t.length>3?"...":""}}`}catch{return"[Object]"}return e+""}},Li(t,"BeepCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})()),Jo=Hi((()=>{let e,t,r=[Fi({description:"Drop into the debugger (emits a debugger; statement)",syntax:["breakpoint"],examples:["breakpoint","on click breakpoint"],sideEffects:["debugging"]}),Bi({name:"breakpoint",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){return{}}async execute(e,t){}validate(e){return"object"==typeof e&&null!==e}},Li(t,"BreakpointCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})()),Zo=Hi((()=>{let e,t,r=[Fi({description:"Execute inline JavaScript code with access to hyperscript context",syntax:["js <code> end","js(param1, param2) <code> end"],examples:['js console.log("Hello") end',"js(x, y) return x + y end",'js me.style.color = "red" end'],sideEffects:["code-execution","data-mutation"]}),Bi({name:"js",category:"advanced"})],n=[];return t=class{async parseInput(e,t,r){let n,s;if(0===e.args.length)throw Error("js command requires JavaScript code");const i=e.args[0],a=e.args[1];if(i&&"literal"===i.type&&"string"==typeof i.value)n=i.value;else{if(!i||void 0===i.value)throw Error("js command requires JavaScript code");n=i.value+""}a&&"arrayLiteral"===a.type&&Array.isArray(a.elements)&&(s=a.elements.map(e=>"string"==typeof e.value?e.value:e.value+"").filter(e=>e&&e.length>0));const o={code:n};return s&&s.length>0&&(o.parameters=s),o}async execute(e,t){const{code:r,parameters:n=[]}=e;if(!r.trim())return{result:void 0,executed:!1,codeLength:r.length,parameters:n,preserveArrayResult:!0};try{const e=this.createExecutionContext(t,n),s=Function(...Object.keys(e),r),i=await s(...Object.values(e));return void 0!==i&&Object.assign(t,{it:i}),{result:i,executed:!0,codeLength:r.length,parameters:n,preserveArrayResult:!0}}catch(e){throw Error("JavaScript execution failed: "+(e instanceof Error?e.message:"Unknown error"))}}createExecutionContext(e,t){return{me:e.me,it:e.it,you:e.you,locals:e.locals,globals:e.globals,variables:e.variables,console:console,document:"undefined"!=typeof document?document:void 0,window:"undefined"!=typeof window?window:void 0,...t.reduce((t,r)=>{let n=e.locals?.get(r);return void 0===n&&(n=e.variables?.get(r)),void 0===n&&(n=e[r]),t[r]=n,t},{})}}},Li(t,"JsCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})()),Xo=Hi((()=>{let e,t,r=[Fi({description:"Execute commands asynchronously without blocking",syntax:["async <command> [<command> ...]"],examples:["async command1 command2","async fetchData processData","async animateIn showContent"],sideEffects:["async-execution"]}),Bi({name:"async",category:"advanced"})],n=[];return t=class{async parseInput(e,t,r){if(1>e.args.length)throw Error("async command requires at least one command to execute");return{commands:e.args}}async execute(e,t){const{commands:r}=e,n=Date.now();try{const e=await this.executeCommandsAsync(t,r),s=Date.now()-n;return e.length>0&&Object.assign(t,{it:e[e.length-1]}),{commandCount:r.length,results:e,executed:!0,duration:s}}catch(e){throw Error("Async command execution failed: "+(e instanceof Error?e.message:"Unknown error"))}}async executeCommandsAsync(e,t){const r=[];for(let n=0;t.length>n;n++){const s=t[n];try{const t=await this.executeCommand(s,e);r.push(t),Object.assign(e,{it:t})}catch(e){const r=this.getCommandName(s);throw Error(`Command '${r}' (${n+1}/${t.length}) failed: ${e instanceof Error?e.message:"Unknown error"}`)}}return r}async executeCommand(e,t){if("function"==typeof e)return await e(t);if(e&&"object"==typeof e&&"execute"in e&&"function"==typeof e.execute)return await e.execute(t);throw Error("Invalid command: must be a function or object with execute method")}getCommandName(e){return"function"==typeof e?e.name||"anonymous function":e&&"object"==typeof e?e.name||"unnamed command":"unknown"}},Li(t,"AsyncCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})()),Yo=Hi((()=>{let e,t,r=[Fi({description:"Navigation functionality including URL navigation, element scrolling, and browser history",syntax:["go back","go to url <url> [in new window]","go to [position] [of] <element>"],examples:["go back",'go to url "https://example.com"',"go to top of #header"],sideEffects:["navigation","scrolling"]}),Bi({name:"go",category:"navigation"})],n=[];return t=class{async parseInput(e,t,r){return e.args&&0!==e.args.length?{args:await Promise.all(e.args.map(e=>t.evaluate(e,r)))}:{args:[]}}async execute(e,t){const{args:r}=e;if(0===r.length)throw Error("Go command requires arguments");if("string"==typeof r[0]&&"back"===r[0].toLowerCase())return await this.goBack(),{result:"back",type:"back"};if(this.isUrlNavigation(r))return{result:await this.navigateToUrl(r,t),type:"url"};const n=this.findBareUrl(r);return null!==n?{result:await this.navigateToBareUrl(n,r),type:"url"}:{result:await this.scrollToElement(r,t),type:"scroll"}}isUrlNavigation(e){return-1!==e.findIndex(e=>"url"===e)}isBareUrl(e){return!!e.startsWith("/")||/^[a-z][a-z0-9+.-]*:/i.test(e)}findBareUrl(e){for(const t of e)if("to"!==t&&"the"!==t)return"string"==typeof t&&this.isBareUrl(t)?t:null;return null}async navigateToBareUrl(e,t){if(t.includes("new")&&t.includes("window")){if("undefined"!=typeof window&&window.open){const t=window.open(e,"_blank");t?.focus&&t.focus()}}else e.startsWith("#")?"undefined"!=typeof window&&(window.location.hash=e):"undefined"!=typeof window&&(window.location.assign?.(e)??(window.location.href=e));return e}async goBack(){if("undefined"==typeof window||!window.history)throw Error("Browser history API not available");window.history.back()}async navigateToUrl(e,t){const r=e.findIndex(e=>"url"===e),n=e[r+1];if(!n)throw Error('URL is required after "url" keyword');const s="string"==typeof n?n:n+"",i=e.includes("new")&&e.includes("window");if(!this.isValidUrl(s))throw Error(`Invalid URL: "${s}"`);if(i){if("undefined"!=typeof window&&window.open){const e=window.open(s,"_blank");e?.focus&&e.focus()}}else s.startsWith("#")?"undefined"!=typeof window&&(window.location.hash=s):"undefined"!=typeof window&&(window.location.assign?.(s)??(window.location.href=s));return s}isValidUrl(e){try{return e.startsWith("/")||e.startsWith("#")||new URL(e),!0}catch{return!1}}async scrollToElement(e,t){const r=this.parseScrollPosition(e),n=this.parseScrollTarget(e),s=this.parseScrollOffset(e),i=!e.includes("instantly"),a=this.resolveScrollTarget(n,t);if(!a)throw Error("Target element not found: "+n);if("undefined"!=typeof window){const e=i?"smooth":"instant",t=this.mapVerticalPosition(r.vertical),n=this.mapHorizontalPosition(r.horizontal);if(0!==s){a.scrollIntoView?.({behavior:e,block:t,inline:n});const{x:i,y:o}=this.calculateScrollPosition(a,r,s);window.scrollTo?.({left:i,top:o,behavior:e})}else a.scrollIntoView?.({behavior:e,block:t,inline:n})}return a}mapVerticalPosition(e){return{top:"start",middle:"center",bottom:"end",nearest:"nearest"}[e]||"start"}mapHorizontalPosition(e){return{left:"start",center:"center",right:"end",nearest:"nearest"}[e]||"nearest"}parseScrollPosition(e){const t={vertical:"top",horizontal:"nearest"},r=["top","middle","bottom"],n=["left","center","right"];let s=!1,i=!1;for(const a of e)"string"==typeof a&&(r.includes(a)?(t.vertical=a,s=!0):n.includes(a)&&(t.horizontal=a,i=!0));return i&&!s&&(t.vertical="nearest"),t}parseScrollTarget(e){const t=e.findIndex(e=>"of"===e);if(-1!==t&&e.length>t+1){let r=e[t+1];return"the"===r&&e.length>t+2&&(r=e[t+2]),r}for(const t of e)if("object"==typeof t&&t&&t.nodeType)return t;const r=["top","middle","bottom","left","center","right","of","the","to","smoothly","instantly"];for(const t of e)if("string"==typeof t&&!r.includes(t)&&(t.startsWith("#")||t.startsWith(".")||t.includes("[")||/^[a-zA-Z][a-zA-Z0-9-]*$/.test(t)))return t;return"body"}parseScrollOffset(e){for(let t=0;e.length>t;t++){const r=e[t];if("string"==typeof r){const e=r.match(/^([+-]?\d+)(px)?$/);if(e)return parseInt(e[1],10)}if(("+"===r||"-"===r)&&e.length>t+1){const n=e[t+1],s="number"==typeof n?n:parseInt((n+"").replace("px",""),10);if(!isNaN(s))return"-"===r?-s:s}}return 0}resolveScrollTarget(e,t){if("object"==typeof e&&e&&e.nodeType)return e;const r="string"==typeof e?e:e+"";if("body"===r&&"undefined"!=typeof document)return document.body;if("html"===r&&"undefined"!=typeof document)return document.documentElement;if("me"===r&&ur(t.me))return t.me;if("it"===r&&ur(t.it))return t.it;if("you"===r&&ur(t.you))return t.you;const n=pr(r,t);if(ur(n))return n;if("undefined"!=typeof document)try{const e=document.querySelector(r);if(e)return e}catch{try{const e=document.getElementsByTagName(r);if(e.length>0)return e[0]}catch{}}return null}calculateScrollPosition(e,t,r){if("undefined"==typeof window||!e.getBoundingClientRect)return{x:0,y:0};const n=e.getBoundingClientRect(),s=window.pageXOffset||document.documentElement?.scrollLeft||0,i=window.pageYOffset||document.documentElement?.scrollTop||0,a=window.innerWidth||800,o=window.innerHeight||600;let l=s,c=i;switch(t.horizontal){case"left":l=n.left+s;break;case"center":l=n.left+s+n.width/2-a/2;break;case"right":l=n.right+s-a}switch(t.vertical){case"top":c=n.top+i+r;break;case"middle":c=n.top+i+n.height/2-o/2+r;break;case"bottom":c=n.bottom+i-o+r}return{x:Math.max(0,l),y:Math.max(0,c)}}},Li(t,"GoCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})());class Go{constructor(){this.name="install"}get metadata(){return Go.metadata}async parseInput(e,t,r){if(1>e.args.length)throw Error("install command requires a behavior name");const n=e.args[0];let s,i,a;if(s="identifier"===n?.type&&"string"==typeof n.name?n.name:await t.evaluate(n,r)+"",!/^[A-Z][a-zA-Z0-9_]*$/.test(s))throw Error(`Behavior name must be PascalCase (start with uppercase): "${s}"`);if(e.args.length>=2){const n=await t.evaluate(e.args[1],r);if(n&&"object"==typeof n&&!Array.isArray(n)){i=n;for(const e of Object.keys(i))if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e))throw Error(`Invalid parameter name: "${e}"`)}}return e.modifiers?.on&&(a=await t.evaluate(e.modifiers.on,r)),{behaviorName:s,parameters:i,target:a}}async execute(e,t){const{behaviorName:r,parameters:n={},target:s}=e;try{const e=this.resolveTarget(s,t);if(0===e.length)throw Error("No target elements found to install behavior on");if(!this.behaviorExists(r,t))throw Error(`Behavior "${r}" is not defined. Define it using the 'behavior' keyword before installing.`);const i=[];for(const s of e){const e=await this.installBehavior(r,s,n,t);i.push(e)}return{success:!0,behaviorName:r,installedCount:i.length,instances:i}}catch(e){throw Error(`Failed to install behavior "${r}": ${e instanceof Error?e.message:e+""}`)}}resolveTarget(e,t){if(null==e){const e=t.me||t.locals.get("me");if(ur(e))return[e];throw Error('No target specified and "me" is not available in context')}if(ur(e))return[e];if(Array.isArray(e)){const t=e.filter(e=>ur(e));if(0===t.length)throw Error("Target array contains no valid HTMLElements");return t}if("string"==typeof e){if("me"===e){const e=t.me||t.locals.get("me");if(ur(e))return[e];throw Error('"me" is not available in context')}if("undefined"!=typeof document){const t=document.querySelectorAll(e),r=Array.from(t).filter(e=>ur(e));if(0===r.length)throw Error(`No elements found matching selector: "${e}"`);return r}throw Error("document is not available (not in browser environment)")}if(e&&"object"==typeof e&&"length"in e){const t=Array.from(e).filter(e=>ur(e));if(0===t.length)throw Error("Target collection contains no valid HTMLElements");return t}if("object"==typeof e&&"element"in e){const t=e.element;if(ur(t))return[t]}throw Error("Cannot resolve target to HTMLElement(s): "+e)}behaviorExists(e,t){const r=t.locals.get("_behaviors");if(r&&"object"==typeof r){const t=r;if(t.has(e))return!0;if(t.resolve&&t.resolve(e))return!0}if("undefined"!=typeof globalThis){const t=globalThis._hyperscript;if(t?.behaviors){if(t.behaviors.has(e))return!0;if(t.behaviors.resolve&&t.behaviors.resolve(e))return!0}}return!1}async installBehavior(e,t,r,n){const s=n.locals.get("_behaviors");if(s&&"object"==typeof s){const n=s;if(n.install&&"function"==typeof n.install)return await n.install(e,t,r)}if("undefined"!=typeof globalThis){const n=globalThis._hyperscript;if(n?.behaviors?.install)return await n.behaviors.install(e,t,r)}throw Error("Behavior system not available in context")}}Go.metadata={description:"Install a behavior on an element with optional parameters",syntax:["install <BehaviorName>","install <BehaviorName> on <element>","install <BehaviorName>(param: value)","install <BehaviorName>(param: value) on <element>"],examples:["install Removable","install Draggable on #box",'install Tooltip(text: "Help", position: "top")','install Sortable(axis: "y") on .list',"install MyBehavior(foo: 42) on the first <div/>"],category:"behaviors",sideEffects:["behavior-installation","element-modification"]};const Qo=Hi((()=>{let e,t,r=[Fi({description:"Add content to the end of a string, array, or HTML element",syntax:["append <content>","append <content> to <target>"],examples:['append "Hello"','append "World" to greeting',"append item to myArray",'append "<p>New</p>" to #content'],sideEffects:["data-mutation","dom-mutation"]}),Bi({name:"append",category:"content"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("append requires content");const n=await t.evaluate(e.args[0],r);let s;if(e.modifiers?.to){const n=e.modifiers.to,i=n.type;s="identifier"!==i&&"variable"!==i&&"symbol"!==i||"string"!=typeof n.name?await t.evaluate(e.modifiers.to,r):n.name}else e.target&&(s=e.target);return{content:n,target:s}}async execute(e,t){const{content:r,target:n}=e,s=r+"";if(!n)return Object.assign(t,void 0===t.it?{it:s}:{it:t.it+""+s}),{result:t.it,targetType:"result"};if("string"==typeof n){if(n.startsWith("#")||n.startsWith(".")||n.includes("[")){const e=this.resolveDOMElement(n);return e.innerHTML+=s,{result:e,targetType:"element",target:e}}if("me"===n||"it"===n||"you"===n){const e=this.resolveContextRef(n,t);if(ur(e))return e.innerHTML+=s,{result:e,targetType:"element",target:e}}const e=pr(n,t);if(void 0!==e){if(ur(e))return e.innerHTML+=s,{result:e,targetType:"element",target:e};if(Array.isArray(e))return e.push(r),{result:e,targetType:"array",target:n};const i=(null==e?"":e+"")+s;return hr(n,i,t),{result:i,targetType:"variable",target:n}}return hr(n,s,t),{result:s,targetType:"variable",target:n}}if(Array.isArray(n))return n.push(r),{result:n,targetType:"array"};if(ur(n))return n.innerHTML+=s,{result:n,targetType:"element",target:n};{const e=n+""+s;return Object.assign(t,{it:e}),{result:e,targetType:"string"}}}resolveDOMElement(e){if("undefined"==typeof document)throw Error("DOM not available");const t=document.querySelector(e);if(!t)throw Error("Element not found: "+e);return t}resolveContextRef(e,t){switch(e){case"me":return t.me;case"it":return t.it;case"you":return t.you;default:throw Error("Unknown context ref: "+e)}}},Li(t,"AppendCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Ti(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Oi(t,n)})(),t})());class el{constructor(){this.name="render"}get metadata(){return el.metadata}async parseInput(e,t,r){if(1>e.args.length)throw Error("render command requires a template");const n=await t.evaluate(e.args[0],r);let s;if(e.args.length>=3&&"with"===await t.evaluate(e.args[1],r)){const n=await t.evaluate(e.args[2],r);n&&"object"==typeof n&&(s=n)}if(!s&&e.modifiers?.with){const n=await t.evaluate(e.modifiers.with,r);n&&"object"==typeof n&&(s=n)}return{template:n,variables:s}}async execute(e,t){const{template:r,variables:n={}}=e,s=this.extractTemplateContent(r,t),i=this.createTemplateContext(t,n),a=[],o=await this.processTemplate(s,i,a),l=this.createDOMElement(o);return Object.assign(t,{it:l}),{element:l,rendered:o,directivesProcessed:a}}extractTemplateContent(e,t){if(e instanceof HTMLTemplateElement)return e.innerHTML;if("string"==typeof e){let r=e;if(!r.includes("<")&&!r.includes("$")){const e=this.resolveVariable(r,t);if(e instanceof HTMLTemplateElement)return e.innerHTML;"string"==typeof e&&(r=e)}const n=r.match(/<template[^>]*>([\s\S]*?)<\/template>/i);return n?n[1]:r}if(e&&"object"==typeof e&&"innerHTML"in e)return e.innerHTML;throw Error("Invalid template format")}createTemplateContext(e,t){return{...e,locals:new Map([...Array.from(e.locals.entries()),...Object.entries(t)])}}async processTemplate(e,t,r){const n=e.split("\n"),s=[];let i=0;for(;n.length>i;){const e=n[i].trim();if(e.startsWith("@repeat ")){const{nextIndex:e,rendered:a}=await this.processRepeatDirective(n,i,t);s.push(a),i=e,r.push("@repeat")}else if(e.startsWith("@if ")){const{nextIndex:e,rendered:a}=await this.processIfDirective(n,i,t,r);s.push(a),i=e,r.push("@if")}else if("@else"===e||"@end"===e)i++;else{const r=this.processVariableInterpolation(e,t);s.push(r),i++}}return s.join("\n")}async processRepeatDirective(e,t,r){const n=e[t].trim(),s=n.match(/^@repeat\s+in\s+(.+)$/);if(!s)throw Error("Invalid @repeat syntax: "+n);const i=this.evaluateExpression(s[1],r),{endIndex:a,blockContent:o}=this.extractDirectiveBlock(e,t+1),l=[];if(Array.isArray(i))for(const e of i){const t={...r,locals:new Map([...r.locals.entries(),["it",e]])},n=await this.processTemplate(o.join("\n"),t,[]);l.push(n)}return{nextIndex:a+1,rendered:l.join("\n")}}async processIfDirective(e,t,r,n){const s=e[t].trim(),i=s.match(/^@if\s+(.+)$/);if(!i)throw Error("Invalid @if syntax: "+s);const a=!!this.evaluateExpression(i[1],r),{endIndex:o,blockContent:l,elseContent:c}=this.extractIfElseBlock(e,t+1);let u="";return a?u=await this.processTemplate(l.join("\n"),r,[]):c.length>0&&(u=await this.processTemplate(c.join("\n"),r,[]),n.push("@else")),{nextIndex:o+1,rendered:u}}extractDirectiveBlock(e,t){const r=[];let n=1,s=t;for(;e.length>s&&n>0;){const t=e[s].trim();t.startsWith("@repeat ")||t.startsWith("@if ")?(n++,r.push(e[s])):"@end"===t?(n--,n>0&&r.push(e[s])):r.push(e[s]),s++}return{endIndex:s-1,blockContent:r}}extractIfElseBlock(e,t){const r=[],n=[];let s=1,i=t,a=!1;for(;e.length>i&&s>0;){const t=e[i].trim();if(t.startsWith("@if "))s++;else{if("@else"===t&&1===s){a=!0,i++;continue}if("@end"===t&&(s--,0===s))break}a?n.push(e[i]):r.push(e[i]),i++}return{endIndex:i,blockContent:r,elseContent:n}}processVariableInterpolation(e,t){return e.replace(/\$\{([^}]+)\}/g,(e,r)=>{try{const e=r.trim();if(e.startsWith("unescaped ")){const r=e.substring(10).trim();return(this.evaluateExpression(r,t)||"")+""}const n=this.evaluateExpression(e,t);return this.escapeHtml((n||"")+"")}catch(t){return de(`render: template interpolation error for ${r}:`,t),e}})}evaluateExpression(e,t){if("true"===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"===e)return;const r=Number(e);if(!isNaN(r)&&""!==e.trim())return r;if(e.startsWith("[")&&e.endsWith("]"))try{return JSON.parse(e)}catch{}if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return e.slice(1,-1);if(e.includes(".")){const r=e.split(".");let n=this.resolveVariable(r[0],t);for(let e=1;r.length>e&&null!=n;e++){if("object"!=typeof n||null===n)return;n=n[r[e]]}return n}return this.resolveVariable(e,t)}resolveVariable(e,t){return t.locals?.has(e)?t.locals.get(e):"me"===e?t.me:"it"===e?t.it:"you"===e?t.you:"result"===e?t.result:t.globals?.has(e)?t.globals.get(e):void 0}escapeHtml(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}createDOMElement(e){if("undefined"==typeof document)return null;const t=document.createElement("div");return t.innerHTML=e,1===t.children.length?t.firstElementChild:t}}el.metadata={description:"Render templates with @if, @else, and @repeat directives",syntax:["render <template>","render <template> with <variables>","render <template> with (key: value, ...)"],examples:["render myTemplate",'render myTemplate with (name: "Alice")','render "<template>Hello ${name}!</template>" with (name: "World")',"render template with (items: data)"],category:"templates",sideEffects:["dom-creation","template-execution"]};class tl{constructor(){this.name="pseudo-command"}get metadata(){return tl.metadata}async parseInput(e,t,r){if(1===e.args.length&&"objectLiteral"===e.args[0].type){const n=e.args[0].properties||[];let s,i,a="",o=[];for(const e of n){const n=e.value;switch(e.key?.name||e.key?.value){case"methodName":a=n?.value||await t.evaluate(n,r)+"";break;case"methodArgs":"arrayLiteral"===n?.type&&n.elements?o=await Promise.all(n.elements.map(e=>t.evaluate(e,r))):"literal"===n?.type&&Array.isArray(n.value)&&(o=await Promise.all(n.value.map(e=>t.evaluate(e,r))));break;case"preposition":const e=n?.value;e&&"null"!==e&&(s=e);break;case"target":case"targetExpression":i=await t.evaluate(n,r)}}if(!a)throw Error("pseudo-command requires method name");if(null==i)throw Error("pseudo-command requires a target expression");return{methodName:a,methodArgs:o,preposition:s,targetExpression:i}}if(2>e.args.length)throw Error("pseudo-command requires method name and target expression");const n=await t.evaluate(e.args[0],r)+"",s=Array.isArray(e.args[1])?await Promise.all(e.args[1].map(e=>t.evaluate(e,r))):[];let i,a;const o=["from","on","with","into","at","to"];for(const n of o)if(e.modifiers?.[n]){a=n,i=await t.evaluate(e.modifiers[n],r);break}if(i||3>e.args.length||(i=await t.evaluate(e.args[2],r)),!i)throw Error("pseudo-command requires a target expression");return{methodName:n,methodArgs:s,preposition:a,targetExpression:i}}async execute(e,t){const{methodName:r,methodArgs:n,targetExpression:s}=e;try{const e=await this.resolveTarget(s,t);if(null==e)throw Error("Target expression resolved to "+e);const i=this.resolveMethod(e,r);if(!i)throw Error(`Method "${r}" not found on target object`);if("function"!=typeof i)throw Error(`"${r}" is not a function (it's a ${typeof i})`);const a=await this.executeMethod(i,e,n);return t.locals.set("result",a),Object.assign(t,{it:a}),{result:a,methodName:r,target:e}}catch(e){throw Error("Pseudo-command failed: "+(e instanceof Error?e.message:e+""))}}async resolveTarget(e,t){return"object"==typeof e&&null!==e?e:"string"==typeof e?t.locals.has(e)?t.locals.get(e):t.variables?.has(e)?t.variables.get(e):t.globals.has(e)?t.globals.get(e):"me"===e&&t.me?t.me:"it"===e&&t.it?t.it:"document"===e?"undefined"!=typeof document?document:null:"window"===e?"undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:null:this.resolvePropertyPath(e,t):e}resolvePropertyPath(e,t){const r=e.split(".");let n="undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:null;t.locals.has(r[0])?(n=t.locals.get(r[0]),r.shift()):t.variables?.has(r[0])?(n=t.variables.get(r[0]),r.shift()):t.globals.has(r[0])&&(n=t.globals.get(r[0]),r.shift());for(const e of r){if(null==n)return null;n=n[e]}return n}resolveMethod(e,t){if(!e)return null;if(t in e)return e[t];const r=t.split(".");let n=e;for(let e=0;r.length>e;e++){const t=r[e];if(null==n)return null;if(!(t in n))return null;if(n=n[t],e===r.length-1&&"function"==typeof n)return n}return null}async executeMethod(e,t,r){try{const n=e.apply(t,r);return n&&"object"==typeof n&&"then"in n?await n:n}catch(e){throw Error("Method execution failed: "+(e instanceof Error?e.message:e+""))}}}tl.metadata={description:"Treat a method on an object as a top-level command",syntax:["<method>(<args>) [(to|on|with|into|from|at)] <expression>"],examples:['getElementById("d1") from the document',"reload() the location of the window",'setAttribute("foo", "bar") on me',"foo() on me"],category:"execution",sideEffects:["method-execution"]};var rl={to:"destination",into:"destination",from:"source",with:"style",by:"quantity",as:"method",on:"event",over:"duration",for:"duration"},nl={set:"destination",on:"event",trigger:"event",send:"event",wait:"duration",fetch:"source",get:"source",if:"condition",unless:"condition",while:"condition",repeat:"loopType",go:"destination",scroll:"destination",tell:"destination",default:"destination",swap:"destination",bind:"destination"},sl=new Set(["to","from","into","with","at","in","of","as","by","before","after","without"]),il=new Set(["add","append","async","beep","blur","break","breakpoint","call","clear","close","continue","decrement","default","empty","exit","fetch","focus","for","get","go","halt","hide","if","increment","install","js","log","make","measure","morph","open","pick","process","push","put","remove","render","repeat","replace","reset","return","select","send","set","settle","show","swap","take","tell","throw","toggle","transition","trigger","unless","wait","live","bind","eventsource","socket","worker","intercept"]),al=new Set(["then","else","end","and","or","not","if","unless","for","while","until","forever","times","each","index","in","to","from","into","with","without","of","at","by","as","matches","contains","is","exists","on","when","every","event","init","def","behavior","global","local","the","a","an","first","last","start","before","after"]),ol=new Set(["click","dblclick","mousedown","mouseup","mouseenter","mouseleave","mouseover","mouseout","mousemove","keydown","keyup","keypress","focus","blur","change","input","submit","reset","load","unload","resize","scroll","touchstart","touchend","touchmove","touchcancel","dragstart","dragend","dragenter","dragleave","dragover","drop","contextmenu","wheel","pointerdown","pointerup","pointermove","ms","s"]),ll=new Set(["and","or","not","is","exists","matches","contains","then","else"]),cl=new Set(["true","false","null","undefined","it","me","my","result"]),ul=new Set(["first","last","next","previous","prev","at","random","closest","parent","children","within","no","empty","some","starts with","ends with"]),dl=new Set(["if","unless","when","where","\u3082\u3057","\u6642\u306b","\u3068\u304d\u306b","\u3069\u3053\u3067","\u5982\u679c","\u5f53","\u0625\u0630\u0627","\u0639\u0646\u062f\u0645\u0627","\u062d\u064a\u062b","si","cuando","donde","wenn","wann","wo","quand","lorsque","o\u00f9","quando","onde","e\u011fer","zaman","nerede","ketika","saat","dimana","\ub54c","\uc5b4\ub514\uc11c","maypi","wakati","wapi"]),ml=new Set(["then","\u305d\u308c\u304b\u3089","\u90a3\u4e48","\u062b\u0645","entonces","alors","dann","sonra","lalu","chayqa","kisha"]);function pl(e,t,r={}){const{allowEnglishFallback:n=!0}=r,s=new Map,i=new Map,a=new Map,o=new Map,l=new Map,c=new Map,u=new Map,d=new Map,m=new Map,p=new Map;function h(e,t,r=!1){for(const[n,s]of Object.entries(e)){const e=s.toLowerCase();t.set(e,n.toLowerCase()),!r&&m.has(e)||m.set(e,n.toLowerCase()),p.set(n.toLowerCase(),s.toLowerCase())}}e.commands&&h(e.commands,s,!0),e.logical&&h(e.logical,o,!0),e.events&&h(e.events,a),e.values&&h(e.values,c),e.temporal&&h(e.temporal,l),e.modifiers&&h(e.modifiers,i),e.attributes&&h(e.attributes,u),e.expressions&&h(e.expressions,d);const f=new Set(s.keys()),y=new Set(m.keys());if(n){for(const e of il)f.add(e);for(const e of al)y.add(e);for(const e of ol)y.add(e)}return{locale:t,resolve(e){const t=e.toLowerCase(),r=m.get(t);if(void 0!==r)return r;if(n){if(il.has(t)||al.has(t))return t;if(ol.has(t))return t}},isCommand(e){const t=e.toLowerCase();return!!s.has(t)||!(!n||!il.has(t))},isKeyword(e){const t=e.toLowerCase();return!!(i.has(t)||o.has(t)||l.has(t)||c.has(t))||!(!n||!al.has(t))},isEvent(e){const t=e.toLowerCase();return!!a.has(t)||!!ol.has(t)},isModifier(e){const t=e.toLowerCase();return i.has(t)||n&&sl.has(t)},isLogical(e){const t=e.toLowerCase();return o.has(t)||n&&ll.has(t)},isValue(e){const t=e.toLowerCase();return c.has(t)||n&&cl.has(t)},isExpression(e){const t=e.toLowerCase();return d.has(t)||n&&ul.has(t)},getCommands:()=>Array.from(f),getKeywords:()=>Array.from(y),toLocale:e=>p.get(e.toLowerCase())}}function hl(){return{locale:"en",resolve(e){const t=e.toLowerCase();if(il.has(t)||al.has(t)||ol.has(t))return t},isCommand:e=>il.has(e.toLowerCase()),isKeyword:e=>al.has(e.toLowerCase()),isEvent:e=>ol.has(e.toLowerCase()),isModifier:e=>sl.has(e.toLowerCase()),isLogical:e=>ll.has(e.toLowerCase()),isValue:e=>cl.has(e.toLowerCase()),isExpression:e=>ul.has(e.toLowerCase()),getCommands:()=>Array.from(il),getKeywords:()=>Array.from(al),toLocale:e=>e.toLowerCase()}}var fl={commands:{on:"en",tell:"decir",trigger:"disparar",send:"enviar",take:"tomar",put:"poner",set:"establecer",get:"obtener",add:"agregar",remove:"quitar",toggle:"alternar",hide:"ocultar",show:"mostrar",if:"si",unless:"menos",repeat:"repetir",for:"para",while:"mientras",until:"hasta",continue:"continuar",break:"romper",halt:"detener",wait:"esperar",fetch:"buscar",call:"llamar",return:"retornar",make:"hacer",log:"registrar",throw:"lanzar",catch:"atrapar",measure:"medir",transition:"transici\u00f3n",increment:"incrementar",decrement:"decrementar",default:"predeterminar",go:"ir",pushUrl:"pushUrl",replaceUrl:"reemplazarUrl",copy:"copiar",pick:"escoger",beep:"pitido",js:"js",async:"as\u00edncrono",render:"renderizar",swap:"intercambiar",morph:"transformar",settle:"estabilizar",append:"anexar",exit:"salir",install:"instalar",breakpoint:"punto-interrupci\u00f3n",clear:"limpiar",close:"cerrar",open:"abrir",select:"seleccionar",clone:"clonar",prepend:"anteponer"},modifiers:{to:"a",from:"de",into:"en",with:"con",at:"en",in:"en",of:"de",as:"como",by:"por",before:"antes",after:"despu\u00e9s",over:"sobre",under:"bajo",between:"entre",through:"trav\u00e9s",without:"sin"},events:{click:"clic",dblclick:"dobleclic",mousedown:"rat\u00f3nabajo",mouseup:"rat\u00f3narriba",mouseenter:"rat\u00f3nentrar",mouseleave:"rat\u00f3nsalir",mouseover:"rat\u00f3n encima",mouseout:"rat\u00f3n fuera",mousemove:"rat\u00f3nmover",keydown:"tecla abajo",keyup:"tecla arriba",keypress:"teclapresar",focus:"enfocar",blur:"desenfocar",change:"cambiar",input:"entrada",submit:"env\u00edo",reset:"reiniciar",load:"cargar",unload:"descargar",resize:"redimensionar",scroll:"desplazar",touchstart:"toqueempezar",touchend:"toqueterminar",touchmove:"toquemover",touchcancel:"toquecancelar"},logical:{when:"cuando",where:"donde",and:"y",or:"o",not:"no",is:"es",exists:"existe",matches:"coincide",contains:"contiene",includes:"incluye",equals:"iguala",has:"tiene",have:"tengo",then:"entonces",else:"sino",otherwise:"delocontrario",end:"fin",live:"vivo",changes:"cambia"},temporal:{seconds:"segundos",second:"segundo",milliseconds:"milisegundos",millisecond:"milisegundo",minutes:"minutos",minute:"minuto",hours:"horas",hour:"hora",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"verdadero",false:"falso",null:"nulo",undefined:"indefinido",it:"ello",its:"su",me:"yo",my:"mi",you:"tu",your:"tu",yourself:"ti mismo",myself:"yo mismo",element:"elemento",target:"objetivo",detail:"detalle",event:"evento",window:"ventana",document:"documento",body:"cuerpo",result:"resultado",value:"valor"},attributes:{class:"clase",classes:"clases",style:"estilo",styles:"estilos",attribute:"atributo",attributes:"atributos",property:"propiedad",properties:"propiedades"},expressions:{characters:"caracteres",inclusive:"inclusivo",exclusive:"exclusivo",first:"primero",last:"\u00faltimo",next:"siguiente",previous:"anterior",prev:"ant",at:"en",random:"aleatorio",closest:"cercano",parent:"padre",children:"hijos",within:"dentro",no:"ning\u00fan",empty:"vac\u00edo",some:"alg\u00fan","starts with":"empieza con","ends with":"termina con","ignoring case":"ignorando may\u00fasculas","sorted by":"ordenado por","mapped to":"transformado a","split by":"dividido por","joined by":"unido por"}},yl=pl(fl,"es",{allowEnglishFallback:!0}),gl={commands:{on:"\u3067",tell:"\u4f1d\u3048\u308b",trigger:"\u5f15\u304d\u91d1",send:"\u9001\u308b",take:"\u53d6\u308b",put:"\u7f6e\u304f",set:"\u8a2d\u5b9a",get:"\u53d6\u5f97",add:"\u8ffd\u52a0",remove:"\u524a\u9664",toggle:"\u5207\u308a\u66ff\u3048",hide:"\u96a0\u3059",show:"\u8868\u793a",if:"\u3082\u3057",unless:"\u306a\u3044\u9650\u308a",repeat:"\u7e70\u308a\u8fd4\u3057",for:"\u305f\u3081\u306b",while:"\u306e\u9593",until:"\u307e\u3067",continue:"\u7d9a\u3051\u308b",break:"\u4e2d\u65ad",halt:"\u505c\u6b62",wait:"\u5f85\u3064",fetch:"\u30d5\u30a7\u30c3\u30c1",call:"\u547c\u3073\u51fa\u3057",return:"\u623b\u308b",make:"\u4f5c\u308b",log:"\u8a18\u9332",throw:"\u6295\u3052\u308b",catch:"\u6355\u307e\u3048\u308b",measure:"\u6e2c\u5b9a",transition:"\u9077\u79fb",increment:"\u5897\u52a0",decrement:"\u6e1b\u5c11",default:"\u65e2\u5b9a",go:"\u79fb\u52d5",pushUrl:"URL\u30d7\u30c3\u30b7\u30e5",replaceUrl:"URL\u7f6e\u63db",copy:"\u30b3\u30d4\u30fc",pick:"\u9078\u629e",beep:"\u30d3\u30fc\u30d7",js:"JS\u5b9f\u884c",async:"\u975e\u540c\u671f",render:"\u63cf\u753b",swap:"\u4ea4\u63db",morph:"\u5909\u5f62",settle:"\u5b89\u5b9a",append:"\u672b\u5c3e\u8ffd\u52a0",exit:"\u9000\u51fa",install:"\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb",breakpoint:"\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8",clear:"\u30af\u30ea\u30a2",close:"\u9589\u3058\u308b",open:"\u958b\u304f",select:"\u9078\u3076",clone:"\u8907\u88fd",prepend:"\u5148\u982d\u8ffd\u52a0",socket:"\u30bd\u30b1\u30c3\u30c8"},modifiers:{to:"\u306b",from:"\u304b\u3089",into:"\u3078",with:"\u3068",at:"\u3067",in:"\u306e\u4e2d",of:"\u306e",as:"\u3068\u3057\u3066",by:"\u306b\u3088\u3063\u3066",before:"\u524d\u306b",after:"\u5f8c\u306b",over:"\u4e0a\u306b",under:"\u4e0b\u306b",between:"\u9593\u306b",through:"\u901a\u3057\u3066",without:"\u306a\u3057\u3067"},events:{click:"\u30af\u30ea\u30c3\u30af",dblclick:"dblclick",mousedown:"\u30de\u30a6\u30b9\u62bc\u4e0b",mouseup:"\u30de\u30a6\u30b9\u89e3\u653e",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc",mouseout:"\u30de\u30a6\u30b9\u30a2\u30a6\u30c8",mousemove:"mousemove",keydown:"\u30ad\u30fc\u30c0\u30a6\u30f3",keyup:"\u30ad\u30fc\u30a2\u30c3\u30d7",keypress:"\u30ad\u30fc\u30d7\u30ec\u30b9",focus:"\u30d5\u30a9\u30fc\u30ab\u30b9",blur:"\u307c\u304b\u3057",change:"\u5909\u66f4",input:"\u5165\u529b",submit:"\u9001\u4fe1",reset:"\u30ea\u30bb\u30c3\u30c8",load:"\u8aad\u307f\u8fbc\u307f",unload:"unload",resize:"\u30b5\u30a4\u30ba\u5909\u66f4",scroll:"\u30b9\u30af\u30ed\u30fc\u30eb",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel"},logical:{when:"\u6642",where:"\u3069\u3053",and:"\u305d\u3057\u3066",or:"\u307e\u305f\u306f",not:"\u3067\u306f\u306a\u3044",is:"\u3067\u3042\u308b",exists:"\u5b58\u5728\u3059\u308b",matches:"\u4e00\u81f4\u3059\u308b",contains:"\u542b\u3080",includes:"\u542b\u3081\u308b",equals:"\u7b49\u3057\u3044",has:"\u3042\u308b",have:"\u3042\u308b",then:"\u305d\u308c\u304b\u3089",else:"\u305d\u3046\u3067\u306a\u3051\u308c\u3070",otherwise:"\u305d\u3046\u3067\u306a\u3051\u308c\u3070",end:"\u7d42\u308f\u308a",live:"\u30e9\u30a4\u30d6",bind:"\u30d0\u30a4\u30f3\u30c9",changes:"\u5909\u308f\u3063\u305f\u3089"},temporal:{seconds:"\u79d2",second:"\u79d2",milliseconds:"\u30df\u30ea\u79d2",millisecond:"\u30df\u30ea\u79d2",minutes:"\u5206",minute:"\u5206",hours:"\u6642\u9593",hour:"\u6642\u9593",ms:"ms",s:"\u79d2",min:"\u5206",h:"\u6642"},values:{true:"\u771f",false:"\u507d",null:"null",undefined:"\u672a\u5b9a\u7fa9",it:"\u305d\u308c",its:"\u305d\u306e",me:"\u79c1",my:"\u79c1\u306e",you:"\u3042\u306a\u305f",your:"\u3042\u306a\u305f\u306e",yourself:"\u3042\u306a\u305f\u81ea\u8eab",myself:"\u79c1\u81ea\u8eab",element:"\u8981\u7d20",target:"\u5bfe\u8c61",detail:"\u8a73\u7d30",event:"\u30a4\u30d9\u30f3\u30c8",window:"\u30a6\u30a3\u30f3\u30c9\u30a6",document:"\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8",body:"\u30dc\u30c7\u30a3",result:"\u7d50\u679c",value:"\u5024"},attributes:{class:"\u30af\u30e9\u30b9",classes:"\u30af\u30e9\u30b9\u7fa4",style:"\u30b9\u30bf\u30a4\u30eb",styles:"\u30b9\u30bf\u30a4\u30eb\u7fa4",attribute:"\u5c5e\u6027",attributes:"\u5c5e\u6027\u7fa4",property:"\u30d7\u30ed\u30d1\u30c6\u30a3",properties:"\u30d7\u30ed\u30d1\u30c6\u30a3\u7fa4"},expressions:{characters:"\u6587\u5b57",inclusive:"\u542b\u3080",exclusive:"\u9664\u304f",first:"\u6700\u521d",last:"\u6700\u5f8c",next:"\u6b21",previous:"\u524d",prev:"\u524d",at:"\u3067",random:"\u30e9\u30f3\u30c0\u30e0",closest:"\u6700\u3082\u8fd1\u3044",parent:"\u89aa",children:"\u5b50",within:"\u4ee5\u5185",no:"\u306a\u3044",empty:"\u7a7a",some:"\u3044\u304f\u3064\u304b","starts with":"\u3067\u59cb\u307e\u308b","ends with":"\u3067\u7d42\u308f\u308b","ignoring case":"\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u3092\u7121\u8996","sorted by":"\u3067\u30bd\u30fc\u30c8","mapped to":"\u306b\u5909\u63db","split by":"\u3067\u5206\u5272","joined by":"\u3067\u7d50\u5408"}},vl=pl(gl,"ja",{allowEnglishFallback:!0}),bl={commands:{on:"sur",tell:"dire",trigger:"d\u00e9clencher",send:"envoyer",take:"prendre",put:"mettre",set:"d\u00e9finir",get:"obtenir",add:"ajouter",remove:"supprimer",toggle:"basculer",blur:"d\u00e9focaliser",hide:"cacher",show:"montrer",if:"si",unless:"saufsi",repeat:"r\u00e9p\u00e9ter",for:"pour",while:"tantque",until:"jusqu\u00e0",continue:"continuer",break:"arr\u00eater",halt:"stopper",wait:"attendre",fetch:"r\u00e9cup\u00e9rer",call:"appeler",return:"retourner",make:"cr\u00e9er",log:"enregistrer",throw:"lancer",catch:"attraper",measure:"mesurer",transition:"transition",increment:"incr\u00e9menter",decrement:"d\u00e9cr\u00e9menter",default:"d\u00e9faut",go:"aller",pushUrl:"pousserUrl",replaceUrl:"remplacerUrl",copy:"copier",pick:"choisir",beep:"bip",js:"js",async:"asynchrone",render:"rendu",swap:"\u00e9changer",morph:"transformer",settle:"stabiliser",append:"annexer",exit:"sortir",install:"installer",breakpoint:"point-arr\u00eat",clear:"effacer",close:"fermer",open:"ouvrir",select:"s\u00e9lectionner",clone:"cloner",prepend:"pr\u00e9fixer",focus:"focaliser"},modifiers:{to:"\u00e0",from:"de",into:"dans",with:"avec",at:"\u00e0",in:"en",of:"de",as:"comme",by:"par",before:"avant",after:"apr\u00e8s",over:"sur",under:"sous",between:"entre",through:"\u00e0 travers",without:"sans"},events:{click:"clic",dblclick:"doubleclic",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"sourisentrer",mouseleave:"sourissortir",mouseover:"souris dessus",mouseout:"souris dehors",mousemove:"sourisbouger",keydown:"touche bas",keyup:"touche haut",keypress:"touchepress\u00e9e",focus:"focus",blur:"flou",change:"changer",input:"saisie",submit:"soumettre",reset:"r\u00e9initialiser",load:"charger",unload:"d\u00e9charger",resize:"redimensionner",scroll:"d\u00e9filer",touchstart:"touchercommencer",touchend:"toucherfin",touchmove:"toucherbouger",touchcancel:"toucherannuler"},logical:{when:"quand",where:"o\u00f9",and:"et",or:"ou",not:"non",is:"est",exists:"existe",matches:"correspond",contains:"contient",includes:"inclut",equals:"\u00e9gale",has:"a",have:"ai",then:"alors",else:"sinon",otherwise:"autrement",end:"fin",live:"vif",changes:"change"},temporal:{seconds:"secondes",second:"seconde",milliseconds:"millisecondes",millisecond:"milliseconde",minutes:"minutes",minute:"minute",hours:"heures",hour:"heure",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"vrai",false:"faux",null:"nul",undefined:"ind\u00e9fini",it:"\u00e7a",its:"son",me:"moi",my:"mon",you:"tu",your:"ton",yourself:"toi-m\u00eame",myself:"moi-m\u00eame",element:"\u00e9l\u00e9ment",target:"cible",detail:"d\u00e9tail",event:"\u00e9v\u00e9nement",window:"fen\u00eatre",document:"document",body:"corps",result:"r\u00e9sultat",value:"valeur"},attributes:{class:"classe",classes:"classes",style:"style",styles:"styles",attribute:"attribut",attributes:"attributs",property:"propri\u00e9t\u00e9",properties:"propri\u00e9t\u00e9s"},expressions:{characters:"caract\u00e8res",inclusive:"inclusif",exclusive:"exclusif",first:"premier",last:"dernier",next:"suivant",previous:"pr\u00e9c\u00e9dent",prev:"pr\u00e9c",at:"\u00e0",random:"al\u00e9atoire",closest:"proche",parent:"parent",children:"enfants",within:"dans",no:"aucun",empty:"vide",some:"quelques","starts with":"commence par","ends with":"finit par","ignoring case":"en ignorant la casse","sorted by":"tri\u00e9 par","mapped to":"transform\u00e9 en","split by":"divis\u00e9 par","joined by":"joint par"}},wl=pl(bl,"fr",{allowEnglishFallback:!0}),kl={commands:{on:"bei",tell:"sagen",trigger:"ausl\u00f6sen",send:"senden",take:"nehmen",put:"setzen",set:"festlegen",get:"erhalten",add:"hinzuf\u00fcgen",remove:"entfernen",toggle:"umschalten",blur:"defokussieren",hide:"verstecken",show:"zeigen",if:"falls",unless:"wennnicht",repeat:"wiederholen",for:"f\u00fcr",while:"w\u00e4hrend",until:"bis",continue:"weiter",break:"unterbrechen",halt:"anhalten",wait:"warten",fetch:"abrufen",call:"aufrufen",return:"zur\u00fcckgeben",make:"erstellen",log:"protokollieren",throw:"werfen",catch:"fangen",measure:"messen",transition:"\u00fcbergang",increment:"erh\u00f6hen",decrement:"verringern",default:"standard",go:"gehen",pushUrl:"urlHinzuf\u00fcgen",replaceUrl:"urlErsetzen",copy:"kopieren",pick:"ausw\u00e4hlen",beep:"piepton",js:"js",async:"asynchron",render:"rendern",swap:"tauschen",morph:"verwandeln",settle:"stabilisieren",append:"anh\u00e4ngen",exit:"beenden",install:"installieren",breakpoint:"haltepunkt",clear:"bereinigen",close:"schlie\u00dfen",open:"\u00f6ffnen",select:"markieren",clone:"klonen",prepend:"voranstellen",focus:"fokussieren"},modifiers:{to:"zu",from:"von",into:"in",with:"mit",at:"bei",in:"in",of:"von",as:"als",by:"durch",before:"vor",after:"nach",over:"\u00fcber",under:"unter",between:"zwischen",through:"durch",without:"ohne"},events:{click:"klick",dblclick:"doppelklick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mauseintreten",mouseleave:"mausverlassen",mouseover:"maus dr\u00fcber",mouseout:"maus weg",mousemove:"mausbewegen",keydown:"taste unten",keyup:"taste oben",keypress:"tastedr\u00fccken",focus:"fokus",blur:"defokussieren",change:"\u00e4ndern",input:"eingabe",submit:"absenden",reset:"zur\u00fccksetzen",load:"laden",unload:"entladen",resize:"gr\u00f6\u00dfe\u00e4ndern",scroll:"scrollen",touchstart:"ber\u00fchrungstart",touchend:"ber\u00fchrungend",touchmove:"ber\u00fchrungbewegen",touchcancel:"ber\u00fchrungabbrechen"},logical:{when:"wenn",where:"wo",and:"und",or:"oder",not:"nicht",is:"ist",exists:"existiert",matches:"passt",contains:"enth\u00e4lt",includes:"beinhaltet",equals:"gleicht",has:"hat",have:"habe",then:"dann",else:"sonst",otherwise:"andernfalls",end:"ende",live:"live",changes:"\u00e4ndert"},temporal:{seconds:"sekunden",second:"sekunde",milliseconds:"millisekunden",millisecond:"millisekunde",minutes:"minuten",minute:"minute",hours:"stunden",hour:"stunde",ms:"ms",s:"s",min:"min",h:"std"},values:{true:"wahr",false:"falsch",null:"null",undefined:"undefiniert",it:"es",its:"sein",me:"ich",my:"mein",you:"du",your:"dein",yourself:"dich selbst",myself:"ich selbst",element:"element",target:"ziel",detail:"detail",event:"ereignis",window:"fenster",document:"dokument",body:"k\u00f6rper",result:"ergebnis",value:"wert"},attributes:{class:"klasse",classes:"klassen",style:"stil",styles:"stile",attribute:"attribut",attributes:"attribute",property:"eigenschaft",properties:"eigenschaften"},expressions:{characters:"Zeichen",inclusive:"inklusiv",exclusive:"exklusiv",first:"erste",last:"letzte",next:"n\u00e4chste",previous:"vorherige",prev:"vorh",at:"bei",random:"zuf\u00e4llig",closest:"n\u00e4chstgelegene",parent:"elternteil",children:"kinder",within:"innerhalb",no:"kein",empty:"leer",some:"einige","starts with":"beginnt mit","ends with":"endet mit","ignoring case":"ohne Gro\u00df-/Kleinschreibung","sorted by":"sortiert nach","mapped to":"zugeordnet zu","split by":"geteilt durch","joined by":"verbunden mit"}},El=pl(kl,"de",{allowEnglishFallback:!0}),xl={commands:{on:"\u0639\u0644\u0649",tell:"\u0623\u062e\u0628\u0631",trigger:"\u062a\u0634\u063a\u064a\u0644",send:"\u0623\u0631\u0633\u0644",take:"\u062e\u0630",put:"\u0636\u0639",set:"\u0627\u0636\u0628\u0637",get:"\u0627\u062d\u0635\u0644",add:"\u0623\u0636\u0641",remove:"\u0627\u062d\u0630\u0641",toggle:"\u0628\u062f\u0644",hide:"\u0627\u062e\u0641",show:"\u0627\u0638\u0647\u0631",if:"\u0625\u0630\u0627",unless:"\u0625\u0644\u0627",repeat:"\u0643\u0631\u0631",for:"\u0644\u0643\u0644",while:"\u0628\u064a\u0646\u0645\u0627",until:"\u062d\u062a\u0649",continue:"\u0648\u0627\u0635\u0644",break:"\u062a\u0648\u0642\u0641",halt:"\u0623\u0648\u0642\u0641",wait:"\u0627\u0646\u062a\u0638\u0631",fetch:"\u0627\u062d\u0636\u0631",call:"\u0627\u0633\u062a\u062f\u0639",return:"\u0627\u0631\u062c\u0639",make:"\u0627\u0635\u0646\u0639",log:"\u0633\u062c\u0644",throw:"\u0627\u0631\u0645",catch:"\u0627\u0644\u062a\u0642\u0637",measure:"\u0642\u0633",transition:"\u0627\u0646\u062a\u0642\u0627\u0644",increment:"\u0632\u0650\u062f",decrement:"\u0623\u0646\u0642\u0635",default:"\u0627\u0641\u062a\u0631\u0627\u0636\u064a",go:"\u0627\u0630\u0647\u0628",pushUrl:"\u0627\u062f\u0641\u0639 \u0631\u0627\u0628\u0637",replaceUrl:"\u0627\u0633\u062a\u0628\u062f\u0644 \u0631\u0627\u0628\u0637",copy:"\u0627\u0646\u0633\u062e",pick:"\u0627\u062e\u062a\u0631",beep:"\u0635\u0641\u0651\u0631",js:"\u062c\u0627\u0641\u0627\u0633\u0643\u0631\u0628\u062a",async:"\u0645\u062a\u0632\u0627\u0645\u0646",render:"\u0627\u0631\u0633\u0645",swap:"\u0627\u0633\u062a\u0628\u062f\u0644",morph:"\u062d\u0648\u0651\u0644",settle:"\u0627\u0633\u062a\u0642\u0631",append:"\u0623\u0644\u062d\u0642",exit:"\u0627\u062e\u0631\u062c",install:"\u062b\u0628\u0651\u062a",breakpoint:"\u0646\u0642\u0637\u0629-\u062a\u0648\u0642\u0641",clear:"\u0646\u0638\u0651\u0641",close:"\u0623\u063a\u0644\u0642",open:"\u0627\u0641\u062a\u062d",select:"\u0638\u0644\u0644",clone:"\u0627\u0633\u062a\u0646\u0633\u062e",prepend:"\u0633\u0628\u0642",socket:"\u0645\u0642\u0628\u0633"},modifiers:{to:"\u0625\u0644\u0649",from:"\u0645\u0646",into:"\u0641\u064a",with:"\u0645\u0639",at:"\u0639\u0646\u062f",in:"\u0641\u064a",of:"\u0645\u0646",as:"\u0643\u0640",by:"\u0628\u0648\u0627\u0633\u0637\u0629",before:"\u0642\u0628\u0644",after:"\u0628\u0639\u062f",over:"\u0641\u0648\u0642",under:"\u062a\u062d\u062a",between:"\u0628\u064a\u0646",through:"\u0639\u0628\u0631",without:"\u0628\u062f\u0648\u0646"},events:{click:"\u0646\u0642\u0631",dblclick:"dblclick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"\u0641\u0623\u0631\u0629 \u0641\u0648\u0642",mouseout:"mouseout",mousemove:"mousemove",keydown:"\u0645\u0641\u062a\u0627\u062d \u0623\u0633\u0641\u0644",keyup:"\u0645\u0641\u062a\u0627\u062d \u0623\u0639\u0644\u0649",keypress:"keypress",focus:"\u062a\u0631\u0643\u064a\u0632",blur:"\u0636\u0628\u0627\u0628\u064a\u0629",change:"\u062a\u063a\u064a\u064a\u0631",input:"\u0625\u062f\u062e\u0627\u0644",submit:"\u0625\u0631\u0633\u0627\u0644",reset:"reset",load:"\u062a\u062d\u0645\u064a\u0644",unload:"unload",resize:"\u062a\u063a\u064a\u064a\u0631 \u062d\u062c\u0645",scroll:"\u062a\u0645\u0631\u064a\u0631",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel"},logical:{when:"\u0639\u0646\u062f\u0645\u0627",where:"\u0623\u064a\u0646",and:"\u0648",or:"\u0623\u0648",not:"\u0644\u064a\u0633",is:"\u0647\u0648",exists:"\u0645\u0648\u062c\u0648\u062f",matches:"\u064a\u0637\u0627\u0628\u0642",contains:"\u064a\u062d\u062a\u0648\u064a",includes:"\u064a\u0634\u0645\u0644",equals:"\u064a\u0633\u0627\u0648\u064a",has:"\u0644\u062f\u064a\u0647",have:"\u0644\u062f\u064a",then:"\u062b\u0645",else:"\u0648\u0625\u0644\u0627",otherwise:"\u062e\u0644\u0627\u0641 \u0630\u0644\u0643",end:"\u0627\u0644\u0646\u0647\u0627\u064a\u0629",live:"\u062d\u064a",bind:"\u0627\u0631\u0628\u0637",changes:"\u064a\u062a\u063a\u064a\u0631"},temporal:{seconds:"\u062b\u0648\u0627\u0646\u0650",second:"\u062b\u0627\u0646\u064a\u0629",milliseconds:"\u0645\u064a\u0644\u064a \u062b\u0627\u0646\u064a\u0629",millisecond:"\u0645\u064a\u0644\u064a \u062b\u0627\u0646\u064a\u0629",minutes:"\u062f\u0642\u0627\u0626\u0642",minute:"\u062f\u0642\u064a\u0642\u0629",hours:"\u0633\u0627\u0639\u0627\u062a",hour:"\u0633\u0627\u0639\u0629",ms:"\u0645.\u062b",s:"\u062b",min:"\u062f",h:"\u0633"},values:{true:"\u0635\u062d\u064a\u062d",false:"\u062e\u0637\u0623",null:"\u0641\u0627\u0631\u063a",undefined:"\u063a\u064a\u0631 \u0645\u0639\u0631\u0641",it:"\u0647\u0648",its:"\u0644\u0647",me:"\u0623\u0646\u0627",my:"\u0644\u064a",myself:"\u0646\u0641\u0633\u064a",you:"\u0623\u0646\u062a",your:"\u0644\u0643",yourself:"\u0646\u0641\u0633\u0643",element:"\u0639\u0646\u0635\u0631",target:"\u0647\u062f\u0641",detail:"\u062a\u0641\u0627\u0635\u064a\u0644",event:"\u062d\u062f\u062b",window:"\u0646\u0627\u0641\u0630\u0629",document:"\u0648\u062b\u064a\u0642\u0629",body:"\u062c\u0633\u0645",result:"\u0646\u062a\u064a\u062c\u0629",value:"\u0642\u064a\u0645\u0629"},attributes:{class:"\u0641\u0626\u0629",classes:"\u0641\u0626\u0627\u062a",style:"\u0623\u0633\u0644\u0648\u0628",styles:"\u0623\u0633\u0627\u0644\u064a\u0628",attribute:"\u062e\u0627\u0635\u064a\u0629",attributes:"\u062e\u0635\u0627\u0626\u0635",property:"\u062e\u0627\u0635\u064a\u0629",properties:"\u062e\u0635\u0627\u0626\u0635"},expressions:{characters:"\u062d\u0631\u0648\u0641",inclusive:"\u0634\u0627\u0645\u0644",exclusive:"\u062d\u0635\u0631\u064a",first:"\u0623\u0648\u0644",last:"\u0622\u062e\u0631",next:"\u0627\u0644\u062a\u0627\u0644\u064a",previous:"\u0627\u0644\u0633\u0627\u0628\u0642",prev:"\u0633\u0627\u0628\u0642",at:"\u0639\u0646\u062f",random:"\u0639\u0634\u0648\u0627\u0626\u064a",closest:"\u0627\u0644\u0623\u0642\u0631\u0628",parent:"\u0648\u0627\u0644\u062f",children:"\u0623\u0637\u0641\u0627\u0644",within:"\u062f\u0627\u062e\u0644",no:"\u0644\u0627 \u064a\u0648\u062c\u062f",empty:"\u0641\u0627\u0631\u063a",some:"\u0628\u0639\u0636","starts with":"\u064a\u0628\u062f\u0623 \u0628\u0640","ends with":"\u064a\u0646\u062a\u0647\u064a \u0628\u0640","ignoring case":"\u0645\u0639 \u062a\u062c\u0627\u0647\u0644 \u0627\u0644\u062d\u0627\u0644\u0629","sorted by":"\u0645\u0631\u062a\u0628 \u062d\u0633\u0628","mapped to":"\u0645\u062d\u0648\u0644 \u0625\u0644\u0649","split by":"\u0645\u0642\u0633\u0645 \u0628\u0648\u0627\u0633\u0637\u0629","joined by":"\u0645\u062f\u0645\u0648\u062c \u0628\u0648\u0627\u0633\u0637\u0629"}},Cl=pl(xl,"ar",{allowEnglishFallback:!0}),Sl={commands:{on:"\uc5d0",tell:"\ub9d0\ud558\ub2e4",trigger:"\ud2b8\ub9ac\uac70",send:"\ubcf4\ub0b4\ub2e4",take:"\uac00\uc838\uc624\ub2e4",put:"\ub123\ub2e4",set:"\uc124\uc815",get:"\uc5bb\ub2e4",add:"\ucd94\uac00",remove:"\uc81c\uac70",toggle:"\ud1a0\uae00",hide:"\uc228\uae30\ub2e4",show:"\ubcf4\uc774\ub2e4",if:"\ub9cc\uc57d",unless:"\uc544\ub2c8\ub77c\uba74",repeat:"\ubc18\ubcf5",for:"\uac01\uac01",while:"\ub3d9\uc548",until:"\uae4c\uc9c0",continue:"\uacc4\uc18d",break:"\uc911\ub2e8",halt:"\uc815\uc9c0",wait:"\ub300\uae30",fetch:"\uac00\uc838\uc624\uae30",call:"\ud638\ucd9c",return:"\ubc18\ud658",make:"\ub9cc\ub4e4\ub2e4",log:"\ub85c\uadf8",throw:"\ub358\uc9c0\ub2e4",catch:"\uc7a1\ub2e4",measure:"\uce21\uc815",transition:"\uc804\ud658",increment:"\uc99d\uac00",decrement:"\uac10\uc18c",default:"\uae30\ubcf8\uac12",go:"\uc774\ub3d9",pushUrl:"URL\ud478\uc2dc",replaceUrl:"URL\uad50\uccb4",copy:"\ubcf5\uc0ac",pick:"\uc120\ud0dd",beep:"\ube44\ud504",js:"JS\uc2e4\ud589",async:"\ube44\ub3d9\uae30",render:"\ub80c\ub354\ub9c1",swap:"\uad50\ud658",morph:"\ubcc0\ud615",settle:"\uc548\uc815",append:"\ub367\ubd99\uc774\ub2e4",exit:"\ub098\uac00\uae30",install:"\uc124\uce58",breakpoint:"\uc911\ub2e8\uc810",clear:"\uc9c0\uc6b0\uae30",close:"\ub2eb\uae30",open:"\uc5f4\uae30",select:"\uace0\ub974\uae30",clone:"\ubcf5\uc81c",prepend:"\uc55e\uc5d0\ucd94\uac00",socket:"\uc18c\ucf13"},modifiers:{to:"\uc5d0",from:"\uc5d0\uc11c",into:"\uc73c\ub85c",with:"\uc640",at:"\uc5d0",in:"\uc548\uc5d0",of:"\uc758",as:"\ub85c",by:"\uc5d0\uc758\ud574",before:"\uc804\uc5d0",after:"\ud6c4\uc5d0",over:"\uc704\uc5d0",under:"\uc544\ub798",between:"\uc0ac\uc774",through:"\ud1b5\ud574",without:"\uc5c6\uc774"},events:{click:"\ud074\ub9ad",dblclick:"\ub354\ube14\ud074\ub9ad",mousedown:"\ub9c8\uc6b0\uc2a4\ub2e4\uc6b4",mouseup:"\ub9c8\uc6b0\uc2a4\uc5c5",mouseenter:"\ub9c8\uc6b0\uc2a4\uc5d4\ud130",mouseleave:"\ub9c8\uc6b0\uc2a4\ub9ac\ube0c",mouseover:"\ub9c8\uc6b0\uc2a4\uc624\ubc84",mouseout:"\ub9c8\uc6b0\uc2a4\uc544\uc6c3",mousemove:"\ub9c8\uc6b0\uc2a4\ubb34\ube0c",keydown:"\ud0a4\ub2e4\uc6b4",keyup:"\ud0a4\uc5c5",keypress:"\ud0a4\ud504\ub808\uc2a4",focus:"\ud3ec\ucee4\uc2a4",blur:"\ube14\ub7ec",change:"\ubcc0\uacbd",input:"\uc785\ub825",submit:"\uc81c\ucd9c",reset:"\uc7ac\uc124\uc815",load:"\ub85c\ub4dc",unload:"unload",resize:"\ub9ac\uc0ac\uc774\uc988",scroll:"\uc2a4\ud06c\ub864",touchstart:"touchstart",touchend:"\ud130\uce58\uc885\ub8cc",touchmove:"touchmove",touchcancel:"\ud130\uce58\ucde8\uc18c"},logical:{when:"\ub54c",where:"\uc5b4\ub514",and:"\uadf8\ub9ac\uace0",or:"\ub610\ub294",not:"\uc544\ub2c8",is:"\uc774\ub2e4",exists:"\uc874\uc7ac",matches:"\uc77c\uce58",contains:"\ud3ec\ud568",includes:"\ud3ec\ud568\ud558\ub2e4",equals:"\uac19\ub2e4",has:"\uc788\ub2e4",have:"\uc788\ub2e4",then:"\uadf8\ub7ec\uba74",else:"\uc544\ub2c8\uba74",otherwise:"\uadf8\ub807\uc9c0\uc54a\uc73c\uba74",end:"\ub05d",live:"\ub77c\uc774\ube0c",bind:"\ubc14\uc778\ub4dc",changes:"\ubcc0\uacbd\ub418\uba74"},temporal:{seconds:"\ucd08",second:"\ucd08",milliseconds:"\ubc00\ub9ac\ucd08",millisecond:"\ubc00\ub9ac\ucd08",minutes:"\ubd84",minute:"\ubd84",hours:"\uc2dc\uac04",hour:"\uc2dc\uac04",ms:"ms",s:"\ucd08",min:"\ubd84",h:"\uc2dc"},values:{true:"\ucc38",false:"\uac70\uc9d3",null:"\ub110",undefined:"\uc815\uc758\uc548\ub428",it:"\uadf8\uac83",its:"\uadf8\uac83\uc758",me:"\ub098",my:"\ub0b4",myself:"\ub098\uc790\uc2e0",you:"\ub108",your:"\ub124",yourself:"\ub108\uc790\uc2e0",element:"\uc694\uc18c",target:"\ub300\uc0c1",detail:"\uc138\ubd80",event:"\uc774\ubca4\ud2b8",window:"\ucc3d",document:"\ubb38\uc11c",body:"\ubc14\ub514",result:"\uacb0\uacfc",value:"\uac12"},attributes:{class:"\ud074\ub798\uc2a4",classes:"\ud074\ub798\uc2a4\ub4e4",style:"\uc2a4\ud0c0\uc77c",styles:"\uc2a4\ud0c0\uc77c\ub4e4",attribute:"\uc18d\uc131",attributes:"\uc18d\uc131\ub4e4",property:"\ud504\ub85c\ud37c\ud2f0",properties:"\ud504\ub85c\ud37c\ud2f0\ub4e4"},expressions:{characters:"\ubb38\uc790",inclusive:"\ud3ec\ud568",exclusive:"\uc81c\uc678",first:"\uccab\ubc88\uc9f8",last:"\ub9c8\uc9c0\ub9c9",next:"\ub2e4\uc74c",previous:"\uc774\uc804",prev:"\uc774\uc804",at:"\uc5d0\uc11c",random:"\ubb34\uc791\uc704",closest:"\uac00\uc7a5\uac00\uae4c\uc6b4",parent:"\ubd80\ubaa8",children:"\uc790\uc2dd",within:"\uc774\ub0b4",no:"\uc5c6\uc74c",empty:"\ube44\uc5b4\uc788\ub294",some:"\uc77c\ubd80","starts with":"\ub85c\uc2dc\uc791","ends with":"\ub85c\ub05d\ub098\ub294","ignoring case":"\ub300\uc18c\ubb38\uc790_\ubb34\uc2dc","sorted by":"\ub85c_\uc815\ub82c","mapped to":"\ub85c_\ubcc0\ud658","split by":"\ub85c_\ubd84\ud560","joined by":"\ub85c_\uacb0\ud569"}},Al=pl(Sl,"ko",{allowEnglishFallback:!0}),Tl={commands:{on:"\u5f53",tell:"\u544a\u8bc9",trigger:"\u89e6\u53d1",send:"\u53d1\u9001",take:"\u62ff\u53d6",put:"\u653e\u7f6e",set:"\u8bbe\u7f6e",get:"\u83b7\u5f97",add:"\u6dfb\u52a0",remove:"\u79fb\u9664",toggle:"\u5207\u6362",hide:"\u9690\u85cf",show:"\u663e\u793a",if:"\u5982\u679c",unless:"\u9664\u975e",repeat:"\u91cd\u590d",for:"\u4e3a",while:"\u5f53",until:"\u76f4\u5230",continue:"\u7ee7\u7eed",break:"\u4e2d\u65ad",halt:"\u505c\u6b62",wait:"\u7b49\u5f85",fetch:"\u6293\u53d6",call:"\u8c03\u7528",return:"\u8fd4\u56de",make:"\u5236\u4f5c",log:"\u65e5\u5fd7",throw:"\u629b\u51fa",catch:"\u6355\u83b7",measure:"\u6d4b\u91cf",transition:"\u8fc7\u6e21",increment:"\u589e\u52a0",decrement:"\u51cf\u5c11",default:"\u9ed8\u8ba4",go:"\u524d\u5f80",pushUrl:"\u63a8\u9001\u7f51\u5740",replaceUrl:"\u66ff\u6362\u7f51\u5740",copy:"\u590d\u5236",pick:"\u9009\u53d6",beep:"\u8702\u9e23",js:"JS\u6267\u884c",async:"\u5f02\u6b65",render:"\u6e32\u67d3",swap:"\u4ea4\u6362",morph:"\u53d8\u5f62",settle:"\u7a33\u5b9a",append:"\u8ffd\u52a0",exit:"\u9000\u51fa",install:"\u5b89\u88c5",breakpoint:"\u65ad\u70b9",clear:"\u6e05\u9664",close:"\u5173\u95ed",open:"\u6253\u5f00",select:"\u9009\u62e9",clone:"\u514b\u9686",prepend:"\u524d\u7f6e"},modifiers:{to:"\u5230",from:"\u4ece",into:"\u8fdb\u5165",with:"\u4e0e",at:"\u5728",in:"\u5728",of:"\u7684",as:"\u4f5c\u4e3a",by:"\u901a\u8fc7",before:"\u4e4b\u524d",after:"\u4e4b\u540e",over:"\u5728\u4e0a",under:"\u5728\u4e0b",between:"\u4e4b\u95f4",through:"\u901a\u8fc7",without:"\u6ca1\u6709"},events:{click:"\u70b9\u51fb",dblclick:"\u53cc\u51fb",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"\u9f20\u6807\u79fb\u5165",mouseout:"\u9f20\u6807\u79fb\u51fa",mousemove:"\u9f20\u6807\u79fb\u52a8",keydown:"\u6309\u952e\u6309\u4e0b",keyup:"\u677e\u952e",keypress:"keypress",focus:"\u805a\u7126",blur:"\u5931\u7126",change:"\u6539\u53d8",input:"\u8f93\u5165",submit:"\u63d0\u4ea4",reset:"\u91cd\u7f6e",load:"\u52a0\u8f7d",unload:"\u5378\u8f7d",resize:"\u8c03\u6574\u5927\u5c0f",scroll:"\u6eda\u52a8",touchstart:"\u89e6\u6478\u5f00\u59cb",touchend:"touchend",touchmove:"\u89e6\u6478\u79fb\u52a8",touchcancel:"touchcancel"},logical:{when:"\u5f53",where:"\u54ea\u91cc",and:"\u548c",or:"\u6216",not:"\u975e",is:"\u662f",exists:"\u5b58\u5728",matches:"\u5339\u914d",contains:"\u5305\u542b",includes:"\u5305\u62ec",equals:"\u7b49\u4e8e",has:"\u6709",have:"\u6709",then:"\u90a3\u4e48",else:"\u5426\u5219",otherwise:"\u8981\u4e0d\u7136",end:"\u7ed3\u675f",live:"\u5b9e\u65f6",bind:"\u7ed1\u5b9a",changes:"\u6539\u53d8\u65f6"},temporal:{seconds:"\u79d2",second:"\u79d2",milliseconds:"\u6beb\u79d2",millisecond:"\u6beb\u79d2",minutes:"\u5206\u949f",minute:"\u5206\u949f",hours:"\u5c0f\u65f6",hour:"\u5c0f\u65f6",ms:"\u6beb\u79d2",s:"\u79d2",min:"\u5206",h:"\u65f6"},values:{true:"\u771f",false:"\u5047",null:"\u7a7a",undefined:"\u672a\u5b9a\u4e49",it:"\u5b83",its:"\u5b83\u7684",me:"\u6211",my:"\u6211\u7684",myself:"\u6211\u81ea\u5df1",you:"\u4f60",your:"\u4f60\u7684",yourself:"\u4f60\u81ea\u5df1",element:"\u5143\u7d20",target:"\u76ee\u6807",detail:"\u8be6\u60c5",event:"\u4e8b\u4ef6",window:"\u7a97\u53e3",document:"\u6587\u6863",body:"\u4e3b\u4f53",result:"\u7ed3\u679c",value:"\u503c"},attributes:{class:"\u7c7b",classes:"\u7c7b\u522b",style:"\u6837\u5f0f",styles:"\u6837\u5f0f\u96c6",attribute:"\u5c5e\u6027",attributes:"\u5c5e\u6027\u96c6",property:"\u7279\u6027",properties:"\u7279\u6027\u96c6"},expressions:{characters:"\u5b57\u7b26",inclusive:"\u5305\u542b",exclusive:"\u6392\u9664",first:"\u7b2c\u4e00\u4e2a",last:"\u6700\u540e\u4e00\u4e2a",next:"\u4e0b\u4e00\u4e2a",previous:"\u4e0a\u4e00\u4e2a",prev:"\u4e0a\u4e2a",at:"\u5728",random:"\u968f\u673a",closest:"\u6700\u8fd1\u7684",parent:"\u7236\u7ea7",children:"\u5b50\u7ea7",within:"\u4e4b\u5185",no:"\u6ca1\u6709",empty:"\u7a7a\u7684",some:"\u4e00\u4e9b","starts with":"\u4ee5\u5f00\u5934","ends with":"\u4ee5\u7ed3\u5c3e","ignoring case":"\u5ffd\u7565\u5927\u5c0f\u5199","sorted by":"\u6309_\u6392\u5e8f","mapped to":"\u6620\u5c04\u4e3a","split by":"\u6309_\u5206\u5272","joined by":"\u7528_\u8fde\u63a5"}},Ol=pl(Tl,"zh",{allowEnglishFallback:!0}),Ll={commands:{on:"\u00fczerinde",tell:"s\u00f6yle",trigger:"tetikle",send:"g\u00f6nder",take:"tut",put:"koy",set:"ayarla",get:"al",add:"ekle",remove:"kald\u0131r",toggle:"de\u011fi\u015ftir",hide:"gizle",show:"g\u00f6ster",if:"e\u011fer",unless:"de\u011filse",repeat:"tekrarla",for:"i\u00e7in",while:"s\u00fcresince",until:"kadar",continue:"devam",break:"dur",halt:"durdur",wait:"bekle",fetch:"getir",call:"\u00e7a\u011f\u0131r",return:"d\u00f6n",make:"yap",log:"kaydet",throw:"f\u0131rlat",catch:"yakala",measure:"\u00f6l\u00e7",transition:"ge\u00e7i\u015f",increment:"art\u0131r",decrement:"azalt",default:"varsay\u0131lan",go:"git",pushUrl:"urlEkle",replaceUrl:"urlDe\u011fi\u015ftir",copy:"kopyala",pick:"se\u00e7",beep:"bip",js:"js",async:"asenkron",render:"render",swap:"takas",morph:"d\u00f6n\u00fc\u015ft\u00fcr",settle:"sabitlen",append:"ili\u015ftir",exit:"\u00e7\u0131k",install:"kur",breakpoint:"kesme-noktas\u0131",clear:"temizle",close:"kapat",open:"a\u00e7",select:"vurgula",clone:"klonla",prepend:"ba\u015f\u0131naekle",socket:"soket"},modifiers:{to:"e",from:"den",into:"i\u00e7ine",with:"ile",at:"de",in:"i\u00e7inde",of:"nin",as:"olarak",by:"taraf\u0131ndan",before:"\u00f6nce",after:"sonra",over:"\u00fczerinde",under:"alt\u0131nda",between:"aras\u0131nda",through:"boyunca",without:"olmadan"},events:{click:"t\u0131klama",dblclick:"dblclick",mousedown:"farebas",mouseup:"fareb\u0131rak",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"farei\u00e7inde",mouseout:"fared\u0131\u015f\u0131nda",mousemove:"mousemove",keydown:"tu\u015fbasma",keyup:"tu\u015fb\u0131rakma",keypress:"keypress",focus:"odak",blur:"bulan\u0131k",change:"de\u011fi\u015fim",input:"giri\u015f",submit:"g\u00f6nderme",reset:"s\u0131f\u0131rla",load:"y\u00fckle",unload:"unload",resize:"boyutland\u0131rma",scroll:"kayd\u0131r",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel"},logical:{when:"iken",where:"nerede",and:"ve",or:"veya",not:"de\u011fil",is:"dir",exists:"var",matches:"e\u015fle\u015fir",contains:"i\u00e7erir",includes:"dahil",equals:"e\u015fittir",has:"var",have:"var",then:"ard\u0131ndan",else:"yoksa",otherwise:"aksi_halde",end:"son",live:"canl\u0131",changes:"de\u011fi\u015fti\u011finde"},temporal:{seconds:"saniye",second:"saniye",milliseconds:"milisaniye",millisecond:"milisaniye",minutes:"dakika",minute:"dakika",hours:"saat",hour:"saat",ms:"ms",s:"s",min:"dk",h:"sa"},values:{true:"do\u011fru",false:"yanl\u0131\u015f",null:"bo\u015f",undefined:"tan\u0131ms\u0131z",it:"o",its:"onun",me:"ben",my:"benim",myself:"kendim",you:"sen",your:"senin",yourself:"kendin",element:"\u00f6\u011fe",target:"hedef",detail:"detay",event:"olay",window:"pencere",document:"belge",body:"g\u00f6vde",result:"sonu\u00e7",value:"de\u011fer"},attributes:{class:"s\u0131n\u0131f",classes:"s\u0131n\u0131flar",style:"stil",styles:"stiller",attribute:"\u00f6zellik",attributes:"\u00f6zellikler",property:"\u00f6zellik",properties:"\u00f6zellikler"},expressions:{characters:"karakterler",inclusive:"dahil",exclusive:"hari\u00e7",first:"ilk",last:"sonuncu",next:"sonraki",previous:"\u00f6nceki",prev:"\u00f6nc",at:"de",random:"rastgele",closest:"enyak\u0131n",parent:"ebeveyn",children:"\u00e7ocuklar",within:"i\u00e7inde",no:"yok",empty:"bo\u015f",some:"baz\u0131","starts with":"ile ba\u015flar","ends with":"ile biter","ignoring case":"b\u00fcy\u00fck k\u00fc\u00e7\u00fck harf duyars\u0131z","sorted by":"g\u00f6re s\u0131ral\u0131","mapped to":"ye d\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f","split by":"ile b\u00f6l\u00fcnm\u00fc\u015f","joined by":"ile birle\u015ftirilmi\u015f"}},Pl=pl(Ll,"tr",{allowEnglishFallback:!0}),jl={commands:{on:"pada",tell:"katakan",trigger:"picu",send:"kirim",take:"ambil",put:"taruh",set:"atur",get:"dapatkan",add:"tambah",remove:"hapus",toggle:"alihkan",hide:"sembunyikan",show:"tampilkan",if:"jika",unless:"kecuali",repeat:"ulangi",for:"untuk",while:"selama",until:"sampai",continue:"lanjutkan",break:"hentikan",halt:"berhenti",wait:"tunggu",fetch:"muat",call:"panggil",return:"kembali",make:"buat",log:"catat",throw:"lempar",catch:"tangkap",measure:"ukur",transition:"transisi",increment:"naikkan",decrement:"kurangi",default:"bawaan",go:"pergi",pushUrl:"tambahUrl",replaceUrl:"gantiUrl",copy:"salin",pick:"pilih",beep:"bunyi",js:"js",async:"asinkron",render:"olah",swap:"tukar",morph:"ubah",settle:"stabilkan",append:"sisipkan",exit:"keluar",install:"pasang",breakpoint:"titik-henti",clear:"bersihkan",close:"tutupkan",open:"buka",select:"tandai",clone:"klon",prepend:"awali"},modifiers:{to:"ke",from:"dari",into:"ke_dalam",with:"dengan",at:"di",in:"dalam",of:"dari",as:"sebagai",by:"oleh",before:"sebelum",after:"setelah",over:"di_atas",under:"di_bawah",between:"antara",through:"melalui",without:"tanpa"},events:{click:"klik",dblclick:"dblclick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"arahkan",mouseout:"tinggalkan",mousemove:"mousemove",keydown:"tekan_tombol",keyup:"keyup",keypress:"keypress",focus:"fokus",blur:"blur",change:"ubah",input:"masukan",submit:"kirim",reset:"reset",load:"muat",unload:"bongkar",resize:"ubah_ukuran",scroll:"gulir",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel"},logical:{when:"ketika",where:"di_mana",and:"dan",or:"atau",not:"bukan",is:"adalah",exists:"ada",matches:"cocok",contains:"berisi",includes:"termasuk",equals:"sama",has:"punya",have:"punya",then:"lalu",else:"lainnya",otherwise:"sebaliknya",end:"akhir",live:"langsung",changes:"berubah"},temporal:{seconds:"detik",second:"detik",milliseconds:"milidetik",millisecond:"milidetik",minutes:"menit",minute:"menit",hours:"jam",hour:"jam",ms:"ms",s:"d",min:"mnt",h:"j"},values:{true:"benar",false:"salah",null:"kosong",undefined:"tidak_terdefinisi",it:"itu",its:"miliknya",me:"saya",my:"saya punya",myself:"saya sendiri",you:"kamu",your:"kamu punya",yourself:"kamu sendiri",element:"elemen",target:"target",detail:"detail",event:"peristiwa",window:"jendela",document:"dokumen",body:"badan",result:"hasil",value:"nilai"},attributes:{class:"kelas",classes:"kelas_kelas",style:"gaya",styles:"gaya_gaya",attribute:"atribut",attributes:"atribut_atribut",property:"properti",properties:"properti_properti"},expressions:{characters:"karakter",inclusive:"inklusif",exclusive:"eksklusif",first:"pertama",last:"terakhir",next:"berikutnya",previous:"sebelumnya",prev:"sblm",at:"di",random:"acak",closest:"terdekat",parent:"induk",children:"anak_anak",within:"dalam",no:"tidak_ada",empty:"kosong",some:"beberapa","starts with":"dimulai dengan","ends with":"diakhiri dengan","ignoring case":"abaikan kapital","sorted by":"diurutkan berdasarkan","mapped to":"dipetakan ke","split by":"dipisah oleh","joined by":"digabung oleh"}},Nl=pl(jl,"id",{allowEnglishFallback:!0}),Il={commands:{on:"kaqpi",tell:"niy",trigger:"kichay",send:"kachay",take:"hapiy",put:"churay",set:"churanay",get:"taripay",add:"yapay",remove:"qichuy",toggle:"tikray",hide:"pakay",show:"rikuchiy",if:"sichus",unless:"mana sichus",repeat:"kutipay",for:"sapankaq",while:"kaykamaqa",until:"hayk_akama",continue:"purichiy",break:"p_akiy",halt:"sayay",wait:"suyay",fetch:"apamuy",call:"qayay",return:"kutimuy",make:"ruray",log:"qillqakuy",throw:"wikchuy",catch:"hapsiy",measure:"tupuy",transition:"pasay",increment:"yapachiy",decrement:"pisiyachiy",default:"\u00f1awpaq_kaq",go:"riy",pushUrl:"url_tanqay",replaceUrl:"url_tikray",copy:"qillqay",pick:"akllay",beep:"waqay",js:"js",async:"mana_suyaspa",render:"rikurichiy",swap:"t'inkuy",morph:"tukunay",settle:"tiyakuy",append:"qatichiy",exit:"lluqsiy",install:"tarpuy",breakpoint:"sayachinay",clear:"pichay",close:"wichqay",open:"paskay",select:"marcay",clone:"kikinchay",prepend:"\u00f1awpachiy",socket:"tinkina"},modifiers:{to:"man",from:"manta",into:"ukupi",with:"wan",at:"pi",in:"ukupi",of:"pa",as:"hina",by:"rayku",before:"\u00f1awpaqpi",after:"qhepapi",over:"hawapi",under:"urapi",between:"chawpipi",through:"pasaspa",without:"mana"},events:{click:"\u00f1itiy",dblclick:"dblclick",mousedown:"rat\u00f1itiy",mouseup:"rathuqariy",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"mouseover",mouseout:"mouseout",mousemove:"mousemove",keydown:"llave uray",keyup:"llave hawa",keypress:"keypress",focus:"qhaway",blur:"paqariy",change:"kambiay",input:"yaykuchiy",submit:"apaykachay",reset:"musuqchay",load:"apakuy",unload:"unload",resize:"hatun_kay",scroll:"kunray",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel"},logical:{when:"maykama",where:"maypi",and:"chaymanta",or:"utaq",not:"mana",is:"kanqa",exists:"tiyan",matches:"tupan",contains:"ukupi_kan",includes:"churasqa",equals:"kikin",has:"kachkan",have:"kachkani",then:"chayqa",else:"manachus",otherwise:"huk_kaqpi",end:"tukuy",live:"kawsay",changes:"tukurikun"},temporal:{seconds:"sikundukuna",second:"sikundu",milliseconds:"iskay_paqta_sikundukuna",millisecond:"iskay_paqta_sikundu",minutes:"minutukuna",minute:"minutu",hours:"horakuna",hour:"hora",ms:"ms",s:"s",min:"m",h:"h"},values:{true:"cheqaq",false:"llulla",null:"chusaq",undefined:"mana_riqsisqa",it:"chay",its:"chaypaq",me:"noqa",my:"noqaq",myself:"noqa killa",you:"qam",your:"qampaq",yourself:"qam killa",element:"raku",target:"punta",detail:"sut_iy",event:"ruway",window:"k_iri",document:"qillqa",body:"kurku",result:"lluqsiy",value:"chanin"},attributes:{class:"ayllu",classes:"ayllukuna",style:"sami",styles:"samikuna",attribute:"kaq",attributes:"kaqkuna",property:"kanay",properties:"kanaykuna"},expressions:{characters:"sanampa",first:"\u00f1awpaq",last:"qhipa",next:"qhipantin",previous:"\u00f1awpaqnin",prev:"\u00f1awpaq",at:"pi",random:"imaymanata",closest:"kaylla",parent:"mama_tayta",children:"wawakuna",within:"ukupi",no:"mana_kanchu",empty:"chusaq",some:"wakin","starts with":"qallarisqa wan","ends with":"tukusqa wan","ignoring case":"hatun-huchuy qillqata-saqiy","sorted by":"niqpi ruwasqa","mapped to":"kay kaqman","split by":"rakisqa","joined by":"hu\u00f1usqa"}},Rl=pl(Il,"qu",{allowEnglishFallback:!0}),ql={commands:{on:"kwenye",tell:"ambia",trigger:"chochea",send:"tuma",take:"chukua",put:"weka",set:"seti",get:"pata",add:"ongeza",remove:"ondoa",toggle:"badilisha",blur:"blur",hide:"ficha",show:"onyesha",if:"kama",unless:"isipokuwa",repeat:"rudia",for:"kwa",while:"wakati",until:"hadi",continue:"endelea",break:"vunja",halt:"simama",wait:"ngoja",fetch:"leta",call:"ita",return:"rudisha",make:"tengeneza",log:"andika",throw:"tupa",catch:"shika",measure:"pima",transition:"mpito",increment:"ongezeko",decrement:"punguza",default:"msingi",go:"nenda",pushUrl:"sukumaUrl",replaceUrl:"badilishaUrl",copy:"nakala",pick:"chagua",beep:"lia",js:"js",async:"sainkroni",render:"chora",swap:"badilishana",morph:"geuza",settle:"tulia",append:"ambatanisha",exit:"toka",install:"sakinisha",breakpoint:"nukta-simama",clear:"safisha",close:"funga",open:"fungua",select:"alama",clone:"nakili",prepend:"tanguliza",focus:"lenga",socket:"soketi"},modifiers:{to:"kwa",from:"kutoka",into:"ndani",with:"na",at:"katika",in:"ndani",of:"ya",as:"kuwa",by:"na",before:"kabla",after:"baada",over:"juu",under:"chini",between:"kati",through:"kupitia",without:"bila"},events:{click:"bonyeza",dblclick:"dblclick",mousedown:"panya_shuka",mouseup:"panya_juu",mouseenter:"panya_ingia",mouseleave:"panya_toka",mouseover:"sogeza juu",mouseout:"panya_nje",mousemove:"panya_sogea",keydown:"kitufe_shuka",keyup:"kitufe_juu",keypress:"keypress",focus:"lenga",blur:"blur",change:"kubadilisha",input:"ingizo",submit:"wasilisha",reset:"reset",load:"pakia",unload:"shuka",resize:"badilisha_ukubwa",scroll:"sogeza",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel"},logical:{when:"wakati",where:"wapi",and:"na",or:"au",not:"si",is:"ni",exists:"ipo",matches:"inafanana",contains:"ina",includes:"pamoja",equals:"sawa",has:"ana",have:"nina",then:"kisha",else:"sivyo",otherwise:"vinginevyo",end:"mwisho",live:"mubashara",changes:"inabadilika"},temporal:{seconds:"sekunde",second:"sekunde",milliseconds:"millisekunde",millisecond:"millisekunde",minutes:"dakika",minute:"dakika",hours:"masaa",hour:"saa",ms:"ms",s:"s",min:"dk",h:"sa"},values:{true:"kweli",false:"uongo",null:"tupu",undefined:"haijafafanuliwa",it:"hiyo",its:"yake",me:"mimi",my:"yangu",myself:"mimi mwenyewe",you:"wewe",your:"yako",yourself:"wewe mwenyewe",element:"kipengele",target:"lengo",detail:"maelezo",event:"tukio",window:"dirisha",document:"hati",body:"mwili",result:"matokeo",value:"thamani"},attributes:{class:"darasa",classes:"madarasa",style:"mtindo",styles:"mitindo",attribute:"sifa",attributes:"sifa",property:"mali",properties:"mali"},expressions:{characters:"herufi",first:"kwanza",last:"wamwisho",next:"ijayo",previous:"iliyopita",prev:"awali",at:"katika",random:"nasibu",closest:"karibu",parent:"mzazi",children:"watoto",within:"ndani_ya",no:"hakuna",empty:"tupu",some:"baadhi","starts with":"huanza na","ends with":"huisha na","ignoring case":"puuza herufi kubwa ndogo","sorted by":"kupangwa kwa","mapped to":"kubadilishwa kuwa","split by":"kugawanywa kwa","joined by":"kuunganishwa kwa"}},Ml=pl(ql,"sw",{allowEnglishFallback:!0}),_l={commands:{on:"em",tell:"dizer",trigger:"disparar",send:"enviar",take:"pegar",put:"colocar",set:"definir",get:"obter",add:"adicionar",remove:"remover",toggle:"alternar",blur:"desfocar",hide:"esconder",show:"mostrar",if:"se",unless:"salvo",repeat:"repetir",for:"para",while:"enquanto",until:"at\u00e9",continue:"continuar",break:"interromper",halt:"parar",wait:"esperar",fetch:"buscar",call:"chamar",return:"retornar",make:"fazer",log:"registrar",throw:"lan\u00e7ar",catch:"capturar",measure:"medir",transition:"transi\u00e7\u00e3o",increment:"incrementar",decrement:"decrementar",default:"padr\u00e3o",go:"ir",pushUrl:"pushUrl",replaceUrl:"substituirUrl",copy:"copiar",pick:"escolher",beep:"apitar",js:"js",async:"ass\u00edncrono",render:"renderizar",swap:"trocar",morph:"transformar",settle:"estabilizar",append:"anexar",exit:"sair",install:"instalar",breakpoint:"ponto-interrup\u00e7\u00e3o",clear:"limpar",close:"fechar",open:"abrir",select:"selecionar",clone:"clonar",prepend:"preceder",focus:"focar",socket:"soquete"},modifiers:{to:"para",from:"de",into:"em",with:"com",at:"em",in:"dentro",of:"de",as:"como",by:"por",before:"antes",after:"depois",over:"sobre",under:"sob",between:"entre",through:"atrav\u00e9s",without:"sem"},events:{click:"clique",dblclick:"duploClique",mousedown:"mouseBaixo",mouseup:"mouseCima",mouseenter:"mouseEntrar",mouseleave:"mouseSair",mouseover:"mouse sobre",mouseout:"mouse fora",mousemove:"mouseMover",keydown:"tecla baixo",keyup:"tecla cima",keypress:"teclaPressionar",focus:"foco",blur:"desfoque",change:"mudan\u00e7a",input:"entrada",submit:"envio",reset:"redefinir",load:"carregar",unload:"descarregar",resize:"redimensionar",scroll:"rolar",touchstart:"toqueIn\u00edcio",touchend:"toqueFim",touchmove:"toqueMover",touchcancel:"toqueCancelar"},logical:{when:"quando",where:"onde",and:"e",or:"ou",not:"n\u00e3o",is:"\u00e9",exists:"existe",matches:"corresponde",contains:"cont\u00e9m",includes:"inclui",equals:"igual",has:"tem",have:"tenho",then:"ent\u00e3o",else:"sen\u00e3o",otherwise:"caso_contr\u00e1rio",end:"fim",live:"vivo",changes:"muda"},temporal:{seconds:"segundos",second:"segundo",milliseconds:"milissegundos",millisecond:"milissegundo",minutes:"minutos",minute:"minuto",hours:"horas",hour:"hora",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"verdadeiro",false:"falso",null:"nulo",undefined:"indefinido",it:"isso",its:"seu",me:"eu",my:"meu",myself:"eu mesmo",you:"voc\u00ea",your:"seu",yourself:"voc\u00ea mesmo",element:"elemento",target:"alvo",detail:"detalhe",event:"evento",window:"janela",document:"documento",body:"corpo",result:"resultado",value:"valor"},attributes:{class:"classe",classes:"classes",style:"estilo",styles:"estilos",attribute:"atributo",attributes:"atributos",property:"propriedade",properties:"propriedades"},expressions:{characters:"caracteres",inclusive:"inclusivo",exclusive:"exclusivo",first:"primeiro",last:"\u00faltimo",next:"pr\u00f3ximo",previous:"anterior",prev:"ant",at:"em",random:"aleat\u00f3rio",closest:"maispr\u00f3ximo",parent:"pai",children:"filhos",within:"dentro",no:"nenhum",empty:"vazio",some:"algum","starts with":"come\u00e7a com","ends with":"termina com","ignoring case":"ignorando mai\u00fasculas","sorted by":"ordenado por","mapped to":"mapeado para","split by":"dividido por","joined by":"unido por"}},$l=pl(_l,"pt",{allowEnglishFallback:!0}),Vl={commands:{on:"su",tell:"dire",trigger:"scatenare",send:"inviare",take:"prendere",put:"mettere",set:"impostare",get:"ottenere",add:"aggiungere",remove:"rimuovere",toggle:"commutare",hide:"nascondere",show:"mostrare",if:"se",unless:"salvo",repeat:"ripetere",for:"per",while:"mentre",until:"fino",continue:"continuare",break:"interrompere",halt:"fermare",wait:"aspettare",fetch:"recuperare",call:"chiamare",return:"ritornare",make:"fare",log:"registrare",throw:"lanciare",catch:"catturare",measure:"misurare",transition:"transizione",increment:"incrementare",decrement:"decrementare",default:"predefinito",go:"andare",pushUrl:"pushUrl",replaceUrl:"sostituireUrl",copy:"copiare",pick:"scegliere",beep:"beep",js:"js",async:"asincrono",render:"renderizzare",swap:"scambiare",morph:"trasformare",settle:"stabilizzare",append:"accodare",exit:"uscire",install:"installare",breakpoint:"punto-interruzione",clear:"cancellare",close:"chiudere",open:"aprire",select:"selezionare",clone:"clonare",prepend:"anteporre",focus:"focalizzare"},modifiers:{to:"a",from:"da",into:"in",with:"con",at:"a",in:"in",of:"di",as:"come",by:"per",before:"prima",after:"dopo",over:"sopra",under:"sotto",between:"tra",through:"attraverso",without:"senza"},events:{click:"clic",dblclick:"doppioclic",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseentra",mouseleave:"mouseesce",mouseover:"mousesopra",mouseout:"mousefuori",mousemove:"mousemuovi",keydown:"tastogi\u00f9",keyup:"tastosu",keypress:"tastopremi",focus:"fuoco",blur:"sfuocare",change:"cambio",input:"input",submit:"invio",reset:"reimpostare",load:"carica",unload:"scarica",resize:"ridimensiona",scroll:"scorrimento",touchstart:"toccoinizia",touchend:"toccofine",touchmove:"toccomuovi",touchcancel:"toccoannulla"},logical:{when:"quando",where:"dove",and:"e",or:"o",not:"non",is:"\u00e8",exists:"esiste",matches:"corrisponde",contains:"contiene",includes:"include",equals:"uguale",has:"ha",have:"ho",then:"allora",else:"altrimenti",otherwise:"altrimenti",end:"fine",live:"vivo",changes:"cambia"},temporal:{seconds:"secondi",second:"secondo",milliseconds:"millisecondi",millisecond:"millisecondo",minutes:"minuti",minute:"minuto",hours:"ore",hour:"ora",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"vero",false:"falso",null:"nullo",undefined:"indefinito",it:"esso",its:"suo",me:"io",my:"mio",you:"tu",your:"tuo",yourself:"te stesso",myself:"me stesso",element:"elemento",target:"obiettivo",detail:"dettaglio",event:"evento",window:"finestra",document:"documento",body:"corpo",result:"risultato",value:"valore"},attributes:{class:"classe",classes:"classi",style:"stile",styles:"stili",attribute:"attributo",attributes:"attributi",property:"propriet\u00e0",properties:"propriet\u00e0"},expressions:{characters:"caratteri",inclusive:"inclusivo",exclusive:"esclusivo",first:"primo",last:"ultimo",next:"prossimo",previous:"precedente",prev:"prec",at:"a",random:"casuale",closest:"vicino",parent:"genitore",children:"figli",within:"dentro",no:"nessun",empty:"vuoto",some:"qualche","starts with":"inizia con","ends with":"finisce con","ignoring case":"ignorando maiuscole","sorted by":"ordinato per","mapped to":"trasformato in","split by":"diviso per","joined by":"unito per"}};pl(Vl,"it",{allowEnglishFallback:!0});var Dl={commands:{on:"khi",tell:"n\u00f3i v\u1edbi",trigger:"k\u00edch ho\u1ea1t",send:"g\u1eedi",take:"l\u1ea5y",put:"\u0111\u1eb7t",set:"g\u00e1n",get:"l\u1ea5y gi\u00e1 tr\u1ecb",add:"th\u00eam",remove:"x\u00f3a",toggle:"chuy\u1ec3n \u0111\u1ed5i",hide:"\u1ea9n",show:"hi\u1ec3n th\u1ecb",if:"n\u1ebfu",unless:"tr\u1eeb khi",repeat:"l\u1eb7p l\u1ea1i",for:"v\u1edbi m\u1ed7i",while:"trong khi",until:"cho \u0111\u1ebfn khi",continue:"ti\u1ebfp t\u1ee5c",break:"d\u1eebng",halt:"d\u1eebng l\u1ea1i",wait:"ch\u1edd",fetch:"t\u1ea3i",call:"g\u1ecdi",return:"tr\u1ea3 v\u1ec1",make:"t\u1ea1o",log:"in ra",throw:"n\u00e9m",catch:"b\u1eaft",measure:"\u0111o l\u01b0\u1eddng",transition:"chuy\u1ec3n ti\u1ebfp",increment:"t\u0103ng",decrement:"gi\u1ea3m",default:"m\u1eb7c \u0111\u1ecbnh",go:"\u0111i \u0111\u1ebfn",pushUrl:"pushUrl",replaceUrl:"thayTh\u1ebfUrl",copy:"sao ch\u00e9p",pick:"ch\u1ecdn",beep:"beep",js:"js",async:"b\u1ea5t \u0111\u1ed3ng b\u1ed9",render:"k\u1ebft xu\u1ea5t",swap:"ho\u00e1n \u0111\u1ed5i",morph:"bi\u1ebfn \u0111\u1ed5i",settle:"\u1ed5n \u0111\u1ecbnh",append:"n\u1ed1i",exit:"tho\u00e1t",focus:"t\u1eadp trung",blur:"m\u1ea5t t\u1eadp trung",init:"kh\u1edfi t\u1ea1o",behavior:"h\u00e0nh vi",install:"c\u00e0i \u0111\u1eb7t",clone:"nh\u00e2n b\u1ea3n",prepend:"th\u00eam v\u00e0o \u0111\u1ea7u",else:"kh\u00f4ng th\u00ec",breakpoint:"\u0111i\u1ec3m-d\u1eebng",clear:"t\u1ea9y",close:"\u0111\u00f3ng",open:"m\u1edf",select:"\u0111\u00e1nh-d\u1ea5u"},modifiers:{into:"v\u00e0o",before:"tr\u01b0\u1edbc",after:"sau",then:"r\u1ed3i",end:"k\u1ebft th\u00fac",from:"t\u1eeb",to:"\u0111\u1ebfn",with:"v\u1edbi",as:"nh\u01b0",by:"b\u1edfi",on:"tr\u00ean",in:"trong",at:"t\u1ea1i",of:"c\u1ee7a",between:"gi\u1eefa",the:"",times:"l\u1ea7n"},events:{click:"nh\u1ea5p",dblclick:"dblclick",input:"nh\u1eadp",change:"change",submit:"n\u1ed9p",keydown:"keydown",keyup:"keyup",keypress:"keypress",mouseover:"mouseover",mouseout:"mouseout",mouseenter:"mouseenter",mouseleave:"mouseleave",focus:"focus",blur:"blur",reset:"reset",load:"load",scroll:"cu\u1ed9n",resize:"\u0111\u1ed5i k\u00edch th\u01b0\u1edbc"},logical:{when:"khi",where:"\u1edf_\u0111\u00e2u",and:"v\u00e0",or:"ho\u1eb7c",not:"kh\u00f4ng",is:"l\u00e0",equals:"b\u1eb1ng",contains:"ch\u1ee9a",matches:"kh\u1edbp",exists:"t\u1ed3n t\u1ea1i",has:"c\u00f3",have:"c\u00f3",empty:"tr\u1ed1ng",true:"\u0111\u00fang",false:"sai",null:"r\u1ed7ng",else:"kh\u00f4ng th\u00ec",end:"k\u1ebft th\u00fac",then:"r\u1ed3i",live:"live",changes:"thay \u0111\u1ed5i"},temporal:{now:"b\u00e2y gi\u1edd",today:"h\u00f4m nay",tomorrow:"ng\u00e0y mai",yesterday:"h\u00f4m qua",always:"lu\u00f4n lu\u00f4n",never:"kh\u00f4ng bao gi\u1edd",sometimes:"\u0111\u00f4i khi",once:"m\u1ed9t l\u1ea7n",twice:"hai l\u1ea7n",forever:"m\u00e3i m\u00e3i"},values:{true:"\u0111\u00fang",false:"sai",null:"r\u1ed7ng",undefined:"kh\u00f4ng x\u00e1c \u0111\u1ecbnh",none:"kh\u00f4ng c\u00f3",all:"t\u1ea5t c\u1ea3",any:"b\u1ea5t k\u1ef3",some:"m\u1ed9t s\u1ed1",each:"m\u1ed7i",every:"t\u1ea5t c\u1ea3",body:"body",event:"s\u1ef1 ki\u1ec7n",it:"n\u00f3",its:"c\u1ee7a n\u00f3",me:"t\u00f4i",my:"c\u1ee7a t\u00f4i",result:"k\u1ebft qu\u1ea3",target:"m\u1ee5c ti\u00eau",you:"b\u1ea1n",your:"c\u1ee7a b\u1ea1n"},attributes:{id:"id",class:"l\u1edbp",style:"ki\u1ec3u",value:"gi\u00e1 tr\u1ecb",text:"v\u0103n b\u1ea3n",html:"html",src:"ngu\u1ed3n",href:"li\u00ean k\u1ebft",disabled:"v\u00f4 hi\u1ec7u",hidden:"\u1ea9n",checked:"\u0111\u01b0\u1ee3c ch\u1ecdn",selected:"\u0111\u01b0\u1ee3c ch\u1ecdn"},expressions:{random:"ng\u1eabu nhi\u00ean",characters:"k\u00fd t\u1ef1",inclusive:"bao g\u1ed3m",exclusive:"lo\u1ea1i tr\u1eeb",me:"t\u00f4i",my:"c\u1ee7a t\u00f4i",it:"n\u00f3",its:"c\u1ee7a n\u00f3",result:"k\u1ebft qu\u1ea3",event:"s\u1ef1 ki\u1ec7n",target:"m\u1ee5c ti\u00eau",first:"\u0111\u1ea7u ti\u00ean",last:"cu\u1ed1i c\u00f9ng",next:"ti\u1ebfp theo",previous:"tr\u01b0\u1edbc \u0111\u00f3",parent:"cha",children:"con",closest:"g\u1ea7n nh\u1ea5t",empty:"l\u00e0m-r\u1ed7ng","starts with":"b\u1eaft \u0111\u1ea7u b\u1eb1ng","ends with":"k\u1ebft th\u00fac b\u1eb1ng","ignoring case":"kh\u00f4ng ph\u00e2n bi\u1ec7t hoa th\u01b0\u1eddng","sorted by":"s\u1eafp x\u1ebfp theo","mapped to":"\u00e1nh x\u1ea1 th\u00e0nh","split by":"t\u00e1ch b\u1edfi","joined by":"n\u1ed1i b\u1edfi"}};pl(Dl,"vi",{allowEnglishFallback:!0});var zl={commands:{on:"gdy",tell:"powiedz",trigger:"wyzw\u00f3l",send:"wy\u015blij",take:"we\u017a",put:"umie\u015b\u0107",set:"ustaw",get:"uzyskaj",add:"dodaj",remove:"usu\u0144",toggle:"prze\u0142\u0105cz",blur:"rozmyj",hide:"ukryj",show:"poka\u017c",if:"je\u015bli",unless:"chyba",repeat:"powt\u00f3rz",for:"dla",while:"dop\u00f3ki",until:"a\u017c",continue:"kontynuuj",break:"przerwij",halt:"zatrzymaj",wait:"czekaj",fetch:"pobierz",call:"wywo\u0142aj",return:"zwr\u00f3\u0107",make:"utw\u00f3rz",log:"loguj",throw:"rzu\u0107",catch:"z\u0142ap",measure:"zmierz",transition:"animuj",increment:"zwi\u0119ksz",decrement:"zmniejsz",default:"domy\u015blnie",go:"id\u017a",pushUrl:"dodajUrl",replaceUrl:"zamie\u0144Url",copy:"kopiuj",pick:"wybierz",beep:"sygna\u0142",js:"js",async:"async",render:"renderuj",swap:"zamie\u0144",morph:"przekszta\u0142\u0107",settle:"ustabilizuj",append:"do\u0142\u0105cz",exit:"wyjd\u017a",install:"zainstaluj",breakpoint:"punkt-przerwania",clear:"zeruj",close:"zamknij",open:"otw\u00f3rz",select:"zaznacz",clone:"sklonuj",prepend:"poprzed\u017a",focus:"skup"},modifiers:{to:"do",from:"z",into:"do",with:"z",at:"przy",in:"w",of:"z",as:"jako",by:"przez",before:"przed",after:"po",over:"nad",under:"pod",between:"mi\u0119dzy",through:"przez",without:"bez"},events:{click:"klikni\u0119cie",dblclick:"podw\u00f3jneklikni\u0119cie",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"myszwej\u015bcie",mouseleave:"myszwyj\u015bcie",mouseover:"mysznad",mouseout:"myszpoza",mousemove:"myszruch",keydown:"klawiszd\u00f3\u0142",keyup:"klawiszg\u00f3ra",keypress:"klawisznaci\u015bni\u0119cie",focus:"fokus",blur:"rozmycie",change:"zmiana",input:"wej\u015bcie",submit:"wys\u0142aniu",reset:"zresetuj",load:"za\u0142aduj",unload:"wy\u0142aduj",resize:"zmie\u0144rozmiar",scroll:"przewi\u0144",touchstart:"dotykstart",touchend:"dotykkoniec",touchmove:"dotykruch",touchcancel:"dotykanuluj"},logical:{when:"kiedy",where:"gdzie",and:"i",or:"lub",not:"nie",is:"jest",exists:"istnieje",matches:"pasuje",contains:"zawiera",includes:"obejmuje",equals:"r\u00f3wna si\u0119",has:"ma",have:"mam",then:"wtedy",else:"inaczej",otherwise:"wpp",end:"koniec",live:"\u017cywy",changes:"zmienia"},temporal:{seconds:"sekundy",second:"sekunda",milliseconds:"milisekundy",millisecond:"milisekunda",minutes:"minuty",minute:"minuta",hours:"godziny",hour:"godzina",ms:"ms",s:"s",min:"min",h:"godz"},values:{true:"prawda",false:"fa\u0142sz",null:"null",undefined:"niezdefiniowane",it:"to",its:"jego",me:"ja",my:"m\u00f3j",you:"ty",your:"tw\u00f3j",yourself:"ty sam",myself:"ja sam",element:"element",target:"cel",detail:"szczeg\u00f3\u0142",event:"zdarzenie",window:"okno",document:"dokument",body:"body",result:"wynik",value:"warto\u015b\u0107"},attributes:{class:"klasa",classes:"klasy",style:"styl",styles:"style",attribute:"atrybut",attributes:"atrybuty",property:"w\u0142a\u015bciwo\u015b\u0107",properties:"w\u0142a\u015bciwo\u015bci"},expressions:{characters:"znaki",inclusive:"w\u0142\u0105cznie",exclusive:"wy\u0142\u0105cznie",first:"pierwszy",last:"ostatni",next:"nast\u0119pny",previous:"poprzedni",prev:"poprz",at:"przy",random:"losowy",closest:"najbli\u017cszy",parent:"rodzic",children:"dzieci",within:"wewn\u0105trz",no:"brak",empty:"pusty",some:"jaki\u015b","starts with":"zaczyna si\u0119 od","ends with":"ko\u0144czy si\u0119 na","ignoring case":"ignoruj\u0105c wielko\u015b\u0107 liter","sorted by":"sortowane wed\u0142ug","mapped to":"przekszta\u0142cone na","split by":"podzielone przez","joined by":"po\u0142\u0105czone przez"}};pl(zl,"pl",{allowEnglishFallback:!0});var Bl={commands:{on:"\u043f\u0440\u0438",tell:"\u0441\u043a\u0430\u0437\u0430\u0442\u044c",trigger:"\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c",send:"\u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c",take:"\u0432\u0437\u044f\u0442\u044c",put:"\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c",set:"\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c",get:"\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c",add:"\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c",remove:"\u0443\u0434\u0430\u043b\u0438\u0442\u044c",toggle:"\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c",hide:"\u0441\u043a\u0440\u044b\u0442\u044c",show:"\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c",scroll:"\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c",if:"\u0435\u0441\u043b\u0438",unless:"\u043a\u0440\u043e\u043c\u0435",repeat:"\u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c",for:"\u0434\u043b\u044f",while:"\u043f\u043e\u043a\u0430",until:"\u0434\u043e",continue:"\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c",break:"\u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c",halt:"\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c",wait:"\u0436\u0434\u0430\u0442\u044c",fetch:"\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c",call:"\u0432\u044b\u0437\u0432\u0430\u0442\u044c",return:"\u0432\u0435\u0440\u043d\u0443\u0442\u044c",make:"\u0441\u043e\u0437\u0434\u0430\u0442\u044c",log:"\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c",throw:"\u0431\u0440\u043e\u0441\u0438\u0442\u044c",catch:"\u043f\u043e\u0439\u043c\u0430\u0442\u044c",measure:"\u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c",transition:"\u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c",increment:"\u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c",decrement:"\u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c",default:"\u043f\u043e_\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e",go:"\u043f\u0435\u0440\u0435\u0439\u0442\u0438",pushUrl:"\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c_url",replaceUrl:"\u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c_url",copy:"\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c",pick:"\u0432\u044b\u0431\u0440\u0430\u0442\u044c",beep:"\u0437\u0432\u0443\u043a",js:"js",async:"\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e",render:"\u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c",swap:"\u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c",morph:"\u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c",settle:"\u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c",append:"\u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c",exit:"\u0432\u044b\u0439\u0442\u0438",else:"\u0438\u043d\u0430\u0447\u0435",install:"\u0438\u043d\u0441\u0442\u0430\u043b\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c",init:"\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c",behavior:"\u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435",focus:"\u0441\u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c",blur:"\u0440\u0430\u0437\u043c\u044b\u0442\u044c",clone:"\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c",prepend:"\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c_\u0432_\u043d\u0430\u0447\u0430\u043b\u043e",breakpoint:"\u0442\u043e\u0447\u043a\u0430-\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430",clear:"\u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c",close:"\u0437\u0430\u043a\u0440\u044b\u0442\u044c",open:"\u043e\u0442\u043a\u0440\u044b\u0442\u044c",select:"\u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c"},modifiers:{to:"\u043a",from:"\u0438\u0437",into:"\u0432",with:"\u0441",at:"\u0443",in:"\u0432",of:"\u0438\u0437",as:"\u043a\u0430\u043a",by:"\u043d\u0430",before:"\u0434\u043e",after:"\u043f\u043e\u0441\u043b\u0435",over:"\u043d\u0430\u0434",under:"\u043f\u043e\u0434",between:"\u043c\u0435\u0436\u0434\u0443",through:"\u0447\u0435\u0440\u0435\u0437",without:"\u0431\u0435\u0437",on:"\u043d\u0430"},events:{click:"\u043a\u043b\u0438\u043a",dblclick:"\u0434\u0432\u043e\u0439\u043d\u043e\u0439_\u043a\u043b\u0438\u043a",mousedown:"\u043c\u044b\u0448\u044c\u0432\u043d\u0438\u0437",mouseup:"\u043c\u044b\u0448\u044c\u0432\u0432\u0435\u0440\u0445",mouseenter:"\u043c\u044b\u0448\u044c_\u0432\u0445\u043e\u0434",mouseleave:"\u043c\u044b\u0448\u044c_\u0432\u044b\u0445\u043e\u0434",mouseover:"\u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0435",mouseout:"\u0443\u0445\u043e\u0434",mousemove:"\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435_\u043c\u044b\u0448\u0438",keydown:"\u043a\u043b\u0430\u0432\u0438\u0448\u0430_\u0432\u043d\u0438\u0437",keyup:"\u043a\u043b\u0430\u0432\u0438\u0448\u0430_\u0432\u0432\u0435\u0440\u0445",keypress:"\u043d\u0430\u0436\u0430\u0442\u0438\u0435_\u043a\u043b\u0430\u0432\u0438\u0448\u0438",focus:"\u0444\u043e\u043a\u0443\u0441",blur:"\u043f\u043e\u0442\u0435\u0440\u044f_\u0444\u043e\u043a\u0443\u0441\u0430",change:"\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435",input:"\u0432\u0432\u043e\u0434",submit:"\u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430",reset:"\u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c",load:"\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430",unload:"\u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0430",resize:"\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u0440\u0430\u0437\u043c\u0435\u0440\u0430",scroll:"\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430",touchstart:"\u043a\u0430\u0441\u0430\u043d\u0438\u0435_\u043d\u0430\u0447\u0430\u043b\u043e",touchend:"\u043a\u0430\u0441\u0430\u043d\u0438\u0435_\u043a\u043e\u043d\u0435\u0446",touchmove:"\u043a\u0430\u0441\u0430\u043d\u0438\u0435_\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435",touchcancel:"\u043a\u0430\u0441\u0430\u043d\u0438\u0435_\u043e\u0442\u043c\u0435\u043d\u0430"},logical:{when:"\u043a\u043e\u0433\u0434\u0430",where:"\u0433\u0434\u0435",and:"\u0438",or:"\u0438\u043b\u0438",not:"\u043d\u0435",is:"\u0435\u0441\u0442\u044c",exists:"\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442",matches:"\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442",contains:"\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442",includes:"\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442",equals:"\u0440\u0430\u0432\u043d\u043e",then:"\u0437\u0430\u0442\u0435\u043c",else:"\u0438\u043d\u0430\u0447\u0435",otherwise:"\u0432_\u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c_\u0441\u043b\u0443\u0447\u0430\u0435",end:"\u043a\u043e\u043d\u0435\u0446",live:"\u0436\u0438\u0432\u043e\u0439",changes:"\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f",has:"\u0438\u043c\u0435\u0435\u0442",have:"\u0438\u043c\u0435\u044e",isNot:"\u043d\u0435_\u0435\u0441\u0442\u044c",empty:"\u043f\u0443\u0441\u0442\u043e\u0439"},temporal:{seconds:"\u0441\u0435\u043a\u0443\u043d\u0434",second:"\u0441\u0435\u043a\u0443\u043d\u0434\u0430",milliseconds:"\u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434",millisecond:"\u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430",minutes:"\u043c\u0438\u043d\u0443\u0442",minute:"\u043c\u0438\u043d\u0443\u0442\u0430",hours:"\u0447\u0430\u0441\u043e\u0432",hour:"\u0447\u0430\u0441",ms:"\u043c\u0441",s:"\u0441",min:"\u043c\u0438\u043d",h:"\u0447",forever:"\u0432\u0441\u0435\u0433\u0434\u0430",once:"\u043e\u0434\u043d\u0430\u0436\u0434\u044b",every:"\u043a\u0430\u0436\u0434\u044b\u0439",until:"\u0434\u043e"},values:{true:"\u0438\u0441\u0442\u0438\u043d\u0430",false:"\u043b\u043e\u0436\u044c",null:"\u043d\u0438\u0447\u0435\u0433\u043e",undefined:"\u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e",it:"\u044d\u0442\u043e",its:"\u0435\u0433\u043e",me:"\u044f",my:"\u043c\u043e\u0439",you:"\u0442\u044b",your:"\u0442\u0432\u043e\u0439",yourself:"\u0441\u0430\u043c",myself:"\u044f_\u0441\u0430\u043c",element:"\u044d\u043b\u0435\u043c\u0435\u043d\u0442",target:"\u0446\u0435\u043b\u044c",detail:"\u0434\u0435\u0442\u0430\u043b\u0438",event:"\u0441\u043e\u0431\u044b\u0442\u0438\u0435",window:"\u043e\u043a\u043d\u043e",document:"\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",body:"\u0442\u0435\u043b\u043e",result:"\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442",value:"\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435",first:"\u043f\u0435\u0440\u0432\u044b\u0439",last:"\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439",next:"\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439",previous:"\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439",closest:"\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439",parent:"\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c"},attributes:{class:"\u043a\u043b\u0430\u0441\u0441",classes:"\u043a\u043b\u0430\u0441\u0441\u044b",style:"\u0441\u0442\u0438\u043b\u044c",styles:"\u0441\u0442\u0438\u043b\u0438",attribute:"\u0430\u0442\u0440\u0438\u0431\u0443\u0442",attributes:"\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b",property:"\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e",properties:"\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430",disabled:"\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e",hidden:"\u0441\u043a\u0440\u044b\u0442\u043e",checked:"\u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e",selected:"\u0432\u044b\u0431\u0440\u0430\u043d\u043e",readonly:"\u0442\u043e\u043b\u044c\u043a\u043e_\u0447\u0442\u0435\u043d\u0438\u0435",required:"\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e",text:"\u0442\u0435\u043a\u0441\u0442",html:"html"},expressions:{characters:"\u0441\u0438\u043c\u0432\u043e\u043b\u044b",inclusive:"\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e",exclusive:"\u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e",first:"\u043f\u0435\u0440\u0432\u044b\u0439",last:"\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439",next:"\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439",previous:"\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439",prev:"\u043f\u0440\u0435\u0434",at:"\u0432",random:"\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439",closest:"\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439",parent:"\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c",children:"\u0434\u0435\u0442\u0438",within:"\u0432\u043d\u0443\u0442\u0440\u0438",no:"\u043d\u0435\u0442",empty:"\u043f\u0443\u0441\u0442\u043e\u0439",some:"\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435","starts with":"\u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f_\u0441","ends with":"\u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f_\u043d\u0430","ignoring case":"\u0431\u0435\u0437_\u0443\u0447\u0451\u0442\u0430_\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430","sorted by":"\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e_\u043f\u043e","mapped to":"\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043e_\u0432","split by":"\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043e_\u043f\u043e","joined by":"\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043e_\u0447\u0435\u0440\u0435\u0437"}};pl(Bl,"ru",{allowEnglishFallback:!0});var Fl={commands:{on:"\u043f\u0440\u0438",tell:"\u0441\u043a\u0430\u0437\u0430\u0442\u0438",trigger:"\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0438",send:"\u043d\u0430\u0434\u0456\u0441\u043b\u0430\u0442\u0438",take:"\u0432\u0437\u044f\u0442\u0438",put:"\u043f\u043e\u043a\u043b\u0430\u0441\u0442\u0438",set:"\u0432\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0438",get:"\u043e\u0442\u0440\u0438\u043c\u0430\u0442\u0438",add:"\u0434\u043e\u0434\u0430\u0442\u0438",remove:"\u0432\u0438\u0434\u0430\u043b\u0438\u0442\u0438",toggle:"\u043f\u0435\u0440\u0435\u043c\u043a\u043d\u0443\u0442\u0438",hide:"\u0441\u0445\u043e\u0432\u0430\u0442\u0438",show:"\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0438",scroll:"\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u0438",if:"\u044f\u043a\u0449\u043e",unless:"\u043a\u0440\u0456\u043c",repeat:"\u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0438",for:"\u0434\u043b\u044f",while:"\u043f\u043e\u043a\u0438",until:"\u0434\u043e",continue:"\u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438",break:"\u043f\u0435\u0440\u0435\u0440\u0432\u0430\u0442\u0438",halt:"\u0437\u0443\u043f\u0438\u043d\u0438\u0442\u0438",wait:"\u0447\u0435\u043a\u0430\u0442\u0438",fetch:"\u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438",call:"\u0432\u0438\u043a\u043b\u0438\u043a\u0430\u0442\u0438",return:"\u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438",make:"\u0441\u0442\u0432\u043e\u0440\u0438\u0442\u0438",log:"\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u0438",throw:"\u043a\u0438\u043d\u0443\u0442\u0438",catch:"\u0437\u043b\u043e\u0432\u0438\u0442\u0438",measure:"\u0432\u0438\u043c\u0456\u0440\u044f\u0442\u0438",transition:"\u0430\u043d\u0456\u043c\u0443\u0432\u0430\u0442\u0438",increment:"\u0437\u0431\u0456\u043b\u044c\u0448\u0438\u0442\u0438",decrement:"\u0437\u043c\u0435\u043d\u0448\u0438\u0442\u0438",default:"\u0437\u0430_\u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c",go:"\u043f\u0435\u0440\u0435\u0439\u0442\u0438",pushUrl:"\u0434\u043e\u0434\u0430\u0442\u0438_url",replaceUrl:"\u0437\u0430\u043c\u0456\u043d\u0438\u0442\u0438_url",copy:"\u043a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438",pick:"\u0432\u0438\u0431\u0440\u0430\u0442\u0438",beep:"\u0437\u0432\u0443\u043a",js:"js",async:"\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e",render:"\u0432\u0456\u0434\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0438",swap:"\u043f\u043e\u043c\u0456\u043d\u044f\u0442\u0438",morph:"\u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0443\u0432\u0430\u0442\u0438",settle:"\u0441\u0442\u0430\u0431\u0456\u043b\u0456\u0437\u0443\u0432\u0430\u0442\u0438",append:"\u0434\u043e\u043f\u0438\u0441\u0430\u0442\u0438",exit:"\u0432\u0438\u0439\u0442\u0438",else:"\u0456\u043d\u0430\u043a\u0448\u0435",install:"\u0456\u043d\u0441\u0442\u0430\u043b\u044e\u0432\u0430\u0442\u0438",init:"\u0456\u043d\u0456\u0446\u0456\u0430\u043b\u0456\u0437\u0443\u0432\u0430\u0442\u0438",behavior:"\u043f\u043e\u0432\u0435\u0434\u0456\u043d\u043a\u0430",focus:"\u0441\u0444\u043e\u043a\u0443\u0441\u0443\u0432\u0430\u0442\u0438",blur:"\u0440\u043e\u0437\u0444\u043e\u043a\u0443\u0441\u0443\u0432\u0430\u0442\u0438",clone:"\u043a\u043b\u043e\u043d\u0443\u0432\u0430\u0442\u0438",prepend:"\u0434\u043e\u0434\u0430\u0442\u0438_\u043d\u0430_\u043f\u043e\u0447\u0430\u0442\u043e\u043a",breakpoint:"\u0442\u043e\u0447\u043a\u0430-\u0437\u0443\u043f\u0438\u043d\u043a\u0438",clear:"\u043e\u0447\u0438\u0441\u0442\u0438\u0442\u0438",close:"\u0437\u0430\u043a\u0440\u0438\u0442\u0438",open:"\u0432\u0456\u0434\u043a\u0440\u0438\u0442\u0438",select:"\u0432\u0438\u0434\u0456\u043b\u0438\u0442\u0438"},modifiers:{to:"\u0434\u043e",from:"\u0437",into:"\u0432",with:"\u0437",at:"\u0432",in:"\u0443",of:"\u0437",as:"\u044f\u043a",by:"\u043d\u0430",before:"\u0434\u043e",after:"\u043f\u0456\u0441\u043b\u044f",over:"\u043d\u0430\u0434",under:"\u043f\u0456\u0434",between:"\u043c\u0456\u0436",through:"\u0447\u0435\u0440\u0435\u0437",without:"\u0431\u0435\u0437",on:"\u043d\u0430"},events:{click:"\u043a\u043b\u0456\u043a",dblclick:"\u043f\u043e\u0434\u0432\u0456\u0439\u043d\u0438\u0439_\u043a\u043b\u0456\u043a",mousedown:"\u043c\u0438\u0448\u0430\u0432\u043d\u0438\u0437",mouseup:"\u043c\u0438\u0448\u0430\u0432\u0433\u043e\u0440\u0443",mouseenter:"\u043c\u0438\u0448\u0430_\u0432\u0445\u0456\u0434",mouseleave:"\u043c\u0438\u0448\u0430_\u0432\u0438\u0445\u0456\u0434",mouseover:"\u043d\u0430\u0432\u0435\u0434\u0435\u043d\u043d\u044f",mouseout:"\u0432\u0456\u0434\u0432\u0435\u0434\u0435\u043d\u043d\u044f",mousemove:"\u0440\u0443\u0445_\u043c\u0438\u0448\u0456",keydown:"\u043a\u043b\u0430\u0432\u0456\u0448\u0430_\u0432\u043d\u0438\u0437",keyup:"\u043a\u043b\u0430\u0432\u0456\u0448\u0430_\u0432\u0433\u043e\u0440\u0443",keypress:"\u043d\u0430\u0442\u0438\u0441\u043a\u0430\u043d\u043d\u044f_\u043a\u043b\u0430\u0432\u0456\u0448\u0456",focus:"\u0444\u043e\u043a\u0443\u0441",blur:"\u0440\u043e\u0437\u0444\u043e\u043a\u0443\u0441",change:"\u0437\u043c\u0456\u043d\u0430",input:"\u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044f",submit:"\u043d\u0430\u0434\u0441\u0438\u043b\u0430\u043d\u043d\u044f",reset:"\u0441\u043a\u0438\u043d\u0443\u0442\u0438",load:"\u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f",unload:"\u0432\u0438\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f",resize:"\u0437\u043c\u0456\u043d\u0430\u0440\u043e\u0437\u043c\u0456\u0440\u0443",scroll:"\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430",touchstart:"\u0434\u043e\u0442\u0438\u043a_\u043f\u043e\u0447\u0430\u0442\u043e\u043a",touchend:"\u0434\u043e\u0442\u0438\u043a_\u043a\u0456\u043d\u0435\u0446\u044c",touchmove:"\u0434\u043e\u0442\u0438\u043a_\u0440\u0443\u0445",touchcancel:"\u0434\u043e\u0442\u0438\u043a_\u0441\u043a\u0430\u0441\u0443\u0432\u0430\u043d\u043d\u044f"},logical:{when:"\u043a\u043e\u043b\u0438",where:"\u0434\u0435",and:"\u0456",or:"\u0430\u0431\u043e",not:"\u043d\u0435",is:"\u0454",exists:"\u0456\u0441\u043d\u0443\u0454",matches:"\u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u0430\u0454",contains:"\u043c\u0456\u0441\u0442\u0438\u0442\u044c",includes:"\u0432\u043a\u043b\u044e\u0447\u0430\u0454",equals:"\u0434\u043e\u0440\u0456\u0432\u043d\u044e\u0454",then:"\u0442\u043e\u0434\u0456",else:"\u0456\u043d\u0430\u043a\u0448\u0435",otherwise:"\u0432_\u0456\u043d\u0448\u043e\u043c\u0443_\u0432\u0438\u043f\u0430\u0434\u043a\u0443",end:"\u043a\u0456\u043d\u0435\u0446\u044c",live:"\u0436\u0438\u0432\u0438\u0439",changes:"\u0437\u043c\u0456\u043d\u044e\u0454\u0442\u044c\u0441\u044f",has:"\u043c\u0430\u0454",have:"\u043c\u0430\u044e",isNot:"\u043d\u0435_\u0454",empty:"\u043f\u043e\u0440\u043e\u0436\u043d\u0456\u0439"},temporal:{seconds:"\u0441\u0435\u043a\u0443\u043d\u0434",second:"\u0441\u0435\u043a\u0443\u043d\u0434\u0430",milliseconds:"\u043c\u0456\u043b\u0456\u0441\u0435\u043a\u0443\u043d\u0434",millisecond:"\u043c\u0456\u043b\u0456\u0441\u0435\u043a\u0443\u043d\u0434\u0430",minutes:"\u0445\u0432\u0438\u043b\u0438\u043d",minute:"\u0445\u0432\u0438\u043b\u0438\u043d\u0430",hours:"\u0433\u043e\u0434\u0438\u043d",hour:"\u0433\u043e\u0434\u0438\u043d\u0430",ms:"\u043c\u0441",s:"\u0441",min:"\u0445\u0432",h:"\u0433\u043e\u0434",forever:"\u0437\u0430\u0432\u0436\u0434\u0438",once:"\u043e\u0434\u0438\u043d_\u0440\u0430\u0437",every:"\u043a\u043e\u0436\u043d\u0438\u0439",until:"\u0434\u043e"},values:{true:"\u0456\u0441\u0442\u0438\u043d\u0430",false:"\u0445\u0438\u0431\u043d\u0456\u0441\u0442\u044c",null:"\u043d\u0456\u0447\u043e\u0433\u043e",undefined:"\u043d\u0435\u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043e",it:"\u0446\u0435",its:"\u0439\u043e\u0433\u043e",me:"\u044f",my:"\u043c\u0456\u0439",you:"\u0442\u0438",your:"\u0442\u0432\u0456\u0439",yourself:"\u0441\u0430\u043c",myself:"\u044f_\u0441\u0430\u043c",element:"\u0435\u043b\u0435\u043c\u0435\u043d\u0442",target:"\u0446\u0456\u043b\u044c",detail:"\u0434\u0435\u0442\u0430\u043b\u0456",event:"\u043f\u043e\u0434\u0456\u044f",window:"\u0432\u0456\u043a\u043d\u043e",document:"\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",body:"\u0442\u0456\u043b\u043e",result:"\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442",value:"\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f",first:"\u043f\u0435\u0440\u0448\u0438\u0439",last:"\u043e\u0441\u0442\u0430\u043d\u043d\u0456\u0439",next:"\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u0439",previous:"\u043f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439",closest:"\u043d\u0430\u0439\u0431\u043b\u0438\u0436\u0447\u0438\u0439",parent:"\u0431\u0430\u0442\u044c\u043a\u0456\u0432\u0441\u044c\u043a\u0438\u0439"},attributes:{class:"\u043a\u043b\u0430\u0441",classes:"\u043a\u043b\u0430\u0441\u0438",style:"\u0441\u0442\u0438\u043b\u044c",styles:"\u0441\u0442\u0438\u043b\u0456",attribute:"\u0430\u0442\u0440\u0438\u0431\u0443\u0442",attributes:"\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0438",property:"\u0432\u043b\u0430\u0441\u0442\u0438\u0432\u0456\u0441\u0442\u044c",properties:"\u0432\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456",disabled:"\u0432\u0438\u043c\u043a\u043d\u0435\u043d\u043e",hidden:"\u043f\u0440\u0438\u0445\u043e\u0432\u0430\u043d\u043e",checked:"\u043f\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043e",selected:"\u0432\u0438\u0431\u0440\u0430\u043d\u043e",readonly:"\u043b\u0438\u0448\u0435_\u0447\u0438\u0442\u0430\u043d\u043d\u044f",required:"\u043e\u0431\u043e\u0432'\u044f\u0437\u043a\u043e\u0432\u043e",text:"\u0442\u0435\u043a\u0441\u0442",html:"html"},expressions:{characters:"\u0441\u0438\u043c\u0432\u043e\u043b\u0438",inclusive:"\u0432\u043a\u043b\u044e\u0447\u043d\u043e",exclusive:"\u0432\u0438\u043a\u043b\u044e\u0447\u043d\u043e",first:"\u043f\u0435\u0440\u0448\u0438\u0439",last:"\u043e\u0441\u0442\u0430\u043d\u043d\u0456\u0439",next:"\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u0439",previous:"\u043f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439",prev:"\u043f\u043e\u043f\u0435\u0440",at:"\u0432",random:"\u0432\u0438\u043f\u0430\u0434\u043a\u043e\u0432\u0438\u0439",closest:"\u043d\u0430\u0439\u0431\u043b\u0438\u0436\u0447\u0438\u0439",parent:"\u0431\u0430\u0442\u044c\u043a\u0456\u0432\u0441\u044c\u043a\u0438\u0439",children:"\u0434\u0456\u0442\u0438",within:"\u0432\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0456",no:"\u043d\u0456",empty:"\u043f\u043e\u0440\u043e\u0436\u043d\u0456\u0439",some:"\u0434\u0435\u044f\u043a\u0456","starts with":"\u043f\u043e\u0447\u0438\u043d\u0430\u0454\u0442\u044c\u0441\u044f_\u0437","ends with":"\u0437\u0430\u043a\u0456\u043d\u0447\u0443\u0454\u0442\u044c\u0441\u044f_\u043d\u0430","ignoring case":"\u0431\u0435\u0437_\u0443\u0440\u0430\u0445\u0443\u0432\u0430\u043d\u043d\u044f_\u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0443","sorted by":"\u0432\u0456\u0434\u0441\u043e\u0440\u0442\u043e\u0432\u0430\u043d\u043e_\u0437\u0430","mapped to":"\u043f\u0435\u0440\u0435\u0442\u0432\u043e\u0440\u0435\u043d\u043e_\u043d\u0430","split by":"\u0440\u043e\u0437\u0434\u0456\u043b\u0435\u043d\u043e_\u0437\u0430","joined by":"\u043e\u0431'\u0454\u0434\u043d\u0430\u043d\u043e_\u0447\u0435\u0440\u0435\u0437"}};pl(Fl,"uk",{allowEnglishFallback:!0});var Hl={commands:{on:"\u092a\u0930",tell:"\u092c\u0924\u093e\u090f\u0902",trigger:"\u091f\u094d\u0930\u093f\u0917\u0930",send:"\u092d\u0947\u091c\u0947\u0902",take:"\u0932\u0947\u0902",put:"\u0930\u0916\u0947\u0902",set:"\u0938\u0947\u091f",get:"\u092a\u094d\u0930\u093e\u092a\u094d\u0924",add:"\u091c\u094b\u0921\u093c\u0947\u0902",remove:"\u0939\u091f\u093e\u090f\u0902",toggle:"\u091f\u0949\u0917\u0932",hide:"\u091b\u093f\u092a\u093e\u090f\u0902",show:"\u0926\u093f\u0916\u093e\u090f\u0902",if:"\u0905\u0917\u0930",unless:"\u091c\u092c \u0924\u0915 \u0928\u0939\u0940\u0902",repeat:"\u0926\u094b\u0939\u0930\u093e\u090f\u0902",for:"\u0939\u0947\u0924\u0941",while:"\u091c\u092c \u0924\u0915",until:"\u0924\u0915",continue:"\u091c\u093e\u0930\u0940",break:"\u0930\u094b\u0915\u0947\u0902",halt:"\u0930\u094b\u0915\u0947\u0902",wait:"\u092a\u094d\u0930\u0924\u0940\u0915\u094d\u0937\u093e",fetch:"\u0932\u093e\u090f\u0902",call:"\u0915\u0949\u0932",return:"\u0932\u094c\u091f\u093e\u090f\u0902",make:"\u092c\u0928\u093e\u090f\u0902",log:"\u0932\u0949\u0917",throw:"\u092b\u0947\u0902\u0915\u0947\u0902",catch:"\u092a\u0915\u0921\u093c\u0947\u0902",measure:"\u092e\u093e\u092a\u0947\u0902",transition:"\u0938\u0902\u0915\u094d\u0930\u092e\u0923",increment:"\u092c\u0922\u093c\u093e\u090f\u0902",decrement:"\u0918\u091f\u093e\u090f\u0902",default:"\u0921\u093f\u092b\u093c\u0949\u0932\u094d\u091f",go:"\u091c\u093e\u090f\u0902",pushUrl:"url_\u091c\u094b\u0921\u093c\u0947\u0902",replaceUrl:"url_\u092c\u0926\u0932\u0947\u0902",copy:"\u0915\u0949\u092a\u0940",pick:"\u091a\u0941\u0928\u0947\u0902",beep:"\u092c\u0940\u092a",js:"\u091c\u0947\u090f\u0938",async:"\u0905\u0938\u093f\u0902\u0915",render:"\u0930\u0947\u0902\u0921\u0930",swap:"\u0935\u093f\u0928\u093f\u092e\u092f",morph:"\u0930\u0942\u092a\u093e\u0902\u0924\u0930",settle:"\u0938\u094d\u0925\u093f\u0930",append:"\u0938\u0902\u0932\u0917\u094d\u0928",exit:"\u092c\u093e\u0939\u0930",else:"\u0935\u0930\u0928\u093e",install:"\u0907\u0902\u0938\u094d\u091f\u0949\u0932",init:"\u092a\u094d\u0930\u093e\u0930\u0902\u092d",behavior:"\u0935\u094d\u092f\u0935\u0939\u093e\u0930",focus:"\u092b\u094b\u0915\u0938",blur:"\u0927\u0941\u0902\u0927\u0932\u093e",clone:"\u0915\u094d\u0932\u094b\u0928",prepend:"\u091c\u094b\u0921\u093c\u0947\u0902_\u0936\u0941\u0930\u0942",breakpoint:"\u092c\u094d\u0930\u0947\u0915\u092a\u094d\u0935\u093e\u0907\u0902\u091f",clear:"\u0938\u093e\u092b\u093c-\u0915\u0930\u0947\u0902",close:"\u092c\u0902\u0926-\u0915\u0930\u0947\u0902",open:"\u0916\u094b\u0932\u0947\u0902",select:"\u091a\u093f\u0939\u094d\u0928\u093f\u0924-\u0915\u0930\u0947\u0902",socket:"\u0938\u0949\u0915\u0947\u091f"},modifiers:{to:"\u0915\u094b",from:"\u0938\u0947",into:"\u092e\u0947\u0902",with:"\u0915\u0947_\u0938\u093e\u0925",at:"\u092a\u0930",in:"\u092e\u0947\u0902",of:"\u0915\u093e",as:"\u0915\u0947_\u0930\u0942\u092a_\u092e\u0947\u0902",by:"\u0926\u094d\u0935\u093e\u0930\u093e",before:"\u0938\u0947 \u092a\u0939\u0932\u0947",after:"\u0915\u0947 \u092c\u093e\u0926",over:"\u0915\u0947_\u090a\u092a\u0930",under:"\u0915\u0947_\u0928\u0940\u091a\u0947",between:"\u0915\u0947_\u092c\u0940\u091a",through:"\u0915\u0947_\u092e\u093e\u0927\u094d\u092f\u092e_\u0938\u0947",without:"\u0915\u0947_\u092c\u093f\u0928\u093e",on:"\u092a\u0930"},events:{click:"\u0915\u094d\u0932\u093f\u0915",dblclick:"\u0921\u092c\u0932_\u0915\u094d\u0932\u093f\u0915",mousedown:"\u092e\u093e\u0909\u0938\u0928\u0940\u091a\u0947",mouseup:"\u092e\u093e\u0909\u0938\u090a\u092a\u0930",mouseenter:"\u092e\u093e\u0909\u0938_\u092a\u094d\u0930\u0935\u0947\u0936",mouseleave:"\u092e\u093e\u0909\u0938_\u092c\u093e\u0939\u0930",mouseover:"\u092e\u093e\u0909\u0938_\u0913\u0935\u0930",mouseout:"\u092e\u093e\u0909\u0938_\u0906\u0909\u091f",mousemove:"\u092e\u093e\u0909\u0938_\u092e\u0942\u0935",keydown:"\u0915\u0940_\u0928\u0940\u091a\u0947",keyup:"\u0915\u0940_\u090a\u092a\u0930",keypress:"\u0915\u0940_\u092a\u094d\u0930\u0947\u0938",focus:"\u092b\u094b\u0915\u0938",blur:"\u0927\u0941\u0902\u0927\u0932\u093e",change:"\u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928",input:"\u0907\u0928\u092a\u0941\u091f",submit:"\u091c\u092e\u093e",reset:"\u0930\u0940\u0938\u0947\u091f",load:"\u0932\u094b\u0921",unload:"\u0905\u0928\u0932\u094b\u0921",resize:"\u0906\u0915\u093e\u0930_\u092c\u0926\u0932\u0947\u0902",scroll:"\u0938\u094d\u0915\u094d\u0930\u0949\u0932",touchstart:"\u091f\u091a_\u0936\u0941\u0930\u0942",touchend:"\u091f\u091a_\u0938\u092e\u093e\u092a\u094d\u0924",touchmove:"\u091f\u091a_\u092e\u0942\u0935",touchcancel:"\u091f\u091a_\u0930\u0926\u094d\u0926"},logical:{when:"\u091c\u092c",where:"\u0915\u0939\u093e\u0901",and:"\u0914\u0930",or:"\u092f\u093e",not:"\u0928\u0939\u0940\u0902",is:"\u0939\u0948",exists:"\u092e\u094c\u091c\u0942\u0926",matches:"\u092e\u0947\u0932 \u0916\u093e\u0924\u093e",contains:"\u0936\u093e\u092e\u093f\u0932",includes:"\u092e\u0947\u0902_\u0939\u0948",equals:"\u092c\u0930\u093e\u092c\u0930",then:"\u092b\u093f\u0930",else:"\u0935\u0930\u0928\u093e",otherwise:"\u0905\u0928\u094d\u092f\u0925\u093e",end:"\u0938\u092e\u093e\u092a\u094d\u0924",live:"\u0932\u093e\u0907\u0935",changes:"\u092c\u0926\u0932\u0928\u0947 \u092a\u0930",has:"\u0939\u0948",have:"\u0939\u0948",isNot:"\u0928\u0939\u0940\u0902_\u0939\u0948",empty:"\u0916\u093e\u0932\u0940"},temporal:{seconds:"\u0938\u0947\u0915\u0902\u0921",second:"\u0938\u0947\u0915\u0902\u0921",milliseconds:"\u092e\u093f\u0932\u0940\u0938\u0947\u0915\u0902\u0921",millisecond:"\u092e\u093f\u0932\u0940\u0938\u0947\u0915\u0902\u0921",minutes:"\u092e\u093f\u0928\u091f",minute:"\u092e\u093f\u0928\u091f",hours:"\u0918\u0902\u091f\u0947",hour:"\u0918\u0902\u091f\u093e",ms:"\u092e\u093f\u0938\u0947",s:"\u0938\u0947",min:"\u092e\u093f",h:"\u0918\u0902",forever:"\u0939\u092e\u0947\u0936\u093e",once:"\u090f\u0915_\u092c\u093e\u0930",every:"\u0939\u0930",until:"\u0924\u0915"},values:{true:"\u0938\u091a",false:"\u091d\u0942\u0920",null:"\u0916\u093e\u0932\u0940",undefined:"\u0905\u092a\u0930\u093f\u092d\u093e\u0937\u093f\u0924",it:"\u092f\u0939",its:"\u0907\u0938\u0915\u093e",me:"\u092e\u0948\u0902",my:"\u092e\u0947\u0930\u093e",you:"\u0906\u092a",your:"\u0906\u092a\u0915\u093e",yourself:"\u0938\u094d\u0935\u092f\u0902",myself:"\u092e\u0948\u0902_\u0938\u094d\u0935\u092f\u0902",element:"\u0924\u0924\u094d\u0935",target:"\u0932\u0915\u094d\u0937\u094d\u092f",detail:"\u0935\u093f\u0935\u0930\u0923",event:"\u0918\u091f\u0928\u093e",window:"\u0935\u093f\u0902\u0921\u094b",document:"\u0926\u0938\u094d\u0924\u093e\u0935\u0947\u091c\u093c",body:"\u092c\u0949\u0921\u0940",result:"\u092a\u0930\u093f\u0923\u093e\u092e",value:"\u092e\u093e\u0928",first:"\u092a\u0939\u0932\u093e",last:"\u0905\u0902\u0924\u093f\u092e",next:"\u0905\u0917\u0932\u093e",previous:"\u092a\u093f\u091b\u0932\u093e",closest:"\u0928\u093f\u0915\u091f\u0924\u092e",parent:"\u092e\u0942\u0932"},attributes:{class:"\u0915\u094d\u0932\u093e\u0938",classes:"\u0915\u094d\u0932\u093e\u0938\u0947\u0938",style:"\u0938\u094d\u091f\u093e\u0907\u0932",styles:"\u0938\u094d\u091f\u093e\u0907\u0932\u094d\u0938",attribute:"\u0917\u0941\u0923",attributes:"\u0917\u0941\u0923",property:"\u0938\u0902\u092a\u0924\u094d\u0924\u093f",properties:"\u0938\u0902\u092a\u0924\u094d\u0924\u093f\u092f\u093e\u0901",disabled:"\u0905\u0915\u094d\u0937\u092e",hidden:"\u091b\u093f\u092a\u093e",checked:"\u091a\u0947\u0915",selected:"\u091a\u092f\u0928\u093f\u0924",readonly:"\u0915\u0947\u0935\u0932_\u092a\u0922\u093c\u0928\u0947",required:"\u0906\u0935\u0936\u094d\u092f\u0915",text:"\u092a\u093e\u0920",html:"html"},expressions:{characters:"\u0905\u0915\u094d\u0937\u0930",first:"\u092a\u0939\u0932\u093e",last:"\u0905\u0902\u0924\u093f\u092e",next:"\u0905\u0917\u0932\u093e",previous:"\u092a\u093f\u091b\u0932\u093e",prev:"\u092a\u093f\u091b",at:"\u092a\u0930",random:"\u092f\u093e\u0926\u0943\u091a\u094d\u091b\u093f\u0915",closest:"\u0928\u093f\u0915\u091f\u0924\u092e",parent:"\u092e\u0942\u0932",children:"\u092c\u091a\u094d\u091a\u0947",within:"\u0915\u0947_\u0905\u0902\u0926\u0930",no:"\u0928\u0939\u0940\u0902",empty:"\u0916\u093e\u0932\u0940",some:"\u0915\u0941\u091b","starts with":"\u0938\u0947_\u0936\u0941\u0930\u0942","ends with":"\u092a\u0930_\u0938\u092e\u093e\u092a\u094d\u0924","ignoring case":"\u0915\u0947\u0938_\u0905\u0928\u0926\u0947\u0916\u093e","sorted by":"\u0926\u094d\u0935\u093e\u0930\u093e_\u0915\u094d\u0930\u092e\u092c\u0926\u094d\u0927","mapped to":"\u092e\u0947\u0902_\u092a\u0930\u093f\u0935\u0930\u094d\u0924\u093f\u0924","split by":"\u0926\u094d\u0935\u093e\u0930\u093e_\u0935\u093f\u092d\u093e\u091c\u093f\u0924","joined by":"\u0926\u094d\u0935\u093e\u0930\u093e_\u091c\u0941\u0921\u093c\u093e"}};pl(Hl,"hi",{allowEnglishFallback:!0});var Wl={commands:{on:"\u09a4\u09c7",toggle:"\u099f\u0997\u09b2",add:"\u09af\u09cb\u0997",remove:"\u09b8\u09b0\u09be\u09a8",set:"\u09b8\u09c7\u099f",get:"\u09aa\u09be\u09a8",put:"\u09b0\u09be\u0996\u09c1\u09a8",take:"\u09a8\u09bf\u09a8",show:"\u09a6\u09c7\u0996\u09be\u09a8",hide:"\u09b2\u09c1\u0995\u09be\u09a8",increment:"\u09ac\u09c3\u09a6\u09cd\u09a7\u09bf",decrement:"\u09b9\u09cd\u09b0\u09be\u09b8",if:"\u09af\u09a6\u09bf",else:"\u09a8\u09a4\u09c1\u09ac\u09be",repeat:"\u09aa\u09c1\u09a8\u09b0\u09be\u09ac\u09c3\u09a4\u09cd\u09a4\u09bf",for:"\u099c\u09a8\u09cd\u09af",while:"\u09af\u09a4\u0995\u09cd\u09b7\u09a3",wait:"\u0985\u09aa\u09c7\u0995\u09cd\u09b7\u09be",fetch:"\u0986\u09a8\u09c1\u09a8",call:"\u0995\u09b2",return:"\u09ab\u09bf\u09b0\u09c1\u09a8",log:"\u09b2\u0997",trigger:"\u099f\u09cd\u09b0\u09bf\u0997\u09be\u09b0",send:"\u09aa\u09be\u09a0\u09be\u09a8",go:"\u09af\u09be\u09a8",halt:"\u09a5\u09be\u09ae\u09c1\u09a8",throw:"\u09a8\u09bf\u0995\u09cd\u09b7\u09c7\u09aa",continue:"\u099a\u09be\u09b2\u09bf\u09af\u09bc\u09c7 \u09af\u09be\u09a8",make:"\u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09c1\u09a8",append:"\u099c\u09c1\u09a1\u09bc\u09c1\u09a8",prepend:"\u09b6\u09c1\u09b0\u09c1\u09a4\u09c7 \u09af\u09cb\u0997",focus:"\u09ab\u09cb\u0995\u09be\u09b8",blur:"\u099d\u09be\u09aa\u09b8\u09be",transition:"\u09b8\u0982\u0995\u09cd\u09b0\u09ae\u09a3",settle:"\u09b8\u09cd\u09a5\u09bf\u09b0",measure:"\u09ae\u09be\u09aa\u09c1\u09a8",async:"\u0985\u09cd\u09af\u09be\u09b8\u09bf\u0999\u09cd\u0995",tell:"\u09ac\u09b2\u09c1\u09a8",default:"\u09a1\u09bf\u09ab\u09b2\u09cd\u099f",init:"\u09b6\u09c1\u09b0\u09c1",behavior:"\u0986\u099a\u09b0\u09a3",install:"\u0987\u09a8\u09b8\u09cd\u099f\u09b2",clone:"\u0995\u09cd\u09b2\u09cb\u09a8",swap:"\u09ac\u09a6\u09b2",morph:"\u09b0\u09c2\u09aa\u09be\u09a8\u09cd\u09a4\u09b0",beep:"\u09ac\u09c0\u09aa",break:"\u09ad\u09be\u0999\u09c1\u09a8",copy:"\u0995\u09aa\u09bf",exit:"\u09ac\u09c7\u09b0",js:"\u099c\u09c7\u098f\u09b8",pick:"\u09ac\u09be\u099b\u09c1\u09a8",render:"\u09b0\u09c7\u09a8\u09cd\u09a1\u09be\u09b0",until:"\u09aa\u09b0\u09cd\u09af\u09a8\u09cd\u09a4",breakpoint:"\u09ac\u09cd\u09b0\u09c7\u0995\u09aa\u09af\u09bc\u09c7\u09a8\u09cd\u099f",clear:"\u09aa\u09b0\u09bf\u09b7\u09cd\u0995\u09be\u09b0",close:"\u09ac\u09a8\u09cd\u09a7",open:"\u0996\u09c1\u09b2\u09c1\u09a8",select:"\u09a8\u09bf\u09b0\u09cd\u09ac\u09be\u099a\u09a8",socket:"\u09b8\u0995\u09c7\u099f"},modifiers:{to:"\u0995\u09c7",from:"\u09a5\u09c7\u0995\u09c7",into:"\u09a4\u09c7",on:"\u09a4\u09c7",with:"\u09b8\u09be\u09a5\u09c7",by:"\u09a6\u09cd\u09ac\u09be\u09b0\u09be",as:"\u09b9\u09bf\u09b8\u09be\u09ac\u09c7",before:"\u0986\u0997\u09c7",after:"\u09aa\u09b0\u09c7",at:"\u098f",in:"\u098f",over:"\u0989\u09aa\u09b0",between:"\u09ae\u09a7\u09cd\u09af\u09c7",then:"\u09a4\u09be\u09b0\u09aa\u09b0",and:"\u098f\u09ac\u0982",end:"\u09b6\u09c7\u09b7",until:"\u09aa\u09b0\u09cd\u09af\u09a8\u09cd\u09a4",of:"\u09b0"},events:{click:"\u0995\u09cd\u09b2\u09bf\u0995",change:"\u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8",input:"\u0987\u09a8\u09aa\u09c1\u099f",submit:"\u099c\u09ae\u09be",load:"\u09b2\u09cb\u09a1",focus:"\u09ab\u09cb\u0995\u09be\u09b8",blur:"\u099d\u09be\u09aa\u09b8\u09be",reset:"\u09b0\u09bf\u09b8\u09c7\u099f",keydown:"keydown",keyup:"keyup",mouseover:"mouseover",mouseout:"mouseout",scroll:"\u09b8\u09cd\u0995\u09cd\u09b0\u09cb\u09b2",resize:"\u09b0\u09bf\u09b8\u09be\u0987\u099c",every:"\u09aa\u09cd\u09b0\u09a4\u09bf"},logical:{if:"\u09af\u09a6\u09bf",when:"\u09af\u0996\u09a8",where:"\u0995\u09cb\u09a5\u09be\u09af\u09bc",else:"\u09a8\u09a4\u09c1\u09ac\u09be",not:"\u09a8\u09be",and:"\u098f\u09ac\u0982",or:"\u0985\u09a5\u09ac\u09be",is:"\u09b9\u09af\u09bc",exists:"\u0986\u099b\u09c7",has:"\u0986\u099b\u09c7",have:"\u0986\u099b\u09bf",empty:"\u0996\u09be\u09b2\u09bf",true:"\u09b8\u09a4\u09cd\u09af",false:"\u09ae\u09bf\u09a5\u09cd\u09af\u09be",null:"\u09b6\u09c2\u09a8\u09cd\u09af",undefined:"\u0985\u09a8\u09bf\u09b0\u09cd\u09a7\u09be\u09b0\u09bf\u09a4",end:"\u09b6\u09c7\u09b7",then:"\u09a4\u09be\u09b0\u09aa\u09b0",live:"\u09b2\u09be\u0987\u09ad",bind:"\u09ac\u09be\u0987\u09a8\u09cd\u09a1",changes:"\u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09bf\u09a4 \u09b9\u09b2\u09c7"},temporal:{now:"\u098f\u0996\u09a8",seconds:"\u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",milliseconds:"\u09ae\u09bf\u09b2\u09bf\u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",minutes:"\u09ae\u09bf\u09a8\u09bf\u099f",hours:"\u0998\u09a3\u09cd\u099f\u09be",forever:"\u099a\u09bf\u09b0\u0995\u09be\u09b2",times:"\u09ac\u09be\u09b0",s:"\u09b8\u09c7",ms:"\u09ae\u09bf\u09b8\u09c7"},values:{me:"\u0986\u09ae\u09bf",my:"\u0986\u09ae\u09be\u09b0",it:"\u098f\u099f\u09bf",its:"\u098f\u09b0",result:"\u09ab\u09b2\u09be\u09ab\u09b2",event:"\u0998\u099f\u09a8\u09be",target:"\u09b2\u0995\u09cd\u09b7\u09cd\u09af",body:"\u09ac\u09a1\u09bf",you:"\u0986\u09aa\u09a8\u09bf",your:"\u09a4\u09cb\u09ae\u09be\u09b0"},attributes:{class:"\u09b6\u09cd\u09b0\u09c7\u09a3\u09bf",id:"\u0986\u0987\u09a1\u09bf",style:"\u09b6\u09c8\u09b2\u09c0",value:"\u09ae\u09be\u09a8",text:"\u09aa\u09be\u09a0\u09cd\u09af",html:"\u098f\u0987\u099a\u099f\u09bf\u098f\u09ae\u098f\u09b2",disabled:"\u0985\u0995\u09cd\u09b7\u09ae",checked:"\u099a\u09c7\u0995 \u0995\u09b0\u09be"},expressions:{characters:"\u0985\u0995\u09cd\u09b7\u09b0",inclusive:"\u0985\u09a8\u09cd\u09a4\u09b0\u09cd\u09ad\u09c1\u0995\u09cd\u09a4",exclusive:"\u09ac\u09be\u09a6",first:"\u09aa\u09cd\u09b0\u09a5\u09ae",last:"\u09b6\u09c7\u09b7",next:"\u09aa\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0",previous:"\u0986\u0997\u09c7\u09b0",closest:"\u09a8\u09bf\u0995\u099f\u09a4\u09ae",parent:"\u09ae\u09c2\u09b2",children:"\u09b8\u09a8\u09cd\u09a4\u09be\u09a8",random:"\u098f\u09b2\u09cb\u09ae\u09c7\u09b2\u09cb",length:"\u09a6\u09c8\u09b0\u09cd\u0998\u09cd\u09af",index:"\u09b8\u09c2\u099a\u0995",empty:"\u0996\u09be\u09b2\u09bf-\u0995\u09b0\u09c1\u09a8","starts with":"\u09a6\u09bf\u09af\u09bc\u09c7_\u09b6\u09c1\u09b0\u09c1","ends with":"\u09a6\u09bf\u09af\u09bc\u09c7_\u09b6\u09c7\u09b7","ignoring case":"\u0995\u09c7\u09b8_\u0989\u09aa\u09c7\u0995\u09cd\u09b7\u09be","sorted by":"\u09a6\u09cd\u09ac\u09be\u09b0\u09be_\u09b8\u09be\u099c\u09be\u09a8\u09cb","mapped to":"\u09a4\u09c7_\u09b0\u09c2\u09aa\u09be\u09a8\u09cd\u09a4\u09b0\u09bf\u09a4","split by":"\u09a6\u09cd\u09ac\u09be\u09b0\u09be_\u09ac\u09bf\u09ad\u0995\u09cd\u09a4","joined by":"\u09a6\u09cd\u09ac\u09be\u09b0\u09be_\u09af\u09c1\u0995\u09cd\u09a4"}};pl(Wl,"bn",{allowEnglishFallback:!0});var Ul={commands:{on:"\u0e40\u0e21\u0e37\u0e48\u0e2d",toggle:"\u0e2a\u0e25\u0e31\u0e1a",add:"\u0e40\u0e1e\u0e34\u0e48\u0e21",remove:"\u0e25\u0e1a",set:"\u0e15\u0e31\u0e49\u0e07",get:"\u0e23\u0e31\u0e1a\u0e04\u0e48\u0e32",put:"\u0e43\u0e2a\u0e48",take:"\u0e23\u0e31\u0e1a",show:"\u0e41\u0e2a\u0e14\u0e07",hide:"\u0e0b\u0e48\u0e2d\u0e19",increment:"\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e04\u0e48\u0e32",decrement:"\u0e25\u0e14\u0e04\u0e48\u0e32",if:"\u0e16\u0e49\u0e32",else:"\u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19",repeat:"\u0e17\u0e33\u0e0b\u0e49\u0e33",for:"\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a",while:"\u0e43\u0e19\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48",wait:"\u0e23\u0e2d",fetch:"\u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25",call:"\u0e40\u0e23\u0e35\u0e22\u0e01",return:"\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32",log:"\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01",trigger:"\u0e17\u0e23\u0e34\u0e01\u0e40\u0e01\u0e2d\u0e23\u0e4c",send:"\u0e2a\u0e48\u0e07",go:"\u0e44\u0e1b",halt:"\u0e2b\u0e22\u0e38\u0e14",throw:"\u0e42\u0e22\u0e19",continue:"\u0e15\u0e48\u0e2d\u0e44\u0e1b",make:"\u0e2a\u0e23\u0e49\u0e32\u0e07",append:"\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e17\u0e49\u0e32\u0e22",prepend:"\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e2b\u0e19\u0e49\u0e32",focus:"\u0e42\u0e1f\u0e01\u0e31\u0e2a",blur:"\u0e40\u0e1a\u0e25\u0e2d",transition:"\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e1c\u0e48\u0e32\u0e19",settle:"\u0e04\u0e07\u0e17\u0e35\u0e48",measure:"\u0e27\u0e31\u0e14",async:"\u0e2d\u0e30\u0e0b\u0e34\u0e07\u0e04\u0e4c",tell:"\u0e1a\u0e2d\u0e01",default:"\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19",init:"\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19",behavior:"\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21",install:"\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07",clone:"\u0e42\u0e04\u0e25\u0e19",swap:"\u0e2a\u0e25\u0e31\u0e1a\u0e17\u0e35\u0e48",morph:"\u0e41\u0e1b\u0e25\u0e07\u0e23\u0e48\u0e32\u0e07",beep:"\u0e1a\u0e35\u0e4a\u0e1a",break:"\u0e02\u0e31\u0e14\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30",copy:"\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01",exit:"\u0e2d\u0e2d\u0e01",js:"\u0e40\u0e08\u0e40\u0e2d\u0e2a",pick:"\u0e40\u0e25\u0e37\u0e2d\u0e01",render:"\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25",until:"\u0e08\u0e19\u0e16\u0e36\u0e07",breakpoint:"\u0e08\u0e38\u0e14\u0e1e\u0e31\u0e01",clear:"\u0e40\u0e04\u0e25\u0e35\u0e22\u0e23\u0e4c",close:"\u0e1b\u0e34\u0e14",open:"\u0e40\u0e1b\u0e34\u0e14",select:"\u0e17\u0e33\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22"},modifiers:{to:"\u0e44\u0e1b\u0e22\u0e31\u0e07",from:"\u0e08\u0e32\u0e01",into:"\u0e43\u0e19",on:"\u0e40\u0e21\u0e37\u0e48\u0e2d",with:"\u0e14\u0e49\u0e27\u0e22",by:"\u0e42\u0e14\u0e22",as:"\u0e40\u0e1b\u0e47\u0e19",before:"\u0e01\u0e48\u0e2d\u0e19",after:"\u0e2b\u0e25\u0e31\u0e07",at:"\u0e17\u0e35\u0e48",in:"\u0e43\u0e19",over:"\u0e40\u0e2b\u0e19\u0e37\u0e2d",between:"\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07",then:"\u0e41\u0e25\u0e49\u0e27",and:"\u0e41\u0e25\u0e30",end:"\u0e08\u0e1a",until:"\u0e08\u0e19\u0e16\u0e36\u0e07",of:"\u0e02\u0e2d\u0e07"},events:{click:"\u0e04\u0e25\u0e34\u0e01",change:"\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07",input:"\u0e2d\u0e34\u0e19\u0e1e\u0e38\u0e15",submit:"\u0e2a\u0e48\u0e07",load:"\u0e42\u0e2b\u0e25\u0e14",focus:"\u0e42\u0e1f\u0e01\u0e31\u0e2a",blur:"\u0e40\u0e1a\u0e25\u0e2d",reset:"\u0e23\u0e35\u0e40\u0e0b\u0e47\u0e15",keydown:"\u0e01\u0e14\u0e04\u0e35\u0e22\u0e4c",keyup:"\u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e04\u0e35\u0e22\u0e4c",mouseover:"\u0e40\u0e21\u0e32\u0e2a\u0e4c\u0e40\u0e02\u0e49\u0e32",mouseout:"\u0e40\u0e21\u0e32\u0e2a\u0e4c\u0e2d\u0e2d\u0e01",scroll:"\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19",resize:"\u0e1b\u0e23\u0e31\u0e1a\u0e02\u0e19\u0e32\u0e14",every:"\u0e17\u0e38\u0e01"},logical:{if:"\u0e16\u0e49\u0e32",when:"\u0e40\u0e21\u0e37\u0e48\u0e2d",where:"\u0e17\u0e35\u0e48\u0e44\u0e2b\u0e19",else:"\u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19",not:"\u0e44\u0e21\u0e48",and:"\u0e41\u0e25\u0e30",or:"\u0e2b\u0e23\u0e37\u0e2d",is:"\u0e40\u0e1b\u0e47\u0e19",exists:"\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48",has:"\u0e21\u0e35",have:"\u0e21\u0e35",empty:"\u0e27\u0e48\u0e32\u0e07",true:"\u0e08\u0e23\u0e34\u0e07",false:"\u0e40\u0e17\u0e47\u0e08",null:"\u0e27\u0e48\u0e32\u0e07",undefined:"\u0e44\u0e21\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14",end:"\u0e08\u0e1a",then:"\u0e41\u0e25\u0e49\u0e27",live:"\u0e2a\u0e14",changes:"\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19"},temporal:{now:"\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49",seconds:"\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",milliseconds:"\u0e21\u0e34\u0e25\u0e25\u0e34\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",minutes:"\u0e19\u0e32\u0e17\u0e35",hours:"\u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",forever:"\u0e15\u0e25\u0e2d\u0e14\u0e44\u0e1b",times:"\u0e04\u0e23\u0e31\u0e49\u0e07",s:"\u0e27\u0e34",ms:"\u0e21\u0e27"},values:{me:"\u0e09\u0e31\u0e19",my:"\u0e02\u0e2d\u0e07\u0e09\u0e31\u0e19",it:"\u0e21\u0e31\u0e19",its:"\u0e02\u0e2d\u0e07\u0e21\u0e31\u0e19",result:"\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c",event:"\u0e40\u0e2b\u0e15\u0e38\u0e01\u0e32\u0e23\u0e13\u0e4c",target:"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22",body:"\u0e1a\u0e2d\u0e14\u0e35\u0e49",you:"\u0e04\u0e38\u0e13",your:"\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13"},attributes:{class:"\u0e04\u0e25\u0e32\u0e2a",id:"\u0e44\u0e2d\u0e14\u0e35",style:"\u0e2a\u0e44\u0e15\u0e25\u0e4c",value:"\u0e04\u0e48\u0e32",text:"\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",html:"\u0e40\u0e2d\u0e0a\u0e17\u0e35\u0e40\u0e2d\u0e47\u0e21\u0e41\u0e2d\u0e25",disabled:"\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19",checked:"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e41\u0e25\u0e49\u0e27"},expressions:{characters:"\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30",inclusive:"\u0e23\u0e27\u0e21",exclusive:"\u0e22\u0e01\u0e40\u0e27\u0e49\u0e19",first:"\u0e41\u0e23\u0e01",last:"\u0e2a\u0e38\u0e14\u0e17\u0e49\u0e32\u0e22",next:"\u0e16\u0e31\u0e14\u0e44\u0e1b",previous:"\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32",closest:"\u0e43\u0e01\u0e25\u0e49\u0e2a\u0e38\u0e14",parent:"\u0e15\u0e49\u0e19\u0e17\u0e32\u0e07",children:"\u0e25\u0e39\u0e01",random:"\u0e2a\u0e38\u0e48\u0e21",length:"\u0e04\u0e27\u0e32\u0e21\u0e22\u0e32\u0e27",index:"\u0e14\u0e31\u0e0a\u0e19\u0e35",empty:"\u0e25\u0e49\u0e32\u0e07","starts with":"\u0e02\u0e36\u0e49\u0e19\u0e15\u0e49\u0e19\u0e14\u0e49\u0e27\u0e22","ends with":"\u0e25\u0e07\u0e17\u0e49\u0e32\u0e22\u0e14\u0e49\u0e27\u0e22","ignoring case":"\u0e44\u0e21\u0e48\u0e2a\u0e19\u0e15\u0e31\u0e27\u0e1e\u0e34\u0e21\u0e1e\u0e4c","sorted by":"\u0e40\u0e23\u0e35\u0e22\u0e07\u0e15\u0e32\u0e21","mapped to":"\u0e41\u0e1b\u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19","split by":"\u0e41\u0e22\u0e01\u0e14\u0e49\u0e27\u0e22","joined by":"\u0e23\u0e27\u0e21\u0e14\u0e49\u0e27\u0e22"}};pl(Ul,"th",{allowEnglishFallback:!0});var Kl={commands:{on:"apabila",tell:"beritahu",trigger:"cetuskan",send:"hantar",take:"ambil",put:"letak",set:"tetapkan",get:"dapatkan",add:"tambah",remove:"buang",toggle:"togol",hide:"sembunyi",show:"tunjuk",if:"jika",unless:"kecuali",repeat:"ulang",for:"untuk",while:"selagi",until:"sehingga",continue:"teruskan",break:"henti",halt:"henti",wait:"tunggu",fetch:"ambil_dari",call:"panggil",return:"pulang",make:"buat",log:"catat",throw:"lempar",catch:"tangkap",measure:"ukur",transition:"peralihan",increment:"tambah_satu",decrement:"kurang_satu",default:"lalai",go:"pergi",pushUrl:"tolak_url",replaceUrl:"ganti_url",copy:"salin",pick:"pilih",beep:"bunyi",js:"js",async:"tak_segerak",render:"papar",swap:"tukar_tempat",morph:"ubah_bentuk",settle:"selesai",append:"tambah_hujung",prepend:"tambah_mula",exit:"keluar",else:"kalau_tidak",focus:"fokus",blur:"kabur",install:"pasang",behavior:"kelakuan",init:"mula",clone:"klon",breakpoint:"titik-henti",clear:"bersihkan",close:"tutup",open:"buka",select:"tandai",socket:"soket"},modifiers:{to:"ke",from:"dari",into:"ke_dalam",with:"dengan",at:"di",in:"dalam",of:"daripada",as:"sebagai",by:"oleh",before:"sebelum",after:"selepas",over:"atas",under:"bawah",between:"antara",through:"melalui",without:"tanpa",on:"pada",then:"kemudian",and:"dan",end:"tamat",until:"sehingga"},events:{click:"click",dblclick:"dblclick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"mouseover",mouseout:"mouseout",mousemove:"mousemove",keydown:"keydown",keyup:"keyup",keypress:"keypress",focus:"focus",blur:"blur",change:"change",input:"input",submit:"submit",reset:"reset",load:"load",unload:"unload",resize:"resize",scroll:"scroll",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel",every:"setiap"},logical:{when:"apabila",where:"di_mana",and:"dan",or:"atau",not:"bukan",is:"adalah",exists:"wujud",matches:"sepadan",contains:"mengandungi",includes:"termasuk",equals:"sama",has:"ada",have:"ada",then:"kemudian",else:"kalau_tidak",otherwise:"jika_tidak",end:"tamat",live:"langsung",changes:"berubah",if:"jika",empty:"kosong",true:"benar",false:"salah",null:"null",undefined:"tidak_ditakrifkan"},temporal:{seconds:"saat",second:"saat",milliseconds:"milisaat",millisecond:"milisaat",minutes:"minit",minute:"minit",hours:"jam",hour:"jam",ms:"ms",s:"s",min:"min",h:"j",now:"sekarang",forever:"selamanya",times:"kali"},values:{true:"benar",false:"salah",null:"null",undefined:"tidak_ditakrifkan",it:"ia",its:"nya",me:"saya",my:"saya_punya",myself:"diri_saya",you:"kamu",your:"kamu_punya",yourself:"diri_kamu",element:"elemen",target:"sasaran",detail:"perincian",event:"peristiwa",window:"tetingkap",document:"dokumen",body:"badan",result:"hasil",value:"nilai"},attributes:{class:"kelas",classes:"kelas_kelas",style:"gaya",styles:"gaya_gaya",attribute:"atribut",attributes:"atribut_atribut",property:"sifat",properties:"sifat_sifat",id:"id",value:"nilai",text:"teks",html:"html",disabled:"dilumpuhkan",checked:"ditanda"},expressions:{characters:"aksara",inclusive:"inklusif",exclusive:"eksklusif",first:"pertama",last:"terakhir",next:"seterusnya",previous:"sebelumnya",prev:"sebelum",at:"di",random:"rawak",closest:"terdekat",parent:"induk",children:"anak_anak",within:"dalam",no:"tiada",empty:"kosong",some:"beberapa","starts with":"bermula_dengan","ends with":"berakhir_dengan","ignoring case":"abaikan_huruf_besar_kecil","sorted by":"disusun_mengikut","mapped to":"dipetakan_ke","split by":"dipecah_oleh","joined by":"digabung_oleh",length:"panjang",index:"indeks"}};pl(Kl,"ms",{allowEnglishFallback:!0});var Jl={commands:{on:"kapag",tell:"sabihin",trigger:"palitawin",send:"ipadala",take:"kumuha",put:"ilagay",set:"itakda",get:"kunin",add:"idagdag",remove:"alisin",toggle:"palitan",hide:"itago",show:"ipakita",if:"kung",unless:"maliban_kung",repeat:"ulitin",for:"para_sa",while:"habang",until:"hanggang",continue:"magpatuloy",break:"itigil",halt:"huminto",wait:"maghintay",fetch:"kuhanin_mula",call:"tawagin",return:"ibalik",make:"gumawa",log:"itala",throw:"ihagis",catch:"hulihin",measure:"sukatin",transition:"lumipat",increment:"dagdagan",decrement:"bawasan",default:"pamantayan",go:"pumunta",pushUrl:"itulak_url",replaceUrl:"palitan_url",copy:"kopyahin",pick:"pumili",beep:"tunog",js:"js",async:"sabay",render:"irender",swap:"palitan_pwesto",morph:"baguhin",settle:"magpatahimik",append:"idagdag_sa_dulo",prepend:"idagdag_sa_simula",exit:"lumabas",else:"kung_hindi",focus:"ituon",blur:"alisin_tuon",install:"ikabit",behavior:"ugali",init:"simulan",clone:"i-clone",breakpoint:"breakpoint",clear:"burahin",close:"isara",open:"buksan",select:"piliin"},modifiers:{to:"sa",from:"mula_sa",into:"papasok_sa",with:"kasama",at:"sa",in:"sa_loob",of:"ng",as:"bilang",by:"sa_pamamagitan_ng",before:"bago",after:"matapos",over:"sa_ibabaw",under:"sa_ilalim",between:"sa_pagitan",through:"sa_pamamagitan",without:"walang",on:"sa",then:"pagkatapos",and:"at",end:"wakas",until:"hanggang"},events:{click:"click",dblclick:"dblclick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"mouseover",mouseout:"mouseout",mousemove:"mousemove",keydown:"keydown",keyup:"keyup",keypress:"keypress",focus:"focus",blur:"blur",change:"change",input:"input",submit:"submit",reset:"reset",load:"load",unload:"unload",resize:"resize",scroll:"scroll",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel",every:"bawat"},logical:{when:"kapag",where:"kung_saan",and:"at",or:"o",not:"hindi",is:"ay",exists:"may",matches:"tumutugma",contains:"naglalaman",includes:"kasama",equals:"katumbas",has:"may",have:"may",then:"pagkatapos",else:"kung_hindi",otherwise:"kung_hindi_man",end:"wakas",live:"live",changes:"nagbabago",if:"kung",empty:"walang_laman",true:"totoo",false:"mali",null:"wala",undefined:"hindi_tinukoy"},temporal:{seconds:"segundo",second:"segundo",milliseconds:"milisegundo",millisecond:"milisegundo",minutes:"minuto",minute:"minuto",hours:"oras",hour:"oras",ms:"ms",s:"s",min:"min",h:"h",now:"ngayon",forever:"magpakailanman",times:"beses"},values:{true:"totoo",false:"mali",null:"wala",undefined:"hindi_tinukoy",it:"ito",its:"nito",me:"ako",my:"aking",myself:"sarili_ko",you:"ikaw",your:"iyong",yourself:"sarili_mo",element:"elemento",target:"target",detail:"detalye",event:"pangyayari",window:"bintana",document:"dokumento",body:"katawan",result:"resulta",value:"halaga"},attributes:{class:"klase",classes:"mga_klase",style:"estilo",styles:"mga_estilo",attribute:"katangian",attributes:"mga_katangian",property:"ari_arian",properties:"mga_ari_arian",id:"id",value:"halaga",text:"teksto",html:"html",disabled:"hindi_pinagana",checked:"naka_tsek"},expressions:{characters:"karakter",inclusive:"kasama",exclusive:"bukod",first:"una",last:"huli",next:"susunod",previous:"nakaraan",prev:"nakaraan",at:"sa",random:"random",closest:"pinakamalapit",parent:"magulang",children:"mga_anak",within:"sa_loob_ng",no:"walang",empty:"walang_laman",some:"ilan","starts with":"nagsisimula_sa","ends with":"nagtatapos_sa","ignoring case":"huwag_pansinin_ang_case","sorted by":"nakaayos_ayon_sa","mapped to":"binago_sa","split by":"hinati_sa","joined by":"pinagsama_sa",length:"haba",index:"indeks"}};pl(Jl,"tl",{allowEnglishFallback:!0});var Zl={commands:{add:"\u05d4\u05d5\u05e1\u05e3",append:"\u05e6\u05e8\u05e3",async:"\u05d0\u05e1\u05d9\u05e0\u05db\u05e8\u05d5\u05e0\u05d9",beep:"\u05d1\u05d9\u05e4",break:"\u05e9\u05d1\u05d5\u05e8",call:"\u05e7\u05e8\u05d0",clear:"\u05e0\u05e7\u05d4",continue:"\u05d4\u05de\u05e9\u05da",copy:"\u05d4\u05e2\u05ea\u05e7",decrement:"\u05d4\u05e7\u05d8\u05df",default:"\u05d1\u05e8\u05d9\u05e8\u05ea \u05de\u05d7\u05d3\u05dc",exit:"\u05e6\u05d0",fetch:"\u05d4\u05d1\u05d0",for:"\u05e2\u05d1\u05d5\u05e8",get:"\u05e7\u05d1\u05dc",go:"\u05dc\u05da",halt:"\u05e2\u05e6\u05d5\u05e8",hide:"\u05d4\u05e1\u05ea\u05e8",if:"\u05d0\u05dd",unless:"\u05d0\u05dc\u05d0",increment:"\u05d4\u05d2\u05d3\u05dc",install:"\u05d4\u05ea\u05e7\u05df",js:"js",log:"\u05e8\u05e9\u05d5\u05dd",make:"\u05e6\u05d5\u05e8",measure:"\u05de\u05d3\u05d5\u05d3",morph:"\u05d4\u05e4\u05d5\u05da",on:"\u05d1",pick:"\u05d1\u05d7\u05e8",put:"\u05e9\u05d9\u05dd",remove:"\u05d4\u05e1\u05e8",render:"\u05e8\u05e0\u05d3\u05e8",repeat:"\u05d7\u05d6\u05d5\u05e8",return:"\u05d4\u05d7\u05d6\u05e8",scroll:"\u05d2\u05dc\u05d5\u05dc",send:"\u05e9\u05dc\u05d7",set:"\u05e7\u05d1\u05e2",settle:"\u05d4\u05ea\u05d9\u05d9\u05e6\u05d1",show:"\u05d4\u05e8\u05d0\u05d4",swap:"\u05d4\u05d7\u05dc\u05e3",take:"\u05e7\u05d7",tell:"\u05d0\u05de\u05d5\u05e8",throw:"\u05d6\u05e8\u05d5\u05e7",toggle:"\u05de\u05ea\u05d2",transition:"\u05de\u05e2\u05d1\u05e8",trigger:"\u05d4\u05e4\u05e2\u05dc",until:"\u05e2\u05d3",wait:"\u05d7\u05db\u05d4",while:"\u05db\u05dc \u05e2\u05d5\u05d3"},modifiers:{after:"\u05d0\u05d7\u05e8\u05d9",before:"\u05dc\u05e4\u05e0\u05d9",from:"\u05de",into:"\u05dc\u05ea\u05d5\u05da",to:"\u05e2\u05dc",with:"\u05e2\u05dd"},events:{blur:"\u05d8\u05e9\u05d8\u05e9",change:"\u05e9\u05d9\u05e0\u05d5\u05d9",click:"\u05dc\u05d7\u05d9\u05e6\u05d4",focus:"\u05de\u05e7\u05d3",input:"\u05e7\u05dc\u05d8",submit:"\u05e9\u05dc\u05d9\u05d7\u05d4"},logical:{and:"\u05d5\u05d2\u05dd",else:"\u05d0\u05d7\u05e8\u05ea",end:"\u05e1\u05d5\u05e3",then:"\u05d0\u05d6",live:"\u05d7\u05d9",bind:"\u05e7\u05e9\u05d5\u05e8",changes:"\u05de\u05e9\u05ea\u05e0\u05d4",when:"\u05db\u05d0\u05e9\u05e8",where:"\u05d0\u05d9\u05e4\u05d4"},temporal:{},values:{body:"\u05d2\u05d5\u05e3",event:"\u05d0\u05d9\u05e8\u05d5\u05e2",it:"\u05d6\u05d4",its:"\u05e9\u05dc\u05d5",me:"\u05d0\u05e0\u05d9",my:"\u05e9\u05dc\u05d9",result:"\u05ea\u05d5\u05e6\u05d0\u05d4",target:"\u05d9\u05e2\u05d3",you:"\u05d0\u05ea\u05d4",your:"\u05e9\u05dc\u05da"},attributes:{},expressions:{random:"\u05d0\u05e7\u05e8\u05d0\u05d9",characters:"\u05ea\u05d5\u05d5\u05d9\u05dd",inclusive:"\u05db\u05d5\u05dc\u05dc",exclusive:"\u05d1\u05dc\u05e2\u05d3\u05d9",last:"\u05d0\u05d7\u05e8\u05d5\u05df"}};pl(Zl,"he",{allowEnglishFallback:!0});var Xl=class e{static register(t,r){e.providers.set(t.toLowerCase(),r)}static unregister(t){e.providers.delete(t.toLowerCase())}static setDefault(t){const r=t.toLowerCase();if("en"!==r&&!e.providers.has(r))throw Error(`Locale '${t}' is not registered. Available locales: ${e.getAvailable().join(", ")}`);e.defaultLocale=r}static getDefault(){return e.defaultLocale}static get(t){const r=(t||e.defaultLocale).toLowerCase();if("en"===r)return e.englishProvider;const n=e.providers.get(r);if(!n)throw Error(`Locale '${r}' is not registered. Available locales: ${e.getAvailable().join(", ")}`);return n}static has(t){const r=t.toLowerCase();return"en"===r||e.providers.has(r)}static getAvailable(){return["en",...Array.from(e.providers.keys())]}static reset(){e.providers.clear(),e.defaultLocale="en"}static registerAll(t){for(const[r,n]of Object.entries(t))e.register(r,n)}};Xl.providers=new Map,Xl.defaultLocale="en",Xl.englishProvider=hl();var Yl=Xl;function Gl(e,t){const r=[],n=new Set;for(const s of t){const t=e.get(s);t&&(r.push(t),n.add(s))}for(const[t,s]of e)n.has(t)||r.push(s);return r}function Ql(e,t,r){const n=[];for(const s of e){let e=t.find(e=>e.role===s.role);"event"===e?.role&&/^[#.<@[]/.test(s.translated||s.value)&&(e=void 0),"duration"===e?.role&&/^(me|you|it)$/i.test(s.value)&&(e=void 0),e?"preposition"===r?(e.form&&n.push(e.form),n.push(s.translated||s.value)):"postposition"===r?(n.push(s.translated||s.value),e.form&&n.push(e.form)):n.push(s.translated||s.value):n.push(s.translated||s.value)}return n}function ec(e){if(0===e.length)return"";let t="";for(let r=0;e.length>r;r++){const n=e[r],s=e[r+1],i=n.endsWith("-"),a=n.startsWith("-");let o=n;if(i&&(o=n.slice(0,-1)),a&&(o=n.substring(1)),t+=o,s){const e=s.startsWith("-");i||e||(t+=" ")}}return t}function tc(e){return{name:"halt-call-fused-verb-final",description:"Split the swept `halt <operand> call <args>` blob; both verbs clause-final",priority:95,match:{commands:["halt"],requiredRoles:["action","event","patient"],predicate:t=>{const r=t.roles.get("patient");return!!r&&/\bcall\b/.test(r.value)&&!!r.translated&&r.translated.includes(e.callVerb)}},transform:{roleOrder:[],custom:t=>{const r=t.roles.get("patient"),n=t.roles.get("event"),s=t.roles.get("action");let i=(r.translated??r.value).trim();const a="EVENTBLOCKPLACEHOLDER";let o="";i.endsWith(a)&&(i=i.slice(0,-21).trim(),o=" "+a);const l=i.indexOf(e.callVerb),c=i.slice(0,l).trim(),u=i.slice(l+e.callVerb.length).trim();return[c,e.patientMarker,n.translated??n.value,e.eventMarker,s.translated??s.value,e.connective,u,e.patientMarker,e.callVerb].join(" ")+o}}}}function rc(e){return{name:"pick-range-verb-final",description:"Reassemble the pick range (unit + endpoints + root) adjacent, verb-final",priority:95,match:{commands:["pick"],requiredRoles:["action","patient","destination"],predicate:e=>{const t=e.roles.get("patient"),r=e.roles.get("destination");return!!t&&!!r&&/^\S+\s+\d+$/.test(t.value.trim())&&/^\d+\s+of\s+\S+$/.test(r.value.trim())}},transform:{roleOrder:[],custom:t=>{const r=t.roles.get("patient"),n=t.roles.get("destination"),s=t.roles.get("action"),i=t.roles.get("event"),a=(r.translated??r.value).trim().split(/\s+/),o=a[a.length-1],l=a.slice(0,-1).join(" "),c=n.value.trim().match(/^(\d+)\s+of\s+(\S+)$/);return[c[2],e.genitive,l,o,e.rangeSep,c[1],e.patientMarker,...i?[i.translated??i.value,e.eventMarker]:[],s.translated??s.value].join(" ")}}}}var nc={en:{code:"en",name:"English",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","source","destination","quantity","duration","method","style"],markers:[{form:"on",role:"event",position:"preposition",required:!0},{form:"to",role:"destination",position:"preposition",required:!1},{form:"into",role:"destination",position:"preposition",required:!1},{form:"from",role:"source",position:"preposition",required:!1},{form:"with",role:"style",position:"preposition",required:!1},{form:"by",role:"quantity",position:"preposition",required:!1},{form:"as",role:"method",position:"preposition",required:!1},{form:"over",role:"duration",position:"preposition",required:!1},{form:"for",role:"duration",position:"preposition",required:!1}]},ja:{code:"ja",name:"\u65e5\u672c\u8a9e",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"\u3092",role:"patient",position:"postposition",required:!0},{form:"\u306b",role:"destination",position:"postposition",required:!0},{form:"\u304b\u3089",role:"source",position:"postposition",required:!0},{form:"\u3067",role:"event",position:"postposition",required:!0},{form:"\u3067",role:"style",position:"postposition",required:!1},{form:"\u3068",role:"style",position:"postposition",required:!1},{form:"\u3078",role:"destination",position:"postposition",required:!1}],rules:[{name:"event-handler",description:"Transform event handlers to Japanese SOV order",priority:100,match:{commands:["on"],requiredRoles:["event","action"],optionalRoles:["patient"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}},{name:"put-into",description:"Transform put X into Y to Japanese order",priority:90,match:{commands:["put","\u7f6e\u304f"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"set-to",description:"Transform set X to Y to Japanese verb-final order",priority:90,match:{commands:["set","\u8a2d\u5b9a"],requiredRoles:["action","patient","destination"],predicate:e=>!/(^|\s)end$/i.test((e.original??"").trim())},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"bind-to",description:"Transform bind $var to #el to Japanese verb-final order",priority:90,match:{commands:["bind","\u30d0\u30a4\u30f3\u30c9"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},tc({callVerb:"\u547c\u3073\u51fa\u3057",patientMarker:"\u3092",eventMarker:"\u3067",connective:"\u305d\u308c\u304b\u3089"}),rc({genitive:"\u306e",rangeSep:"\u304b\u3089",patientMarker:"\u3092",eventMarker:"\u3067"})]},ko:{code:"ko",name:"\ud55c\uad6d\uc5b4",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"\ub97c",role:"patient",position:"postposition",required:!0,alternatives:["\uc744"]},{form:"\uc5d0",role:"destination",position:"postposition",required:!0},{form:"\uc5d0\uc11c",role:"source",position:"postposition",required:!0},{form:"\ud560 \ub54c",role:"event",position:"postposition",required:!0},{form:"\ub85c",role:"style",position:"postposition",required:!1,alternatives:["\uc73c\ub85c"]},{form:"\uc640",role:"style",position:"postposition",required:!1,alternatives:["\uacfc"]},{form:"\ub85c",role:"method",position:"postposition",required:!1,alternatives:["\uc73c\ub85c"]}],rules:[{name:"event-handler",description:"Transform event handlers to Korean SOV order",priority:100,match:{commands:["on"],requiredRoles:["event","action"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}},{name:"put-into",description:"Transform put X into Y to Korean verb-final order",priority:90,match:{commands:["put","\ub123\ub2e4"],requiredRoles:["action","patient","destination"],predicate:e=>!e.roles.has("event")},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"set-to",description:"Transform set X to Y to Korean verb-final order",priority:90,match:{commands:["set","\uc124\uc815"],requiredRoles:["action","patient","destination"],predicate:e=>!/(^|\s)end$/i.test((e.original??"").trim())},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"bind-to",description:"Transform bind $var to #el to Korean verb-final order",priority:90,match:{commands:["bind","\ubc14\uc778\ub4dc"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},tc({callVerb:"\ud638\ucd9c",patientMarker:"\ub97c",eventMarker:"\ud560 \ub54c",connective:"\uadf8\ub7ec\uba74"}),rc({genitive:"\uc758",rangeSep:"\ubd80\ud130",patientMarker:"\ub97c",eventMarker:"\ud560 \ub54c"})]},zh:{code:"zh",name:"\u4e2d\u6587",wordOrder:"SVO",adpositionType:"preposition",morphology:"isolating",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"\u5f53",role:"event",position:"preposition",required:!0},{form:"\u65f6",role:"event",position:"postposition",required:!0},{form:"\u628a",role:"patient",position:"preposition",required:!1},{form:"\u5230",role:"destination",position:"preposition",required:!1},{form:"\u4ece",role:"source",position:"preposition",required:!1},{form:"\u7528",role:"style",position:"preposition",required:!1},{form:"\u7684",role:"method",position:"postposition",required:!1}],rules:[{name:"event-handler-standard",description:"Standard event handler: \u5f53 X \u65f6 Y",priority:100,match:{requiredRoles:["event","action"]},transform:{roleOrder:["event","action","patient"],insertMarkers:!0,custom:(e,t)=>{const r=e.roles.get("event"),n=e.roles.get("action"),s=new Map(e.roles);s.delete("event"),s.delete("action");const i=Ql(Gl(s,(t.canonicalOrder||[]).filter(e=>"event"!==e&&"action"!==e)),t.markers,t.adpositionType),a=["\u5f53",r?.translated||r?.value||"","\u65f6"];return n&&a.push(n.translated||n.value),a.push(...i),a.filter(Boolean).join(" ")}}},{name:"ba-construction",description:"BA construction for object-fronting: \u628a X Y",priority:80,match:{commands:["put","set","move"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","action","destination"],insertMarkers:!0}},{name:"bind-to",description:"Bind binds a variable to an element: \u7ed1\u5b9a X \u5230 Y (no \u628a)",priority:90,match:{commands:["bind","\u7ed1\u5b9a"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["action","patient","destination"],custom:e=>{const t=e.roles.get("action"),r=e.roles.get("patient"),n=e.roles.get("destination");return[t?.translated||t?.value||"",r?.translated||r?.value||"","\u5230",n?.translated||n?.value||""].filter(Boolean).join(" ")}}}]},ar:{code:"ar",name:"\u0627\u0644\u0639\u0631\u0628\u064a\u0629",wordOrder:"VSO",adpositionType:"preposition",morphology:"fusional",direction:"rtl",canonicalOrder:["action","agent","patient","destination","source"],markers:[{form:"\u0639\u0646\u062f",role:"event",position:"preposition",required:!0},{form:"\u0625\u0644\u0649",role:"destination",position:"preposition",required:!1},{form:"\u0641\u064a",role:"destination",position:"preposition",required:!1},{form:"\u0645\u0646",role:"source",position:"preposition",required:!1},{form:"\u0628\u0640-",role:"style",position:"preposition",required:!1},{form:"\u0645\u0639",role:"style",position:"preposition",required:!1},{form:"\u0643\u0640-",role:"method",position:"preposition",required:!1}],rules:[{name:"event-handler-vso",description:"VSO event handler: VERB TARGET \u0639\u0646\u062f EVENT",priority:100,match:{commands:["on"],requiredRoles:["event","action"]},transform:{roleOrder:["action","patient","event"],insertMarkers:!0}}]},tr:{code:"tr",name:"T\u00fcrk\u00e7e",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"i",role:"patient",position:"postposition",required:!0,alternatives:["\u0131","u","\u00fc"]},{form:"e",role:"destination",position:"postposition",required:!0,alternatives:["a"]},{form:"den",role:"source",position:"postposition",required:!0,alternatives:["dan"]},{form:"de",role:"event",position:"postposition",required:!0,alternatives:["da"]},{form:"ile",role:"style",position:"postposition",required:!1},{form:"olarak",role:"method",position:"postposition",required:!1}],rules:[{name:"event-handler-sov",description:"SOV event handler",priority:100,match:{commands:["on"],requiredRoles:["event","action"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}},{name:"put-into",description:"Transform put X into Y to Turkish verb-final order",priority:90,match:{commands:["put","koy"],requiredRoles:["action","patient","destination"],predicate:e=>!e.roles.has("event")},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"set-to",description:"Transform set X to Y to Turkish verb-final order",priority:90,match:{commands:["set","ayarla"],requiredRoles:["action","patient","destination"],predicate:e=>!/(^|\s)end$/i.test((e.original??"").trim())},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"bind-to",description:"Transform bind $var to #el to Turkish verb-final order",priority:90,match:{commands:["bind"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"wait-oblique-verb-final",description:"Keep wait's from-phrase and or-run inside the clause, verb-final",priority:90,match:{commands:["wait","bekle"],requiredRoles:["action","duration","source"],predicate:e=>!e.roles.has("event")},transform:{roleOrder:["patient","source","duration","action"],insertMarkers:!0}},{name:"repeat-until-event-verb-final",description:"Keep repeat-until-event's from-phrase before the verb",priority:90,match:{commands:["repeat","tekrarla"],requiredRoles:["action","patient","source"],predicate:e=>/^repeat\s+until\s+event\b/i.test((e.original??"").trim())},transform:{roleOrder:["patient","source","action"],insertMarkers:!0}},tc({callVerb:"\u00e7a\u011f\u0131r",patientMarker:"i",eventMarker:"de",connective:"ard\u0131ndan"}),rc({genitive:"nin",rangeSep:"ile",patientMarker:"i",eventMarker:"de"})]},es:{code:"es",name:"Espa\u00f1ol",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"en",role:"event",position:"preposition",required:!0},{form:"a",role:"destination",position:"preposition",required:!1},{form:"hacia",role:"destination",position:"preposition",required:!1},{form:"de",role:"source",position:"preposition",required:!1},{form:"con",role:"style",position:"preposition",required:!1},{form:"por",role:"quantity",position:"preposition",required:!1},{form:"como",role:"method",position:"preposition",required:!1}]},de:{code:"de",name:"Deutsch",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"bei",role:"event",position:"preposition",required:!0},{form:"zu",role:"destination",position:"preposition",required:!1},{form:"in",role:"destination",position:"preposition",required:!1},{form:"von",role:"source",position:"preposition",required:!1},{form:"aus",role:"source",position:"preposition",required:!1},{form:"mit",role:"style",position:"preposition",required:!1},{form:"um",role:"quantity",position:"preposition",required:!1},{form:"als",role:"method",position:"preposition",required:!1}]},fr:{code:"fr",name:"Fran\u00e7ais",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"sur",role:"event",position:"preposition",required:!0},{form:"\u00e0",role:"destination",position:"preposition",required:!1},{form:"dans",role:"destination",position:"preposition",required:!1},{form:"de",role:"source",position:"preposition",required:!1},{form:"avec",role:"style",position:"preposition",required:!1},{form:"par",role:"quantity",position:"preposition",required:!1},{form:"comme",role:"method",position:"preposition",required:!1}]},pt:{code:"pt",name:"Portugu\u00eas",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"em",role:"event",position:"preposition",required:!0},{form:"para",role:"destination",position:"preposition",required:!1},{form:"em",role:"destination",position:"preposition",required:!1},{form:"de",role:"source",position:"preposition",required:!1},{form:"com",role:"style",position:"preposition",required:!1},{form:"por",role:"quantity",position:"preposition",required:!1},{form:"como",role:"method",position:"preposition",required:!1}]},id:{code:"id",name:"Bahasa Indonesia",wordOrder:"SVO",adpositionType:"preposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"pada",role:"event",position:"preposition",required:!0},{form:"ke",role:"destination",position:"preposition",required:!1},{form:"dari",role:"source",position:"preposition",required:!1},{form:"dengan",role:"style",position:"preposition",required:!1},{form:"sebagai",role:"method",position:"preposition",required:!1}]},ms:{code:"ms",name:"Bahasa Melayu",wordOrder:"SVO",adpositionType:"preposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"apabila",role:"event",position:"preposition",required:!0},{form:"ke",role:"destination",position:"preposition",required:!1},{form:"dari",role:"source",position:"preposition",required:!1},{form:"dengan",role:"style",position:"preposition",required:!1},{form:"sebagai",role:"method",position:"preposition",required:!1}]},qu:{code:"qu",name:"Runasimi",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","source","destination","event","action"],markers:[{form:"ta",role:"patient",position:"postposition",required:!0},{form:"man",role:"destination",position:"postposition",required:!0},{form:"manta",role:"source",position:"postposition",required:!0},{form:"pi",role:"event",position:"postposition",required:!0},{form:"wan",role:"style",position:"postposition",required:!1},{form:"hina",role:"method",position:"postposition",required:!1}],rules:[{name:"wait-oblique-verb-final",description:"Keep wait's from-phrase and or-run inside the clause, verb-final",priority:90,match:{commands:["wait","suyay"],requiredRoles:["action","duration","source"],predicate:e=>!e.roles.has("event")},transform:{roleOrder:["patient","source","duration","action"],insertMarkers:!0}},tc({callVerb:"qayay",patientMarker:"ta",eventMarker:"pi",connective:"chayqa"}),rc({genitive:"pa",rangeSep:"kama",patientMarker:"ta",eventMarker:"pi"})]},sw:{code:"sw",name:"Kiswahili",wordOrder:"SVO",adpositionType:"preposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"kwenye",role:"event",position:"preposition",required:!0},{form:"kwa",role:"destination",position:"preposition",required:!1},{form:"kutoka",role:"source",position:"preposition",required:!1},{form:"na",role:"style",position:"preposition",required:!1},{form:"kuwa",role:"method",position:"preposition",required:!1}]},bn:{code:"bn",name:"\u09ac\u09be\u0982\u09b2\u09be",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"\u0995\u09c7",role:"patient",position:"postposition",required:!0},{form:"\u09a4\u09c7",role:"destination",position:"postposition",required:!0},{form:"\u098f",role:"event",position:"postposition",required:!0},{form:"\u09a5\u09c7\u0995\u09c7",role:"source",position:"postposition",required:!0},{form:"\u09a6\u09bf\u09af\u09bc\u09c7",role:"style",position:"postposition",required:!1},{form:"\u099c\u09a8\u09cd\u09af",role:"duration",position:"postposition",required:!1}],rules:[{name:"event-handler",description:"Transform event handlers to Bengali SOV order",priority:100,match:{commands:["on"],requiredRoles:["event","action"],optionalRoles:["patient"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}},{name:"put-into",description:"Transform put X into Y to Bengali verb-final order",priority:90,match:{commands:["put","\u09b0\u09be\u0996\u09c1\u09a8"],requiredRoles:["action","patient","destination"],predicate:e=>!e.roles.has("event")},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"set-to",description:"Transform set X to Y to Bengali verb-final order",priority:90,match:{commands:["set","\u09b8\u09c7\u099f"],requiredRoles:["action","patient","destination"],predicate:e=>!/(^|\s)end$/i.test((e.original??"").trim())},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"bind-to",description:"Transform bind $var to #el to Bengali verb-final order",priority:90,match:{commands:["bind","\u09ac\u09be\u0987\u09a8\u09cd\u09a1"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},tc({callVerb:"\u0995\u09b2",patientMarker:"\u0995\u09c7",eventMarker:"\u098f",connective:"\u09a4\u09be\u09b0\u09aa\u09b0"}),rc({genitive:"\u09b0",rangeSep:"\u09a5\u09c7\u0995\u09c7",patientMarker:"\u0995\u09c7",eventMarker:"\u098f"})]},it:{code:"it",name:"Italiano",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"su",role:"event",position:"preposition",required:!0},{form:"in",role:"destination",position:"preposition",required:!1},{form:"a",role:"destination",position:"preposition",required:!1},{form:"da",role:"source",position:"preposition",required:!1},{form:"di",role:"source",position:"preposition",required:!1},{form:"con",role:"style",position:"preposition",required:!1},{form:"come",role:"method",position:"preposition",required:!1}]},ru:{code:"ru",name:"\u0420\u0443\u0441\u0441\u043a\u0438\u0439",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"\u043f\u0440\u0438",role:"event",position:"preposition",required:!0},{form:"\u0432",role:"destination",position:"preposition",required:!1},{form:"\u043d\u0430",role:"destination",position:"preposition",required:!1},{form:"\u043a",role:"destination",position:"preposition",required:!1},{form:"\u0438\u0437",role:"source",position:"preposition",required:!1},{form:"\u043e\u0442",role:"source",position:"preposition",required:!1},{form:"\u0441",role:"source",position:"preposition",required:!1},{form:"\u0441",role:"style",position:"preposition",required:!1},{form:"\u0441\u043e",role:"style",position:"preposition",required:!1},{form:"\u043a\u0430\u043a",role:"method",position:"preposition",required:!1}]},uk:{code:"uk",name:"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"\u043f\u0440\u0438",role:"event",position:"preposition",required:!0},{form:"\u0432",role:"destination",position:"preposition",required:!1},{form:"\u043d\u0430",role:"destination",position:"preposition",required:!1},{form:"\u0434\u043e",role:"destination",position:"preposition",required:!1},{form:"\u0437",role:"source",position:"preposition",required:!1},{form:"\u0432\u0456\u0434",role:"source",position:"preposition",required:!1},{form:"\u0456\u0437",role:"source",position:"preposition",required:!1},{form:"\u0437",role:"style",position:"preposition",required:!1},{form:"\u0456\u0437",role:"style",position:"preposition",required:!1},{form:"\u044f\u043a",role:"method",position:"preposition",required:!1}]},vi:{code:"vi",name:"Ti\u1ebfng Vi\u1ec7t",wordOrder:"SVO",adpositionType:"preposition",morphology:"isolating",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"khi",role:"event",position:"preposition",required:!0},{form:"v\u00e0o",role:"destination",position:"preposition",required:!1},{form:"cho",role:"destination",position:"preposition",required:!1},{form:"\u0111\u1ebfn",role:"destination",position:"preposition",required:!1},{form:"t\u1eeb",role:"source",position:"preposition",required:!1},{form:"kh\u1ecfi",role:"source",position:"preposition",required:!1},{form:"v\u1edbi",role:"style",position:"preposition",required:!1},{form:"nh\u01b0",role:"method",position:"preposition",required:!1}]},hi:{code:"hi",name:"\u0939\u093f\u0928\u094d\u0926\u0940",wordOrder:"SOV",adpositionType:"postposition",morphology:"fusional",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"\u0915\u094b",role:"patient",position:"postposition",required:!0},{form:"\u092e\u0947\u0902",role:"destination",position:"postposition",required:!0},{form:"\u092a\u0930",role:"destination",position:"postposition",required:!1},{form:"\u092a\u0930",role:"event",position:"postposition",required:!0},{form:"\u0938\u0947",role:"source",position:"postposition",required:!0},{form:"\u0938\u0947",role:"style",position:"postposition",required:!1},{form:"\u0938\u093e\u0925",role:"style",position:"postposition",required:!1},{form:"\u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902",role:"method",position:"postposition",required:!1}],rules:[{name:"event-handler",description:"Transform event handlers to Hindi SOV order",priority:100,match:{commands:["on"],requiredRoles:["event","action"],optionalRoles:["patient"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}},{name:"put-into",description:"Transform put X into Y to Hindi verb-final order",priority:90,match:{commands:["put","\u0930\u0916\u0947\u0902"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"set-to",description:"Transform set X to Y to Hindi verb-final order",priority:90,match:{commands:["set","\u0938\u0947\u091f"],requiredRoles:["action","patient","destination"],predicate:e=>!/(^|\s)end$/i.test((e.original??"").trim())},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"bind-to",description:"Transform bind $var to #el to Hindi verb-final order",priority:90,match:{commands:["bind","\u092c\u093e\u0907\u0902\u0921","\u092c\u093e\u0902\u0927\u0947\u0902"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},tc({callVerb:"\u0915\u0949\u0932",patientMarker:"\u0915\u094b",eventMarker:"\u092a\u0930",connective:"\u092b\u093f\u0930"}),rc({genitive:"\u0915\u093e",rangeSep:"\u0938\u0947",patientMarker:"\u0915\u094b",eventMarker:"\u092a\u0930"})]},tl:{code:"tl",name:"Tagalog",wordOrder:"VSO",adpositionType:"preposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["action","agent","patient","destination","source"],markers:[{form:"kapag",role:"event",position:"preposition",required:!0},{form:"sa",role:"destination",position:"preposition",required:!1},{form:"mula_sa",role:"source",position:"preposition",required:!1},{form:"nang",role:"style",position:"preposition",required:!1},{form:"bilang",role:"method",position:"preposition",required:!1}],rules:[{name:"event-handler-vso",description:"VSO event handler: VERB TARGET kapag EVENT",priority:100,match:{commands:["on"],requiredRoles:["event","action"]},transform:{roleOrder:["action","patient","event"],insertMarkers:!0}}]},th:{code:"th",name:"\u0e44\u0e17\u0e22",wordOrder:"SVO",adpositionType:"preposition",morphology:"isolating",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"\u0e40\u0e21\u0e37\u0e48\u0e2d",role:"event",position:"preposition",required:!0},{form:"\u0e43\u0e19",role:"destination",position:"preposition",required:!1},{form:"\u0e44\u0e1b\u0e22\u0e31\u0e07",role:"destination",position:"preposition",required:!1},{form:"\u0e08\u0e32\u0e01",role:"source",position:"preposition",required:!1},{form:"\u0e14\u0e49\u0e27\u0e22",role:"style",position:"preposition",required:!1},{form:"\u0e40\u0e1b\u0e47\u0e19",role:"method",position:"preposition",required:!1}]},pl:{code:"pl",name:"Polski",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"gdy",role:"event",position:"preposition",required:!0},{form:"przy",role:"event",position:"preposition",required:!1},{form:"do",role:"destination",position:"preposition",required:!1},{form:"w",role:"destination",position:"preposition",required:!1},{form:"na",role:"destination",position:"preposition",required:!1},{form:"z",role:"source",position:"preposition",required:!1},{form:"od",role:"source",position:"preposition",required:!1},{form:"ze",role:"source",position:"preposition",required:!1},{form:"z",role:"style",position:"preposition",required:!1},{form:"ze",role:"style",position:"preposition",required:!1},{form:"jako",role:"method",position:"preposition",required:!1}]},he:{code:"he",name:"\u05e2\u05d1\u05e8\u05d9\u05ea",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"rtl",canonicalOrder:["event","action","patient","destination"],markers:[{form:"\u05d1",role:"event",position:"preposition",required:!0},{form:"\u05e2\u05dc",role:"destination",position:"preposition",required:!1},{form:"\u05d0\u05dc",role:"destination",position:"preposition",required:!1},{form:"\u05dc",role:"destination",position:"preposition",required:!1},{form:"\u05d0\u05ea",role:"patient",position:"preposition",required:!1},{form:"\u05de",role:"source",position:"preposition",required:!1},{form:"\u05de\u05df",role:"source",position:"preposition",required:!1},{form:"\u05e2\u05dd",role:"style",position:"preposition",required:!1},{form:"\u05db",role:"method",position:"preposition",required:!1}],rules:[{name:"bind-to",description:"Bind binds a variable to an element: \u05e7\u05e9\u05d5\u05e8 X \u05dc Y",priority:90,match:{commands:["bind","\u05e7\u05e9\u05d5\u05e8"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["action","patient","destination"],custom:e=>{const t=e.roles.get("action"),r=e.roles.get("patient"),n=e.roles.get("destination");return[t?.translated||t?.value||"",r?.translated||r?.value||"","\u05dc",n?.translated||n?.value||""].filter(Boolean).join(" ")}}}]}};function sc(e){return nc[e]}function ic(e){const t={};for(const[r,n]of Object.entries(e.words))t[n]=r;const r={};if(e.categories)for(const[t,n]of Object.entries(e.categories)){r[t]={};for(const[e,s]of Object.entries(n))r[t][s]=e}const n={source:e.target,target:e.source,words:t};return Object.keys(r).length>0&&(n.categories=r),n}function ac(e,t,r,n){const s={},i={};for(const r of["commands","modifiers","events","logical","temporal","values","attributes"]){const n=e[r],a=t[r];if(n&&a){i[r]={};for(const[e,t]of Object.entries(n)){const n=a[e];n&&t!==n&&(s[t]=n,i[r][t]=n)}}}return{source:r,target:n,words:s,categories:i}}var oc=ac(gl,Tl,"ja","zh"),lc=ic(oc),cc=ac(Sl,gl,"ko","ja"),uc=ic(cc),dc={source:"es",target:"pt",words:{en:"em",decir:"dizer",disparar:"disparar",enviar:"enviar",tomar:"pegar",poner:"colocar",establecer:"definir",obtener:"obter",agregar:"adicionar",quitar:"remover",alternar:"alternar",ocultar:"esconder",mostrar:"mostrar",si:"se",menos:"a menos",repetir:"repetir",para:"para",mientras:"enquanto",hasta:"at\u00e9",continuar:"continuar",romper:"parar",detener:"parar",esperar:"esperar",buscar:"buscar",llamar:"chamar",retornar:"retornar",hacer:"fazer",registrar:"registrar",lanzar:"lan\u00e7ar",atrapar:"capturar",medir:"medir","transici\u00f3n":"transi\u00e7\u00e3o",incrementar:"incrementar",decrementar:"decrementar",predeterminar:"padr\u00e3o",ir:"ir",copiar:"copiar",escoger:"escolher",intercambiar:"trocar",transformar:"transformar","a\u00f1adir":"anexar",salir:"sair",a:"para",de:"de",dentro:"em",con:"com",como:"como",por:"por",clic:"clique",cambio:"mudan\u00e7a",entrada:"entrada","env\u00edo":"envio",carga:"carregar",enfoque:"foco",desenfoque:"desfoque",verdadero:"verdadeiro",falso:"falso",y:"e",o:"ou",no:"n\u00e3o",es:"\u00e9",segundos:"segundos",milisegundos:"milissegundos",nulo:"nulo",indefinido:"indefinido","vac\u00edo":"vazio"},categories:{commands:{en:"em",decir:"dizer",tomar:"pegar",poner:"colocar",establecer:"definir",obtener:"obter",agregar:"adicionar",quitar:"remover",ocultar:"esconder",si:"se",mientras:"enquanto",hasta:"at\u00e9",romper:"parar",detener:"parar",llamar:"chamar",hacer:"fazer",lanzar:"lan\u00e7ar",atrapar:"capturar",escoger:"escolher",intercambiar:"trocar","a\u00f1adir":"anexar",salir:"sair"},events:{clic:"clique",cambio:"mudan\u00e7a",carga:"carregar",enfoque:"foco",desenfoque:"desfoque"},logical:{verdadero:"verdadeiro",y:"e",o:"ou",no:"n\u00e3o",es:"\u00e9"}}},mc=ic(dc),pc=new Map([["ja->zh",oc],["zh->ja",lc],["ko->ja",cc],["ja->ko",uc],["es->pt",dc],["pt->es",mc]]),hc={en:{commands:{on:"on",tell:"tell",trigger:"trigger",send:"send",take:"take",put:"put",set:"set",get:"get",add:"add",remove:"remove",toggle:"toggle",hide:"hide",show:"show",if:"if",unless:"unless",repeat:"repeat",for:"for",while:"while",until:"until",continue:"continue",break:"break",halt:"halt",wait:"wait",fetch:"fetch",call:"call",return:"return",make:"make",log:"log",throw:"throw",catch:"catch",measure:"measure",transition:"transition",increment:"increment",decrement:"decrement",default:"default",bind:"bind",eventsource:"eventsource",socket:"socket",worker:"worker",intercept:"intercept",go:"go",pushUrl:"pushUrl",replaceUrl:"replaceUrl",copy:"copy",pick:"pick",beep:"beep",js:"js",async:"async",render:"render",swap:"swap",morph:"morph",settle:"settle",append:"append",exit:"exit",install:"install",open:"open",close:"close",select:"select",clear:"clear",breakpoint:"breakpoint",prepend:"prepend",clone:"clone",scroll:"scroll",push:"push",replace:"replace",process:"process"},modifiers:{to:"to",from:"from",into:"into",with:"with",at:"at",in:"in",of:"of",as:"as",by:"by",before:"before",after:"after",over:"over",under:"under",between:"between",through:"through",without:"without"},events:{click:"click",dblclick:"dblclick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"mouseover",mouseout:"mouseout",mousemove:"mousemove",keydown:"keydown",keyup:"keyup",keypress:"keypress",focus:"focus",blur:"blur",change:"change",input:"input",submit:"submit",reset:"reset",load:"load",unload:"unload",resize:"resize",scroll:"scroll",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel"},logical:{when:"when",where:"where",and:"and",or:"or",not:"not",is:"is",exists:"exists",matches:"matches",contains:"contains",includes:"includes",equals:"equals",has:"has",have:"have",then:"then",else:"else",otherwise:"otherwise",end:"end",live:"live",changes:"changes"},temporal:{seconds:"seconds",second:"second",milliseconds:"milliseconds",millisecond:"millisecond",minutes:"minutes",minute:"minute",hours:"hours",hour:"hour",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"true",false:"false",null:"null",undefined:"undefined",it:"it",its:"its",me:"me",my:"my",myself:"myself",you:"you",your:"your",yourself:"yourself",element:"element",target:"target",detail:"detail",event:"event",window:"window",document:"document",body:"body",result:"result",value:"value"},attributes:{class:"class",classes:"classes",style:"style",styles:"styles",attribute:"attribute",attributes:"attributes",property:"property",properties:"properties"},expressions:{first:"first",last:"last",next:"next",previous:"previous",prev:"prev",at:"at",random:"random",closest:"closest",parent:"parent",children:"children",within:"within",no:"no",empty:"empty",some:"some","starts with":"starts with","ends with":"ends with","ignoring case":"ignoring case","sorted by":"sorted by","mapped to":"mapped to","split by":"split by","joined by":"joined by"}},es:fl,ko:Sl,zh:Tl,fr:bl,de:kl,ja:gl,ar:xl,tr:Ll,id:jl,qu:Il,sw:ql,pt:_l,it:Vl,vi:Dl,pl:zl,ru:Bl,uk:Fl,hi:Hl,bn:Wl,th:Ul,ms:Kl,tl:Jl,he:Zl},fc=["commands","modifiers","events","logical","temporal","values","attributes","expressions"];function yc(e){const t=new Set(il),r=hc[e];return r?.commands&&Object.values(r.commands).forEach(e=>{"string"==typeof e&&t.add(e.toLowerCase())}),t}var gc=["is","are","was","were","am","be"];function vc(e){const t=new Set(gc);if("en"!==e)for(const r of gc)t.add(Vc(r,"en",e).toLowerCase());return t}function bc(e,t,r){const n=e[t-1]?.toLowerCase();return!!n&&r.has(n)}function wc(e,t,r,n){for(let s=t+1;e.length>s;s++){const t=e[s].toLowerCase();if(r.has(t))return!0;if(n.has(t))return!1}return!1}function kc(e){const t=e.filter(e=>!e.isBlank&&e.originalIndent.length>0);if(0===t.length)return e.map(()=>"");const r=t.map(e=>e.originalIndent.replace(/\t/g," ").length),n=Math.min(...r),s=n>0?n:4;return e.map(e=>{if(e.isBlank)return"";if(0===e.originalIndent.length)return"";const t=e.originalIndent.replace(/\t/g," ");return" ".repeat(Math.round(t.length/s))})}var Ec=new Set(["to","into","from","with","by","as","at","in","on","of","over"]),xc=new Map,Cc=new Set(["toggle","add","remove","trigger","send"]);function Sc(e,t){for(const r of e){const e=r.toLowerCase();if(t.has(e)&&!Ec.has(e)&&!jc.has(e))return e}return null}var Ac=new Set(["live","when","unless"]),Tc=new Set(["if","repeat","unless","while","for"]),Oc=new Set(["he","zh"]);function Lc(e,t){const r=yc(t),n=function(e){const t=xc.get(e);if(t)return t;const r=new Set(Ec),n=sc(e);return n?.markers.forEach(e=>{const t=e.form.replace(/^-|-$/g,"").toLowerCase();t&&r.add(t),e.alternatives?.forEach(e=>{const t=e.replace(/^-|-$/g,"").toLowerCase();t&&r.add(t)})}),xc.set(e,r),r}(t),{forWords:s,inWords:i}=function(e){const t=new Set(["for"]),r=new Set(["in"]);return"en"!==e&&(t.add(Vc("for","en",e).toLowerCase()),r.add(Vc("in","en",e).toLowerCase())),{forWords:t,inWords:r}}(t),a=e.split(/\s+/);if(0===a.length)return[e];const o=[];let l=[];const c=a[0]?.toLowerCase();let u=!jc.has(c),d=0;for(let e=0;a.length>e;e++){const t=a[e],c=t.toLowerCase();if(Ac.has(c)?d++:"end"===c&&d>0&&d--,r.has(c)&&l.length>0){const m=l[l.length-1].toLowerCase();if(!u){u=!0,l.push(t);continue}if(d>0){l.push(t);continue}if(s.has(c)&&!wc(a,e,i,r)){l.push(t);continue}if(Ec.has(c)){const n=Sc(l,r);if(n&&Cc.has(n)){l.push(t);continue}if("on"===c&&"set"===n){const r=a[e+1],n=r?.toLowerCase();if(r&&(/^[#.<@[]/.test(r)||"me"===n||"it"===n||"you"===n)){l.push(t);continue}}}if(!n.has(m)&&!r.has(m)){o.push(l.join(" ")),l=[t];continue}}l.push(t)}return l.length>0&&o.push(l.join(" ")),o.filter(e=>e.length>0)}function Pc(e,t){const r=Array.from(ml),n="en"===t?null:hc[t];n?.modifiers?.then&&r.push(n.modifiers.then),n?.logical?.then&&r.push((n?.logical).then);const s=r.map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),i=RegExp(`\\s+(${s.join("|")})\\s+`,"gi");return e.split(i).filter(e=>{const t=e.toLowerCase().trim();return t&&!r.some(e=>e.toLowerCase()===t)}).map(e=>e.trim()).filter(e=>e.length>0)}var jc=function(){const e=new Set;e.add("on");for(const t of Object.values(nc))for(const r of t.markers)if("event"===r.role){const t=r.form.replace(/^-|-$/g,"").toLowerCase();t&&e.add(t),r.alternatives?.forEach(t=>{const r=t.replace(/^-|-$/g,"").toLowerCase();r&&e.add(r)})}return e}(),Nc=new Set(["or"]),Ic=new Set(["async","once","debounced","debounce","throttled","throttle"]);function Rc(e,t){const r=function(e){const t={};e.markers.forEach(e=>{const r=e.form.replace(/^-|-$/g,"").toLowerCase();r&&(t[r]=e.role),e.alternatives?.forEach(r=>{const n=r.replace(/^-|-$/g,"").toLowerCase();n&&(t[n]=e.role)})});for(const[e,r]of Object.entries(rl))e in t||(t[e]=r);return t}(e),n=t?.toLowerCase();if("SVO"!==e.wordOrder||!n||!Cc.has(n))return r;const s={};for(const[e,t]of Object.entries(r))s[e]="event"===t?"destination":t;return s}var qc={zh:["\u65f6","\u7684","\u5730","\u5f97"],ja:[],ko:[]},Mc={zh:["\u5f53"],ar:["\u0628\u0640","\u0643\u0640","\u0648"]};function _c(e,t){const r=[];let n="",s=!1,i=0,a=0,o=0;for(let t=0;e.length>t;t++){const l=e[t];"<"===l?(s=!0,i++):">"===l&&s&&(i--,0===i&&(s=!1)),"["===l?a++:"]"===l&&a>0&&a--,"("===l?o++:")"===l&&o>0&&o--,/\s/.test(l)&&!s&&0===a&&0===o?n&&(r.push(n),n=""):n+=l}return n&&r.push(n),function(e,t){const r=qc[t]||[],n=Mc[t]||[];if(0===r.length&&0===n.length)return e;const s=[];for(const t of e){if(/^[#.<@]/.test(t)||/^\d+/.test(t)){s.push(t);continue}let e=t,i="",a="";for(const t of n)if(e.startsWith(t)&&e.length>t.length){i=t,e=e.slice(t.length);break}for(const t of r)if(e.endsWith(t)&&e.length>t.length){a=t,e=e.slice(0,-t.length);break}i&&s.push(i),e&&s.push(e),a&&s.push(a)}return s}(r,t.code)}var $c=new Set(["duration","quantity"]);function Vc(e,t,r){if(/^[#.<@]/.test(e))return e;if(/^\d+/.test(e))return e;if(/\s/.test(e)&&e.startsWith("("))return e.split(/\s+/).map(e=>Vc(e,t,r)).join(" ");if(e.length>1&&(e.startsWith("(")||e.endsWith(")"))){const n=e.match(/^(\(*)([^()]+)(\)*)$/);if(n&&(n[1]||n[3]))return n[1]+Vc(n[2],t,r)+n[3]}const n="en"===t?null:hc[t],s=hc[r];if(!s)return e;let i=e;if(n){const t=function(e,t){const r=t.toLowerCase();for(const t of fc){const n=e[t];for(const[e,s]of Object.entries(n))if(s.toLowerCase()===r)return{category:t,englishKey:e}}}(n,e);t&&(i=t.englishKey)}const a=function(e,t){const r=t.toLowerCase();for(const t of fc){const n=e[t][r];if(n)return n}}(s,i);return a??e}var Dc={en:{type:"suffix",marker:"'s"},es:{type:"preposition",marker:"de"},pt:{type:"preposition",marker:"de"},fr:{type:"preposition",marker:"de"},de:{type:"preposition",marker:"von"},ja:{type:"suffix",marker:"\u306e"},ko:{type:"suffix",marker:"\uc758"},zh:{type:"suffix",marker:"\u7684"},ar:{type:"preposition",marker:"\u0644\u0640"},tr:{type:"particle",marker:"\u0131n"},id:{type:"preposition",marker:"dari"},qu:{type:"particle",marker:"pa"},bn:{type:"suffix",marker:"\u09b0"},sw:{type:"preposition",marker:"ya"}};function zc(e,t,r){const n=e.match(/^(.+)'s$/i);if(!n)return e;const s=n[1],i=Dc[r]||Dc.en,a={me:"my",it:"its",you:"your"},o=s.toLowerCase();if(a[o])return Vc(a[o],"en",r);const l=Vc(s,t,r);switch(i.type){case"suffix":return`${l}${i.marker}`;case"particle":return`${l} ${i.marker}`;case"preposition":return`__POSS__${i.marker}__${l}__POSS__`;default:return l+"'s"}}var Bc=/^(my|its|your|me|it|you)(\??\..+)$/i,Fc={me:"my",it:"its",you:"your",my:"my",its:"its",your:"your"};function Hc(e,t,r){const n=e.match(Bc);if(!n)return null;const s=n[1].toLowerCase(),i=n[2],a=Fc[s]||s,o=Vc(a,t,r);if(o.includes(" "))return null;if(o!==a)return o+i;if(s!==a){const e=Vc(s,t,r);if(e!==s&&!e.includes(" "))return e+i}return null}function Wc(e,t,r){if(e.includes("[")){const n=[],s=e.replace(/\[[^\]]*\]/g,e=>(n.push(e),`\ue000${n.length-1}\ue001`));if(n.length>0)return Wc(s,t,r).replace(/\ue000(\d+)\ue001/g,(e,t)=>n[Number(t)])}if(!e.includes(" ")){if(e.includes("'s"))return zc(e,t,r);const n=Hc(e,t,r);return null!==n?n:Vc(e,t,r)}const n=e.split(/\s+/),s=[];let i=0;for(;n.length>i;){const e=n[i];if(e.includes("'s")){const a=zc(e,t,r),o=a.match(/^__POSS__(.+)__(.+)__POSS__$/);if(o&&n.length>i+1){const e=o[1],a=o[2],l=Vc(n[i+1],t,r);s.push(`${l} ${e} ${a}`),i+=2;continue}if(o){s.push(`${o[1]} ${o[2]}`),i++;continue}s.push(a),i++;continue}if(/^[#.<@]/.test(e)||/^\d+/.test(e)){s.push(e),i++;continue}if(/^["'].*["']$/.test(e)){s.push(e),i++;continue}const a=Hc(e,t,r);null===a?(s.push(Vc(e,t,r)),i++):(s.push(a),i++)}return s.join(" ")}var Uc=/(\^[A-Za-z_][\w-]*)(\s+on\s+(?:[#.][\w-]+|<[^>]*\/>|\[[^\]]+\]))/g,Kc=class{constructor(e="en",t){const r=sc(e),n=sc(t);if(!r)throw Error("Unknown source locale: "+e);if(!n)throw Error("Unknown target locale: "+t);this.sourceProfile=r,this.targetProfile=n}transform(e){const t=this.transformInternal(e);return"he"===this.targetProfile.code?function(e){const t=yc("he"),r=e.split(/\s+/);let n=!1;for(let e=0;r.length>e+1;e++)"\u05d0\u05ea"===r[e]&&t.has(r[e+1].toLowerCase())&&([r[e],r[e+1]]=[r[e+1],r[e]],n=!0,e++);return n?r.join(" "):e}(t):t}transformInternal(e){const t=function(e){const t=[],r=e.replace(Uc,(e,r,n)=>{const s=t.length;return t.push(n),`${r}\ue000${s}\ue001`});return t.length>0?{masked:r,scopes:t}:null}(e);if(t)return function(e,t){return e.replace(RegExp("\ue000(\\d+)\ue001","g"),(e,r)=>t[Number(r)]??"")}(this.transform(t.masked),t.scopes);const r=function(e){if("en"===e)return"then";const t=hc[e];return t&&(t.modifiers?.then||t.logical?.then)||"then"}(this.targetProfile.code);if(!e.includes("\n")){const t=this.tryTransformJsBlock(e);if(null!==t)return t;const r=this.tryTransformEventWithModifierBody(e);if(null!==r)return r;const n=this.tryTransformEventWithBlockBody(e);if(null!==n)return n;const s=this.tryTransformEventWithUnlessGuard(e);if(null!==s)return s}if(e.includes("\n")){const{parts:t,lineMetadata:n,partToLineIndex:s}=function(e,t){const r=e.split("\n"),n=[],s=[],i=[];for(let e=0;r.length>e;e++){const a=r[e],o=a.match(/^(\s*)/),l=o?o[1]:"",c=a.trim();if(n.push({content:c,originalIndent:l,isBlank:0===c.length}),c.length>0){const r=Pc(c,t);for(const n of r){const r=Lc(n,t);for(const t of r)s.push(t),i.push(e)}}}return{parts:s,lineMetadata:n,partToLineIndex:i}}(e,this.sourceProfile.code);return function(e,t,r,n){if(1>=t.filter(e=>!e.isBlank).length&&1>=e.length){const r=kc(t),n=[];for(let s=0;t.length>s;s++)t[s].isBlank?n.push(""):e.length>0&&n.push(r[s]+e[0]);return n.join("\n")}const s=kc(t),i=new Map;for(let t=0;e.length>t;t++){const n=r[t];i.has(n)||i.set(n,[]),i.get(n).push(e[t])}const a=[];for(let e=0;t.length>e;e++){const r=s[e];if(t[e].isBlank)a.push("");else{const t=i.get(e)||[];if(t.length>0){const e=t.join(` ${n} `);a.push(r+e)}}}return a.join("\n")}(t.map(e=>this.transformSingle(e)),n,s,r)}const n=function(e,t){const r=e.split(/\n/).map(e=>e.trim()).filter(e=>e.length>0),n=[];for(const e of r){const r=Pc(e,t);for(const e of r){const r=Lc(e,t);n.push(...r)}}return n}(e,this.sourceProfile.code);return n.length>1?n.map(e=>this.transformSingle(e)).join(` ${r} `):this.transformSingle(e)}transformSingle(e){const t=function(e,t){const r=e.split(/\s+/),n=r[0]?.toLowerCase();if(!n||!Ac.has(n))return null;let s=1,i=-1;for(let e=1;r.length>e;e++){const t=r[e].toLowerCase();if(Ac.has(t))s++;else if("end"===t&&(s--,0===s)){i=e;break}}if(-1!==i&&i!==r.length-1)return null;const a=-1!==i?r.slice(1,i):r.slice(1),o={headKeyword:r[0],body:""};if(-1!==i&&(o.tailKeyword=r[i]),"live"===n)return{...o,body:a.join(" ")};if("when"===n){const e=a.findIndex(e=>"changes"===e.toLowerCase());return 0>e?null:{...o,prefixExpr:a.slice(0,e).join(" "),connector:a[e],body:a.slice(e+1).join(" ")}}const l=yc(t),c=vc(t);let u=-1;for(let e=0;a.length>e;e++)if(l.has(a[e].toLowerCase())&&!bc(a,e,c)){u=e;break}return u>0?{...o,prefixExpr:a.slice(0,u).join(" "),body:a.slice(u).join(" ")}:null}(e,this.sourceProfile.code);if(t)return this.transformBlock(t);const r=this.transformWithTrailingEnd(e);if(null!==r)return r;const n=this.transformSetWithScope(e);if(null!==n)return n;const s=function(e,t="en"){const r=sc(t);if(!r)return null;const n=_c(e,r),s=function(e,t){if(0===e.length)return"unknown";const r=e[0].toLowerCase(),n=t.markers.find(e=>"event"===e.role&&"preposition"===e.position);return n&&r===n.form.toLowerCase()||jc.has(r)?"event-handler":dl.has(r)?"conditional":"command"}(n,r);switch(s){case"event-handler":return function(e,t){const r=new Map;let n=jc.has(e[0]?.toLowerCase())?1:0;if(e[n]){const t=[e[n]];for(n++;e[n]&&Nc.has(e[n].toLowerCase())&&e[n+1];)t.push(e[n],e[n+1]),n+=2;r.set("event",{role:"event",value:t.join(" ")})}if(e[n]&&"from"===e[n].toLowerCase()&&e[n+1]){n++;const t=[];for(;e[n]&&!il.has(e[n].toLowerCase());)t.push(e[n]),n++;if(t.length>0){const e=t.join(" ");r.set("source",{role:"source",value:e,isSelector:/^[#.<@]/.test(e)})}}if(e[n]&&(r.set("action",{role:"action",value:e[n]}),n++),e[n]){const s=Rc(t,r.get("action")?.value);let i="patient",a=[];for(let t=n;e.length>t;t++){const n=e[t],o=s[n.toLowerCase()];if(o){if(a.length>0){const e=a.join(" ");r.set(i,{role:i,value:e,isSelector:/^[#.<@]/.test(e)})}i=o,a=[]}else a.push(n)}if(a.length>0){const e=a.join(" ");r.set(i,{role:i,value:e,isSelector:/^[#.<@]/.test(e)})}}return{type:"event-handler",roles:r,original:e.join(" ")}}(n,r);case"command":return function(e,t){const r=new Map;if(0===e.length)return{type:"command",roles:r,original:""};r.set("action",{role:"action",value:e[0]});const n=Rc(t,e[0]);let s="patient",i=[];for(let t=1;e.length>t;t++){const a=e[t],o=n[a.toLowerCase()];if(o){if(i.length>0){const e=i.join(" ");r.set(s,{role:s,value:e,isSelector:/^[#.<@]/.test(e)})}s=o,i=[]}else i.push(a)}if(i.length>0){const e=i.join(" ");r.set(s,{role:s,value:e,isSelector:/^[#.<@]/.test(e)})}return{type:"command",roles:r,original:e.join(" ")}}(n,r);case"conditional":return function(e){const t=new Map;t.set("action",{role:"action",value:e[0]});const r=e.findIndex(e=>ml.has(e.toLowerCase()));if(r>1){const n=e.slice(1,r).join(" ");t.set("condition",{role:"condition",value:n})}else-1===r&&e.length>1&&t.set("condition",{role:"condition",value:e.slice(1).join(" ")});return{type:"conditional",roles:t,original:e.join(" ")}}(n);default:return null}}(e,this.sourceProfile.code);if(!s)return e;!function(e,t){if("command"!==e.type)return;const r=e.roles.get("action")?.value;if(!r)return;const n=nl[r.toLowerCase()];if(!n||!$c.has(n))return;const s=e.roles.get("patient");s&&!e.roles.has(n)&&(t.markers.some(e=>e.role===n)||(e.roles.delete("patient"),e.roles.set(n,{...s,role:n})))}(s,this.targetProfile),function(e,t,r){for(const[n,s]of e.roles)s.translated=s.value.includes("'s")?Wc(s.value,t,r):s.isSelector||s.isLiteral?s.value:Wc(s.value,t,r)}(s,this.sourceProfile.code,this.targetProfile.code);const i=this.findRule(s);if(i?.transform.custom)return i.transform.custom(s,this.targetProfile);const a=Gl(s.roles,i?.transform.roleOrder||this.targetProfile.canonicalOrder);return ec(i?.transform.insertMarkers??1?Ql(a,this.targetProfile.markers,this.targetProfile.adpositionType):a.map(e=>e.translated||e.value))}transformWithTrailingEnd(e){const t=this.sourceProfile.code,r=e.trim().split(/\s+/);if(2>r.length)return null;const n=Vc("end","en",t).toLowerCase();if(r[r.length-1].toLowerCase()!==n)return null;const s=new Set(["if","repeat","unless","while","when","live","js"].map(e=>Vc(e,"en",t).toLowerCase()));return r.slice(0,-1).some(e=>s.has(e.toLowerCase()))?null:`${this.transformSingle(r.slice(0,-1).join(" "))} ${Vc(r[r.length-1],t,this.targetProfile.code)}`}tryTransformJsBlock(e){const t=this.sourceProfile.code,r=this.targetProfile.code,n=Vc("js","en",t),s=Vc("end","en",t).toLowerCase(),i=e.split(/\s+/).filter(e=>e.length>0),a=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),o=RegExp(`^${a}(\\(.*\\))?$`,"i"),l=i.findIndex(e=>o.test(e));if(-1===l)return null;let c=-1;for(let e=l+1;i.length>e;e++)if(i[e].toLowerCase()===s){c=e;break}if(-1===c)return null;if(c!==i.length-1)return null;const u=i[l],d=u.match(o)?.[1]??"",m=d?u.slice(0,u.length-d.length):u,p=i.slice(l+1,c).join(" "),h=[Vc(m,t,r)+d,p,Vc(i[c],t,r)].filter(e=>e.length>0).join(" "),f=i.slice(0,l);if(0===f.length)return h;const y="JSBLOCKPLACEHOLDER",g=this.transformSingle([...f,y].join(" "));return g.includes(y)?g.replace(y,h):null}tryTransformEventWithBlockBody(e){const t=_c(e,this.sourceProfile);if(0===t.length)return null;if(!jc.has(t[0]?.toLowerCase()))return null;let r=-1;for(let e=1;t.length>e;e++)if(Tc.has(t[e].toLowerCase())){r=e;break}if(0>=r)return null;if("end"!==t[t.length-1].toLowerCase())return null;const n=t.slice(0,r),s=t.slice(r);if("VSO"===this.targetProfile.wordOrder&&n.some(e=>"from"===e.toLowerCase()))return null;const i="EVENTBLOCKPLACEHOLDER",a=this.transformSingle([...n,i].join(" "));if(!a.includes(i))return null;const o=this.transformBlockBody(s);return[a.replace(i,"").replace(/\s+/g," ").trim(),o].filter(e=>e.length>0).join(" ")}tryTransformEventWithUnlessGuard(e){if(!Oc.has(this.targetProfile.code))return null;const t=_c(e,this.sourceProfile);if(0===t.length)return null;if(!jc.has(t[0]?.toLowerCase()))return null;let r=-1;for(let e=1;t.length>e;e++)if("unless"===t[e].toLowerCase()){r=e;break}if(0>=r)return null;if("end"===t[t.length-1].toLowerCase())return null;const n=t.slice(0,r),s=t.slice(r).join(" "),i=this.transform(s);if(!i)return null;const a="EVENTGUARDPLACEHOLDER",o=this.transformSingle([...n,a].join(" "));return o.includes(a)?[o.replace(a,"").replace(/\s+/g," ").trim(),i].filter(e=>e.length>0).join(" "):null}tryTransformEventWithModifierBody(e){if("SOV"!==this.targetProfile.wordOrder)return null;const t=_c(e,this.sourceProfile);if(0===t.length)return null;if(!jc.has(t[0]?.toLowerCase()))return null;let r=1;if(!t[r])return null;for(r++;t[r]&&Nc.has(t[r].toLowerCase())&&t[r+1];)r+=2;if("from"===t[r]?.toLowerCase()&&t[r+1])for(r++;t[r]&&!il.has(t[r].toLowerCase())&&!Ic.has(t[r].toLowerCase());)r++;const n=t[r]?.toLowerCase();if(!n||!Ic.has(n))return null;const s=r;let i=r+1;"async"!==n&&"once"!==n&&("at"===t[i]?.toLowerCase()&&i++,t[i]&&/^\d+(ms|s|m)?$/.test(t[i])&&i++);const a=t.slice(s,i).join(" "),o=[...t.slice(0,s),...t.slice(i)].join(" ");return t.length-(i-s)>2?[a,this.transform(o)].filter(e=>e.length>0).join(" "):null}transformSetWithScope(e){const t=this.sourceProfile.code,r=this.targetProfile.code,n=e.match(/^(.*\bset\b.*\S)\s+on\s+([#.<@[]\S*|me|it|you)\s*$/i);if(!n)return null;const s=n[2],i=this.transformSingle(n[1]),a=/^[#.<@[]/.test(s)?s:Vc(s,t,r);if("SOV"===this.targetProfile.wordOrder){const t=Vc("set","en",r),n=e.trim().split(/\s+/)[0]?.toLowerCase(),s=!!n&&jc.has(n),o=i.split(/\s+/).filter(Boolean);if(s){if(o.length>0&&o[o.length-1]===t)return o.splice(o.length-1,0,"on",a),o.join(" ")}else{const e=o.indexOf(t);if(e>=0)return o.splice(e,1),o.push("on",a,t),o.join(" ")}return`${i} on ${a}`}return`${i} on ${a}`}transformBlockBody(e){const t=this.sourceProfile.code,r=this.targetProfile.code,n=e[0],s="end"===e[e.length-1]?.toLowerCase(),i=s?e[e.length-1]:"",a=e.slice(1,s?-1:void 0),o=yc(t),l=vc(t);let c=a.findIndex((e,t)=>o.has(e.toLowerCase())&&!bc(a,t,l));0>c&&(c=a.length);const u=a.slice(0,c).join(" "),d=a.slice(c),m=Vc(n,t,r),p=i?Vc(i,t,r):"",h=u?Wc(u,t,r):"",f=this.transformConditionalBody(d);return[m,h,"SOV"===this.targetProfile.wordOrder&&h&&new Set(["first","last","next","previous","closest"]).has(d[1]?.toLowerCase())&&"then"!==a[c-1]?.toLowerCase()?Vc("then",t,r):"",f,p].filter(e=>e.length>0).join(" ")}transformConditionalBody(e){const t=this.sourceProfile.code,r=this.targetProfile.code,n=Vc("else","en",t).toLowerCase();let s=0,i=-1;for(let t=0;e.length>t;t++){const r=e[t].toLowerCase();if(Tc.has(r))s++;else if("end"===r&&s>0)s--;else if(r===n&&0===s){i=t;break}}if(-1===i){const t=e.join(" ");return t?this.transform(t):""}const a=e.slice(0,i).join(" "),o=e.slice(i+1).join(" "),l=Vc(e[i],t,r);return[a?this.transform(a):"",l,o?this.transform(o):""].filter(e=>e.length>0).join(" ")}transformBlock(e){const t=this.sourceProfile.code,r=this.targetProfile.code,n=Vc(e.headKeyword,t,r),s=e.tailKeyword?Vc(e.tailKeyword,t,r):"",i=e.connector?Vc(e.connector,t,r):"";return[n,e.prefixExpr?Wc(e.prefixExpr,t,r):"",i,this.transform(e.body),s].filter(e=>e.length>0).join(" ")}findRule(e){if(this.targetProfile.rules)return this.targetProfile.rules.filter(t=>this.matchesRule(e,t)).sort((e,t)=>t.priority-e.priority)[0]}matchesRule(e,t){const{match:r}=t;for(const t of r.requiredRoles)if(!e.roles.has(t))return!1;if(r.commands&&r.commands.length>0){const t=e.roles.get("action");if(!t)return!1;const n=t.value.toLowerCase();if(!r.commands.some(e=>e.toLowerCase()===n))return!1}return!(r.predicate&&!r.predicate(e))}};function Jc(e,t){return new Kc("en",t).transform(e)}function Zc(e,t){return new Kc(t,"en").transform(e)}Yl.register("en",hl()),Yl.register("es",yl),Yl.register("ja",vl),Yl.register("fr",wl),Yl.register("de",El),Yl.register("ar",Cl),Yl.register("ko",Al),Yl.register("zh",Ol),Yl.register("tr",Pl),Yl.register("id",Nl),Yl.register("pt",$l),Yl.register("qu",Rl),Yl.register("sw",Ml);let Xc="en";const Yc=as(vs,ci,hi,hn,un,Ai),Gc=function(e,t){const r=new Xn(null);for(const t of e)r.register(t);return new is({registry:r,expressionRegistry:t.expressionRegistry,enableAsyncCommands:t.enableAsyncCommands??!0,commandTimeout:t.commandTimeout??1e4,enableErrorReporting:t.enableErrorReporting??!0,enableResultPattern:t.enableResultPattern??!0})}([aa(),ca(),ja(),Na(),qa(),_a(),za(),Ba(),Ha(),Ua(),Ja(),Xa(),Qa(),eo(),ro(),io(),oo(),lo(),co(),mo(),po(),ho(),fo(),vo(),bo(),wo(),Eo(),Ao(),Po(),Io(),Ro(),qo(),Mo(),_o(),$o(),Vo(),Do(),zo(),Wo(),Uo(),Ko(),Jo(),Bo(),Fo(),Zo(),Xo(),Yo(),new Go,Qo(),new el,new tl],{expressionRegistry:Yc});function Qc(e){const t=function(){if("en"!==Xc)return Yl.get(Xc)}();return Xt(e,t?{keywords:t}:void 0)}const eu={parse:e=>Qc(e),execute:async(e,t)=>{const r=cr(t),n=Qc(e);if(!n.success||!n.node)throw Error(n.error?.message||"Parse failed");return await Gc.execute(n.node,r)}},tu=function(e){return new os(e)}(eu),ru={getLocale:()=>Xc,setLocale(e){if(Yl.has(e)){if(Xc=e,Yl.setDefault(e),"undefined"!=typeof document){document.documentElement.setAttribute("lang",e);const t=sc(e);"rtl"===t?.direction?document.documentElement.setAttribute("dir","rtl"):document.documentElement.setAttribute("dir","ltr")}}else console.warn(`Locale '${e}' not registered. Available: ${Yl.getAvailable().join(", ")}`)},getAvailableLocales:()=>Yl.getAvailable(),detectAndSetLocale(){if("undefined"==typeof navigator)return"en";const e=navigator.languages||[navigator.language];for(const t of e){const e=t.split("-")[0].toLowerCase();if(Yl.has(e))return this.setLocale(e),e}return"en"},registerLocale(e,t){Yl.register(e,t)},toLocale:(e,t)=>Jc(e,t||Xc),toEnglish:(e,t)=>Zc(e,t||Xc),translate:function(e,t,r){return t===r?e:"en"===t?Jc(e,r):"en"===r?Zc(e,t):pc.has(`${t}->${r}`)?function(e,t,r){const n=pc.get(`${t}->${r}`);if(!n)return Jc(Zc(e,t),r);return e.split(/\s+/).map(e=>{if(e.startsWith("#")||e.startsWith(".")||e.startsWith("@"))return e;if(e.startsWith('"')||e.startsWith("'"))return e;const t=n.words[e];if(t)return t;const r=e.match(/^(.+?)(-.+)$/);if(r){const[,e,t]=r;return(n.words[e]||e)+t}return e}).join(" ")}(e,t,r):Jc(Zc(e,t),r)},createTransformer:(e,t)=>new Kc(e,t),getProfile:sc,getSupportedGrammarLocales:function(){return Object.keys(nc)},profiles:nc,dictionaries:{en:{},es:fl,ja:gl,fr:bl,de:kl,ar:xl,ko:Sl,zh:Tl,tr:Ll,id:jl,pt:_l,qu:Il,sw:ql},createKeywordProvider:pl},nu={runtime:eu,parse:e=>Qc(e),compile:e=>{const t=performance.now();try{const r=Qc(e);return{success:r.success,ast:r.node,errors:r.error?[r.error]:[],tokens:r.tokens||[],compilationTime:performance.now()-t}}catch(e){return{success:!1,ast:void 0,errors:[{message:e instanceof Error?e.message:e+"",line:1,column:1}],tokens:[],compilationTime:performance.now()-t}}},execute:async(e,t)=>{const r=cr(t);if("string"==typeof e){const t=Qc(e);if(!t.success||!t.node)throw Error(t.error?.message||"Parse failed");return await Gc.execute(t.node,r)}if(e&&"object"==typeof e)return await Gc.execute(e,r);throw Error("execute() requires a code string or compiled AST")},run:async(e,t)=>{const r=cr(t),n=Qc(e);if(!n.success||!n.node)throw Error(n.error?.message||"Parse failed");return await Gc.execute(n.node,r)},evaluate:async(e,t)=>nu.run(e,t),processNode:e=>{e===document?tu.scanAndProcessAll():e instanceof HTMLElement&&tu.processElement(e)},process:e=>nu.processNode(e),createContext:lr,attributeProcessor:tu,version:"1.1.0-classic-i18n",i18n:ru,commands:["add","remove","toggle","put","hide","show","make","if","unless","repeat","break","continue","halt","return","exit","throw","set","get","increment","decrement","default","wait","fetch","trigger","send","transition","measure","settle","take","log","tell","call","copy","pick","beep","js","async","go","install","append","render","pseudo-command"],locales:["en","es","ja","fr","de","ar","ko","zh","tr","id","pt","qu","sw"],eval:async(e,t)=>eu.execute(e,t),init:e=>{!1!==e?.autoDetectLocale&&ru.detectAndSetLocale(),tu.init()}};"undefined"!=typeof window&&(window.hyperfixi=nu,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{nu.init()}):nu.init());class su{constructor(){this.name="addition",this.category="Special",this.syntax="left + right",this.outputType="number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=this.validate(t);if(!r.isValid)return{success:!1,errors:r.errors,suggestions:r.suggestions};try{const{left:e,right:r}=t,n=Cs(e,"left operand");return{success:!0,value:As(n+Cs(r,"right operand"),"addition"),type:"number"}}catch(e){return{success:!1,errors:[js("runtime-error","Addition failed: "+(e instanceof Error?e.message:e+""))],suggestions:["Ensure both operands are numeric"]}}}validate(e){const t=function(e){if(null==e)return Ps([js("missing-argument","Input is null or undefined")],["Provide an object with left and right operands"]);if("object"!=typeof e)return Ps([js("type-mismatch","Expected object, got "+typeof e)],["Provide an object with left and right operands"]);const t=e;if(!("left"in t)||!("right"in t)){const e=[];return"left"in t||e.push("left"),"right"in t||e.push("right"),Ps([js("missing-argument",`Missing ${e.join(" and ")} operand${e.length>1?"s":""}`)],["Provide { left: value, right: value }"])}return{isValid:!0,errors:[],suggestions:[]}}(e);if(!t.isValid)return t;const{left:r,right:n}=e;return Ts(r)?Ts(n)?{isValid:!0,errors:[],suggestions:[]}:{isValid:!1,errors:[js("type-mismatch","Right operand cannot be converted to number: "+n)],suggestions:["Provide a numeric value for right operand"]}:{isValid:!1,errors:[js("type-mismatch","Left operand cannot be converted to number: "+r)],suggestions:["Provide a numeric value for left operand"]}}}const iu={addition:new su,subtraction:new class{constructor(){this.name="subtraction",this.category="Special",this.syntax="left - right",this.outputType="number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=this.validate(t);if(!r.isValid)return{success:!1,errors:r.errors,suggestions:r.suggestions};try{const{left:e,right:r}=t,n=Cs(e,"left operand");return{success:!0,value:As(n-Cs(r,"right operand"),"subtraction"),type:"number"}}catch(e){return{success:!1,errors:[js("runtime-error","Subtraction failed: "+(e instanceof Error?e.message:e+""))],suggestions:["Ensure both operands are numeric"]}}}validate(e){return(new su).validate(e)}},multiplication:new class{constructor(){this.name="multiplication",this.category="Special",this.syntax="left * right",this.outputType="number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=this.validate(t);if(!r.isValid)return{success:!1,errors:r.errors,suggestions:r.suggestions};try{const{left:e,right:r}=t,n=Cs(e,"left operand");return{success:!0,value:As(n*Cs(r,"right operand"),"multiplication"),type:"number"}}catch(e){return{success:!1,errors:[js("runtime-error","Multiplication failed: "+(e instanceof Error?e.message:e+""))],suggestions:["Ensure both operands are numeric"]}}}validate(e){return(new su).validate(e)}},division:new class{constructor(){this.name="division",this.category="Special",this.syntax="left / right",this.outputType="number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=this.validate(t);if(!r.isValid)return{success:!1,errors:r.errors,suggestions:r.suggestions};try{const{left:e,right:r}=t,n=function(e,t,r=!0){if(0===t){if(r)return 0===e?NaN:e>0?1/0:-1/0;throw Error("Division by zero")}return e/t}(Cs(e,"left operand"),Cs(r,"right operand"),!0);return{success:!0,value:n,type:"number"}}catch(e){return{success:!1,errors:[js("runtime-error","Division failed: "+(e instanceof Error?e.message:e+""))],suggestions:["Ensure both operands are numeric"]}}}validate(e){return(new su).validate(e)}},modulo:new class{constructor(){this.name="modulo",this.category="Special",this.syntax="left mod right",this.outputType="number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=this.validate(t);if(!r.isValid)return{success:!1,errors:r.errors,suggestions:r.suggestions};try{const{left:e,right:r}=t,n=function(e,t){if(0===t)throw Error("Modulo by zero");return e%t}(Cs(e,"left operand"),Cs(r,"right operand"));return{success:!0,value:n,type:"number"}}catch(e){return{success:!1,errors:[js("runtime-error","Modulo failed: "+(e instanceof Error?e.message:e+""))],suggestions:["Ensure both operands are numeric and divisor is not zero"]}}}validate(e){return(new su).validate(e)}},power:new class{constructor(){this.name="power",this.category="Special",this.syntax="left ** right",this.outputType="number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=this.validate(t);if(!r.isValid)return{success:!1,errors:r.errors,suggestions:r.suggestions};try{const{left:e,right:r}=t,n=Cs(e,"left operand"),s=Cs(r,"right operand");return{success:!0,value:As(Math.pow(n,s),"power"),type:"number"}}catch(e){return{success:!1,errors:[js("runtime-error","Power failed: "+(e instanceof Error?e.message:e+""))],suggestions:["Ensure both operands are numeric"]}}}validate(e){return(new su).validate(e)}}};var au=Object.freeze({__proto__:null,conversion:un,conversionExpressions:un,createCommonRegistry:function(){return as(vs,ci,hi,un,Ai)},createCoreRegistry:function(){return as(vs,ci,hi)},createExpressionRegistry:as,createFullExpressionRegistry:function(){return as(vs,ci,un,Ai,hn,hi,iu)},createFullRegistry:function(){return as(vs,ci,hi,un,Ai,hn)},logical:ci,logicalExpressions:ci,positional:Ai,positionalExpressions:Ai,properties:hn,propertiesExpressions:hn,references:vs,referencesExpressions:vs,special:hi,specialExpressions:hi});return nu}();
1
+ var hyperfixi=function(){"use strict";const e="then",t="else",r="end",n="and",s="for",i="while",a="until",o="forever",l="times",c="index",u="in",d="to",m="from",p="with",h="of",f="on",y="event",g="behavior",v="global",b="the",w="start",k=new Set(["add","append","async","beep","blur","break","breakpoint","call","clear","close","continue","copy","decrement","default","empty","exit","fetch","focus","for","get","go","halt","hide","open","if","increment","install","js","log","make","measure","morph","pick","process","push","put","remove","render","repeat","replace","reset","return","scroll","select","send","set","settle","show","start","swap","take","tell","throw","toggle","transition","trigger","unless","wait"]),E=new Set(["put","trigger","send","remove","take","toggle","set","show","hide","add","halt","measure","js","go","tell","pick","start","swap","morph","push","replace","process"]),x=(new Set(["if","unless","repeat","wait","for","while"]),"at start of"),C="at end of",S=["into","before","after","at",x,C,"at the start of","at the end of"],A=new Set(["if","else","unless","for","while","until","end","and","or","not","in","to","from","into","with","without","as","matches","contains","then","on","when","every","init","def","behavior","the","of","first","last"]),T=e=>k.has(e.toLowerCase()),O=e=>E.has(e.toLowerCase()),L=e=>A.has(e.toLowerCase()),P=e=>j.has(e.toLowerCase()),j=new Set(["hsl","hsla","rgb","rgba","hwb","lab","lch","oklch","oklab","color","color-mix","calc","min","max","clamp","var","url","linear-gradient","radial-gradient","conic-gradient","repeating-linear-gradient","repeating-radial-gradient","repeating-conic-gradient"]),N=new Set(["me","it","you","result","my","its","your"]),I=new Set(["and","or","not","no"]),R=new Set(["==","!=","===","!==","<",">","<=",">=","is","is not","am","is a","is an","is not a","is not an","precedes","does not precede","follows","does not follow","contains","starts with","ends with","does not start with","does not end with","has","have","does not contain","include","includes","does not include","match","matches","exists","does not exist","is empty","is not empty","is in","is not in","is between","is not between","equals","in","is equal to","is really equal to","is not equal to","is not really equal to","is greater than","is less than","is greater than or equal to","is less than or equal to","really equals","am in","am not in","am between","am not between","is really","is not really","is equal","is not equal","contain","do not contain","does not contains","do not match","does not match","ignoring case","sorted by","mapped to","split by","joined by"]),q=new Set(["click","dblclick","mousedown","mouseup","mouseover","mouseout","mousemove","mouseenter","mouseleave","focus","blur","change","input","submit","reset","select","load","unload","resize","scroll","keydown","keyup","keypress","touchstart","touchend","touchmove","touchcancel","drag","drop","dragover","dragenter","dragleave","cut","copy","paste","toggle"]),M=new Set(["on","init","behavior","def","if","else","unless","for","while","until","end","and","or","not","in","to","from","into","with","as","then","when","where","after","before","by","at","between","async","no","start","of","the","new","global","local","equal","equals","greater","less","than","really","catch","finally","throw","return"]);var _;!function(e){e.IDENTIFIER="identifier",e.STRING="string",e.NUMBER="number",e.SELECTOR="selector",e.OPERATOR="operator",e.TIME="time",e.TEMPLATE="template",e.COMMENT="comment",e.SYMBOL="symbol",e.UNKNOWN="unknown"}(_||(_={}));const $=new Set(["+","-","*","/","mod"]),V=new Set(["ms","s","seconds","minutes","hours","days"]);function D(e,t=1){const r=e.position+t;return e.input.length>r?e.input[r]:""}function z(e){const t=e.input[e.position];return e.position++,"\n"===t?(e.line++,e.column=1):"\r"===t?("\n"===(e.input.length>e.position?e.input[e.position]:"")&&e.position++,e.line++,e.column=1):e.column++,t}function B(e){const t=e.input,r=t.length;for(;r>e.position;){const r=t[e.position];if(" "!==r&&"\t"!==r&&"\r"!==r&&"\n"!==r)break;z(e)}}function F(e,t,r,n,s){const i=n??e.position-r.length,a=e.position;let o=e.column-r.length;if(void 0!==n){o=1;let t=-1;for(let r=0;n>r;r++)"\n"!==e.input[r]&&"\r"!==e.input[r]||(t=r);o=n-t}const l={kind:t,value:r,start:i,end:a,line:H(e,i),column:o};e.tokens.push(l)}function H(e,t){let r=1;for(let n=0;t>n&&e.input.length>n;n++){const t=e.input[n];"\n"===t?r++:"\r"===t&&(r++,e.input.length>n+1&&"\n"===e.input[n+1]&&n++)}return r}function W(e){const t=e.position;let r="";for(z(e),z(e);e.input.length>e.position&&"\n"!==e.input[e.position];)r+=z(e);F(e,_.COMMENT,"--"+r,t)}function U(e){const t=e.position,r=z(e);let n=r;for(;e.input.length>e.position;){const t=z(e);if(n+=t,t===r)break;"\\"===t&&e.input.length>e.position&&(n+=z(e))}F(e,_.STRING,n,t)}function K(e){const t=e.position;z(e);let r="";for(;e.input.length>e.position;){const t=e.input[e.position];if("`"===t){z(e);break}if("\\"===t){if(z(e),e.input.length>e.position){const t=z(e);switch(t){case"n":r+="\n";break;case"t":r+="\t";break;case"r":r+="\r";break;case"\\":r+="\\";break;case"`":r+="`";break;default:r+=t}}}else r+=z(e)}if(e.position>=e.input.length&&!e.input.endsWith("`"))throw Error(`Unterminated template literal at line ${e.line}, column ${e.column-r.length}`);F(e,_.TEMPLATE,r,t)}function J(e){const t=e.position;let r=z(e);if(e.input.length>e.position&&"{"===e.input[e.position]){for(r+=z(e);e.input.length>e.position;){const t=e.input[e.position];if(r+=z(e),"}"===t)break}F(e,_.SELECTOR,r,t)}else{for(;e.input.length>e.position;){const t=e.input[e.position];if("\\"===t)z(e),e.input.length>e.position&&(r+=z(e));else{if(!re(t)&&"-"!==t&&"_"!==t&&":"!==t)break;r+=z(e)}}F(e,_.SELECTOR,r,t)}}function Z(e){const t=e.position;if(ne(e))return void function(e,t){const r=e.input;let n="",s=0,i="";for(;r.length>e.position;){const t=r[e.position];if(i)n+=z(e),t===i&&(i="");else if('"'!==t&&"'"!==t){if("<"===t){if("/"===r[e.position+1]){for(;r.length>e.position&&">"!==r[e.position];)n+=z(e);if(r.length>e.position&&(n+=z(e)),s--,0>=s)break;continue}let t=!1,i="";for(;r.length>e.position;){const s=r[e.position];if(i)n+=z(e),s===i&&(i="");else if('"'!==s&&"'"!==s){if(">"===s){t="/"===r[e.position-1],n+=z(e);break}n+=z(e)}else i=s,n+=z(e)}if(t||s++,0>=s)break;continue}n+=z(e)}else i=t,n+=z(e)}F(e,_.SELECTOR,n,t)}(e,t);let r="";for(r+=z(e);e.input.length-1>e.position;){const t=e.input[e.position],n=e.input[e.position+1];if(r+=z(e),"/"===t&&">"===n){r+=z(e);break}}F(e,_.SELECTOR,r,t)}function X(e){const t=e.position;let r=z(e);for(;e.input.length>e.position;){const t=e.input[e.position];if(!re(t)&&"_"!==t&&"-"!==t)break;r+=z(e)}F(e,_.SYMBOL,r,t)}function Y(e){const t=e.position;let r="";const n=e.input[e.position];if(("'"===n||"'"===n)&&"s"===D(e,1))return r="'s",z(e),z(e),void F(e,_.OPERATOR,r,t);const s=e.input.substring(e.position,e.position+2),i=e.input.substring(e.position,e.position+3);["===","!=="].includes(i)?(r=i,z(e),z(e),z(e)):["==","!=","<=",">=","&&","||","**","~=","|=","^=","$=","*=","?."].includes(s)?(r=s,z(e),z(e)):r=z(e),F(e,_.OPERATOR,r,t)}function G(e){const t=e.position,r=e.input,n=r.length;let s="";for(;n>e.position;){const t=r[e.position];if("0">t||t>"9")break;s+=z(e)}if(n>e.position&&"."===r[e.position]&&(e.position+1>=n||"."!==r[e.position+1]))for(s+=z(e);n>e.position;){const t=r[e.position];if("0">t||t>"9")break;s+=z(e)}if(n>e.position){const t=r[e.position];if("e"===t||"E"===t){const t=n>e.position+1?r[e.position+1]:"",i=n>e.position+2?r[e.position+2]:"";if(t>="0"&&"9">=t||!("+"!==t&&"-"!==t||"0">i||i>"9"))for(s+=z(e),"+"!==r[e.position]&&"-"!==r[e.position]||(s+=z(e));n>e.position;){const t=r[e.position];if("0">t||t>"9")break;s+=z(e)}}}const i=e.position;let a="";for(;n>e.position;){const t=r[e.position];if(("a">t||t>"z")&&("A">t||t>"Z"))break;a+=z(e)}V.has(a)?F(e,_.TIME,s+a,t):(e.position=i,F(e,_.NUMBER,s,t))}function Q(e){const t=e.position,r=e.input,n=r.length;let s="";for(;n>e.position;){const t=r[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t&&"-"!==t)break;s+=z(e)}const i=function(e,t,r){const n=t.toLowerCase(),s=e.position;if("'s"===t||"'s"===t)return!1;const i=e.tokens[e.tokens.length-1];if(i&&(i.kind===_.IDENTIFIER||i.kind===_.SELECTOR)){const t=e.input.length>e.position?e.input[e.position]:"";if("'"===t||"'"===t)return!1}B(e);let a="";for(;e.input.length>e.position;){const t=e.input[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t&&"-"!==t)break;a+=z(e)}if(a){const t=a.toLowerCase(),s=`${n} ${t}`,i=function(e,t,r,n){const s=t.toLowerCase(),i=r.toLowerCase();if("at"===s){const t=e.position;if("the"===i){B(e);let r="";for(;e.input.length>e.position;){const t=e.input[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t&&"-"!==t)break;r+=z(e)}const s=r.toLowerCase();if("start"===s||"end"===s){B(e);let t="";for(;e.input.length>e.position;){const r=e.input[e.position];if(("a">r||r>"z")&&("A">r||r>"Z")&&("0">r||r>"9")&&"_"!==r&&"-"!==r)break;t+=z(e)}if("of"===t.toLowerCase())return F(e,_.IDENTIFIER,`at the ${s} of`,n),!0}return e.position=t,!1}if("start"===i||"end"===i){B(e);let r="";for(;e.input.length>e.position;){const t=e.input[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t&&"-"!==t)break;r+=z(e)}return"of"===r.toLowerCase()?(F(e,_.IDENTIFIER,`at ${i} of`,n),!0):(e.position=t,!1)}}return!1}(e,n,t,r);if(i)return!0;const o=function(e,t,r){const n=e.position;let s=`${t} ${r}`,i=e.position;const a=[t,r];for(;8>a.length&&(B(e),e.input.length>e.position);){let t="";for(;e.input.length>e.position;){const r=e.input[e.position];if(("a">r||r>"z")&&("A">r||r>"Z"))break;t+=z(e)}if(!t)break;a.push(t.toLowerCase());const r=a.join(" ");R.has(r)&&(s=r,i=e.position)}return R.has(s)&&s!==`${t} ${r}`?(e.position=i,s):(e.position=n,null)}(e,n,t);if(o)return F(e,_.OPERATOR,o,r),!0;if(R.has(s))return F(e,_.OPERATOR,s,r),!0}return R.has(n)?(e.position=s,F(e,_.OPERATOR,t,r),!0):(e.position=s,!1)}(e,s,t);if(i)return;const a=function(e){const t=e.toLowerCase();return"include"===t||"includes"===t||I.has(t)||$.has(e)||$.has(t)||R.has(t)?_.OPERATOR:_.IDENTIFIER}(s);F(e,a,s,t)}function ee(e){const t=e.position,r=e.input,n=r.length;z(e);let s="$";for(;n>e.position;){const t=r[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t)break;s+=z(e)}F(e,_.IDENTIFIER,s,t)}function te(e){return/[a-zA-Z]/.test(e)}function re(e){return/[a-zA-Z0-9]/.test(e)}function ne(e){const t=e.input,r=t[e.position+1];if(!r||!/[a-zA-Z]/.test(r))return!1;let n=e.position+1,s="";for(;t.length>n&&/[a-zA-Z0-9-]/.test(t[n]);)s+=t[n],n++;return s.length>0&&-1!==t.indexOf("</"+s+">",n)}function se(e){if(ne(e))return!0;let t=e.position+1,r=!1;for(;e.input.length>t;){const n=e.input[t];if("/"===n&&e.input.length>t+1&&">"===e.input[t+1])return r;if(re(n)||"."===n||"#"===n||"["===n||"]"===n||":"===n||"-"===n||"_"===n||" "===n||"="===n||'"'===n||"'"===n||"("===n||")"===n||"*"===n||"^"===n||"$"===n||"~"===n||"|"===n||">"===n||"+"===n||","===n||"{"===n||"}"===n)r=!0,t++;else{if(" "!==n&&"\t"!==n)return!1;t++}if(t-e.position>50)return!1}return!1}function ie(e){return"+-*/^%=!<>&|(){}[],.;:?''~$".includes(e)}const ae=function(){if("undefined"!=typeof localStorage)try{const e=localStorage,t=e.getItem("hyperfixi:debug")||e.getItem("lokascript:debug");if("*"===t||"true"===t)return!0}catch{}return!("undefined"==typeof window||!window.__HYPERFIXI_DEBUG__)||"undefined"!=typeof process&&"true"===process.env?.HYPERFIXI_DEBUG}(),oe=ae,le=ae,ce=ae,ue=ae,de=(...e)=>{oe&&console.log("\ud83d\udd27",...e)},me=(...e)=>{le&&console.log("\ud83c\udfaf",...e)},pe=(...e)=>{ce&&console.log("\ud83d\udcdd",...e)},he=(...e)=>{ue&&console.log("\ud83d\ude80",...e)};let fe=!1,ye=null;if("undefined"!=typeof window&&"undefined"!=typeof URLSearchParams)try{"semantic"===new URLSearchParams(window.location.search).get("debug")&&(fe=!0,ye=window,console.log("%c[HyperFixi] Semantic debug auto-enabled via URL param","color: #667eea; font-weight: bold"))}catch{}let ge={totalParses:0,semanticSuccesses:0,semanticFallbacks:0,traditionalParses:0,averageConfidence:0,confidenceHistory:[]};class ve{constructor(e){this.analyzer=e.analyzer,this.language=e.language,this.confidenceThreshold=e.confidenceThreshold??.5,this.debugEnabled=e.debug??!1}isAvailable(){return this.analyzer.supportsLanguage(this.language)}shouldSkipSemantic(e){const t=e.trim().split(/\s+/)[0]?.toLowerCase();if(ve.SKIP_SEMANTIC_COMMANDS.has(t))return!0;const r=e.toLowerCase();return!!/\bjs\b/.test(r)||!!/\btell\b/.test(r)||!!/\*[a-zA-Z]/.test(e)}trySemanticParse(e){const t=performance.now();if(this.shouldSkipSemantic(e))return{success:!1,confidence:0,errors:["Command skipped for semantic parsing - using traditional parser"]};if(!this.isAvailable())return{success:!1,confidence:0,errors:[`Semantic parsing not available for language '${this.language}'`]};try{const n=this.analyzer.analyze(e,this.language),s=performance.now()-t;this.debugEnabled&&console.log("[SemanticIntegration] Analysis result:",{input:e,language:this.language,confidence:n.confidence,command:n.command?.name,threshold:this.confidenceThreshold});const i=n.confidence>=this.confidenceThreshold&&!!n.command,a=!i&&n.confidence>0;if(fe){const t={};if(n.command?.roles)for(const[e,r]of n.command.roles)t[e]=r.value;const o={input:e.substring(0,100),language:this.language,confidence:n.confidence,threshold:this.confidenceThreshold,semanticSuccess:i,fallbackTriggered:a,command:n.command?.name,roles:Object.keys(t).length>0?t:void 0,errors:n.errors,timestamp:Date.now(),duration:s};!function(e){if(!fe)return;const t=e.semanticSuccess?"semantic":e.fallbackTriggered?"fallback":"traditional",r=Math.round(100*e.confidence),n=Math.round(100*e.threshold),s=e.semanticSuccess?"color: #4caf50; font-weight: bold":e.fallbackTriggered?"color: #ff9800; font-weight: bold":"color: #9e9e9e";if(console.groupCollapsed(`%c[Semantic] ${t.toUpperCase()} %c${e.input.substring(0,50)}${e.input.length>50?"...":""}`,s,"color: #888"),console.log(`Confidence: ${r}% (threshold: ${n}%)`),e.command&&console.log("Command: "+e.command),e.roles&&Object.keys(e.roles).length>0&&console.log("Roles:",e.roles),e.duration&&console.log(`Duration: ${e.duration.toFixed(2)}ms`),e.errors?.length&&console.log("Errors:",e.errors),console.groupEnd(),ye){const t=new CustomEvent("lokascript:semantic:parse",{detail:e,bubbles:!0});ye.dispatchEvent(t)}}(o),r=o,ge.totalParses++,r.semanticSuccess?ge.semanticSuccesses++:r.fallbackTriggered?ge.semanticFallbacks++:ge.traditionalParses++,ge.confidenceHistory.push(r.confidence),ge.confidenceHistory.length>100&&ge.confidenceHistory.shift(),ge.averageConfidence=ge.confidenceHistory.reduce((e,t)=>e+t,0)/ge.confidenceHistory.length}return i?{success:!0,node:this.buildCommandNode(n),confidence:n.confidence,tokensConsumed:n.tokensConsumed}:{success:!1,confidence:n.confidence,tokensConsumed:n.tokensConsumed,errors:n.errors}}catch(e){return{success:!1,confidence:0,errors:[e instanceof Error?e.message:e+""]}}var r}buildCommandNode(e){const{command:t}=e;if(!t)throw Error("Cannot build command node without command data");if("repeat"===t.name)return this.buildRepeatCommandNode(t);if("for"===t.name)return this.buildRepeatCommandNode(t);if("set"===t.name)return this.buildSetCommandNode(t);if("if"===t.name||"unless"===t.name)return this.buildIfCommandNode(t);const r=[],n={};for(const[e,s]of t.roles){const i=this.semanticValueToExpression(s);switch(e){case"patient":case"event":r.push(i);break;case"destination":"put"===t.name?n.into=i:"add"===t.name||"append"===t.name||"prepend"===t.name?n.to=i:n.on=i;break;case"source":"fetch"===t.name?r.push(i):n.from=i;break;case"quantity":n.by=i;break;case"duration":n.over=i;break;case"responseType":n.as=i;break;case"style":n.with=i;break;case"condition":n.when=i;break;default:n[e]=i}}return{type:"command",name:t.name,args:r,modifiers:Object.keys(n).length>0?n:void 0,isBlocking:!1,start:0,end:0,line:1,column:0}}buildRepeatCommandNode(e){const t=[],r={},n=e.roles.get("loopType");n&&t.push({type:"identifier",name:n.value+"",start:0,end:0,line:1,column:0});const s=e.roles.get("patient");"for"==(n?n.value+"":"")&&s&&t.push({type:"identifier",name:"expression"===s.type&&s.raw||s.value+"",start:0,end:0,line:1,column:0});const i=e.roles.get("event");i&&t.push({type:"string",value:i.value+"",start:0,end:0,line:1,column:0});const a=e.roles.get("source");a&&t.push(this.semanticValueToExpression(a));const o=e.roles.get("quantity");o&&t.push(this.semanticValueToExpression(o));const l=e.roles.get("condition");return l&&(r.condition=this.semanticValueToExpression(l)),{type:"command",name:"repeat",args:t,modifiers:Object.keys(r).length>0?r:void 0,isBlocking:!1,start:0,end:0,line:1,column:0}}buildSetCommandNode(e){const t=[],r=e.roles.get("destination");if(r)if("property-path"===r.type){const e=r;t.push({type:"possessiveExpression",object:this.semanticValueToExpression(e.object),property:this.createPropertyNode(e.property),start:0,end:0,line:1,column:0})}else t.push(this.semanticValueToExpression(r));t.push({type:"identifier",name:"to",start:0,end:0,line:1,column:0});const n=e.roles.get("patient");return n&&t.push(this.semanticValueToExpression(n)),{type:"command",name:"set",args:t,isBlocking:!1,start:0,end:0,line:1,column:0}}createPropertyNode(e){return e.startsWith("*")?{type:"cssProperty",name:e.substring(1),start:0,end:0,line:1,column:0}:{type:"identifier",name:e,start:0,end:0,line:1,column:0}}buildIfCommandNode(e){const t=[],r=e.roles.get("condition");return r&&t.push(this.semanticValueToExpression(r)),{type:"command",name:e.name,args:t,isBlocking:!1,start:0,end:0,line:1,column:0}}semanticValueToExpression(e){switch(e.type){case"selector":return{type:"selector",value:e.value,start:0,end:0,line:1,column:0};case"reference":return{type:"identifier",name:e.value,start:0,end:0,line:1,column:0};case"literal":return"string"==typeof e.value&&e.value.includes("${")&&e.value.includes("}")?{type:"templateLiteral",value:e.value,start:0,end:0,line:1,column:0}:{type:"literal",value:e.value,raw:e.raw??e.value,start:0,end:0,line:1,column:0};case"property-path":{const t=e;return{type:"memberExpression",object:this.semanticValueToExpression(t.object),property:{type:"identifier",name:t.property,start:0,end:0,line:1,column:0},computed:!1,start:0,end:0,line:1,column:0}}default:return this.parseExpressionString(e.raw||"")}}parseExpressionString(e){let t=0;const r=()=>{for(;e.length>t&&/\s/.test(e[t]);)t++},n=()=>{r();const n=t;for(;e.length>t&&/[a-zA-Z0-9_$]/.test(e[t]);)t++;return e.slice(n,t)},s=()=>{const n=[];if(t++,r(),")"!==e[t])for(n.push(i()),r();","===e[t];)t++,r(),n.push(i()),r();return")"===e[t]&&t++,n},i=()=>{r();const i=n();if(!i)return{type:"identifier",name:e.trim(),start:0,end:0,line:1,column:0};let a={type:"identifier",name:i,start:0,end:0,line:1,column:0};for(;e.length>t;){r();const i=e[t];if("."===i){t++;const e=n();e&&(a={type:"memberExpression",object:a,property:{type:"identifier",name:e,start:0,end:0,line:1,column:0},computed:!1,start:0,end:0,line:1,column:0})}else{if("("!==i)break;a={type:"callExpression",callee:a,arguments:s(),start:0,end:0,line:1,column:0}}}return a};return i()}getLanguage(){return this.language}getConfidenceThreshold(){return this.confidenceThreshold}}ve.SKIP_SEMANTIC_COMMANDS=new Set(["swap","morph","js","tell"]);const be=new Set(["then","end","to","into","on","with","from","in","by","for","while","until","unless","else","catch","finally"]),we=new Set([")","]","}",","]);function ke(e,t){return{infix:{bp:[e,e+1],handler:t??((t,r,n)=>{const s=n.parseExpr(e+1);return{type:"binaryExpression",operator:r.value,left:t,right:s,start:t.start,end:s.end??r.end,line:t.line??r.line,column:t.column??r.column}})}}}function Ee(e,t){return{infix:{bp:[e+1,e],handler:(t,r,n)=>{const s=n.parseExpr(e);return{type:"binaryExpression",operator:r.value,left:t,right:s,start:t.start,end:s.end??r.end,line:t.line??r.line,column:t.column??r.column}}}}}function xe(e,t){return{prefix:{bp:e,handler:t??((t,r)=>{const n=r.parseExpr(e);return{type:"unaryExpression",operator:t.value,operand:n,argument:n,prefix:!0,start:t.start,end:n.end??t.end,line:t.line,column:t.column}})}}}function Ce(e){return(t,r,n)=>{const s=n.advance();if(!s||!s.value)throw Error(`Type check requires a type name after 'is ${e?"not ":""}a/an', got: <end>`);let i=!0;const a=n.peek();return a&&"!"===a.value&&(n.advance(),i=!1),{type:"typeCheckExpression",value:t,typeName:s.value,nullOk:i,negated:e,start:t.start,end:s.end}}}const Se=function(...e){const t=new Map;for(const r of e)for(const[e,n]of r){const r=t.get(e);t.set(e,r?{prefix:n.prefix??r.prefix,infix:n.infix??r.infix}:{...n})}return t}(new Map([["or",ke(10)],["||",ke(10)],["and",ke(20)],["&&",ke(20)],["==",ke(30)],["!=",ke(30)],["<",ke(30)],[">",ke(30)],["<=",ke(30)],[">=",ke(30)],["is",ke(30)],["matches",ke(30)],["contains",ke(30)],["starts with",ke(30)],["ends with",ke(30)],["does not start with",ke(30)],["does not end with",ke(30)],["is between",ke(30,(e,t,r)=>{const n=r.parseExpr(31),s=r.peek();if(!s||"and"!==s.value.toLowerCase())throw Error("between requires 'and' between min and max operands, got: "+(s?.value??"<end>"));r.advance();const i=r.parseExpr(31);return{type:"betweenExpression",value:e,min:n,max:i,negated:!1,start:e.start,end:i.end}})],["is not between",ke(30,(e,t,r)=>{const n=r.parseExpr(31),s=r.peek();if(!s||"and"!==s.value.toLowerCase())throw Error("between requires 'and' between min and max operands, got: "+(s?.value??"<end>"));r.advance();const i=r.parseExpr(31);return{type:"betweenExpression",value:e,min:n,max:i,negated:!0,start:e.start,end:i.end}})],["am between",ke(30,(e,t,r)=>{const n=r.parseExpr(31),s=r.peek();if(!s||"and"!==s.value.toLowerCase())throw Error("between requires 'and' between min and max operands, got: "+(s?.value??"<end>"));r.advance();const i=r.parseExpr(31);return{type:"betweenExpression",value:e,min:n,max:i,negated:!1,start:e.start,end:i.end}})],["am not between",ke(30,(e,t,r)=>{const n=r.parseExpr(31),s=r.peek();if(!s||"and"!==s.value.toLowerCase())throw Error("between requires 'and' between min and max operands, got: "+(s?.value??"<end>"));r.advance();const i=r.parseExpr(31);return{type:"betweenExpression",value:e,min:n,max:i,negated:!0,start:e.start,end:i.end}})],["ignoring case",{infix:{bp:[25,26],handler:(e,t,r)=>(e.ignoringCase=!0,e)}}],["where",ke(28,(e,t,r)=>{const n=r.parseExpr(29);return{type:"collectionExpression",operator:"where",collection:e,right:n,start:e.start,end:n.end}})],["sorted by",ke(28,(e,t,r)=>{const n=r.parseExpr(29);let s="asc";const i=r.peek();if(i&&"string"==typeof i.value){const e=i.value.toLowerCase();"asc"===e||"ascending"===e?(r.advance(),s="asc"):"desc"!==e&&"descending"!==e||(r.advance(),s="desc")}return{type:"collectionExpression",operator:"sorted by",collection:e,right:n,order:s,start:e.start,end:n.end}})],["mapped to",ke(28,(e,t,r)=>{const n=r.parseExpr(29);return{type:"collectionExpression",operator:"mapped to",collection:e,right:n,start:e.start,end:n.end}})],["split by",ke(28,(e,t,r)=>{const n=r.parseExpr(29);return{type:"collectionExpression",operator:"split by",collection:e,right:n,start:e.start,end:n.end}})],["joined by",ke(28,(e,t,r)=>{const n=r.parseExpr(29);return{type:"collectionExpression",operator:"joined by",collection:e,right:n,start:e.start,end:n.end}})],["+",{...ke(40),...xe(80)}],["-",{...ke(40),...xe(80)}],["*",ke(50)],["/",ke(50)],["%",ke(50)],["mod",ke(50)],["^",Ee(60)],["**",Ee(60)],["as",ke(70,(e,t,r)=>{const n=()=>{const e=r.peek();!e||"a"!==e.value&&"an"!==e.value||r.advance();const t=r.parseExpr(71),n=r.peek();if(n&&":"===n.value&&t&&"identifier"===t.type){r.advance();const e=r.advance();e&&void 0!==e.value&&(t.name=`${t.name}:${e.value}`,t.end=e.end)}return t};let s=n(),i={type:"asExpression",expression:e,targetType:s,start:e.start,end:s.end??t.end,line:e.line??t.line,column:e.column??t.column};for(;r.peek()&&"|"===r.peek().value;){r.advance();const e=n();i={type:"asExpression",expression:i,targetType:e,start:i.start,end:e.end??i.end,line:i.line,column:i.column}}return i})],["not",xe(80)],["!",xe(80)],["no",xe(27)]]),new Map([["===",ke(30)],["!==",ke(30)],["is not",ke(30)],["am",ke(30)],["is in",ke(30)],["is not in",ke(30)],["precedes",ke(30)],["does not precede",ke(30)],["follows",ke(30)],["does not follow",ke(30)],["is a",ke(30,Ce(!1))],["is an",ke(30,Ce(!1))],["is not a",ke(30,Ce(!0))],["is not an",ke(30,Ce(!0))],["has",ke(30)],["have",ke(30)],["match",ke(30)],["include",ke(30)],["includes",ke(30)],["equals",ke(30)],["does not contain",ke(30)],["does not include",ke(30)],["am in",ke(30)],["am not in",ke(30)],["is really",ke(30)],["is not really",ke(30)],["is equal",ke(30)],["is not equal",ke(30)],["contain",ke(30)],["do not contain",ke(30)],["does not contains",ke(30)],["do not match",ke(30)],["does not match",ke(30)],["is equal to",ke(30)],["is not equal to",ke(30)],["is really equal to",ke(30)],["is not really equal to",ke(30)],["really equals",ke(30)],["is greater than",ke(30)],["is less than",ke(30)],["is greater than or equal to",ke(30)],["is less than or equal to",ke(30)],["in",ke(30)],["of",Ee(30)],["really",ke(30)],["exists",{prefix:{bp:80,handler:(e,t)=>({type:"unaryExpression",operator:e.value,operand:t.parseExpr(80),start:e.start})},infix:{bp:[30,31],handler:(e,t)=>({type:"unaryExpression",operator:t.value,operand:e,prefix:!1,start:e.start})}}],["does not exist",{infix:{bp:[30,31],handler:(e,t)=>({type:"unaryExpression",operator:t.value,operand:e,prefix:!1,start:e.start})}}],["is empty",{infix:{bp:[30,31],handler:(e,t)=>({type:"unaryExpression",operator:t.value,operand:e,prefix:!1,start:e.start})}}],["is not empty",{infix:{bp:[30,31],handler:(e,t)=>({type:"unaryExpression",operator:t.value,operand:e,prefix:!1,start:e.start})}}],["some",xe(80)]]),new Map([["=",Ee(5)]])),Ae=new Map,Te=new Map,Oe=new Map,Le=new Set,Pe=new Set,je=new Set,Ne=new Set;function Ie(e){return Ae.get(e.toLowerCase())}function Re(e){return Oe.get(e)}function qe(e,t){if(0!==Pe.size)for(const r of Pe)try{r(e,t)}catch(e){void 0!==console&&console.error("[hyperfixi] globalReadHook threw:",e)}}function Me(e,t,r){if(0!==je.size)for(const n of je)try{n(e,t,r)}catch(e){void 0!==console&&console.error("[hyperfixi] localWriteHook threw:",e)}}function _e(e,t){if(0!==Ne.size)for(const r of Ne)try{r(e,t)}catch(e){void 0!==console&&console.error("[hyperfixi] localReadHook threw:",e)}}function $e(e,t,r){if(e.globals.set(t,r),0!==Le.size)for(const n of Le)try{n(t,r,e)}catch(e){void 0!==console&&console.error("[hyperfixi] globalWriteHook threw:",e)}}function Ve(e){return e.kind===_.IDENTIFIER&&k.has(e.value.toLowerCase())}function De(e){return e.kind===_.IDENTIFIER&&M.has(e.value.toLowerCase())}function ze(e){return e.kind===_.IDENTIFIER&&q.has(e.value.toLowerCase())}function Be(e){return e.kind===_.IDENTIFIER&&N.has(e.value.toLowerCase())}function Fe(e){return R.has(e.value.toLowerCase())}function He(e){return e.kind===_.IDENTIFIER}function We(e){return e.kind===_.SELECTOR}function Ue(e){return e.kind===_.SELECTOR&&!e.value.startsWith("<")}function Ke(e){return e.kind===_.STRING||e.kind===_.NUMBER||e.kind===_.TEMPLATE}function Je(e){return e.kind===_.IDENTIFIER}function Ze(e){return e.kind===_.TIME}function Xe(e){return e.kind===_.SYMBOL}function Ye(e){return e.kind===_.COMMENT}function Ge(e){if(e.kind!==_.IDENTIFIER)return!1;const t=e.value.toLowerCase();return!(k.has(t)||M.has(t)||q.has(t)||N.has(t))}function Qe(e){return e.kind===_.STRING}function et(e){return e.kind===_.NUMBER}function tt(e){if(e.kind===_.IDENTIFIER){const t=e.value;return"true"===t||"false"===t||"null"===t||"undefined"===t}return!1}function rt(e){return e.kind===_.TEMPLATE}function nt(e){return e.kind===_.SELECTOR&&e.value.startsWith("<")}function st(e){return e.kind===_.SELECTOR&&e.value.startsWith("#")}function it(e){return e.kind===_.SELECTOR&&e.value.startsWith(".")}function at(e){return e.kind===_.SELECTOR&&!e.value.startsWith("#")&&!e.value.startsWith(".")}function ot(e){if(e.kind!==_.OPERATOR)return!1;const t=e.value.toLowerCase();return!I.has(t)&&!R.has(t)}function lt(e){const t=e.value.toLowerCase();return"then"===t||"and"===t||"else"===t||"end"===t||"on"===t}function ct(e,t,r){return{type:"literal",value:e,raw:t,start:r.start,end:r.end,line:r.line,column:r.column}}function ut(e,t){return{type:"identifier",name:e,start:t.start,end:t.end,line:t.line,column:t.column}}function dt(e,t,r,n){return{type:"binaryExpression",operator:e,left:t,right:r,start:n.start,end:n.end,line:n.line,column:n.column}}function mt(e,t){return{type:"block",commands:e,start:t.start,end:t.end,line:t.line,column:t.column}}function pt(e,t){return{type:"string",value:e,start:t.start,end:t.end,line:t.line,column:t.column}}function ht(e,t){return{type:"objectLiteral",properties:e,start:t.start,end:t.end,line:t.line,column:t.column}}function ft(e,t){return{type:"arrayLiteral",elements:e,start:t.start,end:t.end,line:t.line,column:t.column}}function yt(e,t,r){return{type:"propertyOfExpression",property:e,target:t,start:r.start,end:r.end,line:r.line,column:r.column}}function gt(e,t,r){return{type:"command",name:"__ERROR__",args:[],diagnostics:[{message:t,severity:"error",code:"parse-error",line:e.line,column:e.column,...r&&{source:r}}],start:e.start,end:e.end,line:e.line,column:e.column}}const vt=[{command:"append",keywords:["to"],syntax:"append <value> [to <target>]"},{command:"make",keywords:["a","an","from","called"],syntax:"make (a|an) <type> [from <args>] [called <name>]"},{command:"throw",keywords:[],syntax:"throw <error>"}];function bt(e,t){return!!e&&t.some(t=>e.value===t||e.value.toLowerCase()===t)}const wt=[e,n,t,r];function kt(e,t=[]){if(e.isAtEnd())return!0;for(const t of wt)if(e.check(t))return!0;for(const r of t)if(e.check(r))return!0;return!!e.checkIsCommand()}function Et(e,t=[]){if(!kt(e,t))return e.parseExpression()}function xt(e,t,r){return!!e.check(t)&&(e.advance(),r.push(e.createIdentifier(t)),!0)}function Ct(e,t,r){for(const n of t)if(e.check(n))return e.advance(),r.push(e.createIdentifier(n)),n;return null}function St(e,t){return!!e.check(t)&&(e.advance(),!0)}function At(e){const t=e.savePosition();let r;if(e.checkIdentifierLike()){const n=e.peek().value;e.advance(),e.check(":")?(e.advance(),r=n):e.restorePosition(t)}const n=e.parseExpression();return void 0!==r?{name:r,value:n}:{value:n}}class Tt{constructor(e){this.args=[],this.isBlocking=!1,this.name=e}static from(e){const t=new Tt(e.value);return t.startPos={start:e.start??0,end:e.end??0,line:e.line??1,column:e.column??1},t}static fromIdentifier(e){const t=new Tt(e.name);return void 0!==e.start&&(t.startPos={start:e.start,end:e.end??0,line:e.line??1,column:e.column??1}),t}static named(e){return new Tt(e)}withArgs(...e){return this.args.push(...e),this}withBody(e){return this.body=e,this}withImplicitTarget(e){return this.implicitTarget=e,this}withModifier(e,t){return this.modifiers||(this.modifiers={}),this.modifiers[e]=t,this}withModifiers(e){return this.modifiers={...this.modifiers,...e},this}withName(e){return this.name=e,this}withOriginalCommand(e){return this.originalCmd=e,this}blocking(e=!0){return this.isBlocking=e,this}startingAt(e){return this.startPos={start:e.start??0,end:e.end??0,line:e.line??1,column:e.column??1},this}endingAt(e){return this.endPos={start:e.start??this.startPos?.start??0,end:e.end,line:e.line??this.startPos?.line??1,column:e.column??this.startPos?.column??1},this}build(){const e={type:"command",name:this.name,args:this.args,isBlocking:this.isBlocking,start:this.startPos?.start??0,end:this.endPos?.end??this.startPos?.end??0,line:this.startPos?.line??1,column:this.startPos?.column??1};return this.body&&(e.body=this.body),this.implicitTarget&&(e.implicitTarget=this.implicitTarget),this.modifiers&&(e.modifiers=this.modifiers),this.originalCmd&&(e.originalCommand=this.originalCmd),e}clone(){const e=new Tt(this.name);return e.args=[...this.args],e.body=this.body?[...this.body]:void 0,e.implicitTarget=this.implicitTarget,e.isBlocking=this.isBlocking,e.modifiers=this.modifiers?{...this.modifiers}:void 0,e.originalCmd=this.originalCmd,e.startPos=this.startPos?{...this.startPos}:void 0,e.endPos=this.endPos?{...this.endPos}:void 0,e}}function Ot(e,t){const r=[];let n="";const s=e.peek().start||0,i=e.peek().line||1,a=e.peek().column||1;if(e.checkIdentifierLike()){for(n=e.advance().value;e.check(":")&&!e.isAtEnd();)e.advance(),n+=":",e.checkIdentifierLike()&&(n+=e.advance().value);if(e.check("(")){e.advance();const t=[];for(;!e.isAtEnd()&&!e.check(")");){const{name:r,value:n}=At(e);if(t.push(void 0!==r?{type:"objectLiteral",properties:[{key:{type:"identifier",name:r},value:n}],start:n.start,end:n.end,line:n.line,column:n.column}:n),e.check(","))e.advance();else if(!e.check(")"))break}e.check(")")&&e.advance(),r.push({type:"functionCall",name:n,args:t,start:s,end:e.getPosition().end,line:i,column:a})}else r.push({type:"string",value:n,start:s,end:e.getPosition().end,line:i,column:a})}const o=[...r];for(;!kt(e);){if(e.check("on")||e.check("to")){const t=e.advance().value;o.push(e.createIdentifier(t));continue}const t=e.savePosition(),r=e.parsePrimary();r&&o.push(r),e.savePosition()===t&&e.advance()}return Tt.fromIdentifier(t).withArgs(...o).endingAt(e.getPosition()).build()}function Lt(e,t){const r=[];if(e.check(b)){const t=e.advance();if(r.push({type:"identifier",name:b,start:t.start,end:t.end,line:t.line,column:t.column}),e.check(y)){const t=e.advance();r.push({type:"identifier",name:y,start:t.start,end:t.end,line:t.line,column:t.column})}}return Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}function Pt(s,i){const a=[],o=()=>s.check(r)||i&&s.check(t);for(;!s.isAtEnd()&&!o();){if(Ye(s.peek())){s.advance();continue}if(!s.checkIsCommand()&&!s.isCommand(s.peek().value))break;s.advance();const t=s.parseCommand();t&&a.push(t),(s.check(e)||s.check(n)||s.check(","))&&s.advance()}return a}const jt=new Set(["is","am","are","not","no","and","or","==","===","!=","!==","<",">","<=",">=","+","-","*","/","mod"]);function Nt(e,t,r){return null!==t&&!jt.has(t.value?.toLowerCase?.()??"")&&(e.checkIsCommand()||e.isCommand(r.value?.toLowerCase()))}function It(n,s){const i=[];let a=!1;const o=n.savePosition();let l=null;for(let t=0;500>t&&!n.isAtEnd();t++){const t=n.peek();if(t.value===e){a=!0;break}if(t.value===r||t.value===g||"def"===t.value||t.value===f)break;if(void 0!==t.line&&t.line!==s.line&&Nt(n,l,t))break;Ye(t)||(l=t),n.advance()}n.restorePosition(o);let c=!1;if(!a){const e=n.savePosition(),i=s.line,a=100;let o=!1,l=null;for(;!n.isAtEnd()&&a>n.current-e;){const e=n.peek(),s=e.value?.toLowerCase();if(o&&void 0!==e.line&&e.line!==i)break;if(s===g||"def"===s||s===f)break;if(s===t||s===r){e.line===i&&(c=!0);break}if(Nt(n,l,e)){if(void 0!==e.line&&e.line!==i){c=!0;break}o=!0}Ye(e)||(l=e),n.advance()}n.restorePosition(e)}const u=a||c;let d;if(u)d=n.parseExpression();else{const t=[],r=20;let i=0,a=!0;for(;!n.isAtEnd()&&!n.check(e)&&(a||!n.checkIsCommand()&&!n.isCommand(n.peek().value))&&r>i;){a=!1;const e=n.savePosition();t.push(n.parseLogicalAnd()),n.savePosition()===e&&n.advance(),i++}if(0===t.length)throw Error("Expected condition after if/unless");d=1===t.length?t[0]:{type:"expression",tokens:t,start:t[0].start,end:t[t.length-1].end,line:s.line,column:s.column}}if(i.push(d),u){St(n,e);const a=Pt(n,!0);if(0===a.length&&n.isAtEnd())throw Error("Expected command after 'then' in if statement - incomplete conditional");i.push(mt(a,{start:s.start,end:n.getPosition().end,line:s.line,column:s.column}));let o=!1;if(n.check(t))if(n.advance(),n.check("if")){const e=n.peek();n.advance();const t=It(n,e);i.push(mt([t],{start:e.start,end:n.getPosition().end,line:e.line,column:e.column})),o=!0}else{const e=Pt(n,!1);i.push(mt(e,{start:s.start,end:n.getPosition().end,line:s.line,column:s.column}))}o||n.consume(r,"Expected 'end' after if block")}else{if(!n.checkIsCommand()&&!n.isCommand(n.peek().value))throw Error("Expected command after if condition in single-line form");{n.advance();const e=n.parseCommand();i.push(mt([e],{start:s.start,end:n.getPosition().end,line:s.line,column:s.column}))}}return Tt.from(s).withArgs(...i).endingAt(n.getPosition()).build()}function Rt(e,t){const r=[],n={};if(e.checkAnySelector()||e.checkContextVar()||e.match("<")){const t=e.parsePrimary();if(r.push(t),e.match("*")){if(e.checkIdentifierLike()){const t=e.advance();r.push({type:"identifier",name:"*"+t.value,start:t.start-1,end:t.end,line:t.line,column:t.column})}}else if(e.checkIdentifierLike()){const t=e.parsePrimary();r.push(t)}}else if(e.checkIdentifierLike()){const t=e.parsePrimary();r.push(t)}if(e.match("and")&&e.match("set")&&e.checkIdentifierLike()){const t=e.advance();n.set={type:"identifier",name:t.value,start:t.start,end:t.end,line:t.line,column:t.column}}const s=Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition());return Object.keys(n).length>0&&s.withModifiers(n),s.build()}function qt(e,t){const r=[],n=Et(e,[m]);n&&r.push(n),xt(e,m,r);const s=Et(e);return s&&r.push(s),Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}function Mt(e,t){const r=[];if(e.check("between")){e.advance(),r.push(e.createIdentifier("between"));const i=Et(e,[n]);if(i&&"binaryExpression"===i.type&&"and"===i.operator)i.left&&r.push(i.left),r.push(e.createIdentifier("and")),i.right&&r.push(i.right);else{i&&r.push(i),xt(e,n,r);const t=Et(e,[m,f,s]);t&&r.push(t)}if(Ct(e,[m,f],r)){const t=Et(e);t&&r.push(t)}return Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}const i=Et(e,[m,f]);if(i&&r.push(i),Ct(e,[m,f],r)){const t=Et(e);t&&r.push(t)}return e.check("modal")&&(e.advance(),r.push({type:"literal",value:"modal",raw:"modal"})),Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}function _t(e,t){const n=e.parseExpression();if(!n)return e.addError("Put command requires content expression"),null;const s=e.peek();if(!s||!S.includes(s.value))return e.addError(`Expected operation keyword (${S.join(", ")}) after put expression, got: ${s?.value}`),null;let i=e.advance().value;const a=i.toLowerCase();"at start of"===a||"at the start of"===a?i=x:"at end of"===a||"at the end of"===a?i=C:"at"===i&&(e.check(w)||e.check(b)?(St(e,b),e.check(w)&&(e.advance(),e.check(h)&&(e.advance(),i=x))):e.check(r)&&(e.advance(),e.check(h)&&(e.advance(),i=C)));const o=e.parseExpression();return o?Tt.fromIdentifier(t).withArgs(n,e.createIdentifier(i),o).endingAt(e.getPosition()).build():(e.addError("Put command requires target expression after operation keyword"),null)}const $t=["innerhtml","outerhtml","into","over","delete","morph","morphouter"];function Vt(s,i){const a=s.savePosition();let o=null,l=[];try{o=function(e){if(!e.check(":"))return null;if(e.advance(),e.check(":")){e.advance();const t=e.advance();return{type:"identifier",name:t.value,scope:"global",start:t.start-2,end:t.end}}const t=e.advance();return{type:"identifier",name:t.value,scope:"element",start:t.start-1,end:t.end}}(s)??function(e){if(!e.check(v)&&!e.check("local"))return null;const t=e.advance(),r=e.advance();return{type:"identifier",name:r.value,scope:t.value,start:t.start,end:r.end}}(s)??function(e){if(!e.check(b))return null;const t=e.savePosition();e.advance();const r=e.parseExpression();if(!r)return e.restorePosition(t),null;if("binaryExpression"===r.type&&r.operator===h){const e=r.left,t=r.right;return yt(e,t,{start:e.start??0,end:t.end??0,line:e.line??1,column:e.column??1})}return e.check(d)?r:(e.restorePosition(t),null)}(s),o||(o=s.parseExpression())}catch{s.restorePosition(a),o=null}if(!o){const i=function(s){if(s.match(":")){const e=s.advance();return{expression:{type:"identifier",name:e.value,scope:"element",start:e.start,end:e.end},tokens:[]}}const i=[];for(;!(s.isAtEnd()||s.check(d)||s.check(e)||s.check(n)||s.check(t)||s.check(r));)i.push(s.parsePrimary());if(0===i.length)return{expression:null,tokens:[]};if(i.length>=4){const e=(e,t)=>e[t];if(e(i[0],"value")===b&&e(i[2],"value")===h){const t=i[1],r=i[3];return{expression:yt(ut(e(t,"value")||e(t,"name")||"",{start:t.start??0,end:t.end??0,line:t.line??1,column:t.column??1}),{type:"idSelector"===r.type?"idSelector":"cssSelector",value:e(r,"value")||e(r,"name")||"",start:r.start??0,end:r.end??0,line:r.line,column:r.column},{start:i[0].start??0,end:r.end??0,line:i[0].line??1,column:i[0].column??1}),tokens:[]}}}return 1===i.length?{expression:i[0],tokens:[]}:{expression:null,tokens:i}}(s);o=i.expression,l=i.tokens}if(!s.check(d)){const e=s.isAtEnd()?"end of input":s.peek().value;throw Error("Expected 'to' in set command, found: "+e)}s.advance();const c=s.parseExpression()??s.parsePrimary();let u;var m;s.check(f)&&(m=s.peekAt(1))&&("selector"===m.kind||m.value.startsWith("<")||Dt.has(m.value))&&(s.advance(),u=Et(s));const p=[];o?p.push(o):l.length>0&&p.push(...l),p.push(s.createIdentifier(d)),c&&p.push(c);const y=Tt.fromIdentifier(i).withArgs(...p);return u&&y.withModifier("on",u),y.endingAt(s.getPosition()).build()}const Dt=new Set(["me","my","it","its","you","your","yourself"]),zt=new Set(["to","the","url","of","in","new","window","top","middle","bottom","left","center","right","smoothly","instantly","back","forward"]);function Bt(e,t){return{type:"string",value:e,start:t.start,end:t.end,line:t.line,column:t.column}}function Ft(e,t){const r=[];for(;!kt(e,["catch","finally"])&&(e.checkIdentifierLike()||e.checkSelector()||e.checkLiteral()||e.checkTimeExpression()||e.match("<"));)r.push(e.parsePrimary());return Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}function Ht(e){const t=e.peek();if("/"===t.value)return!0;if(e.checkIdentifierLike()){const r=e.peekAt(1);return!!r&&":"===r.value&&r.start===t.end}return!1}const Wt=new Set(["{",")"]);function Ut(e){const t=e.savePosition(),r=e.peek();let n="",s=null;for(;!e.isAtEnd();){const t=e.peek();if(s&&t.start!==s.end)break;if("$"===t.value&&"{"===e.peekAt(1)?.value){e.advance();let r=e.advance(),i=1;for(;!e.isAtEnd()&&i>0;)r=e.advance(),"{"===r.value?i++:"}"===r.value&&i--;n+=e.getInputSlice(t.start,r.end),s=r;continue}if(Wt.has(t.value))break;s=e.advance(),n+=s.value}if(!n||"/"===n)return e.restorePosition(t),null;const i={start:r.start,end:s?s.end:r.end,line:r.line,column:r.column};return n.includes("${")?{type:"templateLiteral",value:n,...i}:{type:"literal",value:n,raw:n,...i}}function Kt(e){if(e.check("{"))return!1;if(!e.checkIdentifierLike())return!1;const t=e.peekAt(1);return null!==t&&":"===t.value}function Jt(e){const t=[],r=e.getPosition();do{if(!e.checkIdentifierLike())break;const r=e.advance(),n={type:"identifier",name:r.value,start:r.start,end:r.end,line:r.line,column:r.column};e.consume(":","Expected ':' after property name in fetch named arguments");const s=e.parsePrimary();s&&t.push({key:n,value:s})}while(e.match(",")&&!e.isAtEnd());const n=e.getPosition();return{type:"objectLiteral",properties:t,start:r.start,end:n.end,line:r.line,column:r.column}}const Zt=new Set(["em","ex","cap","ch","ic","rem","lh","rlh","vw","vh","vi","vb","vmin","vmax","cm","mm","Q","pc","pt","px"]);class Xt{constructor(e,t,r){this.current=0,this.errors=[],this.warnings=[],this.prattCache=new Map,this.tokens=e,this.keywordResolver=t?.keywords,this.registryIntegration=t?.registryIntegration,t?.semanticAnalyzer&&t?.language&&(this.semanticAdapter=new ve({analyzer:t.semanticAnalyzer,language:t.language,confidenceThreshold:t.semanticConfidenceThreshold??.5})),this.originalInput=r||e.map(e=>e.value).join(" ")}resolveKeyword(e){return this.keywordResolver?this.keywordResolver.resolve(e)??e:e}addWarning(e){this.warnings.push(e)}parse(){this.prattCache.clear();const e=this.parseInternal();return this.errors.length>0&&(e.errors=[...this.errors],e.recovered=!0),e}parseInternal(){try{if(0===this.tokens.length)return this.addError("Cannot parse empty input"),{success:!1,node:this.createErrorNode(),tokens:this.tokens,error:this.error,warnings:this.warnings};if(this.check("behavior")){const e=[];for(;this.check("behavior");){this.advance();const t=this.parseBehaviorDefinition();if(t&&e.push(t),this.error)break}return this.error?{success:!1,node:1===e.length?e[0]:this.createProgramNode(e),tokens:this.tokens,error:this.error,warnings:this.warnings}:{success:!0,node:1===e.length?e[0]:this.createProgramNode(e),tokens:this.tokens,warnings:this.warnings}}const e=this.peek(),t=e&&Ie(e.value)?e.value:null;if(this.check("init")||this.check("on")||this.check("def")||this.checkComment()||null!==t){const e=[];for(;!this.isAtEnd();)if(this.checkComment())this.advance();else{if(this.check("then")){const e=this.peekAt(1);if(null!==e&&("init"===e.value||"on"===e.value||"def"===e.value||void 0!==Ie(e.value))){this.advance();continue}}if(this.check("init")){this.advance();const t=this.parseTopLevelInitBlock();t&&e.push(t)}else if(this.check("on")){this.advance();const t=this.parseEventHandler();t&&e.push(t)}else{if(!this.check("def")){const t=this.peek(),r=t?Ie(t.value):void 0;if(r){const t=this.advance(),n=r(this.getContext(),t);n&&e.push(n);continue}break}{this.advance();const t=this.parseDefFeature();t&&e.push(t)}}}return this.isAtEnd()?this.error?{success:!1,node:this.createProgramNode(e),tokens:this.tokens,error:this.error,warnings:this.warnings}:{success:!0,node:this.createProgramNode(e),tokens:this.tokens,warnings:this.warnings}:(this.addError("Unexpected token: "+this.peek().value),{success:!1,node:this.createProgramNode(e),tokens:this.tokens,error:this.error,warnings:this.warnings})}if(this.checkIsCommand()||this.isCommand(this.peek().value)&&!this.isKeyword(this.peek().value)){const e=this.parseCommandSequence();if(e){if(!this.isAtEnd()&&this.check("on")){pe("\u2705 PARSER: Found event handlers after command sequence, parsing as program");const t=[e];pe(`\u2705 PARSER: Starting with ${t.length} statement(s) from command sequence`);let r=0;for(;!this.isAtEnd()&&this.check("on");){pe(`\u2705 PARSER: Parsing event handler #${r+1}, current token: ${this.peek().value}`),this.advance();const e=this.parseEventHandler();if(pe("\u2705 PARSER: parseEventHandler returned:",e?`type=${e.type}, event=${e.event}`:"null"),e&&(t.push(e),r++,pe(`\u2705 PARSER: Added event handler, now have ${t.length} statements total`)),pe(`\u2705 PARSER: After parsing event handler, current token: ${this.isAtEnd()?"END":this.peek().value}, isAtEnd=${this.isAtEnd()}, check('on')=${this.check("on")}`),!this.isAtEnd()&&!this.check("on")){if(!this.isAtEnd())return pe("\u26a0\ufe0f PARSER: Unexpected token after event handlers: "+this.peek().value),this.addError("Unexpected token after event handlers: "+this.peek().value),{success:!1,node:this.createProgramNode(t),tokens:this.tokens,error:this.error};pe("\u2705 PARSER: No more event handlers, at end of input");break}}return pe(`\u2705 PARSER: Finished parsing, creating Program node with ${t.length} statements`),this.error?{success:!1,node:this.createProgramNode(t),tokens:this.tokens,error:this.error,warnings:this.warnings}:{success:!0,node:this.createProgramNode(t),tokens:this.tokens,warnings:this.warnings}}return this.isAtEnd()?this.error?{success:!1,node:e,tokens:this.tokens,error:this.error,warnings:this.warnings}:{success:!0,node:e,tokens:this.tokens,warnings:this.warnings}:(this.addError("Unexpected token: "+this.peek().value),{success:!1,node:e||this.createErrorNode(),tokens:this.tokens,error:this.error})}}const r=this.parseExpression();if(this.error)return{success:!1,node:r||this.createErrorNode(),tokens:this.tokens,error:this.error};if(!this.isAtEnd()){const e=this.peek();return r&&["number","string","identifier"].includes(e.kind)?this.addError(`Unexpected token: ${e.value} (missing operator between values? expected one of +, -, *, /, etc.)`):this.addError("Unexpected token: "+e.value),{success:!1,node:r||this.createErrorNode(),tokens:this.tokens,error:this.error,warnings:this.warnings}}return{success:!0,node:r,tokens:this.tokens,warnings:this.warnings}}catch(e){return this.addError(e instanceof Error?e.message:"Unknown parsing error"),{success:!1,node:this.createErrorNode(),tokens:this.tokens,error:this.error,warnings:this.warnings}}}parseExpression(){return this.parseExpressionPratt(0)}parseExpressionPratt(e){const t=`${this.current}:${e}`,r=this.prattCache.get(t);if(r)return this.current=r.endPos,r.node;if(this.isAtEnd())return this.addError("Unexpected end of expression"),this.createErrorNode();const n=this.peek(),s=Xt.PRATT_TABLE.get(n.value);let i;if(s?.prefix){const e=this.advance();if(this.isAtEnd())return this.addError(`Expected expression after '${e.value}' operator`),this.createErrorNode();i=s.prefix.handler(e,this.makePrattContext())}else i=this.parseCall();for(;!this.isAtEnd();){const t=this.peek();if(60>=e){const e=this.tryParseStringPostfix(i,t);if(e){i=e;continue}}const r=Xt.PRATT_TABLE.get(t.value);if(!r?.infix){if(be.has(t.value)||we.has(t.value))break;break}const[n]=r.infix.bp;if(e>n)break;if("="===t.value&&this.tokens.length>this.current+1&&">"===this.tokens[this.current+1].value){if(this.advance(),this.advance(),this.addError('Arrow functions (=>) are not supported in hyperscript. Use "js ... end" blocks for JavaScript callbacks.'),!this.isAtEnd())try{this.parseExpressionPratt(0)}catch(e){pe("arrow body discarded after error:",e instanceof Error?e.message:e+"")}return this.createErrorNode()}if("+"===t.value||"-"===t.value){const e=this.tokens.length>this.current+1?this.tokens[this.current+1]:null;if(e&&("+"===e.value||"-"===e.value))return this.addError(`Invalid operator combination: ${t.value}${e.value}`),i}if("*"===t.value||"/"===t.value||"%"===t.value){const e=this.tokens.length>this.current+1?this.tokens[this.current+1]:null;if(e&&("*"===e.value||"/"===e.value||"%"===e.value||"+"===e.value||"-"===e.value))return this.addError("*"===t.value&&"*"===e.value?"Unexpected token: "+e.value:`Invalid operator combination: ${t.value}${e.value}`),i}const s=this.advance();if(this.isAtEnd()&&!Xt.POSTFIX_UNARY_OPERATORS.has(s.value))return this.addError(`Expected expression after '${s.value}' operator`),i;i=r.infix.handler(i,s,this.makePrattContext())}return this.prattCache.set(t,{node:i,endPos:this.current}),i}tryParseStringPostfix(e,t){const r=t.value;let n=null;if(Zt.has(r)?n=r:"%"===r&&(this.canStartOperand(this.tokens.length>this.current+1?this.tokens[this.current+1]:null)||(n="%")),null==n)return null;const s=this.advance();return{type:"stringPostfix",expression:e,unit:n,start:e.start,end:s.end,line:e.line,column:e.column}}canStartOperand(e){if(!e)return!1;const t=e.value;return!be.has(t)&&!we.has(t)&&("number"===e.kind||"string"===e.kind||"identifier"===e.kind||"symbol"===e.kind||["(","[","{","-","+","!","#",".","<","$","@"].includes(t))}makePrattContext(){const e=this;return{peek:()=>e.tokens.length>e.current?e.tokens[e.current]:void 0,advance:()=>{const t=e.tokens[e.current];return e.current++,t},parseExpr:t=>e.parseExpressionPratt(t),isStopToken:()=>{const t=e.tokens[e.current];return!t||be.has(t.value)||we.has(t.value)},atEnd:()=>e.current>=e.tokens.length}}parseLogicalAnd(){return this.parseExpressionPratt(11)}parseImplicitBinary(){let e=this.parseCall();for(;!(this.isAtEnd()||this.checkBasicOperator()||this.check("then")||this.check("and")||this.check("else")||this.check(")")||this.check("]")||this.check(","));){if("identifier"!==e.type){if("literal"===e.type&&(this.checkNumber()||this.checkIdentifier())){const t=this.peek();return this.addError(`Missing operator between '${e.raw||e.value}' and '${t.value}'`),e}break}if(this.isCommand(e.name))if(this.isCompoundCommand(e.name.toLowerCase())){if(!(this.checkCssSelector()||this.checkIdSelector()||this.checkClassSelector()||this.checkTimeExpression()||this.checkString()||this.checkNumber()||this.checkContextVar()||this.checkIdentifier()||this.checkKeyword()))break;{const t=this.createCommandFromIdentifier(e);t&&(e=t)}}else if("wait"===e.name.toLowerCase()&&(this.checkTimeExpression()||this.checkNumber()||this.checkIdentifier()||this.checkContextVar()||this.check("("))){const t=this.createCommandFromIdentifier(e);t&&(e=t)}else{if(!this.checkSelector())break;{const t=this.parseCall();e=this.createBinaryExpression(" ",e,t)}}else{if(!this.checkSelector())break;{const t=this.parseCall();e=this.createBinaryExpression(" ",e,t)}}}return e}isCommand(e){return this.keywordResolver?this.keywordResolver.isCommand(e):T(e)}isKeyword(e){return this.keywordResolver?this.keywordResolver.isKeyword(e):L(e)}createCommandFromIdentifier(e){const t=[],r=this.resolveKeyword(e.name.toLowerCase());if(this.isCompoundCommand(r))return this.parseCompoundCommand(e);for(;!(this.isAtEnd()||this.check("then")||this.check("and")||this.check("else")||this.checkIsCommand())&&(this.checkContextVar()||this.checkIdentifier()||this.checkKeyword()||this.checkEvent()||this.checkCssSelector()||this.checkIdSelector()||this.checkClassSelector()||this.checkString()||this.checkNumber()||this.checkTimeExpression()||this.match("<"));)t.push(this.parsePrimary());return{type:"command",name:e.name,args:t,isBlocking:!1,...void 0!==e.start&&{start:e.start},end:this.getPosition().end,...void 0!==e.line&&{line:e.line},...void 0!==e.column&&{column:e.column}}}isCompoundCommand(e){return O(e)}parseCompoundCommand(s){return function(s,i){switch(i.name.toLowerCase()){case"put":return _t(s,i);case"trigger":case"send":return Ot(s,i);case"remove":return qt(s,i);case"toggle":return Mt(s,i);case"set":return Vt(s,i);case"halt":return Lt(s,i);case"measure":return Rt(s,i);case"js":return function(e,t){const n=[];if(e.match("(")){for(;!e.check(")")&&!e.isAtEnd();)e.checkIdentifierLike()&&n.push(e.advance().value),e.match(",");e.consume(")","Expected ) after js parameters")}const s=e.peek().start,i=function(e,t){const r=e.getInputSlice(t);if(!r)return t;let n=0;for(;r.length>n;){const e=r[n];if("'"!==e&&"\u2019"!==e&&"\u2018"!==e)if('"'!==e)if("`"!==e)if("/"===e&&r.length>n+1&&"/"===r[n+1])for(n+=2;r.length>n&&"\n"!==r[n];)n++;else if("/"===e&&r.length>n+1&&"*"===r[n+1]){for(n+=2;r.length>n&&("*"!==r[n]||n+1>=r.length||"/"!==r[n+1]);)n++;n+=2}else{if(!("e"!==e&&"E"!==e||n+3>r.length||"end"!==r.slice(n,n+3).toLowerCase()||0!==n&&/[a-zA-Z0-9_]/.test(r[n-1])||r.length>n+3&&/[a-zA-Z0-9_]/.test(r[n+3])))return t+n;n++}else{for(n++;r.length>n&&"`"!==r[n];)"\\"===r[n]&&n++,n++;n++}else{for(n++;r.length>n&&'"'!==r[n];)"\\"===r[n]&&n++,n++;n++}else{for(n++;r.length>n&&r[n]!==e;)"\\"===r[n]&&n++,n++;n++}}return t+r.length}(e,s);for(;!e.isAtEnd()&&!e.check(r)&&e.peek().start<i;)e.advance();e.consume(r,"Expected end after js code body");const a={type:"literal",value:e.getInputSlice(s,i).trim(),start:t.start,end:e.getPosition().end},o={type:"arrayLiteral",elements:n.map(e=>({type:"literal",value:e,start:t.start,end:t.end})),start:t.start,end:e.getPosition().end};return Tt.fromIdentifier(t).withArgs(a,o).endingAt(e.getPosition()).build()}(s,i);case"go":return function(e,t){const r=[];for(;!kt(e,["when","where","catch","finally"]);){const t=e.peek(),n=e.resolveKeyword(t.value).toLowerCase();if(zt.has(n)){e.advance(),r.push(Bt(n,t));continue}if(Ht(e)){const n=Ut(e);if(n){r.push(n);continue}e.advance(),r.push(Bt(t.value,t));continue}if("+"===t.value||"-"===t.value){e.advance(),r.push(Bt(t.value,t));continue}if("number"===t.kind){e.advance();const n=e.peek();if(e.isAtEnd()||"px"!==n.value||n.start!==t.end)r.push({type:"literal",value:Number(t.value),raw:t.value,start:t.start,end:t.end,line:t.line,column:t.column});else{const n=e.advance();r.push(Bt(t.value+"px",{...t,end:n.end}))}continue}const s=e.current;if(r.push(e.parsePrimary()),e.current===s)break}return Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}(s,i);case"tell":return function(s,i){const a=s.parseExpression();if(!a)throw Error("tell command requires a target expression");const o=[];for(;!s.isAtEnd();){if(s.checkIsCommand()){try{s.advance();const e=s.parseCommand();if(!e)break;o.push(e)}catch{break}if(s.match(n)||s.match(e))continue;if(s.check(t)||s.check(r))break;if(s.checkIsCommand())continue;break}break}if(0===o.length)throw Error("tell command requires at least one command after the target");return Tt.fromIdentifier(i).withArgs(a,...o).endingAt(s.getPosition()).build()}(s,i);case"pick":return function(e,t){const r=Tt.fromIdentifier(t);St(e,b);const n=e.peek().value,s=e=>({type:"literal",value:e,start:t.start,end:t.end}),i=()=>{if(!e.match("of","from"))throw Error("pick: expected 'of' or 'from' before source expression");return e.parseExpression()};if("first"===n){e.advance();const t=e.parsePrimary(),n=i();return r.withArgs(n).withModifier("variant",s("first")).withModifier("count",t).endingAt(e.getPosition()).build()}if("last"===n){e.advance();const t=e.parsePrimary(),n=i();return r.withArgs(n).withModifier("variant",s("last")).withModifier("count",t).endingAt(e.getPosition()).build()}if("random"===n){let t;e.advance(),e.check("of")||e.check("from")||(t=e.parsePrimary());const n=i(),a=r.withArgs(n).withModifier("variant",s("random"));return t&&a.withModifier("count",t),a.endingAt(e.getPosition()).build()}if("item"===n||"items"===n||"character"===n||"characters"===n){let t,n;e.advance(),e.match("at","from"),t=e.match("start")?s("start"):e.parsePrimary();let a=!1;(e.match("to")||e.match(".."))&&(e.match("end")?a=!0:n=e.parsePrimary());let o="default";e.match("inclusive")?o="inclusive":e.match("exclusive")&&(o="exclusive");const l=i(),c=r.withArgs(l).withModifier("variant",s("range")).withModifier("rangeStart",t).withModifier("rangeMode",s(o));return a?c.withModifier("rangeEnd",s("end")):n&&c.withModifier("rangeEnd",n),c.endingAt(e.getPosition()).build()}if("match"===n||"matches"===n){e.advance(),e.match("of");const t=e.parsePrimary();let a;e.matchOperator("|")&&(a=e.advance().value);const o=i(),l=r.withArgs(o).withModifier("variant",s("match"===n?"match":"matches")).withModifier("regex",t);return a&&l.withModifier("flags",s(a)),l.endingAt(e.getPosition()).build()}return Ft(e,t)}(s,i);case"start":return function(e,t){if(!e.match("view"))throw Error("start: expected 'view transition' (only `start view transition ... end` is supported)");if(!e.match("transition"))throw Error("start view: expected 'transition'");const r={};if(e.match("using")){const t=e.parsePrimary();r.transitionName=t}const n=e.parseCommandListUntilEnd();return Tt.fromIdentifier(t).withArgs(...n).withModifiers(r).endingAt(e.getPosition()).build()}(s,i);case"swap":case"morph":return function(e,t){const r=[];let n=null;if(!e.isAtEnd()){const t=e.peek();if(t&&t.value){const s=t.value.toLowerCase();$t.includes(s)&&(n=s,e.advance(),r.push(e.createIdentifier(n)))}}if("delete"===n){const n=e.parseExpression();return n&&r.push(n),Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}!e.isAtEnd()&&e.check(h)&&(e.advance(),r.push(e.createIdentifier("of")));const s=e.parseExpression();if(s&&r.push(s),!e.isAtEnd()&&e.check(p)){e.advance(),r.push(e.createIdentifier("with"));const t=e.parseExpression();t&&r.push(t)}return Tt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}(s,i);default:return Ft(s,i)}}(this.getContext(),s)}parsePutCommand(e){return _t(this.getContext(),e)}parseSetCommand(e){return Vt(this.getContext(),e)}parseHaltCommand(e){return Lt(this.getContext(),e)}parseMeasureCommand(e){return Rt(this.getContext(),e)}parseTriggerCommand(e){return Ot(this.getContext(),e)}parseCommandListUntilTerminator(e){const t=[],r=()=>this.check("end")||e.some(e=>this.check(e));for(pe("\ud83d\udd04 parseCommandListUntilTerminator: Starting (extraStops:",e.join(","),")");!this.isAtEnd()&&!r();){pe("\ud83d\udccd Loop iteration, current token:",this.peek().value,"kind:",this.peek().kind);let e=!1;const n=this.checkIsCommand(),s=!n&&this.checkIdentifier()&&this.isCommand(this.peek().value);if(n||s){pe(n?"\u2705 Found COMMAND token:":"\u2705 Found IDENTIFIER that is a command:",this.peek().value),this.advance();const r=this.error;try{const n=this.parseCommand();this.error&&this.error!==r&&(pe("\u26a0\ufe0f parseCommandListUntilTerminator: Command parsing added error, restoring. Error was:",this.error.message),this.error=r),n&&(pe("\u2705 Parsed command:",n.name),t.push(n),e=!0)}catch(e){pe("\u26a0\ufe0f parseCommandListUntilTerminator: Command parsing threw, restoring:",e instanceof Error?e.message:e+""),this.error=r}}else this.checkIdentifier()&&pe("\u274c IDENTIFIER is not a command:",this.peek().value);if(!e){pe("\u274c No command parsed, breaking. Current token:",this.peek().value);break}for(pe("\ud83d\udccd After parsing command, current token:",this.peek().value);!(this.isAtEnd()||r()||this.checkIsCommand()||this.isCommand(this.peek().value)||this.check("then")||this.check("and")||this.check(","));)pe("\u26a0\ufe0f Skipping unexpected token:",this.peek().value),this.advance();if(this.match("then","and",","))pe("\u2705 Found separator, continuing");else{if(!this.checkIsCommand()&&!this.isCommand(this.peek().value)){pe("\ud83d\udccd No separator and no command, breaking. Current token:",this.peek().value);break}pe("\u2705 Next token is a command, continuing without separator")}}let n="end";for(const t of e)if(this.check(t)){n=t;break}return this.check("end")||e.some(e=>this.check(e))||(n=""),pe("\u2705 parseCommandListUntilTerminator: parsed",t.length,"commands (terminator:",n,")"),{commands:t,terminator:n}}parseCommandListUntilEnd(){const{commands:e}=this.parseCommandListUntilTerminator([]);if(pe('\ud83d\udd0d After loop, checking for "end". Current token:',this.peek().value),!this.check("end"))throw pe('\u274c ERROR: Expected "end" but got:',this.peek().value,"at position:",this.peek().start),Error('Expected "end" to close repeat block');return pe('\u2705 Found "end", consuming it'),this.advance(),e}parseCommandListUntilEndOrElse(){const{commands:e,terminator:t}=this.parseCommandListUntilTerminator(["else"]),r="else"===t;if(!r){if(!this.check("end"))throw Error('Expected "end" to close repeat block');this.advance()}return{commands:e,hasElse:r}}parseRepeatBody(){const{commands:e,terminator:t}=this.parseCommandListUntilTerminator(["else","until","while"]);if("end"===t)this.advance();else if(""===t)throw Error('Expected "end", "else", "until", or "while" to close repeat block');return{commands:e,terminator:t}}parseRepeatCommand(e){return function(e,t){const r=[];let n="forever",d=null,h=null,f=null,g=null,v=null,w=null;if(e.check(s)){e.advance(),n=s;const t=e.peek();He(t)&&(v=t.value,e.advance()),e.check(u)&&(e.advance(),g=e.parseExpression())}else if(e.check(u))e.advance(),n=s,v="it",g=e.parseExpression();else if(e.check(i))e.advance(),n=i,f=e.parseExpression();else if(e.check(a))if(e.advance(),n=a,e.check(y)){e.advance(),n="until-event";const t=e.peek();if(pe("\ud83d\udccd Parsing event name, current token:",{value:t.value,kind:t.kind}),!He(t)&&!ze(t))throw Error('Expected event name after "event"');if(d=t.value,e.advance(),pe("\u2705 Got event name:",d,"Next token:",e.peek().value),pe('\ud83d\udd0d Checking for "from", current token:',e.peek().value),e.check(m)){pe('\u2705 Found "from", advancing...'),e.advance(),pe('\ud83d\udccd After consuming "from", current token:',e.peek().value),St(e,b)&&pe('\u2705 Found "the", advancing...');const t=e.peek();pe("\ud83d\udd0d Before parsePrimary for event target:",{value:t.value,kind:t.kind,position:t.start}),h=e.parsePrimary(),pe("\u2705 After parsePrimary, eventTarget:",h)}else pe('\u274c No "from" found, skipping target parsing')}else f=e.parseExpression();else e.check(o)?(e.advance(),n=o):(w=e.parseExpression(),e.check(l)&&(e.advance(),n=l));let k,E=null;if(e.check(p)){const t=e.peekAt(1);t&&t.value.toLowerCase()===c&&(e.advance(),e.advance(),E=c)}else if(e.check(c)){e.advance();const t=e.peek();He(t)?(E=t.value,e.advance()):E=c}let x=null,C=!1;if(n===o){const t=e.parseRepeatBody();if(k=t.commands,"else"===t.terminator)e.advance(),x=e.parseCommandListUntilEnd();else if("until"===t.terminator||"while"===t.terminator){if(C=!0,n=t.terminator,e.advance(),f=e.parseExpression(),!e.check("end"))throw Error('Expected "end" to close repeat block');e.advance()}}else{const t=e.parseCommandListUntilEndOrElse();k=t.commands,t.hasElse&&(e.advance(),x=e.parseCommandListUntilEnd())}r.push({type:"identifier",name:n,start:t.start,end:t.end,line:t.line,column:t.column});const S={start:t.start,end:t.end,line:t.line,column:t.column};v&&r.push(pt(v,S)),g&&r.push(g),f&&r.push(f),w&&r.push(w),d&&r.push(pt(d,S)),h&&r.push(h),E&&r.push(pt(E,S)),r.push(mt(k,{...S,end:S.end||0})),null!==x&&r.push(mt(x,{...S,end:S.end||0}));const A=Tt.from(t).withArgs(...r);return C&&A.withModifier("bottomTested",{type:"literal",value:!0,...S}),A.endingAt(e.getPosition()).build()}(this.getContext(),e)}parseForCommand(e){return function(e,t){const r=[];let n=null,s=null;e.check("each")&&e.advance();const i=e.peek();if(!He(i))throw Error('Expected variable name after "for"');if(n=i.value,e.advance(),!e.check(u))throw Error('Expected "in" after variable name in for loop');if(e.advance(),s=e.parseExpression(),!s)throw Error('Expected collection expression after "in"');let a=null;if(e.check(p)){const t=e.peekAt(1);t&&t.value.toLowerCase()===c&&(e.advance(),e.advance(),a=c)}else if(e.check(c)){e.advance();const t=e.peek();He(t)?(a=t.value,e.advance()):a=c}const o=e.parseCommandListUntilEnd();r.push({type:"identifier",name:"for",start:t.start,end:t.end,line:t.line,column:t.column});const l={start:t.start,end:t.end,line:t.line,column:t.column};return r.push(pt(n,l)),r.push(s),a&&r.push(pt(a,l)),r.push(mt(o,{...l,end:l.end||0})),Tt.from({...t,value:"repeat"}).withArgs(...r).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseWaitCommand(e){return function(e,t){const r=[];if(e.checkTimeExpression()||e.checkLiteral()||e.checkContextVar()||e.check("(")||e.checkIdentifierLike()&&!e.check("for")&&!kt(e)){const n=e.parseExpression();return r.push(n),Tt.from(t).withArgs(...r).blocking().endingAt(e.getPosition()).build()}if(e.check("for")){e.advance();const n=[];do{const t=e.peek();if(!He(t))throw Error('Expected event name after "for"');const r=t.value;e.advance();const s=[];if(e.check("(")){for(e.advance();!e.isAtEnd()&&!e.check(")");){const t=e.peek();if(!He(t))break;s.push(t.value),e.advance(),e.check(",")&&e.advance()}if(!e.check(")"))throw Error('Expected ")" after event parameters');e.advance()}if(n.push({name:r,params:s}),!e.check("or"))break;e.advance()}while(!e.isAtEnd());let s=null;e.check(m)&&(e.advance(),St(e,b),s=e.parsePrimary());const i={start:t.start,end:e.getPosition().end,line:t.line,column:t.column};r.push(ft(n.map(e=>ht([{key:ut("name",i),value:ct(e.name,`"${e.name}"`,i)},{key:ut("args",i),value:ft(e.params.map(e=>ct(e,`"${e}"`,i)),i)}],i)),i)),s&&r.push(s)}return Tt.from(t).withArgs(...r).blocking().endingAt(e.getPosition()).build()}(this.getContext(),e)}parseInstallCommand(e){return function(e,t){const r=[];if(!e.checkIdentifierLike())throw Error('Expected behavior name after "install"');const n=e.advance().value,s=e.previous();if(r.push(ut(n,{start:s.start,end:s.end,line:s.line,column:s.column})),e.check("(")){e.advance();const n=[];for(;!e.isAtEnd()&&!e.check(")");)if(n.push(At(e)),e.check(","))e.advance();else if(!e.check(")"))break;if(!e.check(")"))throw Error('Expected ")" after behavior parameters');if(e.advance(),n.length>0){const s={start:t.start,end:e.getPosition().end,line:t.line,column:t.column};r.push(ht(n.map(e=>({key:e.name?ut(e.name,s):ct("_positional","_positional",s),value:e.value})),s))}}return Tt.from(t).withArgs(...r).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseTransitionCommand(e){return function(e,t){const r=[],n={};let s=null;const i=e.peek();if(He(i)||"*"===i.value){let t="";e.check("*")&&(t="*",e.advance());const r=function(e){if(!e.checkIdentifierLike())return"";let t=e.advance().value;for(;e.check("-")&&!e.isAtEnd();)t+="-",e.advance(),e.checkIdentifierLike()&&(t+=e.advance().value);return t}(e);r&&(t+=r,s={type:"string",value:t,start:i.start||0,end:e.getPosition().end,line:i.line,column:i.column})}if(!s)throw Error("Transition command requires a CSS property");if(r.push(s),!e.check(d))throw Error('Expected "to" keyword after property in transition command');e.advance();const a=e.parsePrimary();if(n.to=a,e.check("over")){e.advance();const t=e.parsePrimary();n.over=t}if(e.check(p)){e.advance();const t=e.parsePrimary();n.with=t}return Tt.from(t).withArgs(...r).withModifiers(n).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseAddCommand(e){return function(e,t){const r=[];if(e.match("{"))r.push(e.parseCSSObjectLiteral());else{const t=Et(e,[d]);t&&r.push(t)}if(e.check(d)){e.advance();const t=Et(e);t&&r.push(t)}return Tt.from(t).withArgs(...r).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseIfCommand(e){return It(this.getContext(),e)}parseRemoveCommand(e){return qt(this.getContext(),e)}parseToggleCommand(e){return Mt(this.getContext(),e)}parseRegularCommand(e){return Ft(this.getContext(),e)}parseCall(){let e=this.parsePrimary();for(;;)if(this.match("("))e=this.finishCall(e);else if(this.match(".")){const t=this.consumeIdentifierLike("Expected property name after '.' - malformed member access");e=this.createMemberExpression(e,this.createIdentifier(t.value),!1)}else if(this.match("?.")){const t=this.consumeIdentifierLike("Expected property name after '?.' - malformed optional access"),r=this.createMemberExpression(e,this.createIdentifier(t.value),!1);r.optional=!0,e=r}else if(this.match("[")){const t=this.parseExpression();this.consume("]","Expected ']' after array index"),e=this.createMemberExpression(e,t,!0)}else{if(!this.check("'s"))break;{let t;this.advance(),this.check("*")?(this.advance(),t="*"+this.consumeIdentifier("Expected property name after * in CSS property syntax").value):Xe(this.peek())&&this.peek().value.startsWith("@")?t=this.advance().value:this.check("[")&&this.tokens[this.current+1]?.value?.startsWith("@")?(this.advance(),t=this.advance().value,this.consume("]","Expected ']' after attribute reference")):t=this.consumeIdentifierLike("Expected property name after possessive").value,e=this.createPossessiveExpression(e,this.createIdentifier(t))}}return e}parsePrimary(){if(this.check("*")){const e=this.current;if(this.advance(),!this.isAtEnd()&&He(this.peek())){const e=this.advance().value;return this.createSelector("*"+e)}this.current=e}if(this.check("*")||this.check("/")||this.check("%")||this.check("mod")){const e=this.peek();return this.addError(`Binary operator '${e.value}' requires a left operand`),this.createErrorNode()}if(this.matchNumber()){const e=parseFloat(this.previous().value);return this.createLiteral(e,this.previous().value)}if(this.matchString()){const e=this.previous().value;if(2>e.length||e.startsWith('"')&&!e.endsWith('"')||e.startsWith("'")&&!e.endsWith("'"))return this.addError("Unclosed string literal - string not properly closed"),this.createErrorNode();const t=e.slice(1,-1),r=this.processEscapeSequences(t);return this.createLiteral(r,e)}if(this.matchTemplateLiteral()){const e=this.previous();return{type:"templateLiteral",value:e.value,start:e.start||0,end:e.end||0,line:e.line,column:e.column}}if(this.matchBoolean()){const e=this.previous().value;let t;switch(e){case"true":t=!0;break;case"false":t=!1;break;case"null":t=null;break;case"undefined":t=void 0;break;default:t="true"===e}return this.createLiteral(t,e)}if(this.matchTimeExpression()){const e=this.previous().value;return this.createLiteral(e,e)}if(this.matchQueryReference()){const e=this.previous().value,t=e.slice(1,-2).trim(),r=this.createSelector(t);return r.fromQuery=!0,r.raw=e,r}if(this.matchSelector())return this.createSelector(this.previous().value);if(this.match("<"))return this.parseHyperscriptSelector();if(this.match("(")){if(this.isAtEnd())return this.addError("Expected expression inside parentheses"),this.createErrorNode();const e=this.parseExpression();return this.consume(")","Expected closing parenthesis ')' after expression - unclosed parentheses"),e}if(this.match("{"))return this.parseObjectLiteral();if(this.match("["))return this.parseAttributeOrArrayLiteral();if(this.check(":")){if(this.advance(),this.check(":")){this.advance();const e=this.advance();return{type:"identifier",name:e.value,scope:"global",start:e.start-2,end:e.end,line:e.line,column:e.column}}{const e=this.advance();return{type:"identifier",name:e.value,scope:"element",start:e.start-1,end:e.end,line:e.line,column:e.column}}}if(this.matchBasicOperator()){const e=this.previous();return this.createIdentifier(e.value)}const e=this.peek();if((!e||"end"!==e.value&&"else"!==e.value&&"then"!==e.value)&&(this.matchPredicate(Ge)||this.matchPredicate(De)||this.matchPredicate(Be)||this.matchPredicate(Ve)||this.matchPredicate(ze))){const e=this.previous();if("new"===e.value)return this.parseConstructorCall();if("on"===e.value)return this.parseEventHandler();if("if"===e.value)return this.parseConditional();if("closest"===e.value||"first"===e.value||"last"===e.value||"previous"===e.value||"next"===e.value){if(this.check("(")||this.checkCssSelector()||this.checkClassSelector()||this.checkIdSelector()||this.check("<")||this.checkQueryReference())return this.parseNavigationFunction(e.value);if(this.check(".")){const t=this.current;if(this.advance(),this.checkIdentifier()){const t=this.advance().value,r=this.createSelector("."+t);return this.createCallExpression(this.createIdentifier(e.value),[r])}this.current=t}if(this.check("#")){const t=this.current;if(this.advance(),this.checkIdentifier()){const t=this.advance().value,r=this.createSelector("#"+t);return this.createCallExpression(this.createIdentifier(e.value),[r])}this.current=t}return this.isAtEnd()||this.checkBasicOperator()||this.check("then")||this.check("else")||this.check("end")?this.createIdentifier(e.value):this.parseNavigationFunction(e.value)}const t=this.check(".")||this.check("?.");return"my"!==e.value||t?"its"!==e.value||t?"your"!==e.value||t?"the"===e.value?this.parseTheXofY():"values"===e.value&&this.check("of")?(this.advance(),{type:"propertyOfExpression",property:{type:"identifier",name:"values"},target:this.parsePrimary(),line:e.line,column:e.column}):this.createIdentifier(e.value):this.parseContextPropertyAccess("you"):this.parseContextPropertyAccess("it"):this.parseContextPropertyAccess("me")}if(this.match("$"))return this.parseDollarExpression();if("\\"===this.peek().value)return this.parseBlockLiteral();if(Xe(this.peek())&&this.peek().value.startsWith("@")){const e=this.advance();return{type:"attributeAccess",attributeName:e.value.substring(1),start:e.start,end:e.end,line:e.line,column:e.column}}const t=this.peek();return this.addError(`Unexpected token: ${t.value} at line ${t.line}, column ${t.column}`),this.advance(),this.createErrorNode()}parseBlockLiteral(){const e=this.peek().start;this.advance();const t=[];for(;!(this.isAtEnd()||this.check("-")&&">"===this.tokens[this.current+1]?.value);){if(!this.checkIdentifier()){this.addError("Unexpected token in block literal parameters: "+this.peek().value);break}t.push(this.advance().value),this.match(",")}return this.check("-")&&">"===this.tokens[this.current+1]?.value?(this.advance(),this.advance(),{type:"blockLiteral",parameters:t,body:this.parseExpression(),start:e,end:this.previous().end,line:this.previous().line,column:this.previous().column}):(this.addError("Expected '->' in block literal"),this.createErrorNode())}parseDollarExpression(){if(this.checkNumber()){const e=this.advance().value;return this.createLiteral(e,"$"+e)}if(this.checkIdentifier()){const e=this.advance();let t=this.createIdentifier(e.value);for(;this.match(".");){if(!this.checkIdentifier())return this.addError("Expected property name after '.' in dollar expression"),this.createErrorNode();{const e=this.advance();t=this.createMemberExpression(t,this.createIdentifier(e.value),!1)}}return{type:"dollarExpression",expression:t,raw:`$${e.value}${this.previous().value||""}`,line:e.line,column:e.column-1}}return this.addError("Expected identifier or number after '$'"),this.createErrorNode()}parseHyperscriptSelector(){let e="";for(;!this.check("/")&&!this.isAtEnd();)e+=this.advance().value;return this.consume("/","Expected '/' in hyperscript selector"),this.consume(">","Expected '>' after '/' in hyperscript selector"),this.createSelector(e)}parseObjectLiteral(){const e=[],t=this.getPosition();if(this.check("}"))return this.advance(),{type:"objectLiteral",properties:e,start:t.start,end:this.getPosition().end,line:t.line,column:t.column};do{let t;if(this.check("["))this.advance(),t=this.parseExpression(),this.consume("]","Expected ']' after computed property name in object literal");else if(this.matchString()){const e=this.previous().value,r=e.slice(1,-1);t=this.createLiteral(r,e)}else{if(!this.check("-")&&!this.checkPredicate(Ge))return this.addError("Expected property name in object literal"),this.createErrorNode();{let e="",r=!1;for(;this.check("-");)this.advance(),e+="-",r=!0;for(this.checkPredicate(Ge)&&(e+=this.advance().value);this.check("-");)this.advance(),e+="-",r=!0,this.checkPredicate(Ge)&&(e+=this.advance().value);if(""===e||"-"===e)return this.addError("Expected property name in object literal"),this.createErrorNode();t=r?this.createLiteral(e,e):this.createIdentifier(e)}}this.consume(":","Expected ':' after property name in object literal");const r=this.parseExpression();if(e.push({key:t,value:r}),!this.match(","))break;if(this.check("}"))break}while(!this.isAtEnd());return this.consume("}","Expected '}' after object literal properties"),{type:"objectLiteral",properties:e,start:t.start,end:this.getPosition().end,line:t.line,column:t.column}}parseCSSObjectLiteral(){const e=this.getPosition(),t=[];do{if(this.check("}"))break;let r;if(this.matchPredicate(Ge))r=this.createIdentifier(this.previous().value);else{if(!this.matchString())return this.addError("Expected CSS property name"),this.createErrorNode();{const e=this.previous().value,t=e.slice(1,-1);r=this.createLiteral(t,e)}}if(!this.consume(":","Expected ':' after CSS property name"))return this.createErrorNode();const n=[];let s=!1,i=0,a=-1,o=-1;for(;!this.isAtEnd()&&(0!==i||!this.check(";")&&!this.check("}"));){const e=this.advance();n.push(e.value),0>a&&"number"==typeof e.start&&(a=e.start),"number"==typeof e.end&&(o=e.end),"$"===e.value&&this.check("{")&&(s=!0),"{"===e.value&&i++,"}"===e.value&&i--}const l=this.originalInput&&a>=0&&o>a?this.originalInput.slice(a,o):n.join(""),c=s?{type:"templateLiteral",value:l,start:e.start,end:this.getPosition().end,line:e.line,column:e.column}:this.createLiteral(l,l);if(t.push({key:r,value:c}),this.check(";")&&this.advance(),this.check("}"))break}while(!this.isAtEnd());return this.consume("}","Expected '}' after CSS object literal properties"),{type:"objectLiteral",properties:t,start:e.start,end:this.getPosition().end,line:e.line,column:e.column}}parseConstructorCall(){const e=this.previous();if(!this.checkIdentifier())return this.addError('Expected constructor name after "new"'),this.createErrorNode();const t=this.advance(),r=t.value;if(!this.check("("))return this.addError('Expected "(" after constructor name'),this.createErrorNode();this.advance();const n=[];if(!this.check(")"))do{n.push(this.parseExpression())}while(this.match(","));return this.consume(")","Expected ')' after constructor arguments"),{type:"callExpression",callee:{type:"identifier",name:r,start:t.start,end:t.end,line:t.line,column:t.column},arguments:n,isConstructor:!0,start:e.start,end:this.previous().end,line:e.line,column:e.column}}parseTopLevelInitBlock(){const e=this.getPosition(),t=this.parseCommandBlock(["end"]);return this.consume("end","Expected 'end' after init block"),{type:"initBlock",commands:t,start:e.start,end:this.getPosition().end,line:e.line,column:e.column}}parseDefFeature(){const e=this.getPosition();let t="";if(!this.checkIdentifier())return this.addError("Expected function name after 'def'"),{type:"def",name:"",params:[],body:[],start:e.start,end:this.getPosition().end,line:e.line,column:e.column};for(t=this.advance().value;this.check(".");)this.advance(),this.checkIdentifier()&&(t+="."+this.advance().value);const r=[];if(this.check("(")){if(this.advance(),!this.check(")"))for(this.checkIdentifier()&&r.push(this.advance().value);this.check(",");)this.advance(),this.checkIdentifier()&&r.push(this.advance().value);this.consume(")","Expected ')' after parameter list")}const n=this.parseCommandBlock(["end","catch","finally"]),{errorSymbol:s,errorHandler:i,finallyHandler:a}=this.parseErrorAndFinallyBlocks();return this.consume("end","Expected 'end' after function definition"),{type:"def",name:t,params:r,body:n,...void 0!==s&&{errorSymbol:s},...void 0!==i&&{errorHandler:i},...void 0!==a&&{finallyHandler:a},start:e.start,end:this.getPosition().end,line:e.line,column:e.column}}parseErrorAndFinallyBlocks(){let e,t,r;return this.check("catch")&&(this.advance(),this.checkIdentifier()&&(e=this.advance().value),t=this.parseCommandBlock(["end","finally"])),this.check("finally")&&(this.advance(),r=this.parseCommandBlock(["end"])),{...void 0!==e&&{errorSymbol:e},...void 0!==t&&{errorHandler:t},...void 0!==r&&{finallyHandler:r}}}parseEventNameWithNamespace(e){let t;t=this.checkEvent()||this.checkIdentifier()||this.checkIsCommand()||this.checkIdentifierLike()?this.advance():this.consumeEvent(e);let r=t.value;return this.check(":")&&(this.advance(),r=`${r}:${this.advance().value}`),r}callExprToCommandNode(e,t){return{type:"command",name:e.callee.name,args:e.arguments,isBlocking:!1,...void 0!==t.start&&{start:t.start},...void 0!==t.end&&{end:t.end},...void 0!==t.line&&{line:t.line},...void 0!==t.column&&{column:t.column}}}createPseudoCommandNode(e,t,r,n,s){return{type:"command",name:"pseudo-command",args:[{type:"objectLiteral",properties:[{key:{type:"identifier",name:"methodName"},value:{type:"literal",value:e,raw:`"${e}"`}},{key:{type:"identifier",name:"methodArgs"},value:{type:"literal",value:t.arguments,raw:JSON.stringify(t.arguments)}},...r?[{key:{type:"identifier",name:"preposition"},value:{type:"literal",value:r,raw:`"${r}"`}}]:[],{key:{type:"identifier",name:"targetExpression"},value:n}]}],isBlocking:!1,...void 0!==s.start&&{start:s.start},...void 0!==s.end&&{end:s.end},...void 0!==s.line&&{line:s.line},...void 0!==s.column&&{column:s.column}}}tryParsePseudoCommand(e,t){const r=e.callee.name,n=this.peek();if(!(Xt.PSEUDO_COMMAND_PREPOSITIONS.includes(n.value.toLowerCase())||Ge(n)&&!this.isCommand(n.value)||Be(n)))return{node:this.callExprToCommandNode(e,t),isPseudo:!1,targetFailed:!1};let s,i;this.isCommand(r)&&this.addWarning({type:"command-shadow",message:`Method '${r}' shadows hyperscript command`,suggestions:[`Rename method to avoid confusion (e.g., '${r}Fn', 'my${r.charAt(0).toUpperCase()+r.slice(1)}')`,`Use 'call' command instead: call ${r}(...)`,"This works but may cause ambiguity"],severity:"warning",code:"PSEUDO_CMD_SHADOW",...void 0!==t.line&&{line:t.line},...void 0!==t.column&&{column:t.column}}),Xt.PSEUDO_COMMAND_PREPOSITIONS.includes(this.peek().value.toLowerCase())&&(s=this.advance().value.toLowerCase());try{i=this.parseExpression()}catch{return{node:this.callExprToCommandNode(e,t),isPseudo:!1,targetFailed:!0}}return{node:this.createPseudoCommandNode(r,e,s,i,t),isPseudo:!0,targetFailed:!1}}parseCommandWithErrorRecovery(){this.advance();const e=this.error;try{const t=this.parseCommand();return this.error&&this.error!==e&&(pe("\u26a0\ufe0f Command parsing added error, restoring error state. Error was:",this.error.message),this.error=e),t}catch(t){return pe("\u26a0\ufe0f Command parsing threw exception, restoring error state:",t instanceof Error?t.message:t+""),this.error=e,null}}parseTemporalKeywordModifiers(e){if(!this.check("debounced")&&!this.check("throttled"))return;const t=this.advance().value.toLowerCase(),r="debounced"===t?"debounce":"throttle";if(this.match("at"))if(this.checkTimeExpression()){const s=this.advance(),i=(n=s.value).endsWith("ms")?parseInt(n,10):n.endsWith("seconds")||n.endsWith("s")?1e3*parseFloat(n):n.endsWith("minutes")?6e4*parseFloat(n):n.endsWith("hours")?36e5*parseFloat(n):n.endsWith("days")?864e5*parseFloat(n):parseInt(n,10);e[r]=i,pe(`\ud83d\udd27 parseEventHandler: Parsed '${t} at ${s.value}' (${i}ms)`)}else if(this.matchNumber()){const n=parseInt(this.previous().value,10);e[r]=n,pe(`\ud83d\udd27 parseEventHandler: Parsed '${t} at ${n}'`)}else this.addError(`Expected time expression after '${t} at', got: ${this.peek().value}`);else this.addError(`Expected 'at' after '${t}'`);var n}parseEventHandler(){pe("\ud83d\udd27 parseEventHandler: ENTRY - parsing event handler");const e=[];let t=!1;if(this.check("first")&&!this.checkIsCommand()&&this.tokens.length>this.current+1){const e=this.tokens[this.current+1],r=e?.value?.toLowerCase();r&&"of"!==r&&"in"!==r&&"from"!==r&&(this.advance(),t=!0,pe("\ud83d\udd27 parseEventHandler: Parsed 'first' as .once alias"))}const r=this.parseEventNameWithNamespace("Expected event name after 'on'");for(e.push(r),pe("\ud83d\udd27 parseEventHandler: Parsed first event name: "+r);this.check("or");){this.advance(),pe("\ud83d\udd27 parseEventHandler: Found 'or', parsing additional event name");const t=this.parseEventNameWithNamespace("Expected event name after 'or'");e.push(t),pe("\ud83d\udd27 parseEventHandler: Parsed additional event name: "+t)}let n;if(pe("\ud83d\udd27 parseEventHandler: Total events parsed: "+e.join(", ")),this.registryIntegration){const t=e[0];if(this.registryIntegration.hasEventSource(t)){const e=this.registryIntegration.getEventSource(t);n=e?.name,pe(`\ud83d\udd27 parseEventHandler: Detected custom event source '${n}' for event '${t}'`)}}const s=[];if(this.match("(")){if(!this.check(")"))do{const e=this.advance();s.push(e.value)}while(this.match(","));this.consume(")","Expected ')' after event parameters"),pe("\ud83d\udd27 parseEventHandler: Parsed event parameters: "+s.join(", "))}const i={};for(;this.check(".");){this.advance();const e=this.advance().value.toLowerCase();if("once"===e)i.once=!0,pe("\ud83d\udd27 parseEventHandler: Parsed modifier '.once'");else if("prevent"===e)i.prevent=!0,pe("\ud83d\udd27 parseEventHandler: Parsed modifier '.prevent'");else if("stop"===e)i.stop=!0,pe("\ud83d\udd27 parseEventHandler: Parsed modifier '.stop'");else if("debounce"===e||"throttle"===e){if(!this.check("("))throw Error(`Expected '(' after '.${e}'`);{this.advance();const t=this.advance(),r=parseInt(t.value,10);if(isNaN(r))throw Error(`Expected number for ${e} delay, got: ${t.value}`);"debounce"===e?(i.debounce=r,pe(`\ud83d\udd27 parseEventHandler: Parsed modifier '.debounce(${r})'`)):(i.throttle=r,pe(`\ud83d\udd27 parseEventHandler: Parsed modifier '.throttle(${r})'`)),this.consume(")",`Expected ')' after ${e} delay`)}}else pe(`\ud83d\udd27 parseEventHandler: Warning - unknown modifier '.${e}'`)}let a,o,l,c;if(this.parseTemporalKeywordModifiers(i),t&&(i.once=!0),Object.keys(i).length>0&&pe("\ud83d\udd27 parseEventHandler: Parsed modifiers:",i),this.match("[")&&(a=this.parseExpression(),this.consume("]","Expected ']' after event condition")),this.match("from")){const e=this.advance();o=e.value,pe(`\ud83d\udd27 parseEventHandler: Parsed 'from' target: ${o} (kind: ${e.kind})`),this.parseTemporalKeywordModifiers(i)}if(this.match("of")){const e=this.advance();l=e.value.startsWith("@")?e.value.substring(1):e.value,pe("\ud83d\udd27 parseEventHandler: Parsed attribute name: "+l)}this.match("in")&&(pe("\ud83d\udd27 parseEventHandler: Found 'in' keyword, parsing watch target"),c=this.parseExpression(),pe("\ud83d\udd27 parseEventHandler: Parsed watch target expression"));const u=[];for(pe(`\u2705 parseEventHandler: About to parse commands, current token: ${this.isAtEnd()?"END":this.peek().value}, isAtEnd: ${this.isAtEnd()}`);!this.isAtEnd();){if(pe(`\u2705 parseEventHandler: Loop iteration, current token: ${this.peek().value}, kind: ${this.peek().kind}`),this.check("on")){pe("\u2705 parseEventHandler: Stopping command parsing, found next event handler 'on'");break}if(this.checkComment())pe("\u2705 parseEventHandler: Skipping comment token: "+this.peek().value),this.advance();else{if(this.check("end")){pe("\u2705 parseEventHandler: Stopping command parsing, found 'end' keyword"),this.advance();break}if(this.check("catch")||this.check("finally")){pe(`\u2705 parseEventHandler: Stopping command parsing, found '${this.peek().value}'`);break}if(this.checkIsCommand()){const e="("===this.tokens[this.current+1]?.value,t=this.peek().value.toLowerCase();if(e&&"js"!==t&&"tell"!==t){let e;const t=this.error;try{e=this.parseExpression()}catch(e){this.error=t,this.advance();const r=this.parseCommand();u.push(r);continue}if(e&&"callExpression"===e.type){const t=this.tryParsePseudoCommand(e,e);if(u.push(t.node),t.isPseudo||t.targetFailed)continue}}else{const e=this.parseCommandWithErrorRecovery();e&&(u.push(e),pe("\u2705 parseEventHandler: Parsed command, next token: "+(this.isAtEnd()?"END":this.peek().value)))}}else{if(!this.checkIdentifier())break;{const e=this.peek();if(this.isCommand(e.value)){const e=this.parseCommandWithErrorRecovery();e&&u.push(e)}else{let e;const t=this.error;try{e=this.parseExpression()}catch(e){pe("\u26a0\ufe0f Expression parsing error, restoring error state:",e instanceof Error?e.message:e+""),this.error=t;break}if(e&&"callExpression"===e.type){const t=this.tryParsePseudoCommand(e,e);if(u.push(t.node),t.targetFailed)continue}else{if(!e||"binaryExpression"!==e.type||" "!==e.operator)break;{const t=e;if(!t.left||"identifier"!==t.left.type||!this.isCommand(t.left.name))break;{const r={type:"command",name:t.left.name,args:[t.right],isBlocking:!1,...void 0!==e.start&&{start:e.start},...void 0!==e.end&&{end:e.end},...void 0!==e.line&&{line:e.line},...void 0!==e.column&&{column:e.column}};u.push(r)}}}}}}for(;!(this.isAtEnd()||this.checkIsCommand()||this.isCommand(this.peek().value)||this.check("then")||this.check("and")||this.check(",")||this.check("on")||this.check("catch")||this.check("finally"));)this.advance();if(!this.match("then","and",",")&&!this.checkIsCommand()&&!this.isCommand(this.peek().value))break}}let d,m,p;this.isAtEnd()||!this.check("catch")&&!this.check("finally")||(({errorSymbol:d,errorHandler:m,finallyHandler:p}=this.parseErrorAndFinallyBlocks()),this.check("end")&&this.advance());const h=this.getPosition(),f={type:"eventHandler",event:1===e.length?e[0]:e.join("|"),events:e,commands:u,...void 0!==d&&{errorSymbol:d},...void 0!==m&&{errorHandler:m},...void 0!==p&&{finallyHandler:p},...s.length>0&&{args:s},...a&&{condition:a},...o&&{target:o},...l&&{attributeName:l},...c&&{watchTarget:c},...n&&{customEventSource:n},...Object.keys(i).length>0&&{modifiers:i},start:h.start,end:h.end,line:h.line,column:h.column};return pe(`\ud83d\udd27 parseEventHandler: Created node with events: ${e.join(", ")}, attributeName: ${l||"none"}, watchTarget: ${c?"yes":"none"}`),f}parseBehaviorDefinition(){const e=this.getPosition(),t=this.consumeIdentifier("Expected behavior name after 'behavior' keyword").value;/^[A-Z]/.test(t)||this.addError(`Behavior name must start with uppercase letter (got "${t}")`);const r=[];if(this.match("(")){if(!this.check(")"))do{const e=this.consumeIdentifierLike("Expected parameter name");r.push(e.value)}while(this.match(","));this.consume(")","Expected ')' after behavior parameters")}const n=new Set(r),s=[];let i;for(;!this.isAtEnd()&&!this.check("end");)if(this.match("on")){const e=this.getPosition(),t=this.parseEventNameWithNamespace("Expected event name after 'on'"),r=[];if(this.check("(")){for(this.advance();!this.isAtEnd()&&!this.check(")");){const e=this.peek();Ge(e)?(r.push(e.value),this.advance(),this.check(",")&&this.advance()):this.advance()}this.check(")")&&this.advance()}let i;if(this.check("from")){this.advance();const e=[];if(this.check("the")&&this.advance(),!this.isAtEnd()){const t=this.peek(),r=n.has(t.value);this.checkIsCommand()&&!r||(e.push(t.value),i=t.value,this.advance())}}const{commands:a,terminator:o}=this.parseCommandListUntilTerminator(["catch","finally"]);let l,c,u;if("catch"!==o&&"finally"!==o||({errorSymbol:l,errorHandler:c,finallyHandler:u}=this.parseErrorAndFinallyBlocks()),!this.check("end"))throw Error('Expected "end" to close behavior event handler');this.advance();const d={type:"eventHandler",event:t,commands:a,...void 0!==l&&{errorSymbol:l},...void 0!==c&&{errorHandler:c},...void 0!==u&&{finallyHandler:u},...void 0!==i&&{target:i},...r.length>0&&{args:r},start:e.start,end:this.getPosition().end,line:e.line,column:e.column};s.push(d)}else{if(!this.match("init")){this.addError("Unexpected token in behavior body: "+this.peek().value);break}i={type:"initBlock",commands:this.parseCommandBlock(["end"]),start:e.start,end:this.getPosition().end,line:e.line,column:e.column},this.consume("end","Expected 'end' after init block")}return this.consume("end","Expected 'end' to close behavior definition"),{type:"behavior",name:t,parameters:r,eventHandlers:s,...void 0!==i?{initBlock:i}:{},start:e.start,end:this.getPosition().end,line:e.line,column:e.column}}parseCommandSequence(){const e=[];for(;!this.isAtEnd();){if(this.checkIsCommand()||this.isCommand(this.peek().value)&&!this.isKeyword(this.peek().value)){this.advance();const t=this.error,r=this.parseCommand();for(this.error&&this.error!==t&&(this.error.message.includes("Expected closing parenthesis")||this.error.message.includes("Expected ')'")||this.error.message.includes("unclosed parenthes")||this.error.message.includes("Unclosed parenthes")||(pe("\u26a0\ufe0f parseCommandSequence: Command parsing added non-critical error, restoring error state. Error was:",this.error.message),this.error=t)),e.push(r);!(this.isAtEnd()||this.checkIsCommand()||this.isCommand(this.peek().value)||this.check("then")||this.check("on"));)pe("\u26a0\ufe0f parseCommandSequence: Skipping unexpected token:",this.peek().value),this.advance();if(this.check("on")){pe('\u2705 parseCommandSequence: Found "on" token, stopping command sequence to allow event handler parsing');break}if(this.match("then"))continue;if(this.checkIsCommand()||this.isCommand(this.peek().value)&&!this.isKeyword(this.peek().value))continue;break}{const t=this.peek(),r=this.getPosition(),n="Expected command, got: "+t.value;this.addError(n);const s=gt(r,n,t.value);if(e.push(s),this.synchronizeToCommandBoundary(),this.isAtEnd())break;if(this.match("then"))continue;if(this.check("end")||this.check("on"))break;if(this.checkIsCommand()||this.isCommand(this.peek().value)&&!this.isKeyword(this.peek().value))continue;break}}return 1===e.length?e[0]:function(e){return{type:"CommandSequence",commands:e,start:e[0]?.start||0,end:e[e.length-1]?.end||0,line:e[0]?.line||1,column:e[0]?.column||1}}(e)}getMultiWordPattern(e){return function(e){return vt.find(t=>t.command===e.toLowerCase())||null}(e)}isTokenKeyword(e,t){return bt(e,t)}parseMultiWordCommand(e,t){return function(e,t,r){const n=e.getMultiWordPattern(r);if(!n)return null;const s=[],i={};for(;!kt(e,["catch","finally",...n.keywords])&&!bt(e.peek(),n.keywords);){const t=e.parsePrimary();if(!t)break;if(s.push(t),!e.match(",")&&bt(e.peek(),n.keywords))break}for(;!e.isAtEnd()&&bt(e.peek(),n.keywords);){const t=e.advance().value,r=e.parseExpression();if(r&&(i[t]=r),!bt(e.peek(),n.keywords))break}const a=Tt.from(t).withArgs(...s).endingAt(e.getPosition());return Object.keys(i).length>0&&a.withModifiers(i),a.build()}(this.getContext(),e,t)}parseCommandBlock(e){const t=[];for(;!this.isAtEnd()&&!e.some(e=>this.check(e));)if(this.checkComment())this.advance();else{if(!this.checkIsCommand()&&!this.isCommand(this.peek().value))break;{this.advance();const e=this.parseCommand();if(t.push(e),this.match("then","and",","))continue}}return t}trySemanticParse(e){if(!this.semanticAdapter||!this.semanticAdapter.isAvailable())return null;try{const t=this.semanticAdapter.trySemanticParse(e);return t.success&&t.node?(pe(`[Semantic] Successfully parsed with confidence ${t.confidence}:`,t.node.name),t.node):(pe(`[Semantic] Low confidence (${t.confidence}), falling back to traditional parser`),null)}catch(e){return pe("[Semantic] Error during semantic parse:",e),null}}getRemainingInput(){if(!this.originalInput)return this.tokens.slice(this.current>0?this.current-1:0).map(e=>e.value).join(" ");const e=this.current>0?this.tokens[this.current-1]:this.tokens[0];return e&&void 0!==e.start?this.originalInput.slice(e.start):this.originalInput}skipToCommandBoundary(){const e=["then","and","else","end"];for(;!this.isAtEnd();){const t=this.peek(),r=t.value.toLowerCase();if(e.includes(r))break;if(Ve(t))break;this.advance()}}parseCommand(){const e=this.parseCommandCore();if(e&&"command"===e.type&&!e.body&&(this.check("when")||this.check("where"))){const t=this.peek().value.toLowerCase();this.advance();const r=this.parseExpression();r&&(e.modifiers={...e.modifiers??{},[t]:r})}return e}parseCommandCore(){const e=this.previous();let t=e.value;if(this.semanticAdapter&&!["install","wait","repeat","for","set","put","increment","decrement","add","append","toggle","if","unless","make","measure","trigger","halt","remove","exit","return","closest","js","tell","fetch"].includes(t.toLowerCase())){const e=this.getRemainingInput(),t=this.trySemanticParse(e);if(t)return this.skipToCommandBoundary(),t}if("beep"===t&&this.check("!")&&(this.advance(),t="beep!"),"fetch"===t)return function(e,t){const r={};let n=null;if(!e.isAtEnd()&&Ht(e)&&(n=Ut(e)),n||(n=e.parsePrimary()),!n)return e.addError("fetch requires a URL"),Tt.from(t).endingAt(e.getPosition()).build();!e.isAtEnd()&&e.check("{")&&(r.with=e.parsePrimary());for(let t=0;3>t&&!e.isAtEnd();t++)if(!e.check("as")||r.as){if(!e.check("with")||r.with){if(e.check("do")&&!r.doNotThrow){const t=e.peekAt(1),n=e.peekAt(2);if("not"===t?.value&&"throw"===n?.value){const t=e.advance();e.advance();const n=e.advance();r.doNotThrow={type:"literal",value:!0,start:t.start,end:n.end,line:t.line,column:t.column};continue}}break}e.advance(),r.with=Kt(e)?Jt(e):e.parsePrimary()}else e.advance(),e.isAtEnd()||St(e,"a")||St(e,"an"),r.as=e.parsePrimary();const s=Tt.from(t).withArgs(n).endingAt(e.getPosition());return Object.keys(r).length>0&&s.withModifiers(r),s.build()}(this.getContext(),e);const r=this.parseMultiWordCommand(e,t);if(r)return r;const n=t.toLowerCase();if("repeat"===n)return this.parseRepeatCommand(e);if("for"===n)return this.parseForCommand(e);if("if"===n||"unless"===n)return this.parseIfCommand(e);if("wait"===n)return this.parseWaitCommand(e);if("install"===n)return this.parseInstallCommand(e);if("transition"===n)return this.parseTransitionCommand(e);if("add"===n)return this.parseAddCommand(e);if(this.isCompoundCommand(n))return this.parseCompoundCommand({type:"identifier",name:n,start:e.start||0,end:e.end||0,line:e.line,column:e.column})||function(e,t){return{type:"command",name:e,args:[],partial:!0,start:t.start,end:t.end,line:t.line,column:t.column}}(n,this.getPosition());const s=[];if(("increment"===t||"decrement"===t)&&!this.isAtEnd())return function(e,t){const r=t.value,n="increment"===r?"+":"-";let s=!1;e.check(v)&&(s=!0,e.advance());const i=e.parseExpression();if(!i)throw Error("Expected variable or expression after "+r);let a;if(e.check("by")){e.advance();const t=e.parseExpression();if(!t)throw Error(`Expected amount after 'by' in ${r} command`);a=t}else a=ct(1,"1",{start:t.start,end:e.previous().end,line:t.line,column:t.column});let o=i;s&&"identifier"===i.type&&(o={...i,scope:"global"});const l={start:t.start,end:e.previous().end,line:t.line,column:t.column},c=dt(n,i,a,l);c.coerceNumeric=!0;const u=[o,ut(d,l),c];return Tt.from(t).withName("set").withArgs(...u).withOriginalCommand(r).endingAt({end:e.previous().end}).build()}(this.getContext(),e);for(;!(this.isAtEnd()||this.check("then")||this.check("and")||this.check("else")||this.check("end")||this.checkIsCommand());){const e=this.parseExpression();if(s.push(e||this.parsePrimary()),this.match(","))continue;const t=["into","from","to","with","by","at","before","after","over"];if(t.some(e=>this.check(e)))continue;const r=s[s.length-1];if(!r||"identifier"!==r.type&&"keyword"!==r.type||!t.includes(r.name??r.value))break}const i=this.getPosition();return{type:"command",name:t,args:s,isBlocking:!1,start:i.start,end:i.end,line:i.line,column:i.column}}parseConditional(){const e=this.parseExpression();this.consume("then","Expected 'then' after if condition");const t=this.parseConditionalBranch();let r;this.match("else")&&(r=this.parseConditionalBranch());const n=this.getPosition();return{type:"conditionalExpression",test:e,consequent:t,alternate:r,start:n.start,end:n.end,line:n.line,column:n.column}}parseConditionalBranch(){if(this.checkIsCommand()){const e=this.advance(),t=this.createIdentifier(e.value);return this.createCommandFromIdentifier(t)||t}if(this.checkIdentifier()||this.checkKeyword()){const e=this.peek();if(this.isCommand(e.value)){const e=this.advance(),t=this.createIdentifier(e.value);return this.createCommandFromIdentifier(t)||t}}return this.parseExpression()}parseNavigationFunction(e){const t=[];if(this.match("of"))t.push(this.parseExpression());else{if(this.check("("))return this.finishCall(this.createIdentifier(e));this.isAtEnd()||this.checkBasicOperator()||this.check("then")||this.check("else")||t.push(this.parsePrimary())}const r=this.createCallExpression(this.createIdentifier(e),t);if("next"===e||"previous"===e){const e=this.parseRelativePositionalModifiers();e&&(r.relativePositional=e)}return r}parseRelativePositionalModifiers(){if(!(this.check("from")||this.check("within")||this.check("in")||this.check("with")))return null;let e,t,r,n=!1,s=!1;return this.match("from")&&(e=this.parseRelativePositionalOperand()),this.match("in")?(n=!0,r=this.parseRelativePositionalOperand()):this.match("within")&&(t=this.parseRelativePositionalOperand()),this.match("with")&&(this.match("wrapping"),s=!0),{from:e,within:t,inElt:r,inSearch:n,wrapping:s}}parseRelativePositionalOperand(){return this.match("the"),this.parsePrimary()}parseTheXofY(){if(!this.checkIdentifier())return this.createIdentifier("the");const e=this.peek(),t=e.value;return["first","last","next","previous","random","closest"].includes(t)?(this.advance(),this.parseNavigationFunction(t)):(this.advance(),this.check("of")?(this.advance(),{type:"propertyOfExpression",property:{type:"identifier",name:t},target:this.parseCall(),line:e.line,column:e.column}):this.createIdentifier(t))}parseContextPropertyAccess(e){if(this.match("*")){let t="";if(!this.checkIdentifier())return this.addError("Expected property name after 'my *'"),this.createMemberExpression(this.createIdentifier(e),this.createIdentifier(""),!1);for(t=this.advance().value;this.check("-")&&!this.isAtEnd();){if(t+="-",this.advance(),!this.checkIdentifier()){this.addError("Expected identifier after hyphen in CSS property name");break}t+=this.advance().value}const r="*"+t;return this.createMemberExpression(this.createIdentifier(e),this.createIdentifier(r),!1)}{if(this.check("[")&&this.tokens[this.current+1]?.value?.startsWith("@")){this.advance();const t=this.advance();return this.consume("]","Expected ']' after attribute reference"),this.createMemberExpression(this.createIdentifier(e),{type:"attributeAccess",attributeName:t.value.substring(1),start:t.start,end:t.end,line:t.line,column:t.column},!0)}if(Xe(this.peek())&&this.peek().value.startsWith("@")){const t=this.advance();return this.createMemberExpression(this.createIdentifier(e),this.createIdentifier(t.value),!1)}const t=this.consumeIdentifierLike(`Expected property name after '${{me:"my",it:"its",you:"your"}[e]}'`);return this.createMemberExpression(this.createIdentifier(e),this.createIdentifier(t.value),!1)}}parseMyPropertyAccess(){return this.parseContextPropertyAccess("me")}finishCall(e){const t=[];if(!this.check(")"))do{if(this.check(","))return this.addError("Unexpected token in function arguments"),this.createCallExpression(e,[this.createErrorNode()]);t.push(this.parseExpression())}while(this.match(","));if(!this.check(")")&&"identifier"===e.type){const t=e.name;P(t)&&pe(`\ud83d\udca1 Tip: CSS functions like ${t}() should be quoted for clean parsing. Use '${t}(...)' or \`${t}(...)\` instead.`)}return this.consume(")","Expected ')' after arguments"),this.createCallExpression(e,t)}createLiteral(e,t){return ct(e,t,this.getPosition())}createIdentifier(e){return ut(e,this.getPosition())}createBinaryExpression(e,t,r){return dt(e,t,r,this.getPosition())}createUnaryExpression(e,t,r){return function(e,t,r,n){return{type:"unaryExpression",operator:e,argument:t,prefix:r,start:n.start,end:n.end,line:n.line,column:n.column}}(e,t,r,this.getPosition())}createCallExpression(e,t){return function(e,t,r){return{type:"callExpression",callee:e,arguments:t,start:r.start,end:r.end,line:r.line,column:r.column}}(e,t,this.getPosition())}createMemberExpression(e,t,r){return function(e,t,r,n){return{type:"memberExpression",object:e,property:t,computed:r,start:n.start,end:n.end,line:n.line,column:n.column}}(e,t,r,this.getPosition())}createSelector(e){return function(e,t){return{type:"selector",value:e,start:t.start,end:t.end,line:t.line,column:t.column}}(e,this.getPosition())}createPossessiveExpression(e,t){return function(e,t,r){return{type:"possessiveExpression",object:e,property:t,start:r.start,end:r.end,line:r.line,column:r.column}}(e,t,this.getPosition())}createErrorNode(){return{type:"identifier",name:"__ERROR__",start:(e=this.getPosition()).start,end:e.end,line:e.line,column:e.column};var e}processEscapeSequences(e){return e.replace(/\\(.)/g,(e,t)=>{switch(t){case"n":return"\n";case"t":return"\t";case"r":return"\r";case"b":return"\b";case"f":return"\f";case"v":return"\v";case"0":return"\0";case"\\":return"\\";case'"':return'"';case"'":return"'";default:return t}})}createProgramNode(e){return function(e){if(pe(`\u2705 createProgramNode: Called with ${e.length} statements`),0===e.length)return pe("\u2705 createProgramNode: Returning error node (0 statements)"),{type:"identifier",name:"__ERROR__",start:0,end:0,line:1,column:1};if(1===e.length)return pe(`\u2705 createProgramNode: Returning single statement (type=${e[0].type})`),e[0];const t={type:"Program",statements:e,start:e[0]?.start||0,end:e[e.length-1]?.end||0,line:e[0]?.line||1,column:e[0]?.column||1};return pe(`\u2705 createProgramNode: Returning Program node with ${e.length} statements, type=${t.type}`),t}(e)}match(...e){for(const t of e)if(this.check(t))return this.advance(),!0;return!1}matchOperator(e){if(this.isAtEnd())return!1;const t=this.peek();return!(!ot(t)||t.value!==e||(this.advance(),0))}check(e){if(this.isAtEnd())return!1;const t=this.peek().value;return this.resolveKeyword(t)===e}checkPredicate(e){return!this.isAtEnd()&&e(this.peek())}matchPredicate(e){return!!this.checkPredicate(e)&&(this.advance(),!0)}checkSelector(){return this.checkPredicate(Ue)}matchSelector(){return this.matchPredicate(Ue)}checkAnySelector(){return this.checkPredicate(We)}checkLiteral(){return this.checkPredicate(Ke)}checkIdentifierLike(){return this.checkPredicate(He)}checkIsCommand(){return this.checkPredicate(Ve)}checkCommandTerminator(){return this.checkPredicate(lt)}checkReference(){return this.checkPredicate(Je)}checkTimeExpression(){return this.checkPredicate(Ze)}checkEvent(){return this.checkPredicate(ze)}checkContextVar(){return this.checkPredicate(Be)}checkComment(){return this.checkPredicate(Ye)}checkIdentifier(){return this.checkPredicate(Ge)}checkKeyword(){return this.checkPredicate(De)}checkString(){return this.checkPredicate(Qe)}matchString(){return this.matchPredicate(Qe)}checkNumber(){return this.checkPredicate(et)}matchNumber(){return this.matchPredicate(et)}checkBoolean(){return this.checkPredicate(tt)}matchBoolean(){return this.matchPredicate(tt)}checkTemplateLiteral(){return this.checkPredicate(rt)}matchTemplateLiteral(){return this.matchPredicate(rt)}checkQueryReference(){return this.checkPredicate(nt)}matchQueryReference(){return this.matchPredicate(nt)}checkIdSelector(){return this.checkPredicate(st)}checkClassSelector(){return this.checkPredicate(it)}checkCssSelector(){return this.checkPredicate(at)}checkBasicOperator(){return this.checkPredicate(ot)}matchBasicOperator(){return this.matchPredicate(ot)}matchTimeExpression(){return this.matchPredicate(Ze)}matchIdentifierLike(){return this.matchPredicate(He)}matchComparisonOperator(){return this.matchPredicate(Fe)}consumePredicate(e,t){return this.checkPredicate(e)?this.advance():(this.addError(t),this.peek())}consumeIdentifier(e){return this.consumePredicate(Ge,e)}consumeIdentifierLike(e){return this.consumePredicate(He,e)}consumeEvent(e){return this.consumePredicate(ze,e)}advance(){return this.isAtEnd()||this.current++,this.previous()}isAtEnd(){return this.current>=this.tokens.length}peek(){return this.isAtEnd()?{kind:"unknown",value:"",start:0,end:0,line:1,column:1}:this.tokens[this.current]}peekAt(e){const t=this.current+e;return t>=0&&this.tokens.length>t?this.tokens[t]:null}previous(){return this.tokens[this.current-1]}consume(e,t){return this.check(e)?this.advance():(this.addError(t),this.peek())}addError(e){const t=this.peek();let r=t.start||0,n=t.line||1,s=t.column||1;if(e.includes("property name after '.'")){const e=this.current>0?this.previous():t;r=e.end||e.start||0,n=e.line||1,s=e.column||1}if(e.includes("parenthes")){const e=this.current>0?this.previous():t;r=e.end||e.start||0,n=e.line||1,s=e.column||1,0===r&&this.current>0&&(r=this.current)}if(e.includes("Expected expression after")){const e=this.current>0?this.previous():t;r=e.start||0,n=e.line||1,s=e.column||1,0===r&&(r=Math.max(1,this.current-1))}if(e.includes("Missing operand")){let e=t;for(let t=this.current-1;t>=0;t--){const r=this.tokens[t];if(r&&("+"===r.value||"-"===r.value)){e=r;break}}r=e.start||0,n=e.line||1,s=e.column||1}this.error={message:e,line:Math.max(1,n),column:Math.max(1,s),position:Math.max(0,r)},this.errors.push(this.error)}synchronizeToCommandBoundary(){for(;!this.isAtEnd();){const e=this.peek();if("then"===e.value||"end"===e.value||"on"===e.value)return;if(this.checkIsCommand()||this.isCommand(e.value)&&!this.isKeyword(e.value))return;pe("\u26a0\ufe0f synchronize: Skipping token:",e.value),this.advance()}}parseAttributeOrArrayLiteral(){const e=this.previous().start,t=this.previous().line,r=this.previous().column;if(!this.isAtEnd()&&this.peek().value.startsWith("@")){const n=[];for(;!this.check("]")&&!this.isAtEnd();){const e=this.advance();n.push(e.value)}this.consume("]","Expected ']' after attribute literal");const s=n.join("");if(!s.includes("="))return{type:"attributeAccess",attributeName:s.replace(/^@/,""),start:e,end:this.previous().end,line:t,column:r};const i="["+s+"]";return{type:"literal",value:i,raw:i,start:e,end:this.previous().end,line:t,column:r}}const n=new Set(["=","~=","|=","^=","$=","*="]),s=this.tokens[this.current],i=this.tokens[this.current+1];if("identifier"===s?.kind&&("]"===i?.value||i&&n.has(i.value)&&"string"===this.tokens[this.current+2]?.kind)){let e="["+this.advance().value;if(this.check("]"))this.advance(),e+="]";else{const t=this.advance().value,r=this.advance().value;e+=t+'"'+(r.startsWith('"')&&r.endsWith('"')||r.startsWith("'")&&r.endsWith("'")?r.slice(1,-1):r)+'"',this.consume("]","Expected ']' after attribute selector"),e+="]"}return this.createSelector(e)}const a=[];if(!this.check("]"))do{if(this.check("]"))break;a.push(this.parseExpression())}while(this.match(","));return this.consume("]","Expected ']' after array elements"),{type:"arrayLiteral",elements:a,start:e,end:this.previous().end,line:t,column:r}}getPosition(){const e=this.current>0?this.previous():this.peek();return{start:e.start||0,end:e.end||0,line:e.line||1,column:e.column||1}}getContext(){const e=this,t={tokens:this.tokens,advance:this.advance.bind(this),peek:this.peek.bind(this),previous:this.previous.bind(this),consume:this.consume.bind(this),check:this.check.bind(this),checkIdentifierLike:this.checkIdentifierLike.bind(this),checkSelector:this.checkSelector.bind(this),checkAnySelector:this.checkAnySelector.bind(this),checkLiteral:this.checkLiteral.bind(this),checkReference:this.checkReference.bind(this),checkTimeExpression:this.checkTimeExpression.bind(this),checkEvent:this.checkEvent.bind(this),checkIsCommand:this.checkIsCommand.bind(this),checkContextVar:this.checkContextVar.bind(this),match:this.match.bind(this),matchOperator:this.matchOperator.bind(this),isAtEnd:this.isAtEnd.bind(this),createIdentifier:this.createIdentifier.bind(this),parseExpression:this.parseExpression.bind(this),parsePrimary:this.parsePrimary.bind(this),parseLogicalAnd:this.parseLogicalAnd.bind(this),parseCSSObjectLiteral:this.parseCSSObjectLiteral.bind(this),parseCommand:this.parseCommand.bind(this),parseCommandSequence:this.parseCommandSequence.bind(this),parseCommandListUntilEnd:this.parseCommandListUntilEnd.bind(this),parseCommandListUntilEndOrElse:this.parseCommandListUntilEndOrElse.bind(this),parseRepeatBody:this.parseRepeatBody.bind(this),getPosition:this.getPosition.bind(this),addError:this.addError.bind(this),addWarning:this.addWarning.bind(this),isCommand:this.isCommand.bind(this),isCompoundCommand:this.isCompoundCommand.bind(this),isKeyword:this.isKeyword.bind(this),getMultiWordPattern:this.getMultiWordPattern.bind(this),resolveKeyword:this.resolveKeyword.bind(this),savePosition:()=>e.current,restorePosition:t=>{e.current=t},peekAt:t=>e.peekAt(t),getInputSlice:(e,t)=>this.originalInput?0>e||e>=this.originalInput.length?"":void 0!==t?this.originalInput.slice(e,t):this.originalInput.slice(e):""};return Object.defineProperty(t,"current",{get:()=>e.current,set:t=>{e.current=t},enumerable:!0,configurable:!0}),t}}function Yt(e,t){const r=function(e){const t={input:"",position:0,line:1,column:1,tokens:[]};t.input=e;const r=e.length;for(;r>t.position&&(B(t),r>t.position);){const r=e[t.position];if("-"!==r||"-"!==D(t,1))if('"'!==r){if("'"===r||"'"===r){const e=D(t,1),r=t.tokens[t.tokens.length-1];if("s"!==e||!r||/\s/.test(t.input[t.position-1]??" ")||r.kind!==_.IDENTIFIER&&r.kind!==_.SELECTOR&&"]"!==r.value&&")"!==r.value&&"}"!==r.value)U(t);else{const e=t.position;z(t),z(t),F(t,_.OPERATOR,"'s",e)}continue}if("`"!==r)if("<"!==r)if("#"!==r){if("."===r){if("."===D(t,1)){const e=t.position;z(t),z(t),F(t,_.OPERATOR,"..",e);continue}const e=t.tokens[t.tokens.length-1],r=new Set(["from","to","into","on","in","at","between","first","last","next","previous","closest","random","of","some","no"]),n=e&&e.kind===_.IDENTIFIER&&k.has(e.value.toLowerCase()),s=e&&e.kind===_.IDENTIFIER&&r.has(e.value.toLowerCase());if((!e||e.kind===_.OPERATOR&&")"!==e.value&&"]"!==e.value||n||s||"("===e.value||"["===e.value||"{"===e.value||","===e.value||";"===e.value)&&(!e||e.end!==t.position)&&(te(D(t))||"{"===D(t)||"-"===D(t))){J(t);continue}}if("@"!==r)if("{"!==r)if("}"!==r){if("["===r){const e=t.tokens[t.tokens.length-1],r=e&&e.kind===_.IDENTIFIER&&q.has(e.value)&&t.tokens.length>=2&&"on"===t.tokens[t.tokens.length-2]?.value;(!e||e.kind!==_.IDENTIFIER&&")"!==e.value&&"]"!==e.value||r)&&r?(z(t),F(t,_.SYMBOL,"[")):(z(t),F(t,_.OPERATOR,"["));continue}if("]"!==r){if("$"===r){const e=D(t,1);if(e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"===e){ee(t);continue}}ie(r)?Y(t):"0">r||r>"9"?("a">r||r>"z")&&("A">r||r>"Z")&&"_"!==r?(F(t,_.UNKNOWN,r),z(t)):Q(t):G(t)}else z(t),F(t,_.OPERATOR,"]")}else z(t),F(t,_.OPERATOR,"}");else z(t),F(t,_.OPERATOR,"{");else X(t)}else J(t);else se(t)?Z(t):Y(t);else K(t)}else U(t);else W(t)}return t.tokens}(e);return new Xt(r,t,e).parse()}Xt.POSTFIX_UNARY_OPERATORS=new Set(["exists","does not exist","is empty","is not empty","ignoring case"]),Xt.PRATT_TABLE=Se,Xt.PSEUDO_COMMAND_PREPOSITIONS=["from","on","with","into","at","to"];class Gt{constructor(){this.hooks=new Map,this.beforeExecuteHooks=[],this.afterExecuteHooks=[],this.onErrorHooks=[],this.interceptCommandHooks=[]}register(e,t){this.unregister(e),this.hooks.set(e,t),t.beforeExecute&&this.beforeExecuteHooks.push(t.beforeExecute),t.afterExecute&&this.afterExecuteHooks.push(t.afterExecute),t.onError&&this.onErrorHooks.push(t.onError),t.interceptCommand&&this.interceptCommandHooks.push(t.interceptCommand)}unregister(e){const t=this.hooks.get(e);if(!t)return!1;if(t.beforeExecute){const e=this.beforeExecuteHooks.indexOf(t.beforeExecute);e>-1&&this.beforeExecuteHooks.splice(e,1)}if(t.afterExecute){const e=this.afterExecuteHooks.indexOf(t.afterExecute);e>-1&&this.afterExecuteHooks.splice(e,1)}if(t.onError){const e=this.onErrorHooks.indexOf(t.onError);e>-1&&this.onErrorHooks.splice(e,1)}if(t.interceptCommand){const e=this.interceptCommandHooks.indexOf(t.interceptCommand);e>-1&&this.interceptCommandHooks.splice(e,1)}return this.hooks.delete(e)}has(e){return this.hooks.has(e)}async runBeforeExecute(e){for(const t of this.beforeExecuteHooks)await t(e)}async runAfterExecute(e,t){for(const r of this.afterExecuteHooks)await r(e,t)}async runOnError(e,t){let r=t;for(const t of this.onErrorHooks){const n=await t(e,r);n instanceof Error&&(r=n)}return r}shouldIntercept(e,t){for(const r of this.interceptCommandHooks)if(r(e,t))return!0;return!1}getRegisteredNames(){return Array.from(this.hooks.keys())}clear(){this.hooks.clear(),this.beforeExecuteHooks=[],this.afterExecuteHooks=[],this.onErrorHooks=[],this.interceptCommandHooks=[]}}function Qt(e){return e instanceof Error&&("isHalt"in e||"isExit"in e||"isBreak"in e||"isContinue"in e||"isReturn"in e)?e:null}function er(e){return{ok:!0,value:e}}function tr(e){return{ok:!1,error:e}}function rr(e){return!0===e.ok}const nr=new Map,sr=new WeakMap;function ir(e){let t=sr.get(e);return t||(t=new Map,sr.set(e,t)),t}function ar(e){return e.owner||(e.me instanceof Element?e.me:null)}function or(e,t){const r=ar(e);if(r)return _e(t,e),ir(r).get(t)}function lr(e,t,r){const n=ar(e);n&&(ir(n).set(t,r),Me(t,r,e))}function cr(e,t){return{me:e??null,owner:e??null,it:null,you:null,result:null,locals:new Map,globals:t||nr,flags:{halted:!1,breaking:!1,continuing:!1,returning:!1,async:!1}}}function ur(e){if(!e)return cr();if(e.locals instanceof Map&&e.globals instanceof Map&&e.flags)return e;const t=cr(e.me instanceof Element?e.me:null);return void 0!==e.it&&(t.it=e.it),void 0!==e.you&&(t.you=e.you),void 0!==e.result&&(t.result=e.result),void 0!==e.event&&Object.assign(t,{event:e.event}),t}function dr(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&1===e.nodeType&&"tagName"in e&&"string"==typeof e.tagName&&"classList"in e}function mr(e){return null!==e&&"object"==typeof e&&"length"in e&&"number"==typeof e.length&&(Symbol.iterator in e||"function"==typeof e.item)}function pr(e){if(null==e)return 0;if("number"==typeof e)return isFinite(e)?e:0;if("string"==typeof e)return parseFloat(e);if("boolean"==typeof e)return e?1:0;if(Array.isArray(e))return e.length;if("object"==typeof e){if("length"in e&&"number"==typeof e.length)return e.length;if("function"==typeof e.valueOf){const t=e.valueOf();if("number"==typeof t)return t}return NaN}return 0}function hr(e,t,r){return"element"===r?or(t,e):"global"===r&&t.globals&&t.globals.has(e)?t.globals.get(e):"global"!==r&&t.locals&&t.locals.has(e)?(_e(e,t),t.locals.get(e)):t.globals&&t.globals.has(e)?t.globals.get(e):t.variables&&t.variables.has(e)?t.variables.get(e):"global"===r&&t.locals&&t.locals.has(e)?(_e(e,t),t.locals.get(e)):"undefined"!=typeof window&&e in window?window[e]:"undefined"!=typeof globalThis&&e in globalThis?globalThis[e]:void 0}function fr(e,t,r,n){if("element"!==n){if("global"===n)return $e(r,e,t),void("undefined"!=typeof window&&(window[e]=t));if(e.startsWith("$"))return void $e(r,e.slice(1),t);if(r.locals&&r.locals.has(e))return r.locals.set(e,t),void Me(e,t,r);if(r.globals&&r.globals.has(e))return $e(r,e,t),void("undefined"!=typeof window&&e in window&&(window[e]=t));if(r.variables&&r.variables.has(e))r.variables.set(e,t);else{if("undefined"!=typeof window&&e in window)return window[e]=t,void $e(r,e,t);r.locals.set(e,t),Me(e,t,r)}}else lr(r,e,t)}function yr(e,t){return"me"===e?t.me:"it"===e?t.it:"you"===e?t.you:hr(e,t)}const gr=new class{constructor(e={}){this.types=new Map,this.coercionCache=new Map,this.config={strictMode:!1,cacheCoercions:!0,...e},this.registerBuiltinTypes()}register(e){this.types.has(e.name)&&console.warn(`ExpressionTypeRegistry: Overwriting existing type '${e.name}'`),this.types.set(e.name,e)}get(e){return this.types.get(e)}has(e){return this.types.has(e)}getTypeNames(){return Array.from(this.types.keys())}inferType(e){for(const[t,r]of this.types)if(r.isType(e))return t;return"Unknown"}getHyperScriptType(e){const t=this.inferType(e),r=this.types.get(t);return r?.hyperscriptType??"unknown"}coerce(e,t,r){const n=this.types.get(t);if(!n){if(this.config.strictMode)throw Error("Unknown target type: "+t);return null}if(n.isType(e))return e;if(this.config.cacheCoercions){const r=`${this.inferType(e)}:${t}:${JSON.stringify(e)}`;if(this.coercionCache.has(r))return this.coercionCache.get(r)}const s=this.inferType(e),i=n.coerceFrom?.[s];if(i){const n=i(e,r);if(this.config.cacheCoercions&&null!==n){const r=`${s}:${t}:${JSON.stringify(e)}`;this.coercionCache.set(r,n)}return n}return n.defaultValue}canCoerce(e,t){const r=this.types.get(t);if(!r)return!1;if(r.isType(e))return!0;const n=this.inferType(e);return void 0!==r.coerceFrom?.[n]}getCoercionInfo(e,t){const r=this.types.get(t);return r&&(e===t||r.coerceFrom?.[e])?{possible:!0,direct:!0}:{possible:!1,direct:!1}}clearCache(){this.coercionCache.clear()}getStats(){return{typeCount:this.types.size,cacheSize:this.coercionCache.size,typeNames:this.getTypeNames()}}registerBuiltinTypes(){this.register({name:"String",hyperscriptType:"string",tsType:"string",isType:e=>"string"==typeof e,defaultValue:"",description:"Text string value",examples:["hello","world",""],coerceFrom:{Number:e=>e+"",Boolean:e=>e+"",Null:()=>"",Undefined:()=>"",Array:e=>Array.isArray(e)?e.join(", "):null,Object:e=>{try{return JSON.stringify(e)}catch{return e+""}},Element:e=>e instanceof Element?e.textContent??e.outerHTML:null}}),this.register({name:"Number",hyperscriptType:"number",tsType:"number",isType:e=>"number"==typeof e&&!isNaN(e),defaultValue:0,description:"Numeric value (integer or float)",examples:[0,1,3.14,-42],coerceFrom:{String:e=>{const t=parseFloat(e);return isNaN(t)?null:t},Boolean:e=>e?1:0,Null:()=>0,Undefined:()=>null}}),this.register({name:"Boolean",hyperscriptType:"boolean",tsType:"boolean",isType:e=>"boolean"==typeof e,defaultValue:!1,description:"True or false value",examples:[!0,!1],coerceFrom:{String:e=>{const t=e.toLowerCase().trim();return"true"===t||"yes"===t||"1"===t||"false"!==t&&"no"!==t&&"0"!==t&&""!==t&&t.length>0},Number:e=>0!==e,Null:()=>!1,Undefined:()=>!1,Array:e=>!!Array.isArray(e)&&e.length>0,Element:e=>e instanceof Element,ElementList:e=>Array.isArray(e)&&e.length>0}}),this.register({name:"Element",hyperscriptType:"element",tsType:"Element | HTMLElement",isType:e=>e instanceof Element,defaultValue:null,description:"DOM Element",coerceFrom:{String:(e,t)=>{const r=e;if(r.startsWith("#")||r.startsWith(".")||r.match(/^[\w-]+$/))try{return document.querySelector(r)}catch{return null}return null},ElementList:e=>Array.isArray(e)&&e.length>0?e[0]:null,NodeList:e=>e.length>0?e[0]:null}}),this.register({name:"ElementList",hyperscriptType:"element-list",tsType:"Element[]",isType:e=>Array.isArray(e)&&e.length>0&&e.every(e=>e instanceof Element),defaultValue:[],description:"Array of DOM Elements",coerceFrom:{Element:e=>e instanceof Element?[e]:[],NodeList:e=>Array.from(e),String:e=>{try{return Array.from(document.querySelectorAll(e))}catch{return[]}},Array:e=>{const t=e;return t.every(e=>e instanceof Element)?t:[]}}}),this.register({name:"Array",hyperscriptType:"array",tsType:"unknown[]",isType:e=>Array.isArray(e),defaultValue:[],description:"Array of values",coerceFrom:{String:e=>{const t=e;try{const e=JSON.parse(t);if(Array.isArray(e))return e}catch{}return t.split(",").map(e=>e.trim())},ElementList:e=>e,NodeList:e=>Array.from(e),Object:e=>Object.values(e)}}),this.register({name:"Object",hyperscriptType:"object",tsType:"Record<string, unknown>",isType:e=>!("object"!=typeof e||null===e||Array.isArray(e)||e instanceof Element),defaultValue:{},description:"Plain JavaScript object",coerceFrom:{String:e=>{try{const t=JSON.parse(e);if("object"==typeof t&&null!==t&&!Array.isArray(t))return t}catch{}return null},Array:e=>{const t={};return e.forEach((e,r)=>{t[r+""]=e}),t}}}),this.register({name:"Null",hyperscriptType:"null",tsType:"null",isType:e=>null===e,defaultValue:null,description:"Null value"}),this.register({name:"Undefined",hyperscriptType:"undefined",tsType:"undefined",isType:e=>void 0===e,defaultValue:void 0,description:"Undefined value"}),this.register({name:"Function",hyperscriptType:"function",tsType:"Function",isType:e=>"function"==typeof e,defaultValue:null,description:"JavaScript function"}),this.register({name:"Event",hyperscriptType:"event",tsType:"Event",isType:e=>e instanceof Event,defaultValue:null,description:"DOM Event"}),this.register({name:"NodeList",hyperscriptType:"element-list",tsType:"NodeList",isType:e=>e instanceof NodeList,defaultValue:null,description:"DOM NodeList (typically from querySelectorAll)",coerceFrom:{Array:e=>null}}),this.register({name:"Unknown",hyperscriptType:"unknown",tsType:"unknown",isType:e=>!0,defaultValue:null,description:"Unknown/any value type"})}};function vr(e){const t=gr.get("String");return t?t.isType(e):"string"==typeof e}function br(e){const t=gr.get("Number");return t?t.isType(e):"number"==typeof e}function wr(e){const t=gr.get("Boolean");return t?t.isType(e):"boolean"==typeof e}function kr(e){const t=gr.get("Object");return t?t.isType(e):"object"==typeof e&&null!==e}function Er(e){const t=gr.get("Function");return t?t.isType(e):"function"==typeof e}function xr(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&1===e.nodeType&&"style"in e}function Cr(e){return e instanceof Element}function Sr(e){return e instanceof HTMLElement}const Ar=new Set(["disabled","readonly","required","checked","selected","hidden","open","autofocus","autoplay","controls","loop","muted","multiple","reversed","defer","async","novalidate","formnovalidate","ismap"]);function Tr(e,t){return Ar.has(t.toLowerCase())?e.hasAttribute(t):e.getAttribute(t)}const Or={id:e=>e.id,classname:e=>e.className,class:e=>e.className,tagname:e=>e.tagName.toLowerCase(),innertext:e=>e.textContent?.trim(),innerHTML:e=>e.innerHTML,outerhtml:e=>e.outerHTML,value:e=>function(e){if(null===e||"object"!=typeof e||!("tagName"in e))return!1;const t=e.tagName;return"INPUT"===t||"SELECT"===t||"TEXTAREA"===t}(e)?e.value:void 0,checked:e=>function(e){return null!==e&&"object"==typeof e&&"tagName"in e&&"INPUT"===e.tagName}(e)?e.checked:void 0,disabled:e=>"disabled"in e?e.disabled:void 0,selected:e=>function(e){return null!=e&&"object"==typeof e&&"tagName"in e&&"OPTION"===e.tagName}(e)?e.selected:void 0,tabindex:e=>xr(e)?e.tabIndex:void 0,hidden:e=>xr(e)?e.hidden:void 0,style:e=>getComputedStyle(e),children:e=>Array.from(e.children),parent:e=>e.parentElement,firstchild:e=>e.firstElementChild,lastchild:e=>e.lastElementChild,nextsibling:e=>e.nextElementSibling,previoussibling:e=>e.previousElementSibling,next:e=>e.nextElementSibling,previous:e=>e.previousElementSibling,values:e=>function(e){if(e instanceof HTMLFormElement)return new FormData(e);const t=new FormData;return e.querySelectorAll("input, select, textarea").forEach(e=>{const r=e.getAttribute("name");r&&"value"in e&&t.append(r,e.value)}),t}(e)};function Lr(e,t){if(t.startsWith("*"))return function(e,t){if(!Sr(e))return;if(t.startsWith("computed-"))return getComputedStyle(e).getPropertyValue(t.slice(9))||"";const r=t.replace(/-([a-z])/g,(e,t)=>t.toUpperCase());return e.style[r]}(e,t.slice(1));if(t.startsWith("computed-")){const r=t.slice(9);return Sr(e)?getComputedStyle(e).getPropertyValue(r):void 0}if(t.startsWith("@"))return Tr(e,t.slice(1));const r=Or[t.toLowerCase()];if(r)return r(e);if(function(e,t){return e.hasAttribute(t)}(e,t))return Tr(e,t);const n=e[t];return Er(n)?n.bind(e):n}const Pr={1:"one",2:"two",3:"three",4:"four",5:"five"};function jr(e,t,r,n){if(e.length!==t){return`${r} requires exactly ${s=t,Pr[s]??s+""} argument${1===t?"":"s"}${n?` (${n})`:""}`}var s;return null}function Nr(e,t,r,n){return"string"!=typeof e[t]?`${r} ${n||"argument "+(t+1)} must be a string`:null}function Ir(e,t,r){return jr(e,1,t,r)??Nr(e,0,t,r)}function Rr(e,t){return jr(e,2,t,"left, right")}function qr(){return null}function Mr(e,t,r,n){return e.length>t?`${r} expression takes at most ${1===t?"one":t+""} argument${1===t?"":"s"}${n?` (${n})`:""}`:null}function _r(e,t,r,n,s){return t>e.length||e.length>r?`${n} requires ${t}-${r} arguments${s?` (${s})`:""}`:null}function $r(e,t,r,n=[]){return{type:e,message:t,suggestions:n,...r&&{path:r}}}const Vr="undefined"!=typeof process&&"production"===process.env.NODE_ENV||"undefined"!=typeof process&&"true"===process.env.HYPERFIXI_SKIP_VALIDATION||"undefined"!=typeof globalThis&&"true"===globalThis.HYPERFIXI_SKIP_VALIDATION;let Dr;function zr(){return Dr({validate:e=>({success:!0,data:e})})}function Br(e,t){if(Vr)return zr();const r=Dr({validate:r=>{if("object"!=typeof r||null===r||Array.isArray(r))return{success:!1,error:$r("type-mismatch","Expected object, received "+typeof r)};const n=r,s={};if(t?.strict){const t=Object.keys(e),r=Object.keys(n).filter(e=>!t.includes(e));if(r.length>0)return{success:!1,error:$r("runtime-error","Unexpected properties: "+r.join(", "))}}for(const[t,r]of Object.entries(e)){const e=n[t];if(!(t in n)&&!r._isOptional)return{success:!1,error:$r("missing-argument",`Required field "${t}" is missing`,t)};const i=r.validate(e);if(!i.success)return{success:!1,error:$r("validation-error",i.error.message||`Field "${t}" validation failed`,i.error.path?`${t}.${i.error.path}`:t)};void 0!==i.data&&(s[t]=i.data)}return{success:!0,data:s}}});return r.strict=()=>Br(e,{strict:!0}),r}Dr=function(e){return e.describe||(e.describe=function(e){return this.description=e,this}),e.safeParse||(e.safeParse=function(e){const t=this.validate(e);return t.success?{success:!0,data:t.data}:{success:!1,error:{errors:t.error?[t.error]:[]}}}),e.parse||(e.parse=function(e){const t=this.validate(e);if(t.success&&void 0!==t.data)return t.data;throw Error(t.error?.message||"Validation failed")}),e.optional||(e.optional=function(){const e=this.validate.bind(this),t={...this,_isOptional:!0,validate:t=>null==t?{success:!0,data:void 0}:e(t)};return Dr(t)}),e.min||(e.min=function(e){const t=this.validate.bind(this),r={...this,validate:r=>{const n=t(r);return n.success&&"string"==typeof n.data&&e>n.data.length?{success:!1,error:$r("runtime-error",`String must be at least ${e} characters long`)}:n}};return Dr(r)}),e.max||(e.max=function(e){const t=this.validate.bind(this),r={...this,validate:r=>{const n=t(r);return n.success&&"string"==typeof n.data&&n.data.length>e?{success:!1,error:$r("runtime-error",`String must be at most ${e} characters long`)}:n}};return Dr(r)}),e.default||(e.default=function(e){const t=this.validate.bind(this),r={...this,_defaultValue:e,_hasDefault:!0,validate:r=>void 0===r?{success:!0,data:e}:t(r)};return Dr(r)}),e.rest||(e.rest=function(e){return this}),e.refine||(e.refine=function(e,t){const r=this.validate.bind(this),n={...this,validate:n=>{const s=r(n);return s.success?e(s.data)?s:{success:!1,error:$r("runtime-error",t||"Refinement validation failed")}:s}};return Dr(n)}),new Proxy(e,{get:(e,t,r)=>t in e||"string"!=typeof t||t.startsWith("_")||"constructor"===t||"validate"===t||"then"===t?Reflect.get(e,t,r):function(...e){return r}})};const Fr=e=>function(e={}){return Vr?zr():Dr({validate:t=>e.optional&&null==t?{success:!0,data:void 0}:"string"!=typeof t?{success:!1,error:$r("type-mismatch","Expected string, received "+typeof t)}:void 0!==e.minLength&&e.minLength>t.length?{success:!1,error:$r("runtime-error",`String must be at least ${e.minLength} characters long`)}:void 0!==e.maxLength&&t.length>e.maxLength?{success:!1,error:$r("runtime-error",`String must be at most ${e.maxLength} characters long`)}:e.pattern&&!e.pattern.test(t)?e.pattern.source.startsWith("^")&&e.pattern.source.endsWith("$")?{success:!1,error:$r("runtime-error",`Expected "${e.pattern.source.slice(1,-1)}", received "${t}"`)}:{success:!1,error:$r("missing-argument","String does not match required pattern")}:{success:!0,data:t},...e.description&&{description:e.description}})}(e||{}),Hr=e=>function(e={}){return Vr?zr():Dr({validate:t=>{const r=Number(t);return isNaN(r)?{success:!1,error:$r("type-mismatch","Expected number, received "+typeof t)}:void 0!==e.min&&e.min>r?{success:!1,error:$r("runtime-error","Number must be at least "+e.min)}:void 0!==e.max&&r>e.max?{success:!1,error:$r("runtime-error","Number must be at most "+e.max)}:{success:!0,data:r}}})}(e||{}),Wr=()=>Vr?zr():Dr({validate:e=>"boolean"!=typeof e?{success:!1,error:$r("type-mismatch","Expected boolean, received "+typeof e)}:{success:!0,data:e}}),Ur=e=>Br(e),Kr=e=>function(e){return Vr?zr():Dr({validate:t=>{if(!Array.isArray(t))return{success:!1,error:$r("type-mismatch","Expected array, received "+typeof t)};if(t.length!==e.length)return{success:!1,error:$r("runtime-error",`Expected tuple of length ${e.length}, received length ${t.length}`)};const r=[];for(let n=0;e.length>n;n++){const s=e[n].validate(t[n]);if(!s.success)return{success:!1,error:$r("runtime-error",s.error.message,s.error.path?`${n}.${s.error.path}`:""+n)};r.push(s.data)}return{success:!0,data:r}}})}(e),Jr=()=>zr(),Zr=()=>zr(),Xr=()=>function(e,t="Custom validation failed"){return Vr?zr():Dr({validate:r=>e(r)?{success:!0,data:r}:{success:!1,error:$r("runtime-error",t)}})}(e=>void 0===e,"Expected undefined");class Yr{trackPerformance(e,t,r,n){e.evaluationHistory&&e.evaluationHistory.push({expressionName:this.name,category:this.category,input:t,output:r.success?r.value:r.error,timestamp:n,duration:Date.now()-n,success:r.success})}trackSimple(e,t,r,n=(r?"success":"error")){e.evaluationHistory&&e.evaluationHistory.push({expressionName:this.name,category:this.category,input:"operation",output:n,timestamp:t,duration:Date.now()-t,success:r})}toBoolean(e){return!(!1===e||0===e||0n===e||""===e||null==e||br(e)&&isNaN(e))}success(e,t){return{success:!0,value:e,type:t}}failure(e,t,r,n,s=[]){return{success:!1,error:{name:e,type:t,message:r,code:n,suggestions:s}}}validationSuccess(){return{isValid:!0,errors:[],suggestions:[]}}validationFailure(e,t,r=[]){return{isValid:!1,errors:[{type:e,message:t,suggestions:r}],suggestions:r}}isElement(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&1===e.nodeType&&"tagName"in e&&"string"==typeof e.tagName}inferType(e){return null===e?"null":void 0===e?"undefined":this.isElement(e)?"element":Array.isArray(e)?"array":kr(e)?"object":typeof e}inferEvaluationType(e){return void 0===e?"Undefined":null===e?"Null":vr(e)?"String":br(e)?"Number":wr(e)?"Boolean":Array.isArray(e)?"Array":this.isElement(e)?"Element":"Object"}normalizeCollection(e){return Array.isArray(e)?e:e instanceof NodeList?Array.from(e):vr(e)?e.split(""):null==e?[]:kr(e)&&Symbol.iterator in e?Array.from(e):[]}toNumber(e){if(br(e)&&Number.isFinite(e))return e;if(vr(e)){const t=Number(e);return Number.isFinite(t)?t:null}return wr(e)?e?1:0:null}}function Gr(e,t,r,n,s="runtime-error"){return{success:!1,error:{name:e+"ConversionError",type:s,message:r,code:t,suggestions:n}}}function Qr(e,t){return{success:!0,value:e,type:t}}function en(e,t){return`${e}: ${t instanceof Error?t.message:t+""}`}const tn={Array:(e,t)=>{try{return Array.isArray(e)?Qr(e,"array"):e instanceof NodeList?Qr(Array.from(e),"array"):Qr(null==e?[]:[e],"array")}catch(e){return Gr("Array","ARRAY_CONVERSION_FAILED",en("Failed to convert value to Array",e),["Check if value is iterable","Ensure value is not circular reference"])}},String:(e,t)=>{try{return null==e?Qr("","string"):vr(e)?Qr(e,"string"):kr(e)?Qr(JSON.stringify(e),"string"):Qr(e+"","string")}catch(e){return Gr("String","STRING_CONVERSION_FAILED",en("Failed to convert value to String",e),["Check if object has circular references","Ensure value is serializable"])}},Boolean:(e,t)=>{try{if(wr(e))return Qr(e,"boolean");if(null==e)return Qr(!1,"boolean");if(vr(e)){const t=e.toLowerCase().trim();return Qr("false"!==t&&"0"!==t&&""!==t,"boolean")}return br(e)?Qr(0!==e&&!isNaN(e),"boolean"):Qr(!!e,"boolean")}catch(e){return Gr("Boolean","BOOLEAN_CONVERSION_FAILED",en("Failed to convert value to Boolean",e),["Use explicit true/false values","Check for unexpected data types"])}},Number:(e,t)=>{try{if(br(e))return Qr(e,"number");if(null==e)return Qr(0,"number");const t=Number(e);return isNaN(t)?Gr("Number","INVALID_NUMBER",`Cannot convert "${e}" to a valid number`,["Check if value contains non-numeric characters","Use a valid numeric format"],"invalid-argument"):Qr(t,"number")}catch(e){return Gr("Number","NUMBER_CONVERSION_FAILED",en("Failed to convert value to Number",e),["Ensure value is convertible to number","Check for special characters"])}},Int:(e,t)=>{const r=tn.Number(e,t);return r.success?Qr(Math.trunc(r.value),"number"):r},Float:(e,t)=>{const r=tn.Number(e,t);return r.success?Qr(parseFloat(""+r.value),"number"):r},Date:(e,t)=>{try{if(e instanceof Date)return Qr(e,"object");if(null==e)return Qr(new Date(""),"object");if(vr(e)&&/^\d{4}-\d{2}-\d{2}$/.test(e)){const[t,r,n]=e.split("-").map(Number);return Qr(new Date(t,r-1,n),"object")}const t=new Date(e);return isNaN(t.getTime())?Gr("Date","INVALID_DATE",`Cannot convert "${e}" to a valid date`,["Use ISO 8601 format (YYYY-MM-DD)","Check date string format","Ensure date values are valid"],"invalid-argument"):Qr(t,"object")}catch(e){return Gr("Date","DATE_CONVERSION_FAILED",en("Failed to convert value to Date",e),["Check date format","Ensure value is a valid date string or timestamp"])}},JSON:(e,t)=>{if(!vr(e))return Qr(e,"object");try{return Qr(JSON.parse(e),"object")}catch(e){return Gr("JSON","JSON_PARSE_FAILED",en("Failed to parse value as JSON",e),["Check JSON syntax and escaping","Use `as JSONString` to stringify a value instead"],"syntax-error")}},JSONString:(e,t)=>{try{return Qr(JSON.stringify(e),"string")}catch(e){return Gr("JSONString","JSON_STRINGIFY_FAILED",en("Failed to stringify value as JSON",e),["Check for circular references","Ensure all properties are serializable","Remove functions and undefined values"])}},Object:(e,t)=>{try{if(kr(e))return Qr(e,"object");if(vr(e))try{return Qr(JSON.parse(e),"object")}catch(e){return Gr("Object","JSON_PARSE_FAILED",en("Cannot parse JSON string",e),["Check JSON syntax","Ensure proper escaping of quotes","Validate JSON format"],"syntax-error")}return Qr({},"object")}catch(e){return Gr("Object","OBJECT_CONVERSION_FAILED",en("Failed to convert value to Object",e),["Ensure value is valid JSON string or object","Check for syntax errors"])}},Values:(e,t)=>{try{if(e instanceof HTMLFormElement)return Qr(on(e),"object");if(e instanceof HTMLElement){const t=e.querySelectorAll("input, select, textarea"),r={};return t.forEach(e=>{const t=e;if(t.name){const e=ln(t);void 0!==e&&(r[t.name]=e)}}),Qr(r,"object")}return Qr({},"object")}catch(e){return Gr("FormValues","FORM_VALUES_EXTRACTION_FAILED",en("Failed to extract form values",e),["Ensure element is a form or contains form inputs","Check form structure","Verify input names are set"])}},FormEncoded:(e,t)=>{try{let r=e;if(e instanceof HTMLElement){const n=tn.Values(e,t);if(!n.success)return n;r=n.value}if(!kr(r))return Qr("","string");const n=new URLSearchParams;for(const[e,t]of Object.entries(r))if(null!=t)if(Array.isArray(t))for(const r of t)n.append(e,r+"");else n.append(e,t+"");return Qr(""+n,"string")}catch(e){return Gr("FormEncoded","FORM_ENCODE_FAILED",en("Failed to URL-encode values",e),["Ensure input is a form element or plain object of scalar/array values"])}},Set:(e,t)=>{try{return Qr(new Set(e),"object")}catch(e){return Gr("Set","SET_CONVERSION_FAILED",en("Failed to convert to Set",e),["Ensure the value is iterable"])}},Map:(e,t)=>{try{return Qr(new Map(Object.entries(e??{})),"object")}catch(e){return Gr("Map","MAP_CONVERSION_FAILED",en("Failed to convert to Map",e),["Ensure the value is a plain object"])}},Keys:(e,t)=>e instanceof Map?Qr(Array.from(e.keys()),"array"):Qr(Object.keys(e??{}),"array"),Entries:(e,t)=>e instanceof Map?Qr(Array.from(e.entries()),"array"):Qr(Object.entries(e??{}),"array"),Reversed:(e,t)=>{try{return Qr(Array.from(e).reverse(),"array")}catch(e){return Gr("Reversed","REVERSED_CONVERSION_FAILED",en("Failed to reverse value",e),["Ensure the value is array-like"])}},Unique:(e,t)=>{try{return Qr([...new Set(e)],"array")}catch(e){return Gr("Unique","UNIQUE_CONVERSION_FAILED",en("Failed to dedupe value",e),["Ensure the value is iterable"])}},Flat:(e,t)=>{try{return Qr(Array.from(e).flat(),"array")}catch(e){return Gr("Flat","FLAT_CONVERSION_FAILED",en("Failed to flatten value",e),["Ensure the value is array-like"])}}},rn=Ur({value:Zr(),type:Fr().min(1)}),nn=Ur({value:Zr(),type:Fr().min(1)});new class extends Yr{constructor(){super(...arguments),this.name="as",this.category="Conversion",this.syntax="value as Type",this.description='Converts values between different types using the "as" keyword',this.outputType="Any",this.inputSchema=rn,this.metadata={category:"Conversion",complexity:"medium",sideEffects:[],dependencies:[],returnTypes:["Any"],examples:[{input:'"123" as Int',description:"Convert string to integer",expectedOutput:123},{input:"form as Values",description:"Extract form values as object",expectedOutput:{name:"John",age:"25"}},{input:"[1,2,3] as JSONString",description:"Convert array to JSON string (upstream 0.9.90: use JSONString, not JSON)",expectedOutput:"[1,2,3]"},{input:"'{\"a\":1}' as JSON",description:"Parse a JSON string (upstream 0.9.90: as JSON now parses)",expectedOutput:{a:1}},{input:'"2023-12-25" as Date',description:"Parse date string",expectedOutput:new Date(2023,11,25)}],relatedExpressions:["is","Object","Array"],performance:{averageTime:1,complexity:"O(n)"}},this.documentation={summary:'Converts values between different types using the "as" keyword with comprehensive type safety',parameters:[{name:"value",type:"object",description:"The value to convert",optional:!1,examples:['"123"',"form","[1,2,3]","true","null"]},{name:"type",type:"string",description:"Target conversion type",optional:!1,examples:["Int","String","Boolean","Array","JSON","Object","Date","Values","HTML","Fragment"]}],returns:{type:"object",description:"Structured result with converted value or detailed error information",examples:['{ success: true, value: 123, type: "number" }',"{ success: false, error: { ... } }"]},examples:[{title:"String to number conversion",code:"if my.value as Int > 100",explanation:"Convert form input to integer for comparison",output:"Boolean result"},{title:"Form data extraction",code:"put closest <form /> as Values into result",explanation:"Extract all form values as structured object",output:'{ name: "John", age: "25", ... }'},{title:"Array to JSON serialization",code:"put items as JSONString into storage",explanation:"Convert array to JSON string for storage (upstream 0.9.90: use `as JSONString`)",output:'"[1,2,3]"'},{title:"Date parsing with validation",code:"put my.dateInput as Date into event.detail.date",explanation:"Parse date input with automatic validation",output:"Date object or validation error"},{title:"Boolean conversion with smart parsing",code:'if "false" as Boolean then hide else show',explanation:"Parse string boolean values correctly",output:"false (not true like naive conversion)"}],seeAlso:["is","Values","JSON","Array","Object"],tags:["conversion","types","validation","forms","json","parsing"]}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:{name:"AsExpressionValidationError",type:"validation-error",message:n.errors[0]?.message||"Invalid input",code:"VALIDATION_FAILED",suggestions:n.suggestions}};const{value:s,type:i}=t;if(i.startsWith("Fixed")){const n=i.match(/^Fixed:(\d+)$/),a=n?parseInt(n[1],10):0,o=tn.Number(s,e);if(!o.success)return o;const l={success:!0,value:o.value.toFixed(a),type:"string"};return this.trackPerformance(e,t,l,r),l}let a=tn[i];if(a){const n=a(s,e);return this.trackPerformance(e,t,n,r),n}const o={boolean:"Boolean",bool:"Boolean",string:"String",str:"String",number:"Number",num:"Number",int:"Int",integer:"Int",float:"Float",array:"Array",object:"Object",obj:"Object",date:"Date",json:"JSON",jsonstring:"JSONString",formencoded:"FormEncoded"}[i.toLowerCase()];if(o&&(a=tn[o],a)){const n=a(s,e);return this.trackPerformance(e,t,n,r),n}const l={success:!1,error:{name:"UnknownConversionTypeError",type:"validation-error",message:"Unknown conversion type: "+i,code:"UNKNOWN_CONVERSION_TYPE",suggestions:["Use supported types: String, Number, Boolean, Array, Object, Date, JSON, Values","Check type spelling and capitalization","See documentation for complete list of conversion types"]}};return this.trackPerformance(e,t,l,r),l}catch(n){const s={success:!1,error:{name:"AsExpressionError",type:"runtime-error",message:"Conversion failed: "+(n instanceof Error?n.message:n+""),code:"CONVERSION_FAILED",suggestions:["Check value and type compatibility","Ensure value is convertible to target type"]}};return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?{isValid:!0,errors:[],suggestions:[]}:{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:e.message,suggestions:["Expected valid input structure, got: "+e.code]}))??[],suggestions:["Provide both value and type parameters","Ensure type is a non-empty string","Check parameter structure: { value: any, type: string }"]}}catch(e){return this.validationFailure("runtime-error","Validation failed",["Check input structure"])}}},new class extends Yr{constructor(){super(...arguments),this.name="is",this.category="Conversion",this.syntax="value is Type",this.description="Checks if a value is of a specific type",this.outputType="Boolean",this.inputSchema=nn,this.metadata={category:"Conversion",complexity:"simple",sideEffects:[],dependencies:[],returnTypes:["Boolean"],examples:[{input:"42 is number",description:"Check if value is a number",expectedOutput:!0},{input:"null is empty",description:"Check if value is empty/null",expectedOutput:!0},{input:"element is Element",description:"Check if value is DOM element",expectedOutput:!0,context:{element:"<div>...</div>"}}],relatedExpressions:["as","empty","exists"],performance:{averageTime:.1,complexity:"O(1)"}},this.documentation={summary:"Checks if a value is of a specific type with comprehensive type detection",parameters:[{name:"value",type:"object",description:"The value to check",optional:!1,examples:["42","null","element",'"text"',"[]"]},{name:"type",type:"string",description:"Type name to check against",optional:!1,examples:["number","string","boolean","array","object","element","empty","null"]}],returns:{type:"object",description:"Boolean result indicating type match",examples:['{ success: true, value: true, type: "boolean" }']},examples:[{title:"Number validation",code:"if my.age is number then proceed",explanation:"Check if form input is valid number",output:"Boolean result"},{title:"Empty check",code:"if result is empty then show message",explanation:"Check if result is null, undefined, or empty",output:"Boolean result"},{title:"Element validation",code:"if target is element then addClass",explanation:"Ensure target is valid DOM element before manipulation",output:"Boolean result"}],seeAlso:["as","empty","exists","null"],tags:["validation","types","checking","guards"]}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:{name:"IsExpressionValidationError",type:"validation-error",message:n.errors[0]?.message||"Invalid input",code:"VALIDATION_FAILED",suggestions:n.suggestions}};const{value:s,type:i}=t,a=i.toLowerCase();let o;switch(a){case"null":o=null===s;break;case"undefined":o=void 0===s;break;case"string":o=vr(s);break;case"number":o=br(s)&&!isNaN(s);break;case"boolean":o=wr(s);break;case"object":o=kr(s);break;case"array":o=Array.isArray(s);break;case"function":o=Er(s);break;case"date":o=s instanceof Date;break;case"element":o=s instanceof Element;break;case"node":o=s instanceof Node;break;case"node-list":o=s instanceof NodeList;break;case"empty":o=null==s||""===s||Array.isArray(s)&&0===s.length||kr(s)&&0===Object.keys(s).length;break;default:o=s?.constructor?.name?.toLowerCase()===a}const l=this.success(o,"boolean");return this.trackPerformance(e,t,l,r),l}catch(n){const s=this.failure("IsExpressionError","type-mismatch","Type check failed: "+(n instanceof Error?n.message:n+""),"TYPE_CHECK_FAILED",["Check type name spelling","Ensure value is accessible"]);return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:e.message,suggestions:["Expected valid input structure, got: "+e.code]}))??[],suggestions:["Provide both value and type parameters","Ensure type is a non-empty string","Check parameter structure: { value: any, type: string }"]}}catch(e){return this.validationFailure("runtime-error","Validation failed",["Check input structure"])}}};const sn={conversions:{dynamicResolvers:[]}},an={Array:e=>Array.isArray(e)?e:e instanceof NodeList?Array.from(e):null==e?[]:[e],String:e=>null==e?"":vr(e)?e:kr(e)?JSON.stringify(e):e+"",Boolean:e=>{if(wr(e))return e;if(null==e)return!1;if(vr(e)){const t=e.toLowerCase().trim();return"false"!==t&&"0"!==t&&""!==t}return br(e)?0!==e&&!isNaN(e):!!e},Number:e=>{if(br(e))return e;if(null==e)return 0;const t=Number(e);return isNaN(t)?0:t},Math:e=>{if(br(e))return e;if(null==e)return 0;const t=(e+"").trim();if(!t)return 0;try{return function(e){if(e=e.replace(/\s/g,""),!/^[0-9+\-*/().]+$/.test(e))throw Error("Invalid characters in math expression");try{const t=Function(`"use strict"; return (${e})`)();if(!br(t)||!isFinite(t))throw Error("Expression did not evaluate to a finite number");return t}catch(e){throw Error("Math expression evaluation failed: "+(e instanceof Error?e.message:e+""))}}(t)}catch(e){return console.warn("Math conversion failed:",e),0}},Int:e=>{const t=an.Number(e);return Math.trunc(t)},Float:e=>{const t=an.Number(e);return parseFloat(""+t)},Date:e=>{if(e instanceof Date)return e;if(null==e)return new Date(NaN);if(vr(e)&&/^\d{4}-\d{2}-\d{2}$/.test(e)){const[t,r,n]=e.split("-").map(Number);return new Date(t,r-1,n)}return new Date(e)},JSON:e=>{if(!vr(e))return e;try{return JSON.parse(e)}catch{return e}},JSONString:e=>{try{return JSON.stringify(e)}catch{return"{}"}},Object:e=>{if(kr(e))return e;if(vr(e))try{return JSON.parse(e)}catch(e){return{}}return{}},Fragment:e=>{const t=document.createDocumentFragment(),r=Array.isArray(e)||e instanceof NodeList?Array.from(e):[e];for(const e of r)if(e instanceof Node)t.append(e);else{const r=document.createElement("template");r.innerHTML=null==e?"":e+"",t.append(r.content)}return t},HTML:e=>vr(e)?e:e instanceof NodeList?Array.from(e).map(e=>e instanceof Element?e.outerHTML:e.textContent||"").join(""):Array.isArray(e)?e.map(e=>e instanceof Element?e.outerHTML:an.String(e)).join(""):e instanceof Element?e.outerHTML:an.String(e),Values:(e,t)=>{if(e instanceof HTMLFormElement)return on(e);if(e instanceof HTMLElement){const t=e.querySelectorAll("input, select, textarea"),r={};return t.forEach(e=>{e.name&&(r[e.name]=ln(e))}),r}return{}},FormEncoded:(e,t)=>{const r=e instanceof HTMLElement?an.Values(e,t):e;if(!kr(r))return"";const n=new URLSearchParams;for(const[e,t]of Object.entries(r))if(null!=t)if(Array.isArray(t))for(const r of t)n.append(e,r+"");else n.append(e,t+"");return""+n},Set:e=>new Set(e),Map:e=>new Map(Object.entries(e??{})),Keys:e=>e instanceof Map?Array.from(e.keys()):Object.keys(e??{}),Entries:e=>e instanceof Map?Array.from(e.entries()):Object.entries(e??{}),Reversed:e=>Array.from(e).reverse(),Unique:e=>[...new Set(e)],Flat:e=>Array.from(e).flat(),"Values:Form":(e,t)=>{const r=an.Values(e,t);return an.FormEncoded(r,t)},"Values:JSON":(e,t)=>{const r=an.Values(e,t);return JSON.stringify(r)}};function on(e){const t={};return e.querySelectorAll("input, select, textarea").forEach(e=>{const r=e;if(r.name){const e=ln(r);void 0!==e&&(void 0!==t[r.name]?(Array.isArray(t[r.name])||(t[r.name]=[t[r.name]]),t[r.name].push(e)):t[r.name]=e)}}),t}function ln(e){if(e instanceof HTMLInputElement)switch(e.type){case"checkbox":return e.checked;case"radio":return e.checked?e.value:void 0;case"number":case"range":return e.valueAsNumber;case"date":case"datetime-local":return e.valueAsDate;case"file":return e.files;default:return e.value}return e instanceof HTMLSelectElement&&e.multiple?Array.from(e.selectedOptions).map(e=>e.value):e.value}const cn={boolean:"Boolean",bool:"Boolean",string:"String",str:"String",number:"Number",num:"Number",int:"Int",integer:"Int",float:"Float",array:"Array",object:"Object",obj:"Object",date:"Date",json:"JSON",jsonstring:"JSONString",formencoded:"FormEncoded"};function un(e,t,r){if("string"!=typeof t)throw Error("Conversion type must be a string");if(t.startsWith("Fixed")){const{precision:r}=function(e){const t=e.match(/^Fixed(?::(\d+))?$/);return t?{precision:t[1]?parseInt(t[1],10):0}:{}}(t);return an.Number(e).toFixed(r??0)}if(null==e)return e;let n=an[t];if(n)return n(e,r);const s=cn[t.toLowerCase()];if(s&&(n=an[s],n))return n(e,r);const i=sn.conversions[t];if("function"==typeof i)return i(e,r);for(const r of sn.conversions.dynamicResolvers){const n=r(t,e);if(void 0!==n)return n}return console.warn("Unknown conversion type: "+t),e}const dn={as:{name:"as",category:"Conversion",evaluatesTo:"Any",precedence:20,associativity:"Left",operators:["as"],async evaluate(e,...t){const[r,n]=t;return un(r,n,e)},validate:e=>jr(e,2,"as","value, type")??Nr(e,1,"as","conversion type")},is:{name:"is",category:"Conversion",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["is a","is an"],async evaluate(e,...t){const[r,n]=t;if(!vr(n))throw Error("Type check requires a string type");switch(n.toLowerCase()){case"null":return null===r;case"undefined":return void 0===r;case"string":return vr(r);case"number":return br(r)&&!isNaN(r);case"boolean":return wr(r);case"object":return kr(r);case"array":return Array.isArray(r);case"function":return Er(r);case"date":return r instanceof Date;case"element":return r instanceof Element;case"node":return r instanceof Node;case"nodelist":return r instanceof NodeList;case"empty":return null==r||""===r||Array.isArray(r)&&0===r.length||kr(r)&&0===Object.keys(r).length;default:return r?.constructor?.name?.toLowerCase()===n.toLowerCase()}},validate:e=>jr(e,2,"is","value, type")??Nr(e,1,"is","type")},async:{name:"async",category:"Conversion",evaluatesTo:"Any",precedence:25,associativity:"Right",operators:["async"],evaluate:async(e,t)=>t,validate:e=>jr(e,1,"async","expression")}},mn=new Set(["__proto__","constructor","prototype"]);function pn(e,t){if(e instanceof Element)return Lr(e,t);if(kr(e)){if(mn.has(t))return;return e[t]}return e[t]}function hn(e){let t;if(Array.isArray(e))t=e;else{if(!("undefined"!=typeof NodeList&&e instanceof NodeList||"undefined"!=typeof HTMLCollection&&e instanceof HTMLCollection))return!1;t=Array.from(e)}return 0!==t.length&&t.every(e=>e instanceof Element||null!=e&&"object"==typeof e&&e.constructor!==Object&&!Array.isArray(e))}const fn={possessive:{name:"possessive",category:"Reference",evaluatesTo:"Any",operators:["'s","s"],async evaluate(e,...t){const[r,n]=t;if(null!=r){if("string"!=typeof n)throw Error("Property name must be a string");return hn(r)&&!(n in r)?Array.from(r,e=>pn(e,n)):pn(r,n)}},validate:e=>jr(e,2,"possessive","element, property")??Nr(e,1,"possessive","property name")},my:{name:"my",category:"Reference",evaluatesTo:"Any",operators:["my"],async evaluate(e,...t){const[r]=t;if(e.me){if("string"!=typeof r)throw Error("Property name must be a string");if(e.me instanceof Element)return Lr(e.me,r);if(kr(e.me)){if(mn.has(r))return;return e.me[r]}return e.me[r]}},validate:e=>Ir(e,"my","property")},its:{name:"its",category:"Reference",evaluatesTo:"Any",operators:["its"],async evaluate(e,...t){const[r]=t;if(null==e.it)return;if("string"!=typeof r)throw Error("Property name must be a string");const n=e.it;if(n instanceof Element)return Lr(n,r);if(kr(n)){if(mn.has(r))return;return n[r]}return n[r]},validate:e=>Ir(e,"its","property")},your:{name:"your",category:"Reference",evaluatesTo:"Any",operators:["your"],async evaluate(e,...t){const[r]=t;if(e.you){if("string"!=typeof r)throw Error("Property name must be a string");if(e.you instanceof Element)return Lr(e.you,r);if(kr(e.you)){if(mn.has(r))return;return e.you[r]}return e.you[r]}},validate:e=>Ir(e,"your","property")},of:{name:"of",category:"Reference",evaluatesTo:"Any",operators:["of"],async evaluate(e,...t){const[r,n]=t;if(null!=n){if("string"!=typeof r)throw Error("Property name must be a string");if(n instanceof Element)return Lr(n,r);if(kr(n)){if(mn.has(r))return;return n[r]}return n[r]}},validate:e=>jr(e,2,"of","property, object")??Nr(e,0,"of","property name")},attribute:{name:"attribute",category:"Reference",evaluatesTo:"String",operators:["@"],async evaluate(e,...t){const[r,n]=t;if("string"!=typeof r)throw Error("Attribute name must be a string");const s=n||e.me;return s&&s instanceof Element?s.getAttribute(r):null},validate:e=>_r(e,1,2,"attribute","attributeName, optional element")??Nr(e,0,"attribute","attribute name")??(2>e.length||null==e[1]||e[1]instanceof Element?null:"attribute element must be an Element")},attributeWithValue:{name:"attributeWithValue",category:"Reference",evaluatesTo:"Boolean",operators:["@="],async evaluate(e,...t){const[r,n,s]=t;if("string"!=typeof r)throw Error("Attribute name must be a string");if("string"!=typeof n)throw Error("Expected value must be a string");const i=s||e.me;return!!(i&&i instanceof Element)&&i.getAttribute(r)===n},validate:e=>_r(e,2,3,"attributeWithValue","attributeName, expectedValue, optional element")??Nr(e,0,"attributeWithValue","attribute name")??Nr(e,1,"attributeWithValue","expected value")??(3>e.length||null==e[2]||e[2]instanceof Element?null:"attributeWithValue element must be an Element")},classReference:{name:"classReference",category:"Reference",evaluatesTo:"Array",operators:["."],async evaluate(e,...t){const[r]=t;if("string"!=typeof r)throw Error("Class name must be a string");const n=r.startsWith(".")?r.slice(1):r,s=document.getElementsByClassName(n);return Array.from(s)},validate:e=>Ir(e,"classReference","className")},idReference:{name:"idReference",category:"Reference",evaluatesTo:"Element",operators:["#"],async evaluate(e,...t){const[r]=t;if("string"!=typeof r)throw Error("ID value must be a string");const n=r.startsWith("#")?r.slice(1):r;return document.getElementById(n)},validate:e=>Ir(e,"idReference","idValue")}};function yn(e){return Array.isArray(e)?e:null==e?[]:"string"==typeof e?[e]:e instanceof NodeList||e instanceof HTMLCollection||"number"==typeof e.length?Array.from(e):[e]}function gn(e,t){const r=e.registry?.get(t);if(!r)throw Error(`Expression '${t}' not in ExecutionContext.registry. The bundle's ExpressionRegistry must include this expression's category. Use createExpressionRegistry() with the relevant category objects (referencesExpressions, logicalExpressions, conversionExpressions, positionalExpressions, propertiesExpressions, specialExpressions, mathematicalExpressions).`);return r}function vn(e){if(e&&"object"==typeof e&&"success"in e){if(e.success)return"value"in e?e.value:void 0;const t=e.errors||[];throw Error(t.length>0?t[0].message:"Expression evaluation failed")}return e}async function bn(e,t){if(!e)throw Error("Cannot evaluate null or undefined AST node");if("literal"===e.type)return e.value;if("identifier"===e.type)return An(e,t);const r=e;switch(e.type){case"literal":return function(e){return e.value}(r);case"identifier":return An(r,t);case"binaryExpression":return async function(e,t){const r=e.operator,n=e.right,s=e.left;if("="===r){const r=await bn(e.right,t);if("identifier"===s?.type&&"string"==typeof s.name){const e=s.name;return e.startsWith("$")?$e(t,e.slice(1),r):"global"===s.scope?$e(t,e,r):"element"===s.scope?lr(t,e,r):(t.locals||(t.locals=new Map),t.locals.set(e,r)),r}throw Error(`Assignment target must be a variable identifier (got '${s?.type??"undefined"}')`)}if("has"===r||"have"===r){const r=await bn(e.left,t);return!!(r instanceof Element&&"selector"===n.type&&"string"==typeof n.value&&n.value.startsWith("."))&&r.classList.contains(n.value.slice(1))}if("in"===r||"is in"===r){const r="callExpression"===s?.type&&"identifier"===s.callee?.type?s.callee.name:null;if(("first"===r||"last"===r)&&Array.isArray(s.arguments)){const n=s.arguments[0];if("selector"===n?.type&&"string"==typeof n.value){const s=await bn(e.right,t);if(s&&"function"==typeof s.querySelectorAll){const e=Array.from(s.querySelectorAll(n.value));return 0===e.length?null:"first"===r?e[0]:e[e.length-1]}}}if("selector"===s?.type&&s.fromQuery&&"string"==typeof s.value){const r=await bn(e.right,t),n=r&&"function"==typeof r.querySelectorAll?r:null;if(n)return Array.from(n.querySelectorAll(s.value))}}if("of"===r&&"selector"===s?.type&&"string"==typeof s.value&&/^\*[a-zA-Z][\w-]*$/.test(s.value)){const r=await bn(e.right,t);return gn(t,"styleRef").evaluate(t,s.value.slice(1),r)}if("of"===r){const r=Tn(e.left);if(r){const n=await bn(e.right,t);let s=n;for(const e of r){if(null==s)return;s=Cr(s)?Lr(s,e):s[e]}return"function"==typeof s?s.bind(n):s}}const i=await bn(e.left,t);if("and"===r){if(!i)return i;const r=await bn(e.right,t);return gn(t,"and").evaluate(t,i,r)}if("or"===r){if(i)return i;const r=await bn(e.right,t);return gn(t,"or").evaluate(t,i,r)}const a=await bn(e.right,t),o=e=>"string"==typeof e?e.toLowerCase():e,l=e.ignoringCase?o(i):i,c=e.ignoringCase?o(a):a;switch(r){case"+":{let r=i,n=a;return e.coerceNumeric&&("string"==typeof r&&(r=pr(r)),"string"==typeof n&&(n=pr(n))),"string"==typeof r||"string"==typeof n?(r??"")+""+(n??""):Array.isArray(r)?Array.isArray(n)?[...r,...n]:[...r,n]:vn(await gn(t,"addition").evaluate(t,{left:r,right:n}))}case"-":return vn(await gn(t,"subtraction").evaluate(t,{left:i,right:a}));case"*":return vn(await gn(t,"multiplication").evaluate(t,{left:i,right:a}));case"/":return vn(await gn(t,"division").evaluate(t,{left:i,right:a}));case"%":case"mod":return vn(await gn(t,"modulo").evaluate(t,{left:i,right:a}));case"^":case"**":return vn(await gn(t,"power").evaluate(t,{left:i,right:a}));case">":case"is greater than":return gn(t,"greaterThan").evaluate(t,i,a);case"<":case"is less than":return gn(t,"lessThan").evaluate(t,i,a);case">=":case"is greater than or equal to":return gn(t,"greaterThanOrEqual").evaluate(t,i,a);case"<=":case"is less than or equal to":return gn(t,"lessThanOrEqual").evaluate(t,i,a);case"==":return gn(t,"equals").evaluate(t,l,c);case"is":case"am":case"equals":case"is equal":case"is equal to":{const r=Pn(e,i,a);return void 0!==r?r:gn(t,"equals").evaluate(t,l,c)}case"!=":return gn(t,"notEquals").evaluate(t,l,c);case"is not":case"is not equal":case"is not equal to":{const r=Pn(e,i,a);return void 0!==r?!r:gn(t,"notEquals").evaluate(t,l,c)}case"===":case"really equals":case"is really":case"is really equal to":return gn(t,"strictEquals").evaluate(t,l,c);case"!==":case"is not really":case"is not really equal to":return gn(t,"strictNotEquals").evaluate(t,l,c);case"as":return gn(t,"as").evaluate(t,i,Nn(a));case"contains":case"contain":case"includes":case"include":return gn(t,"contains").evaluate(t,l,c);case"does not contain":case"do not contain":case"does not contains":case"does not include":return gn(t,"doesNotContain").evaluate(t,l,c);case"starts with":return gn(t,"startsWith").evaluate(t,l,c);case"ends with":return gn(t,"endsWith").evaluate(t,l,c);case"does not start with":return!await gn(t,"startsWith").evaluate(t,l,c);case"does not end with":return!await gn(t,"endsWith").evaluate(t,l,c);case"match":case"matches":return gn(t,"matches").evaluate(t,l,Ln(e.right,c));case"does not match":case"do not match":return!await gn(t,"matches").evaluate(t,l,Ln(e.right,c));case"in":case"is in":case"am in":return On(i,a);case"is not in":case"am not in":return!On(i,a);case"of":return a&&"object"==typeof a?a[i]:void 0;case"precedes":return jn(i,a,Node.DOCUMENT_POSITION_FOLLOWING);case"does not precede":return!jn(i,a,Node.DOCUMENT_POSITION_FOLLOWING);case"follows":return jn(i,a,Node.DOCUMENT_POSITION_PRECEDING);case"does not follow":return!jn(i,a,Node.DOCUMENT_POSITION_PRECEDING);default:throw Error("Unknown binary operator: "+r)}}(r,t);case"asExpression":return async function(e,t){const r=await bn(e.expression,t),n=Nn(e.targetType);return gn(t,"as").evaluate(t,r,n)}(r,t);case"betweenExpression":return async function(e,t){const r=await bn(e.value,t),n=await bn(e.min,t),s=await bn(e.max,t),i=e=>"string"==typeof e?e.toLowerCase():e,[a,o,l]=e.ignoringCase?[i(r),i(n),i(s)]:[r,n,s],c=await gn(t,"between").evaluate(t,a,o,l);return e.negated?!c:c}(r,t);case"typeCheckExpression":return async function(e,t){const r=function(e,t,r){if(null==e&&r)return!0;if(Object.prototype.toString.call(e).slice(8,-1)===t)return!0;const n=globalThis[t];return"function"==typeof n&&e instanceof n}(await bn(e.value,t),e.typeName+"",!1!==e.nullOk);return e.negated?!r:r}(r,t);case"collectionExpression":return async function(e,t){const r=await bn(e.collection,t);if(null==r)return r;const n=async(e,r)=>bn(e,{...t,it:r});switch(e.operator){case"where":return async function(e,t,r){const n=yn(e),s=[];for(const e of n)await r(t,e)&&s.push(e);return s}(r,e.right,n);case"sorted by":return async function(e,t,r,n){const s=[...yn(e)],i=await Promise.all(s.map(e=>n(t,e))),a=s.map((e,t)=>t);a.sort((e,t)=>{const r=i[e],n=i[t];return r===n?0:null==r?1:null==n||n>r?-1:1});const o=a.map(e=>s[e]);return"desc"===r?o.reverse():o}(r,e.right,e.order??"asc",n);case"mapped to":return async function(e,t,r){const n=yn(e);return Promise.all(n.map(e=>r(t,e)))}(r,e.right,n);case"split by":return i=await bn(e.right,t),null==(s=r)?[]:(s+"").split(null==i?"":i+"");case"joined by":return function(e,t){const r=null==t?"":t+"";return yn(e).map(e=>null==e?"":e+"").join(r)}(r,await bn(e.right,t));default:throw Error("Unknown collection operator: "+e.operator)}var s,i}(r,t);case"unaryExpression":return async function(e,t){const r=e.operand??e.argument;if(!r)throw Error(`Unary expression has no operand (operator: ${e.operator})`);const n=await bn(r,t);switch(e.operator){case"not":case"!":return gn(t,"not").evaluate(t,n);case"no":return gn(t,"no").evaluate(t,n);case"-":return-n;case"+":return+n;case"exists":case"some":return gn(t,"exists").evaluate(t,n);case"does not exist":return gn(t,"doesNotExist").evaluate(t,n);case"is empty":return gn(t,"isEmpty").evaluate(t,n);case"is not empty":return gn(t,"isNotEmpty").evaluate(t,n);default:throw Error("Unknown unary operator: "+e.operator)}}(r,t);case"memberExpression":return async function(e,t){const r=await bn(e.object,t);if(e.computed){const n=await bn(e.property,t);return Array.isArray(r)&&"number"==typeof n&&0>n?r[r.length+n]:r?.[n]}return Mn(r,e.property.name,t)}(r,t);case"propertyAccess":return async function(e,t){let r=await bn(e.object,t);for(const n of(e.property+"").split(".")){if(null==r)return;r=await Mn(r,n,t)}return r}(r,t);case"callExpression":return async function(e,t){const r=await bn(e.callee,t);if(e.isConstructor&&"function"==typeof r)return new r(...await Promise.all(e.arguments.map(e=>bn(e,t))));if("identifier"===e.callee.type){const n=e.callee.name,s=await async function(e,t,r){return _n.has(t)?Promise.all(e.map(e=>"identifier"===e.type&&e.name?e.name:"selector"===e.type&&e.value?e.value:bn(e,r))):Promise.all(e.map(e=>bn(e,r)))}(e.arguments,n,t);switch(n){case"closest":return gn(t,"closest").evaluate(t,...s);case"previous":case"next":{const r=e.relativePositional;if(r){const e=r.from?$n(await bn(r.from,t)):t.me,i=r.within?$n(await bn(r.within,t)):void 0,a=r.inElt?await bn(r.inElt,t):void 0;return gn(t,n).evaluate(t,s[0],e,{within:i,inElt:a,inSearch:r.inSearch,wrapping:r.wrapping})}return gn(t,n).evaluate(t,...s)}case"first":return gn(t,"first").evaluate(t,...s);case"last":return gn(t,"last").evaluate(t,...s);default:if("function"==typeof r)return r(...s);throw Error("Cannot call non-function: "+n)}}if("function"==typeof r){const n=await Promise.all(e.arguments.map(e=>bn(e,t)));if("memberExpression"===e.callee.type&&e.callee.object){const s=await bn(e.callee.object,t);return r.apply(s,n)}return r(...n)}throw Error("Cannot call non-function")}(r,t);case"selector":return async function(e,t){let r=e.value;if("string"==typeof r&&!e.fromQuery&&/^\*[a-zA-Z][\w-]*$/.test(r))return gn(t,"styleRef").evaluate(t,r.slice(1));if("string"==typeof r&&e.fromQuery&&/\$[^=]/.test(r)){const{selector:n,elements:s}=await async function(e,t){const r=Fn(e),n=await Promise.all(r.filter(e=>"expr"in e).map(e=>xn(e.expr,t)));return Hn(r,n)}(r,t),i=zn(e,n);s.forEach((e,t)=>e.setAttribute("data-hs-query-id",t+""));try{return await gn(t,"elementWithSelector").evaluate(t,i)}finally{s.forEach(e=>e.removeAttribute("data-hs-query-id"))}}"string"==typeof r&&!e.fromQuery&&r.includes("{")&&(r=await function(e,t){return qn(e,/\{([^}]*)\}/g,async(e,r)=>(await xn(r.trim(),t)??"")+"")}(r,t));const n="string"==typeof r?zn(e,r):r,s=await gn(t,"elementWithSelector").evaluate(t,n);return!e.fromQuery&&"string"==typeof r&&r.startsWith("#")&&Array.isArray(s)?s[0]??null:s}(r,t);case"contextReference":return async function(e,t){switch(e.contextType){case"me":case"you":case"it":return gn(t,e.contextType).evaluate(t);case"my":case"myself":case"I":return gn(t,"me").evaluate(t);case"your":case"yourself":return gn(t,"you").evaluate(t);case"its":return gn(t,"it").evaluate(t);case"event":return t.event;case"target":return t.target??t.event?.target??gn(t,"me").evaluate(t);case"body":return"undefined"!=typeof document?document.body:void 0;case"document":return gn(t,"document").evaluate(t);case"window":return gn(t,"window").evaluate(t);default:return}}(r,t);case"possessiveExpression":return async function(e,t){const r=await bn(e.object,t),n=e.property.name;return gn(t,"possessive").evaluate(t,r,n)}(r,t);case"eventHandler":return async function(e,t){return{event:e.event,selector:e.selector,commands:e.commands,handler:async r=>{const n={...t,event:r,target:r.target,currentTarget:r.currentTarget};for(const t of e.commands)await bn(t,n)}}}(r,t);case"conditionalExpression":return async function(e,t){return await bn(e.test,t)?bn(e.consequent,t):e.alternate?bn(e.alternate,t):void 0}(r,t);case"string":return r.value;case"arrayLiteral":return async function(e,t){const r=[];for(const n of e.elements)r.push(await bn(n,t));return r}(r,t);case"objectLiteral":return async function(e,t){const r={};for(const n of e.properties){const e=n.key;let s;s="identifier"===e.type?e.name:"literal"===e.type&&"string"===e.valueType?e.value:await bn(e,t)+"",r[s]=await bn(n.value,t)}return r}(r,t);case"attributeAccess":return async function(e,t){const r=e.attributeName;return t.me&&t.me instanceof Element?t.me.getAttribute(r):"@"+r}(r,t);case"propertyOfExpression":return async function(e,t){const r=e.property;if("identifier"!==r?.type)throw Error('Property name must be an identifier in "the X of Y" pattern');const n=r.name,s=await bn(e.target,t);if(null==s)throw Error(`Cannot access property "${n}" of ${s}`);return gn(t,"possessive").evaluate(t,s,n)}(r,t);case"templateLiteral":return async function(e,t){let r=e.value;return r=await qn(r,/\$([a-zA-Z_$][a-zA-Z0-9_.$]*|\d+)/g,async(e,r)=>{try{if(/^\d+$/.test(r))return r;if(r.includes(".")){const e=r.split(".");let n=Rn(e[0],t);for(let t=1;e.length>t&&null!=n;t++)n=n[e[t]];return(n??"")+""}return(Rn(r,t)??"")+""}catch{return""}}),r=await qn(r,/\$(?:\{([^}]+)\}|\(([^)]+)\))/g,async(e,r,n)=>{const s=r||n;try{return await xn(s,t)+""}catch{return"undefined"}}),r}(r,t);case"stringPostfix":return async function(e,t){return`${await bn(e.expression,t)}${e.unit}`}(r,t);case"blockLiteral":return In(r,t);default:{const r=Te.get(e.type);if(r)return r(e,t);throw Error("Unknown AST node type: "+e.type)}}}class wn extends Error{constructor(e){super(`Expression node "${e}" is not synchronously evaluable`),this.name="NotSyncEvaluable"}}function kn(e,t){const r=e;switch(r?.type){case"literal":case"string":return r.value;case"selector":return function(e,t){const r=e.value;if("string"!=typeof r)throw new wn("selector");if(!e.fromQuery&&/^\*[a-zA-Z][\w-]*$/.test(r))throw new wn("selector");if(e.fromQuery&&/\$[^=]/.test(r)){const{selector:n,elements:s}=function(e,t){const r=Fn(e),n=r.filter(e=>"expr"in e).map(e=>En(e.expr,t));return Hn(r,n)}(r,t),i=zn(e,n),a=t?.me?.ownerDocument??("undefined"!=typeof document?document:null);if(!a)throw new wn("selector");s.forEach((e,t)=>e.setAttribute("data-hs-query-id",t+""));try{return Array.from(a.querySelectorAll(i))}finally{s.forEach(e=>e.removeAttribute("data-hs-query-id"))}}const n=!e.fromQuery&&r.includes("{")?function(e,t){return e.replace(/\{([^}]*)\}/g,(e,r)=>(En(r.trim(),t)??"")+"")}(r,t):r,s=zn(e,n),i=t?.me?.ownerDocument??("undefined"!=typeof document?document:null);if(!i)throw new wn("selector");const a=Array.from(i.querySelectorAll(s));return!e.fromQuery&&n.startsWith("#")?a[0]??null:a}(r,t);case"identifier":return function(e,t,r){return"me"===e||"my"===e||"I"===e?t.me:"you"===e||"your"===e||"yourself"===e?t.you:"it"===e||"its"===e?t.it??t.result:"window"===e?"undefined"!=typeof window?window:globalThis:"document"===e?"undefined"!=typeof document?document:void 0:"element"===r?or(t,e):t.locals?.has(e)?t.locals.get(e):t.globals?.has(e)?t.globals.get(e):e.startsWith("$")&&t.globals?.has(e.slice(1))?t.globals.get(e.slice(1)):void 0!==t[e]?t[e]:"undefined"!=typeof globalThis&&e in globalThis?globalThis[e]:void 0}(r.name,t,r.scope);case"contextReference":return function(e,t){switch(e){case"me":return t.me;case"you":return t.you;case"it":return t.it??t.result;case"event":return t.event;case"target":return t.target??t.event?.target??t.me;default:throw new wn("contextReference")}}(r.contextType,t);case"arrayLiteral":return r.elements.map(e=>kn(e,t));case"objectLiteral":return function(e,t){const r={};for(const n of e.properties){const e=n.key;let s;s="identifier"===e.type?e.name:"literal"===e.type&&"string"===e.valueType?e.value:kn(e,t)+"",r[s]=kn(n.value,t)}return r}(r,t);case"asExpression":return un(kn(r.expression,t),Nn(r.targetType),t);case"stringPostfix":return`${kn(r.expression,t)}${r.unit}`;case"blockLiteral":return In(r,t);case"memberExpression":{const e=kn(r.object,t);if(null==e)return;if(e instanceof Element||Array.isArray(e)||"undefined"!=typeof Node&&e instanceof Node)throw new wn("memberExpression");const n=e[r.computed?kn(r.property,t)+"":r.property?.name];return"function"==typeof n?n.bind(e):n}default:throw new wn(r?.type??"unknown")}}function En(e,t){const r=Yt(e);if(!r.success||!r.node){const e=r.error??r.errors?.[0];throw Error("Failed to parse expression: "+(e?.message??"unknown error"))}return kn(r.node,t)}async function xn(e,t){const r=Yt(e);if(!r.success||!r.node){const e=r.error??r.errors?.[0];throw Error("Failed to parse expression: "+(e?.message??"unknown error"))}const n=t.registry?t:{...t,registry:await Sn()};return bn(r.node,n)}let Cn=null;async function Sn(){if(!Cn){const e=await Promise.resolve().then(function(){return lu});Cn=e.createFullExpressionRegistry()}return Cn}async function An(e,t){const r=e.name;return"me"===r||"my"===r||"I"===r?gn(t,"me").evaluate(t):"you"===r||"your"===r||"yourself"===r?gn(t,"you").evaluate(t):"it"===r||"its"===r?gn(t,"it").evaluate(t):"window"===r?gn(t,"window").evaluate(t):"document"===r?gn(t,"document").evaluate(t):"global"===e.scope&&t.globals?.has(r)?(qe(r,t),t.globals.get(r)):"element"===e.scope?or(t,r):t.locals&&t.locals.has(r)?(_e(r,t),t.locals.get(r)):t.globals&&t.globals.has(r)?(r.startsWith("$")&&qe(r.slice(1),t),t.globals.get(r)):r.startsWith("$")&&t.globals&&t.globals.has(r.slice(1))?(qe(r.slice(1),t),t.globals.get(r.slice(1))):void 0!==t[r]?t[r]:"undefined"!=typeof globalThis&&r in globalThis?globalThis[r]:void 0}function Tn(e){const t=e;if(!t)return null;if("identifier"===t.type&&"string"==typeof t.name)return[t.name];if("memberExpression"===t.type&&!t.computed){const e=Tn(t.object);if(!e)return null;const r=t.property,n="identifier"===r?.type&&"string"==typeof r.name?r.name:"string"==typeof r?.value?r.value:null;return null==n?null:[...e,n]}return null}function On(e,t){return Array.isArray(t)?t.includes(e):"string"==typeof t?t.includes(e+""):e instanceof Node&&t instanceof Node?e===t||t.contains(e):null!=t&&"object"==typeof t&&e in t}function Ln(e,t){return e&&"selector"===e.type&&"string"==typeof e.value?e.value:t}function Pn(e,t,r){if(void 0!==r)return;const n=e.right;if(!n||"identifier"!==n.type||"string"!=typeof n.name)return;if(null==t||"object"!=typeof t)return;const s=t[n.name];return"boolean"==typeof s?!0===s:void 0}function jn(e,t,r){return e instanceof Node&&t instanceof Node&&0!==(e.compareDocumentPosition(t)&r)}function Nn(e){if("string"==typeof e)return e;if(e&&"object"==typeof e){if("string"==typeof e.name)return e.name;if("string"==typeof e.value)return e.value}return e+""}function In(e,t){const r=e.parameters??[];return(...n)=>{const s=new Map(t.locals??new Map);r.forEach((e,t)=>s.set(e,n[t]));const i={...t,locals:s};try{return kn(e.body,i)}catch(t){if(t instanceof wn)return bn(e.body,i);throw t}}}function Rn(e,t){return t.locals?.has(e)?(_e(e,t),t.locals.get(e)):"me"===e&&t.me?t.me:"you"===e&&t.you?t.you:"it"===e&&t.it?t.it:"result"===e&&t.result?t.result:"undefined"!=typeof window&&"window"===e?window:t.globals?.has(e)?t.globals.get(e):void 0}async function qn(e,t,r){const n=[];let s;for(;null!==(s=t.exec(e));)n.push({index:s.index,length:s[0].length,replacement:await r(s[0],...s.slice(1))});let i=e;for(let e=n.length-1;e>=0;e--){const{index:t,length:r,replacement:s}=n[e];i=i.substring(0,t)+s+i.substring(t+r)}return i}function Mn(e,t,r){if("string"==typeof t&&t.startsWith("@")){const r=t.substring(1);return e&&"function"==typeof e.getAttribute?e.getAttribute(r):void 0}return e instanceof Element&&"string"==typeof t?Lr(e,t):hn(e)&&!(t in e)?gn(r,"possessive").evaluate(r,e,t):e?.[t]}const _n=new Set(["closest","previous","next"]);function $n(e){return e instanceof Element?e:Array.isArray(e)&&e[0]instanceof Element?e[0]:void 0}const Vn=RegExp("(\\.[a-zA-Z0-9_-]+):(?!(hover|active|focus|visited|link|focus-within|focus-visible|first-child|last-child|only-child|nth-child|nth-last-child|nth-of-type|nth-last-of-type|first-of-type|last-of-type|only-of-type|empty|root|target|lang|dir|not|has|is|where|matches|before|after|first-letter|first-line|selection|placeholder|marker|backdrop|enabled|disabled|checked|indeterminate|required|optional|valid|invalid|in-range|out-of-range|read-only|read-write|default|defined|fullscreen|modal|picture-in-picture|autofill)(?![a-zA-Z0-9_-]))","g"),Dn=/[:&()[\]/]/g;function zn(e,t){return e.fromQuery||!t.startsWith(".")||t.includes("{")?function(e){return e.replace(Vn,"$1\\:")}(t):function(e){return e[0]+e.slice(1).replace(Dn,"\\$&")}(t)}const Bn=/\$\{([^}]+)\}|\$([a-zA-Z_$][a-zA-Z0-9_.$]*)/g;function Fn(e){const t=[];let r,n=0;for(Bn.lastIndex=0;null!==(r=Bn.exec(e));)r.index>n&&t.push({lit:e.slice(n,r.index)}),t.push({expr:r[1]??r[2]}),n=r.index+r[0].length;return e.length>n&&t.push({lit:e.slice(n)}),t}function Hn(e,t){let r="";const n=[];let s=0;for(const i of e){if("lit"in i){r+=i.lit;continue}const e=t[s++];Cr(e)?(r+=`[data-hs-query-id='${n.length}']`,n.push(e)):r+=(e??"")+""}return{selector:r,elements:n}}class Wn{constructor(e){this.elementCleanups=new WeakMap,this.elementCount=0,this.typeCounts={listener:0,observer:0,interval:0,timeout:0,custom:0},this.globalCleanups=[],this.debugMode=e?.debug??!1}registerListener(e,t,r,n,s){this.addCleanup(e,{type:"listener",target:t,eventName:r,cleanup:()=>{t.removeEventListener(r,n,s),this.debugMode&&he(`CleanupRegistry: Removed listener '${r}'`)},description:r+" listener"})}registerObserver(e,t){this.addCleanup(e,{type:"observer",cleanup:()=>{t.disconnect(),this.debugMode&&he("CleanupRegistry: Disconnected MutationObserver")},description:"MutationObserver"})}registerInterval(e,t){this.addCleanup(e,{type:"interval",cleanup:()=>{clearInterval(t),this.debugMode&&he("CleanupRegistry: Cleared interval")},description:"Interval"})}registerTimeout(e,t){this.addCleanup(e,{type:"timeout",cleanup:()=>{clearTimeout(t),this.debugMode&&he("CleanupRegistry: Cleared timeout")},description:"Timeout"})}registerCustom(e,t,r){this.addCleanup(e,{type:"custom",cleanup:t,description:r||"Custom cleanup"})}registerGlobal(e,t="custom",r){this.globalCleanups.push({type:t,cleanup:e,description:r||"Global cleanup"}),this.debugMode&&he("CleanupRegistry: Registered global cleanup: "+(r||t))}addCleanup(e,t){const r=this.elementCleanups.get(e);r?r.push(t):(this.elementCleanups.set(e,[t]),this.elementCount++),this.typeCounts[t.type]++,this.debugMode&&he(`CleanupRegistry: Registered ${t.type} for element`,e)}cleanupElement(e){const t=this.elementCleanups.get(e);if(!t||0===t.length)return 0;let r=0;for(const e of t){try{e.cleanup(),r++}catch(e){this.debugMode&&he("CleanupRegistry: Error during cleanup:",e)}this.typeCounts[e.type]--}return this.elementCleanups.delete(e),this.elementCount--,this.debugMode&&he(`CleanupRegistry: Cleaned up ${r} resources for element`),r}cleanupElementTree(e){let t=this.cleanupElement(e);const r=e.querySelectorAll("*");for(const e of r)t+=this.cleanupElement(e);return t}cleanupGlobal(){let e=0;for(const t of this.globalCleanups)try{t.cleanup(),e++}catch(e){this.debugMode&&he("CleanupRegistry: Error during global cleanup:",e)}return this.globalCleanups=[],this.debugMode&&he(`CleanupRegistry: Cleaned up ${e} global resources`),e}cleanupAll(){return this.cleanupGlobal()}hasCleanups(e){const t=this.elementCleanups.get(e);return void 0!==t&&t.length>0}getCleanupCount(e){const t=this.elementCleanups.get(e);return t?.length??0}getStats(){let e=0,t=0,r=0,n=0,s=0;for(const i of this.globalCleanups)switch(i.type){case"listener":e++;break;case"observer":t++;break;case"interval":r++;break;case"timeout":n++;break;case"custom":s++}return{elementsTracked:this.elementCount,listeners:this.typeCounts.listener+e,observers:this.typeCounts.observer+t,intervals:this.typeCounts.interval+r,timeouts:this.typeCounts.timeout+n,custom:this.typeCounts.custom+s,global:this.globalCleanups.length}}setDebugMode(e){this.debugMode=e}}class Un{constructor(){this.sources=new Map,this.subscriptions=new Map,this.nextId=1}register(e,t){const r=e.toLowerCase();this.sources.has(r)&&he("[EventSourceRegistry] Overwriting existing event source: "+e),this.sources.set(r,t)}unregister(e){const t=e.toLowerCase(),r=this.sources.get(t);if(r){for(const[e,r]of this.subscriptions.entries())r.source===t&&(r.unsubscribe(),this.subscriptions.delete(e));return r.destroy?.(),this.sources.delete(t)}return!1}get(e){return this.sources.get(e.toLowerCase())}has(e){return this.sources.has(e.toLowerCase())}subscribe(e,t,r){const n=this.get(e);if(!n)return void he("[EventSourceRegistry] Unknown event source: "+e);n.initialize?.();const s=n.subscribe(t,r);return this.subscriptions.set(s.id,s),s}unsubscribe(e){const t=this.subscriptions.get(e);return!!t&&(t.unsubscribe(),this.subscriptions.delete(e))}getSourceNames(){return Array.from(this.sources.keys())}getSubscriptions(){return Array.from(this.subscriptions.values())}findSourceForEvent(e){for(const[t,r]of this.sources.entries())if(r.supports?.(e)??r.supportedEvents?.includes(e))return t}generateId(){return`sub_${this.nextId++}_${Date.now().toString(36)}`}destroy(){for(const e of this.subscriptions.values())e.unsubscribe();this.subscriptions.clear();for(const e of this.sources.values())e.destroy?.();this.sources.clear()}}class Kn{constructor(){this.providers=new Map,this.globalProviders=new Map}register(e,t,r){const n=e.toLowerCase();this.providers.set(n,"function"==typeof t?{name:n,provide:t,cache:r?.cache??!0,description:r?.description,dependencies:r?.dependencies}:t)}registerGlobal(e,t,r){const n=e.toLowerCase();this.globalProviders.set(n,"function"==typeof t?{name:n,provide:t,cache:r?.cache??!0,description:r?.description,dependencies:r?.dependencies}:t)}unregister(e){return this.providers.delete(e.toLowerCase())}unregisterGlobal(e){return this.globalProviders.delete(e.toLowerCase())}get(e){const t=e.toLowerCase();return this.providers.get(t)??this.globalProviders.get(t)}has(e){const t=e.toLowerCase();return this.providers.has(t)||this.globalProviders.has(t)}async resolve(e,t,r){const n=this.get(e);if(!n)return;const s="__provider_"+n.name;if(n.cache&&r?.has(s))return r.get(s);if(n.dependencies)for(const e of n.dependencies)await this.resolve(e,t,r);const i=await n.provide(t);return n.cache&&r&&r.set(s,i),i}resolveSync(e,t,r){const n=this.get(e);if(!n)return;const s="__provider_"+n.name;if(n.cache&&r?.has(s))return r.get(s);const i=n.provide(t);if(i instanceof Promise)throw Error(`Context provider '${e}' is async. Use resolve() instead of resolveSync().`);return n.cache&&r&&r.set(s,i),i}enhance(e){const t=this,r=new Map;return new Proxy(e,{get(e,n,s){if("string"==typeof n&&t.get(n))try{return t.resolveSync(n,e,r)}catch{return t.resolve(n,e,r)}return Reflect.get(e,n,s)},has:(e,r)=>!("string"!=typeof r||!t.has(r))||Reflect.has(e,r)})}async resolveAll(e){const t=new Map,r={},n=[...this.globalProviders.entries(),...this.providers.entries()];for(const[s,i]of n)try{r[s]=await this.resolve(s,e,t)}catch(e){he(`[ContextProviderRegistry] Failed to resolve '${s}':`,e),r[s]=void 0}return r}getProviderNames(){return[...new Set([...this.globalProviders.keys(),...this.providers.keys()])]}clear(){this.providers.clear(),this.globalProviders.clear()}}const Jn={evaluate:(e,t)=>bn(e,t)};class Zn{static toTyped(e){return{me:e.me,...void 0!==e.owner&&{owner:e.owner},it:e.it,you:e.you,result:e.result,...void 0!==e.event&&{event:e.event},variables:e.variables||new Map,locals:e.locals||new Map,globals:e.globals||new Map,...void 0!==e.events&&{events:e.events},meta:e.meta||{},...void 0!==e.registry&&{registry:e.registry},expressionStack:[],evaluationDepth:0,validationMode:"strict",evaluationHistory:[]}}static fromTyped(e,t){return{...t,me:e.me,it:e.it,you:e.you,result:e.result,...void 0!==e.event&&{event:e.event},...void 0!==e.variables&&{variables:e.variables},locals:e.locals,globals:e.globals,...void 0!==e.events&&{events:e.events},...void 0!==e.meta&&{meta:e.meta}}}}class Xn{constructor(e,t,r){this.impl=e,this.hookRegistry=r??null}setHookRegistry(e){this.hookRegistry=e}createHookContext(e,t,r={}){return{commandName:this.name,element:e.me instanceof Element?e.me:null,args:t,modifiers:r,event:e.event??void 0,executionContext:e}}get name(){const e=this.impl.name;if(e)return e;const t=this.impl.metadata?.name;return"string"==typeof t?t:""}get metadata(){const e=this.impl.metadata?.syntax;return{description:this.impl.metadata?.description||"",examples:this.impl.metadata?.examples||[],syntax:Array.isArray(e)?e.join(" | "):e||""}}async execute(e,...t){const r=t[0],n=this.createHookContext(e,t,r&&"object"==typeof r&&"modifiers"in r&&r.modifiers||{});try{if(de(`CommandAdapterV2: Executing '${this.name}' with args:`,t),this.hookRegistry&&await this.hookRegistry.runBeforeExecute(n),this.hookRegistry?.shouldIntercept(this.name,n))return void de(`CommandAdapterV2: '${this.name}' intercepted by hook`);const s=Zn.toTyped(e);let i,a;if(this.impl.parseInput&&"function"==typeof this.impl.parseInput)if(de(`CommandAdapterV2: '${this.name}' has parseInput(), calling it`),r&&"object"==typeof r&&("args"in r||"modifiers"in r)){const t=r.modifiers,n=t?.when||t?.where;if(n&&!await bn(n,e))return void de(`CommandAdapterV2: '${this.name}' skipped - when/where condition evaluated to false`);i=await this.impl.parseInput({args:r.args||[],modifiers:t||{},commandName:r.commandName},Jn,e)}else i=t;else de(`CommandAdapterV2: '${this.name}' has no parseInput(), using args as-is`),i=t;if(de("CommandAdapterV2: Calling execute with parsed input:",i),2===this.impl.execute.length)a=await this.impl.execute(i,s);else{const e=Array.isArray(i)?i:[i];a=await this.impl.execute(s,...e)}return de("CommandAdapterV2: Command result:",a),Object.assign(e,Zn.fromTyped(s,e)),this.hookRegistry&&await this.hookRegistry.runAfterExecute(n,a),a}catch(e){if(rs(e)||de(`CommandAdapterV2: Error executing '${this.name}':`,e),this.hookRegistry&&e instanceof Error)throw await this.hookRegistry.runOnError(n,e);throw e}}validate(e){return this.impl.validate?this.impl.validate(e):{isValid:!0,errors:[],suggestions:[]}}}class Yn{constructor(e,t){this.adapters=new Map,this.implementations=new Map,this.hookRegistry=t}setHookRegistry(e){this.hookRegistry=e;for(const t of this.adapters.values())t.setHookRegistry(e);he(`CommandRegistryV2: Hook registry set and propagated to ${this.adapters.size} adapters`)}getHookRegistry(){return this.hookRegistry}register(e){const t=e.name||e.metadata?.name;if(!t||"string"!=typeof t)throw Error("Cannot register command: no name found. Provide a 'name' property or 'metadata.name' on the implementation.");const r=t.toLowerCase();he(`CommandRegistryV2: Registering command '${r}'`),this.implementations.set(r,e);const n=new Xn(e,void 0,this.hookRegistry);this.adapters.set(r,n),k.add(r);const s=e.metadata?.aliases;if(s&&Array.isArray(s))for(const t of s){const r=t.toLowerCase();this.implementations.set(r,e),this.adapters.set(r,n),k.add(r)}}getAdapter(e){return this.adapters.get(e.toLowerCase())}has(e){return this.adapters.has(e.toLowerCase())}getCommandNames(){return Array.from(this.adapters.keys())}getImplementation(e){return this.implementations.get(e.toLowerCase())}getAdapters(){return new Map(this.adapters)}validateCommand(e,t){const r=this.getAdapter(e);return r?r.validate(t):{isValid:!1,errors:[{type:"runtime-error",message:"Unknown command: "+e,suggestions:["Available commands: "+this.getCommandNames().join(", ")]}],suggestions:["Available commands: "+this.getCommandNames().join(", ")]}}}let Gn=null;function Qn(){return Gn||(Gn=function(e){const t=e?.commands??new Yn,r=e?.eventSources??new Un,n=e?.context??new Kn,s=new Set,i={commands:t,eventSources:r,context:n,use(e){if(s.has(e.name))he(`[LokaScriptRegistry] Plugin '${e.name}' is already installed`);else{if(e.commands)for(const r of e.commands)t.register(r);if(e.eventSources)for(const t of e.eventSources)r.register(t.name,t);if(e.contextProviders)for(const{name:t,provide:r,options:s}of e.contextProviders)n.register(t,r,s);e.setup?.(i),s.add(e.name)}},reset(){s.clear()}};return i}()),Gn}class es{constructor(e={}){this.contextCache=new WeakMap;const t=Qn();this.options={enableContextProviders:e.enableContextProviders??!0,enableEventSources:e.enableEventSources??!0,registry:e.registry??{}},this.contextRegistry=this.options.registry.context??t.context,this.eventSourceRegistry=this.options.registry.eventSources??t.eventSources,he(`[RegistryIntegration] Initialized (context=${this.options.enableContextProviders}, events=${this.options.enableEventSources})`)}enhanceContext(e){if(!this.options.enableContextProviders)return e;const t=this.contextCache.get(e);if(t)return t;try{const t=this.contextRegistry.enhance(e);return this.contextCache.set(e,t),he(`[RegistryIntegration] Enhanced context with ${this.contextRegistry.getProviderNames().length} providers`),t}catch(t){return he("[RegistryIntegration] Failed to enhance context: "+(t instanceof Error?t.message:t+"")),e}}getEventSource(e){if(!this.options.enableEventSources)return;const t=this.eventSourceRegistry.get(e);if(t)return he(`[RegistryIntegration] Found event source for '${e}'`),t;const r=this.eventSourceRegistry.findSourceForEvent(e);if(r){const t=this.eventSourceRegistry.get(r);return he(`[RegistryIntegration] Found event source '${r}' supporting '${e}'`),t}}hasEventSource(e){return void 0!==this.getEventSource(e)}subscribeToEventSource(e,t,r){if(!this.options.enableEventSources)throw Error("Event sources are disabled in this runtime");const n=this.eventSourceRegistry.subscribe(e,t,r);if(!n)throw Error(`Failed to subscribe to event source '${e}'`);return he(`[RegistryIntegration] Subscribed to '${e}' event '${t.event}' (id: ${n.id})`),n}getEventSourceNames(){return this.eventSourceRegistry.getSourceNames()}getContextProviderNames(){return this.contextRegistry.getProviderNames()}destroy(){this.eventSourceRegistry.destroy(),this.contextCache=new WeakMap,he("[RegistryIntegration] Destroyed")}}function ts(e){const t=Error(e.type.toUpperCase()+"_EXECUTION");return t["is"+e.type.charAt(0).toUpperCase()+e.type.slice(1)]=!0,"returnValue"in e&&(t.returnValue=e.returnValue),t}function rs(e){return e instanceof Error&&(null!==Qt(e)||"HALT_EXECUTION"===e.message||"EXIT_COMMAND"===e.message||"EXIT_EXECUTION"===e.message)}function ns(e){if(void 0===e)return;let t=e;if(t&&"object"==typeof t){const e=t;if("result"in e&&"wasAsync"in e)t=e.result;else if("result"in e&&"executed"in e){if(t=e.result,e.preserveArrayResult)return void 0!==t?t:void 0}else if("lastResult"in e&&"type"in e)t=e.lastResult;else if("conditionResult"in e&&"executedBranch"in e){if(void 0===e.result)return;t=e.result}else"value"in e&&1===Object.keys(e).length||"value"in e&&"target"in e&&"targetType"in e?t=e.value:"data"in e&&"status"in e&&"headers"in e&&(t=e.data)}return Array.isArray(t)&&t.length>0&&(t=t[0]),t}function ss(e){return null!==e&&"object"==typeof e&&"command"in e&&"selector"in e}const is=new WeakMap;function as(e,t=new Set){if(null===e||"object"!=typeof e)return t;if(Array.isArray(e)){for(const r of e)as(r,t);return t}const r=e;"identifier"===r.type&&"string"==typeof r.name&&t.add(r.name);for(const e of Object.keys(r))"start"!==e&&"end"!==e&&"line"!==e&&"column"!==e&&as(r[e],t);return t}class os{constructor(e){this.autoCleanupObserver=null,this.registryIntegration=null,this.runtimeWarnings=[],this.options={commandTimeout:1e4,enableErrorReporting:!0,enableResultPattern:!0,enableAutoCleanup:!0,...e},this.registry=e.registry,this.expressionRegistry=e.expressionRegistry,this.behaviorRegistry=new Map,this.globalVariables=nr,this.hookRegistry=new Gt,e.hooks&&this.hookRegistry.register("default",e.hooks),this.registry.setHookRegistry(this.hookRegistry),this.cleanupRegistry=new Wn,this.options.enableAutoCleanup&&this.setupAutoCleanup(),!1!==e.registryIntegration&&(this.registryIntegration=new es("object"==typeof e.registryIntegration?e.registryIntegration:{}),he("RuntimeBase: Registry integration enabled")),this.behaviorAPI={has:e=>this.behaviorRegistry.has(e),get:e=>this.behaviorRegistry.get(e),set:(e,t)=>this.behaviorRegistry.set(e,t),resolve:null,install:async(e,t,r)=>await this.installBehaviorOnElement(e,t,r)}}setupAutoCleanup(){"undefined"!=typeof MutationObserver&&"undefined"!=typeof document&&(this.autoCleanupObserver=new MutationObserver(e=>{const t=[];for(const r of e)for(const e of r.removedNodes)e instanceof Element&&t.push(e);t.length>0&&queueMicrotask(()=>{for(const e of t)if(!e.isConnected){const t=this.cleanupRegistry.cleanupElementTree(e);t>0&&he(`RuntimeBase: Auto-cleaned ${t} resources for removed element`)}})}),document.body?this.autoCleanupObserver.observe(document.body,{childList:!0,subtree:!0}):document.addEventListener("DOMContentLoaded",()=>{this.autoCleanupObserver?.observe(document.body,{childList:!0,subtree:!0})},{once:!0}))}registerHooks(e,t){this.hookRegistry.register(e,t)}unregisterHooks(e){return this.hookRegistry.unregister(e)}getRegisteredHooks(){return this.hookRegistry.getRegisteredNames()}cleanup(e){return this.cleanupRegistry.cleanupElement(e)}trackListener(e,t,r,n,s){this.cleanupRegistry.registerListener(e,t,r,n,s)}cleanupTree(e){return this.cleanupRegistry.cleanupElementTree(e)}getCleanupStats(){return this.cleanupRegistry.getStats()}getCleanupRegistry(){return this.cleanupRegistry}logError(...e){this.options.enableErrorReporting&&console.error(...e)}logWarn(...e){this.options.enableErrorReporting&&console.warn(...e)}destroy(){this.autoCleanupObserver&&(this.autoCleanupObserver.disconnect(),this.autoCleanupObserver=null),this.cleanupRegistry.cleanupAll(),this.hookRegistry.clear(),this.behaviorRegistry.clear(),he("RuntimeBase: Destroyed")}hasErrorDiagnostics(e){const t=e.diagnostics;return!!t?.some(e=>"error"===e.severity)}getWarnings(){return this.runtimeWarnings}async execute(e,t){he(`RUNTIME BASE: execute() called with node type: '${e.type}'`),t.registry||(t.registry=this.expressionRegistry),t.locals.has("_behaviors")||t.locals.set("_behaviors",this.behaviorAPI),t.locals.has("_runtimeExecute")||t.locals.set("_runtimeExecute",(e,r)=>this.execute(e,r||t));try{if(this.hasErrorDiagnostics(e)){const t=e.diagnostics?.[0];return he("\u26a0\ufe0f RUNTIME: Skipping error node: "+(t?.message||"unknown error")),void this.runtimeWarnings.push(t?.message||"Skipped error node")}switch(e.type){case"command":if(this.options.enableResultPattern){const r=await this.processCommandWithResult(e,t);if(!rr(r)){if("return"===r.error.type){const e=r.error.returnValue;return void 0!==e&&Object.assign(t,{it:e,result:e}),e}throw ts(r.error)}return r.value}try{return await this.processCommand(e,t)}catch(e){const r=Qt(e);if(r?.isReturn){const e=r.returnValue;return void 0!==e&&Object.assign(t,{it:e,result:e}),e}throw e}case"eventHandler":return await this.executeEventHandler(e,t);case"event":{const r={type:"eventHandler",event:e.event,events:[e.event],commands:e.body||[],target:e.filter,modifiers:e.modifiers||{}};return await this.executeEventHandler(r,t)}case"behavior":return await this.executeBehaviorDefinition(e,t);case"def":return this.installFunction(e,t);case"Program":return await this.executeProgram(e,t);case"initBlock":case"block":return await this.executeBlock(e,t);case"sequence":case"CommandSequence":if(this.options.enableResultPattern){const r=e,n=await this.executeCommandSequenceWithResult(r.commands||[],t);if(!rr(n))throw ts(n.error);return n.value}return await this.executeCommandSequence(e,t);case"objectLiteral":return await this.executeObjectLiteral(e,t);default:if(this.options.enableResultPattern){const r=await this.evaluateExpressionWithResult(e,t);if(!rr(r))throw ts(r.error);return r.value}return await this.evaluateExpression(e,t)}}catch(e){throw e}}async processCommand(e,t){const{name:r,args:n,modifiers:s}=e,i=r.toLowerCase();if(de(`RUNTIME BASE: Processing command '${i}'`),this.registry.has(i)){const e=await this.registry.getAdapter(i);if(!e)throw Error(`Command '${i}' is registered but failed to load adapter.`);try{return await e.execute(t,{args:n||[],modifiers:s||{},commandName:i,runtime:this})}catch(e){throw rs(e)||this.logError(`Error executing command '${i}':`,e),e}}const a=`Unknown command: ${r}. Ensure it is registered in the Runtime options.`;throw this.logWarn(a),Error(a)}toSignal(e){const t=Qt(e);if(t){if(t.isHalt||"HALT_EXECUTION"===t.message)return{type:"halt"};if(t.isExit||"EXIT_COMMAND"===t.message)return{type:"exit",returnValue:t.returnValue};if(t.isBreak)return{type:"break"};if(t.isContinue)return{type:"continue"};if(t.isReturn)return{type:"return",returnValue:t.returnValue}}if(e instanceof Error){if("HALT_EXECUTION"===e.message)return{type:"halt"};if("EXIT_COMMAND"===e.message)return{type:"exit"}}return null}async processCommandWithResult(e,t){const{name:r,args:n,modifiers:s}=e,i=r.toLowerCase();if(de(`RUNTIME BASE (Result): Processing command '${i}'`),!this.registry.has(i)){const e=`Unknown command: ${r}. Ensure it is registered in the Runtime options.`;throw this.logWarn(e),Error(e)}const a=await this.registry.getAdapter(i);if(!a)throw Error(`Command '${i}' is registered but failed to load adapter.`);try{return er(await a.execute(t,{args:n||[],modifiers:s||{},commandName:i,runtime:this}))}catch(e){const t=this.toSignal(e);if(t)return tr(t);throw this.logError(`Error executing command '${i}':`,e),e}}async executeCommandSequenceWithResult(e,t){let r;for(const n of e){if(this.hasErrorDiagnostics(n)){const e=n.diagnostics?.[0];he("\u26a0\ufe0f RUNTIME: Skipping error node: "+(e?.message||"unknown error")),this.runtimeWarnings.push(e?.message||"Skipped error node");continue}if("command"===n.type){const e=await this.processCommandWithResult(n,t);if(!rr(e)){const r=e.error;switch(r.type){case"halt":case"exit":case"break":case"continue":return e;case"return":return void 0!==r.returnValue&&Object.assign(t,{it:r.returnValue,result:r.returnValue}),er(r.returnValue)}}r=e.value}else{const e=await this.evaluateExpressionWithResult(n,t);if(!rr(e))return e;r=e.value}}return er(r)}async evaluateExpression(e,t){const r=t.registry?t:{...t,registry:this.expressionRegistry},n=await bn(e,r);return ss(n)?await this.executeCommandFromPattern(n.command,n.selector,t):n}async evaluateExpressionWithResult(e,t){const r=t.registry?t:{...t,registry:this.expressionRegistry},n=await async function(e,t){try{return er(await bn(e,t))}catch(e){if(e instanceof Error){const t=e;if(t.isHalt||"HALT_EXECUTION"===t.message)return tr({type:"halt"});if(t.isExit||"EXIT_COMMAND"===t.message)return tr({type:"exit",returnValue:t.returnValue});if(t.isBreak)return tr({type:"break"});if(t.isContinue)return tr({type:"continue"});if(t.isReturn)return tr({type:"return",returnValue:t.returnValue})}throw e}}(e,r);if(!rr(n))return n;const s=n.value;if(ss(s)){if(this.options.enableResultPattern)return this.processCommandWithResult({type:"command",name:s.command,args:[{type:"literal",value:s.selector}]},t);try{return er(await this.executeCommandFromPattern(s.command,s.selector,t))}catch(e){const t=this.toSignal(e);if(t)return tr(t);throw e}}return er(s)}async executeCommandFromPattern(e,t,r){return this.processCommand({type:"command",name:e,args:[{type:"literal",value:t}]},r)}installFunction(e,t){const r=this,n=e.params??[],s=e.body??[],i=e.errorHandler,a=e.finallyHandler,o=e.errorSymbol;t.globals.set(e.name,async(...e)=>{const l={...t,locals:new Map(t.locals)};n.forEach((t,r)=>{t&&l.locals.set(t,e[r])});const c=async e=>{const t=await r.executeCommandSequenceWithResult(e,l);if(!rr(t))throw Qt(t.error);return t.value};if(!i&&!a)return await c(s);try{return await c(s)}catch(e){if(!i||rs(e))throw e;return o&&l.locals.set(o,e),await c(i)}finally{a&&await c(a)}})}async executeProgram(e,t){if(!e.statements||!Array.isArray(e.statements))return;let r;const n=[],s=[],i=[],a=[];for(const t of e.statements)"eventHandler"===t.type?n.push(t):"def"===t.type?s.push(t):"initBlock"===t.type?i.push(t):a.push(t);for(const e of s)this.execute(e,t);for(const e of n)try{await this.execute(e,t)}catch(e){if(rs(e)&&(e.isHalt||e.isExit))break;throw e}for(const e of i)try{r=await this.execute(e,t)}catch(e){if(rs(e)&&(e.isHalt||e.isExit))break;throw e}for(const e of a)try{r=await this.execute(e,t)}catch(e){if(rs(e)&&(e.isHalt||e.isExit))break;throw e}return r}async executeBlock(e,t){if(e.commands&&Array.isArray(e.commands))for(const r of e.commands)try{await this.execute(r,t)}catch(e){if(rs(e)&&e.isHalt)break;throw e}}async executeCommandSequence(e,t){if(!e.commands||!Array.isArray(e.commands))return;let r;for(const n of e.commands)try{r=await this.execute(n,t)}catch(e){if(rs(e)){if(e.isHalt||e.isExit)break;if(e.isReturn){if(void 0!==e.returnValue)return Object.assign(t,{it:e.returnValue,result:e.returnValue}),e.returnValue;break}if(e.isBreak)throw e}throw e}return r}async executeObjectLiteral(e,t){const r={};if(!e.properties)return r;for(const n of e.properties){let e;e="identifier"===n.key.type?n.key.name:"literal"===n.key.type?n.key.value+"":await this.execute(n.key,t)+"";const s=await this.execute(n.value,t);r[e]=s}return r}enhanceContext(e){return this.registryIntegration?this.registryIntegration.enhanceContext(e):e}async executeBehaviorDefinition(e,t){const{name:r,parameters:n=[],eventHandlers:s=[],initBlock:i}=e,a=e.imperativeInstaller;"function"==typeof a?(this.behaviorRegistry.set(r,{name:r,parameters:n,type:"imperative",install:a}),he(`RUNTIME BASE: Registered imperative behavior '${r}'`)):(this.behaviorRegistry.set(r,{name:r,parameters:n,eventHandlers:s,initBlock:i}),he(`RUNTIME BASE: Registered behavior '${r}'`))}async installBehaviorOnElement(e,t,r){he("BEHAVIOR: installBehaviorOnElement called: "+e);let n=this.behaviorRegistry.get(e);if(!n&&(this.behaviorAPI.resolve&&this.behaviorAPI.resolve(e)&&(n=this.behaviorRegistry.get(e)),!n))throw Error(`Behavior "${e}" not found`);if("imperative"===n.type)return void("function"==typeof n.install&&(he(`BEHAVIOR: Installing imperative behavior '${e}'`),n.install(t,r),he(`BEHAVIOR: Finished installing imperative behavior '${e}'`)));he("BEHAVIOR: Found behavior, eventHandlers count: "+(n.eventHandlers?.length||0));const s={me:t,owner:t,you:null,it:null,result:null,locals:new Map,globals:this.globalVariables,registry:this.expressionRegistry,halted:!1,returned:!1,broke:!1,continued:!1,async:!1},i=this.enhanceContext(s);if(n.parameters)for(const e of n.parameters)i.locals.set(e,e in r?r[e]:void 0);for(const[e,t]of Object.entries(r))n.parameters?.includes(e)||i.locals.set(e,t);if(n.initBlock){he("BEHAVIOR: Running init block for "+e);const t=this.options.commandTimeout??1e4;try{await Promise.race([this.execute(n.initBlock,i),new Promise((r,n)=>setTimeout(()=>n(Error(`Behavior "${e}" init block timed out after ${t}ms`)),t))]),he("BEHAVIOR: Init block completed for "+e)}catch(t){if(he(`BEHAVIOR: Init block error for ${e}:`,t),!(t instanceof Error&&rs(t)))throw t}}if(he(`BEHAVIOR: About to attach ${n.eventHandlers?.length||0} handlers for ${e}`),n.eventHandlers){const t=this.options.commandTimeout??1e4;for(const r of n.eventHandlers)await Promise.race([this.executeEventHandler(r,i),new Promise((r,n)=>setTimeout(()=>n(Error(`Behavior "${e}" handler attachment timed out after ${t}ms`)),t))])}he("BEHAVIOR: Finished installing "+e)}async executeEventHandler(e,t){const{event:r,events:n,commands:s,target:i,args:a,selector:o,condition:l,attributeName:c,watchTarget:u,modifiers:d,errorSymbol:m,errorHandler:p,finallyHandler:h}=e,f=n&&n.length>0?n:[r];he(`BEHAVIOR: executeEventHandler: event='${r}', target='${i}'`);let y=[],g=null;if(i){const e="string"==typeof i?i.toLowerCase():"";if("window"===e||"the window"===e)g=window;else if("document"===e||"the document"===e||"body"===e)g=document;else if("me"===e||"myself"===e)y=t.me?[t.me]:[];else if("string"==typeof i&&t.locals.has(i)){const e=t.locals.get(i);he(`BEHAVIOR: Target resolution: found local '${i}', isElement: ${this.isElement(e)}`),this.isElement(e)?y=[e]:Array.isArray(e)?y=e.filter(e=>this.isElement(e)):"string"==typeof e&&(y=this.queryElements(e,t))}else he(`BEHAVIOR: Target resolution: querying for '${i}'`),y=this.queryElements(i,t)}else y=t.me?[t.me]:[];if(0===y.length&&!g)return void he(`BEHAVIOR: executeEventHandler - No targets found for event '${r}', returning early`);if("mutation"===r&&c)return void this.setupMutationObserver(y,c,s,t);if("change"===r&&u)return void this.setupChangeObserver(u,s,t);const v=e.customEventSource;if(v&&this.registryIntegration){he(`BEHAVIOR: executeEventHandler - Using custom event source '${v}' for event '${r}'`);const e=async e=>{const n=new Map(t.locals),i={...t,locals:n,it:e,event:e},a=this.enhanceContext(i);he(`CUSTOM EVENT: Executing commands for event '${r}'`);try{await this.execute({type:"program",commands:s},a)}catch(e){this.logError(`[HyperFixi] Error executing commands for custom event '${r}':`,e)}};try{const n=this.registryIntegration.subscribeToEventSource(v,{event:r,handler:e,target:i,selector:o},t);he(`BEHAVIOR: Subscribed to custom event source '${v}' (id: ${n.id})`),this.cleanupRegistry.registerGlobal(()=>n.unsubscribe(),"listener",`Custom event source '${v}' subscription ${n.id}`)}catch(e){this.logError(`[HyperFixi] Failed to subscribe to custom event source '${v}':`,e)}return}const b=os.createEventHandler(this,s,t,o,a,{errorSymbol:m,errorHandler:p,finallyHandler:h},1===f.length?l:void 0);let w,k=null;if(d){let e=b;if(d.prevent){const t=e;e=async e=>(e.preventDefault(),t(e))}if(d.stop){const t=e;e=async e=>(e.stopPropagation(),t(e))}if(d.debounce){const t=d.debounce;let r;w=n=>{r&&clearTimeout(r),r=setTimeout(()=>e(n),t)},k=()=>{r&&(clearTimeout(r),r=void 0)}}else if(d.throttle){const t=d.throttle;let r=0;w=n=>{const s=Date.now();t>s-r||(r=s,e(n))}}else w=e}else w=b;const E=d?.once?{once:!0}:void 0;if(g){for(const e of f)g.addEventListener(e,w,E),y.length>0?this.cleanupRegistry.registerListener(y[0],g,e,w):this.cleanupRegistry.registerGlobal(()=>g.removeEventListener(e,w),"listener",`Global ${e} listener`);k&&(y.length>0?this.cleanupRegistry.registerCustom(y[0],k,"debounce-timeout"):this.cleanupRegistry.registerGlobal(k,"timeout","debounce-timeout"))}else for(const e of y){for(const t of f){if("resize"===t&&"undefined"!=typeof ResizeObserver){const t=new ResizeObserver(e=>{for(const r of e){const e=new CustomEvent("resize",{detail:r,bubbles:!1,cancelable:!1});if(e.synthetic=!0,w(e),E?.once){t.disconnect();break}}});t.observe(e),this.cleanupRegistry.registerCustom(e,()=>t.disconnect(),"resize-observer");continue}e.addEventListener(t,w,E),this.cleanupRegistry.registerListener(e,e,t,w)}k&&this.cleanupRegistry.registerCustom(e,k,"debounce-timeout")}}static createEventHandler(e,t,r,n,s,i,a){return async o=>{const l=is.get(o)??0;if(l>=100)return;if(is.set(o,l+1),n&&o.target instanceof Element)try{if(!o.target.matches(n)&&!o.target.closest(n))return}catch{he(`Event delegation: invalid CSS selector '${n}', skipping filter`)}const c=new Map(r.locals),u={...r,locals:c,it:o,event:o};c.has("target")||u.locals.set("target",o.target);const d=e.enhanceContext(u);if(s&&s.length>0){const e=o,t=e.detail;for(const r of s)d.locals.set(r,e[r]??t?.[r]??null)}if(a){const t=o;for(const e of as(a))!d.locals.has(e)&&e in t&&d.locals.set(e,t[e]);let r;try{r=await e.evaluateExpression(a,d)}catch(e){return void he("Event filter threw; skipping handler body:",e)}if(!r)return}const m=async t=>{for(const r of t)try{const t=ns(await e.execute(r,d));void 0!==t&&Object.assign(d,{it:t,result:t})}catch(t){if(rs(t)){if(t.isHalt||t.isExit)break;if(t.isReturn){void 0!==t.returnValue&&Object.assign(d,{it:t.returnValue,result:t.returnValue});break}}throw e.logError("COMMAND FAILED:",t),t}},p=i?.errorHandler,h=i?.finallyHandler;if(p||h)try{await m(t)}catch(e){if(!p||rs(e))throw e;i?.errorSymbol&&d.locals.set(i.errorSymbol,e),await m(p)}finally{h&&await m(h)}else await m(t)}}setupMutationObserver(e,t,r,n){he(`RUNTIME BASE: Setting up MutationObserver for attribute '${t}' on ${e.length} elements`);for(const s of e){const e=new MutationObserver(async e=>{for(const i of e)if("attributes"===i.type&&i.attributeName===t){me(`MUTATION DETECTED: attribute '${t}' changed on`,s);const e={...n,me:s,it:i,locals:new Map(n.locals)},a=i.oldValue,o=s.getAttribute(t);e.locals.set("oldValue",a),e.locals.set("newValue",o);const l=this.enhanceContext(e);for(const e of r)try{await this.execute(e,l)}catch(e){if(rs(e)){if(e.isHalt||e.isExit||e.isReturn)break}else this.logError("Error executing mutation handler command:",e)}}});e.observe(s,{attributes:!0,attributeOldValue:!0,attributeFilter:[t]}),this.cleanupRegistry.registerObserver(s,e),he("RUNTIME BASE: MutationObserver attached to",s,`for attribute '${t}'`)}}async setupChangeObserver(e,t,r){he("RUNTIME BASE: Setting up MutationObserver for content changes on watch target");const n=await this.execute(e,r);let s=[];this.isElement(n)?s=[n]:Array.isArray(n)&&(s=n.filter(e=>this.isElement(e))),he(`RUNTIME BASE: Watching ${s.length} target elements for content changes`);for(const e of s){const n=new MutationObserver(async n=>{for(const s of n)if("childList"===s.type||"characterData"===s.type){me("CONTENT CHANGE DETECTED on",e,"mutation type:",s.type);const n={...r,me:r.me,it:s,locals:new Map(r.locals)};n.locals.set("target",e);const i=s.oldValue,a=e.textContent;null!==i&&n.locals.set("oldValue",i),n.locals.set("newValue",a);const o=this.enhanceContext(n);for(const e of t)try{await this.execute(e,o)}catch(e){if(rs(e)){if(e.isHalt||e.isExit||e.isReturn)break}else this.logError("Error executing change handler command:",e)}}});n.observe(e,{childList:!0,characterData:!0,subtree:!0,characterDataOldValue:!0}),this.cleanupRegistry.registerObserver(e,n),he("RUNTIME BASE: MutationObserver attached to",e,"for content changes")}}queryElements(e,t){const r=t.me,n=(r instanceof Element?r.ownerDocument:null)??("undefined"!=typeof document?document:null);if(!n)return[];let s=e;s.startsWith("<")&&s.endsWith("/>")&&(s=s.slice(1,-2).trim());try{return Array.from(n.querySelectorAll(s))}catch{return he(`queryElements: invalid CSS selector '${s}'`),[]}}isElement(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement||!(!e||"object"!=typeof e)&&(!!e.style&&!!e.classList)}}function ls(...e){const t=new Map;for(const r of e)for(const[e,n]of Object.entries(r))t.set(e,n);return t}class cs{constructor(e){this.observer=null,this.initialized=!1,this.runtime=e}init(){"undefined"!=typeof document&&(this.initialized||(this.initialized=!0,this.scanDocument(),this.observer=new MutationObserver(e=>{for(const t of e)"childList"===t.type?t.addedNodes.forEach(e=>{e.nodeType===Node.ELEMENT_NODE&&(this.processElement(e),this.scanElement(e))}):"attributes"===t.type&&"_"===t.attributeName&&this.processElement(t.target)}),this.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["_"]})))}destroy(){this.observer&&(this.observer.disconnect(),this.observer=null),this.initialized=!1}reset(){this.destroy()}scanAndProcessAll(){this.scanDocument()}scanDocument(){document.body&&this.scanElement(document.body)}scanElement(e){e.hasAttribute("_")&&this.processElement(e),e.querySelectorAll("[_]").forEach(e=>this.processElement(e))}processElement(e){const t=e.getAttribute("_");if(!t)return;const r=cr(e);this.runtime.execute(t,r).catch(r=>{console.error('[HyperFixi] Error executing _="" attribute:',r),console.error("Element:",e),console.error("Code:",t)})}}const us=Ur({selector:Fr().min(1),single:Wr().optional().default(!1)});new class extends Yr{constructor(){super(...arguments),this.name="me",this.category="Reference",this.syntax="me",this.description="References the current element in the execution context",this.inputSchema=Xr(),this.outputType="Element",this.metadata={category:"Reference",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=e.me,s=this.isElement(n)?n:null,i=this.success(s,"element");return this.trackPerformance(e,t,i,r),i}catch(n){const s=this.failure("MeExpressionError","runtime-error",n instanceof Error?n.message:'Failed to evaluate "me"',"ME_EVALUATION_FAILED",["Ensure element context is properly set",'Check if "me" is available in current scope']);return this.trackPerformance(e,t,s,r),s}}validate(e){return void 0!==e?this.validationFailure("type-mismatch",'"me" expression takes no arguments',['Use "me" without any parameters']):this.validationSuccess()}},new class extends Yr{constructor(){super(...arguments),this.name="you",this.category="Reference",this.syntax="you",this.description="References the target element (usually event target or command target)",this.inputSchema=Xr(),this.outputType="Element",this.metadata={category:"Reference",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=e.you,s=this.isElement(n)?n:null,i=this.success(s,"element");return this.trackPerformance(e,t,i,r),i}catch(n){const s=this.failure("YouExpressionError","runtime-error",n instanceof Error?n.message:'Failed to evaluate "you"',"YOU_EVALUATION_FAILED",["Ensure target element is available in context",'Check if "you" is set by event or command']);return this.trackPerformance(e,t,s,r),s}}validate(e){return void 0!==e?this.validationFailure("type-mismatch",'"you" expression takes no arguments',['Use "you" without any parameters']):this.validationSuccess()}},new class extends Yr{constructor(){super(...arguments),this.name="it",this.category="Reference",this.syntax="it",this.description="References the current context variable (result of previous operation or loop item)",this.inputSchema=Xr(),this.outputType="Any",this.metadata={category:"Reference",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=e.it,s={success:!0,value:n,type:this.inferType(n)};return this.trackPerformance(e,t,s,r),s}catch(n){const s=this.failure("ItExpressionError","runtime-error",n instanceof Error?n.message:'Failed to evaluate "it"',"IT_EVALUATION_FAILED",['Ensure "it" is set by previous operation',"Check if context variable is available"]);return this.trackPerformance(e,t,s,r),s}}validate(e){return void 0!==e?this.validationFailure("type-mismatch",'"it" expression takes no arguments',['Use "it" without any parameters']):this.validationSuccess()}},new class extends Yr{constructor(){super(...arguments),this.name="css-selector",this.category="Reference",this.syntax="<selector/> or <selector/> (single)",this.description="Queries DOM elements using CSS selectors with validation",this.inputSchema=us,this.outputType="ElementList",this.metadata={category:"Reference",complexity:"medium"}}async evaluate(e,t){const r=Date.now();try{if(!this.isValidCSSSelector(t.selector)){const n=this.failure("CSSSelectorError","invalid-argument",`Invalid CSS selector: "${t.selector}"`,"INVALID_CSS_SELECTOR",["Check selector syntax","Use valid CSS selector patterns like .class, #id, tag[attr]","Avoid special characters that need escaping"]);return this.trackPerformance(e,t,n,r),n}let n;if(t.single)n=document.querySelector(t.selector);else{const e=Array.from(document.querySelectorAll(t.selector));n=e.length>0?e:null}const s={success:!0,value:n,type:Array.isArray(n)?"element-list":"element"};return this.trackPerformance(e,t,s,r),s}catch(n){const s=this.failure("CSSSelectorError","runtime-error",n instanceof Error?n.message:"CSS selector evaluation failed","CSS_SELECTOR_EVALUATION_FAILED",["Check if selector is valid CSS","Ensure DOM is ready when query executes","Verify elements exist in document"]);return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);if(!t.success)return{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid input: "+e.message,suggestions:this.getValidationSuggestion(e.code??"unknown")}))??[],suggestions:["Provide valid CSS selector string","Check selector syntax"]};const{selector:r}=t.data;return this.isValidCSSSelector(r)?this.validationSuccess():this.validationFailure("syntax-error",`Invalid CSS selector syntax: "${r}"`,["Use .class for class selectors","Use #id for ID selectors","Use tag for element selectors","Use [attr] for attribute selectors"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Ensure input matches expected format"])}}isValidCSSSelector(e){try{return document.querySelector(e),!0}catch{return!1}}getValidationSuggestion(e){return[{too_small:"CSS selector cannot be empty",invalid_type:"Selector must be a string",required:"CSS selector is required"}[e]||"Check input format and types"]}};const ds={name:"me",category:"Reference",evaluatesTo:"Element",evaluate:async e=>e.me??null,validate:qr},ms={name:"you",category:"Reference",evaluatesTo:"Element",evaluate:async e=>e.you??null,validate:qr},ps={name:"it",category:"Reference",evaluatesTo:"Any",evaluate:async e=>e.it,validate:qr},hs={name:"its",category:"Reference",evaluatesTo:"Any",evaluate:async e=>e.it,validate:qr},fs={name:"result",category:"Reference",evaluatesTo:"Any",evaluate:async e=>e.result,validate:qr},ys={name:"querySelector",category:"Reference",evaluatesTo:"Element",async evaluate(e,...t){const[r]=t;if("string"!=typeof r)throw Error("querySelector requires a string selector");return document.querySelector(r)},validate:e=>Ir(e,"querySelector","selector")},gs={name:"querySelectorAll",category:"Reference",evaluatesTo:"Array",async evaluate(e,...t){const r=t[0];if("string"!=typeof r)throw Error("querySelectorAll requires a string selector");const n=document.querySelectorAll(r);return Array.from(n)},validate:e=>Ir(e,"querySelectorAll","selector")},vs={name:"getElementById",category:"Reference",evaluatesTo:"Element",async evaluate(e,...t){const r=t[0];if("string"!=typeof r)throw Error("getElementById requires a string ID");return document.getElementById(r)},validate:e=>Ir(e,"getElementById","ID")};function bs(e,t){if(t.startsWith("computed-")){const r=t.substring(9);return getComputedStyle(e).getPropertyValue(r)||""}const r=t.replace(/-([a-z])/g,(e,t)=>t.toUpperCase());return e.style[r]}const ws={me:ds,you:ms,it:ps,its:hs,result:fs,querySelector:ys,querySelectorAll:gs,getElementById:vs,getElementsByClassName:{name:"getElementsByClassName",category:"Reference",evaluatesTo:"Array",async evaluate(e,...t){const r=t[0];if("string"!=typeof r)throw Error("getElementsByClassName requires a string class name");const n=document.getElementsByClassName(r);return Array.from(n)},validate:e=>Ir(e,"getElementsByClassName","className")},closest:{name:"closest",category:"Reference",evaluatesTo:"Element",async evaluate(e,...t){let r=t[0];if(r&&"object"==typeof r&&"type"in r){const e=r;"identifier"===e.type&&e.name?r=e.name:"literal"===e.type&&"string"==typeof e.value&&(r=e.value)}if("string"!=typeof r)throw Error("closest requires a string selector");return e.me?e.me.closest(r):null},validate(e){if(1!==e.length)return"closest requires exactly 1 argument (selector)";const t=e[0];return"string"==typeof t||t&&"object"==typeof t&&"type"in t&&("identifier"===t.type||"literal"===t.type)?null:"closest selector must be a string or identifier"}},parent:{name:"parent",category:"Reference",evaluatesTo:"Element",evaluate:async e=>e.me?e.me.parentElement:null,validate:qr},window:{name:"window",category:"Reference",evaluatesTo:"Object",evaluate:async e=>window,validate:qr},document:{name:"document",category:"Reference",evaluatesTo:"Object",evaluate:async e=>document,validate:qr},elementWithSelector:{name:"elementWithSelector",category:"Reference",evaluatesTo:"Array",async evaluate(e,...t){const r=t[0];if("string"!=typeof r)throw Error("Selector must be a string");const n=e?.me?.ownerDocument??("undefined"!=typeof document?document:null);if(!n)throw Error("DOM not available - cannot resolve element selector");const s=n.querySelectorAll(r);return Array.from(s)},validate:e=>Ir(e,"elementWithSelector","selector")},styleRef:{name:"styleRef",category:"Reference",evaluatesTo:"String",async evaluate(e,...t){const r=t[0],n=t[1];if("string"!=typeof r)throw Error("StyleRef requires a string property name");const s=n||e.me;if(s&&s instanceof HTMLElement)return bs(s,r)},validate:e=>_r(e,1,2,"styleRef","property, optional element")??Nr(e,0,"styleRef","property")??(2===e.length&&e[1]&&"object"!=typeof e[1]?"styleRef element must be an HTMLElement":null)},possessiveStyleRef:{name:"possessiveStyleRef",category:"Reference",evaluatesTo:"String",async evaluate(e,...t){const r=t[0],n=t[1];if("string"!=typeof r||"string"!=typeof n)throw Error("Possessive styleRef requires possessor and property strings");let s=null;if("my"===r&&e.me?s=e.me instanceof HTMLElement?e.me:null:"its"===r&&e.it&&(s=e.it instanceof HTMLElement?e.it:null),s)return bs(s,n)},validate:e=>jr(e,2,"possessiveStyleRef","possessor, property")??Nr(e,0,"possessiveStyleRef","possessor")??Nr(e,1,"possessiveStyleRef","property")},ofStyleRef:{name:"ofStyleRef",category:"Reference",evaluatesTo:"String",async evaluate(e,...t){const r=t[0],n=t[1];if("string"!=typeof r||"string"!=typeof n)throw Error("Of styleRef requires property and reference strings");let s=null;if("me"===n&&e.me?s=e.me instanceof HTMLElement?e.me:null:"it"===n&&e.it&&(s=e.it instanceof HTMLElement?e.it:null),s)return bs(s,r)},validate:e=>jr(e,2,"ofStyleRef","property, reference")??Nr(e,0,"ofStyleRef","property")??Nr(e,1,"ofStyleRef","reference")}};class ks{constructor(e=100,t=5e3){this.maxSize=e,this.ttl=t,this.cache=new Map,this.accessOrder=new Map,this.accessCounter=0}get(e){const t=this.cache.get(e);if(t){if(this.ttl>=Date.now()-t.timestamp)return t.accessCount++,this.accessOrder.set(e,++this.accessCounter),t.result;this.delete(e)}}set(e,t){this.maxSize>this.cache.size||this.cache.has(e)||this.evictLRU(),this.cache.set(e,{result:t,timestamp:Date.now(),accessCount:1}),this.accessOrder.set(e,++this.accessCounter)}delete(e){return this.accessOrder.delete(e),this.cache.delete(e)}clear(){this.cache.clear(),this.accessOrder.clear(),this.accessCounter=0}size(){return this.cache.size}evictLRU(){let e,t=1/0;for(const[r,n]of this.accessOrder)t>n&&(t=n,e=r);void 0!==e&&this.delete(e)}getStats(){const e=Array.from(this.cache.values()),t=Date.now();return{size:this.cache.size,maxSize:this.maxSize,hitRate:e.length>0?e.filter(e=>e.accessCount>1).length/e.length:0,avgAge:e.length>0?e.reduce((e,r)=>e+(t-r.timestamp),0)/e.length:0,totalAccesses:e.reduce((e,t)=>e+t.accessCount,0)}}}const Es=new class{constructor(){this.domQueryCache=new ks(200,3e3),this.exprResultCache=new ks(500,2e3),this.cssMatchCache=new ks(100,5e3),this.formValueCache=new ks(50,1e3),this.hits=0,this.misses=0}querySelector(e){const t="querySelector:"+e,r=this.domQueryCache.get(t);if(void 0!==r)return this.hits++,r;this.misses++;const n=document.querySelector(e);return this.domQueryCache.set(t,n),n}querySelectorAll(e){const t="querySelectorAll:"+e,r=this.domQueryCache.get(t);if(void 0!==r)return this.hits++,r;this.misses++;const n=Array.from(document.querySelectorAll(e));return this.domQueryCache.set(t,n),n}getElementById(e){const t="getElementById:"+e,r=this.domQueryCache.get(t);if(void 0!==r)return this.hits++,r;this.misses++;const n=document.getElementById(e);return this.domQueryCache.set(t,n),n}getElementsByClassName(e){const t="getElementsByClassName:"+e,r=this.domQueryCache.get(t);if(void 0!==r)return this.hits++,r;this.misses++;const n=Array.from(document.getElementsByClassName(e));return this.domQueryCache.set(t,n),n}matches(e,t){const r=`matches:${this.getElementCacheKey(e)}:${t}`,n=this.cssMatchCache.get(r);if(void 0!==n)return this.hits++,n;this.misses++;const s=e.matches(t);return this.cssMatchCache.set(r,s),s}getExpressionResult(e){const t=this.exprResultCache.get(e);if(void 0!==t)return this.hits++,t;this.misses++}setExpressionResult(e,t){this.exprResultCache.set(e,t)}getFormValue(e){const t=this.getElementCacheKey(e),r=this.formValueCache.get("formValue:"+t);if(void 0!==r)return this.hits++,r;this.misses++}setFormValue(e,t){const r=this.getElementCacheKey(e);this.formValueCache.set("formValue:"+r,t)}invalidateElementCache(e){const t=this.getElementCacheKey(e);for(const e of[this.domQueryCache,this.cssMatchCache,this.formValueCache])for(const r of Array.from(e.cache.keys()))"string"==typeof r&&r.includes(t)&&e.delete(r)}invalidateAll(){this.domQueryCache.clear(),this.exprResultCache.clear(),this.cssMatchCache.clear(),this.formValueCache.clear(),this.hits=0,this.misses=0}getElementCacheKey(e){if(e.id)return"#"+e.id;const t=Array.from(e.classList).sort().join("."),r=this.getElementPosition(e);return`${e.tagName.toLowerCase()}${t?"."+t:""}@${r}`}getElementPosition(e){return""+Array.from(e.parentElement?.children||[]).indexOf(e)}getPerformanceStats(){const e=this.hits+this.misses;return{hits:this.hits,misses:this.misses,hitRate:Math.round(100*(e>0?this.hits/e*100:0))/100,domQueryCache:this.domQueryCache.getStats(),exprResultCache:this.exprResultCache.getStats(),cssMatchCache:this.cssMatchCache.getStats(),formValueCache:this.formValueCache.getStats()}}cleanup(){const e=Date.now();[this.domQueryCache,this.exprResultCache,this.cssMatchCache,this.formValueCache].forEach(t=>{Array.from(t.cache.entries()).forEach(([r,n])=>{e-n.timestamp>t.ttl&&t.delete(r)})})}};"undefined"!=typeof window&&setInterval(()=>{Es.cleanup()},1e4);const xs=new class{constructor(){this.metrics={tokenizationTime:0,evaluationTime:0,cacheHitRate:0,memoryUsage:0,domOperations:0},this.startTimes=new Map}startTimer(e){this.startTimes.set(e,performance.now())}endTimer(e){const t=this.startTimes.get(e);if(t){const r=performance.now()-t;return this.startTimes.delete(e),r}return 0}recordTokenization(e){this.metrics.tokenizationTime+=e}recordEvaluation(e){this.metrics.evaluationTime+=e}updateCacheMetrics(){const e=Es.getPerformanceStats();this.metrics.cacheHitRate=e.hitRate}getMetrics(){return this.updateCacheMetrics(),{...this.metrics}}reset(){this.metrics={tokenizationTime:0,evaluationTime:0,cacheHitRate:0,memoryUsage:0,domOperations:0}}};function Cs(){Es.cleanup(),xs.getMetrics().memoryUsage>52428800&&xs.reset()}let Ss=null;function As(e,t){if("number"==typeof e){if(!Number.isFinite(e))throw Error(`${t} must be a finite number, got ${e}`);return e}if("string"==typeof e){const r=e.trim();if(""===r)return 0;const n=parseFloat(r);if(isNaN(n))throw Error(`${t} cannot be converted to number: "${e}"`);return n}if("boolean"==typeof e)return e?1:0;if(null==e)return 0;if("object"==typeof e&&null!==e){if(Array.isArray(e)&&1===e.length){const r=e[0];if(Array.isArray(r))throw Error(t+" is a nested array, cannot convert to number");return As(r,t)}if("string"==typeof e.textContent||"value"in e){const t=e.value??e.textContent;if(null!=t){const e=(t+"").trim();if(""===e)return 0;const r=parseFloat(e);if(!isNaN(r))return r}}const r=e.valueOf();if("number"==typeof r&&Number.isFinite(r))return r}throw Error(`${t} cannot be converted to number: ${typeof e}`)}function Ts(e){if("number"==typeof e)return Number.isFinite(e)?e:null;if("string"==typeof e){const t=e.trim();if(""===t)return 0;const r=parseFloat(t);return isNaN(r)?null:r}return"boolean"==typeof e?e?1:0:null==e?0:null}function Os(e,t){if(!Number.isFinite(e)){if(Number.isNaN(e))throw Error(t+" resulted in non-finite value: NaN");throw Error(`${t} resulted in non-finite value: ${e>0?"Infinity":"-Infinity"}`)}return e}function Ls(e){try{return As(e,"_"),!0}catch{return!1}}function Ps(e,t,r){if("==="===r)return e===t;if("!=="===r)return e!==t;if(null==e||null==t)return function(e,t,r){if(null==e&&null==t)switch(r){case"==":case">=":case"<=":return!0;default:return!1}switch(r){case"==":case">":case"<":case">=":case"<=":default:return!1;case"!=":return!0}}(e,t,r);const[n,s]=function(e,t){if("number"==typeof e&&"number"==typeof t)return[e,t];if("string"==typeof e&&"string"==typeof t){const r=parseFloat(e),n=parseFloat(t);return isNaN(r)||isNaN(n)?[e,t]:[r,n]}const r=Ts(e),n=Ts(t);return null!==r&&null!==n?[r,n]:[e+"",t+""]}(e,t);switch(r){case">":return n>s;case"<":return s>n;case">=":return n>=s;case"<=":return s>=n;case"==":return js(e,t);case"!=":return!js(e,t);default:return!1}}function js(e,t){if(e===t)return!0;if(typeof e==typeof t)return("string"==typeof e||"number"==typeof e)&&e===t;if("number"==typeof e&&"string"==typeof t){const r=parseFloat(t);return!isNaN(r)&&e===r}if("string"==typeof e&&"number"==typeof t){const r=parseFloat(e);return!isNaN(r)&&r===t}return"boolean"==typeof e?js(e?1:0,t):"boolean"==typeof t?js(e,t?1:0):e+""==t+""}function Ns(e,t=[]){return{isValid:!1,errors:e,suggestions:t}}function Is(e,t,r=[],n="error"){return{type:e,message:t,suggestions:r,severity:n}}function Rs(e,t,r,n,s,i=!0,a){return t&&"object"==typeof t&&"evaluationHistory"in t&&Array.isArray(t.evaluationHistory)&&t.evaluationHistory.push({expressionName:e.name,category:e.category,input:r,output:n,timestamp:s,duration:Date.now()-s,success:i,...void 0!==a&&{error:a}}),n}"undefined"!=typeof window&&function(e=3e4){Ss&&clearInterval(Ss),Ss=setInterval(Cs,e)}();const qs=Ur({left:Jr().describe("Left operand value"),right:Jr().describe("Right operand value")}).strict(),Ms=Ur({operand:Jr().describe("Operand value to negate")}).strict();function _s(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&1===e.nodeType}new class extends Yr{constructor(){super(...arguments),this.name="and",this.category="Logical",this.syntax="left and right",this.description="Logical AND operation with comprehensive boolean type coercion",this.inputSchema=qs,this.outputType="Boolean",this.metadata={category:"Logical",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.toBoolean(t.left);if(!s)return this.trackSimple(e,r,!0,"boolean"),this.success(!1,"boolean");const i=this.toBoolean(t.right),a=s&&i;return this.trackSimple(e,r,!0,"boolean"),this.success(a,"boolean")}catch(t){return this.trackSimple(e,r,!1),this.failure("AndExpressionError","runtime-error","Logical AND operation failed: "+(t instanceof Error?t.message:t+""),"AND_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid AND operation input: "+e.message,suggestions:[]}))??[],suggestions:["Provide both left and right operands","Ensure operands are valid values"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}},new class extends Yr{constructor(){super(...arguments),this.name="or",this.category="Logical",this.syntax="left or right",this.description="Logical OR operation with comprehensive boolean type coercion",this.inputSchema=qs,this.outputType="Boolean",this.metadata={category:"Logical",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.toBoolean(t.left);if(s)return this.trackSimple(e,r,!0,"boolean"),this.success(!0,"boolean");const i=this.toBoolean(t.right),a=s||i;return this.trackSimple(e,r,!0,"boolean"),this.success(a,"boolean")}catch(t){return this.trackSimple(e,r,!1),this.failure("OrExpressionError","runtime-error","Logical OR operation failed: "+(t instanceof Error?t.message:t+""),"OR_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid OR operation input: "+e.message,suggestions:[]}))??[],suggestions:["Provide both left and right operands","Ensure operands are valid values"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}},new class extends Yr{constructor(){super(...arguments),this.name="not",this.category="Logical",this.syntax="not operand",this.description="Logical NOT operation with comprehensive boolean type coercion",this.inputSchema=Ms,this.outputType="Boolean",this.metadata={category:"Logical",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=!this.toBoolean(t.operand);return this.trackSimple(e,r,!0,"boolean"),this.success(s,"boolean")}catch(t){return this.trackSimple(e,r,!1),this.failure("NotExpressionError","runtime-error","Logical NOT operation failed: "+(t instanceof Error?t.message:t+""),"NOT_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid NOT operation input: "+e.message,suggestions:[]}))??[],suggestions:["Provide a single operand","Ensure operand is a valid value"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}};const $s=Kr([Jr(),Jr()]),Vs=Kr([Jr(),Fr()]),Ds={name:"equals",category:"Comparison",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["is","==","equals"],async evaluate(e,t,r){const n=Date.now();try{return Rs(this,e,[t,r],t==r,n)}catch(s){throw Rs(this,e,[t,r],!1,n,!1,s instanceof Error?s:Error(s+"")),s}},validate:e=>Rr(e,"equals"),inputSchema:$s,metadata:{category:"Logical",complexity:"simple",sideEffects:[],dependencies:[],returnTypes:["Boolean"],examples:[{input:"value is 5",description:"Check if value equals 5 using loose equality",expectedOutput:!0,context:{result:5}},{input:'"5" == 5',description:'String "5" equals number 5 with type coercion',expectedOutput:!0}],relatedExpressions:["strictEquals","notEquals"],performance:{averageTime:.001,complexity:"O(1)"}},documentation:{summary:"Compares two values for loose equality, allowing type coercion",parameters:[{name:"left",type:"unknown",description:"Left operand for comparison",optional:!1,examples:["5",'"hello"',"true","null"]},{name:"right",type:"unknown",description:"Right operand for comparison",optional:!1,examples:["5",'"hello"',"true","null"]}],returns:{type:"Boolean",description:"True if values are loosely equal, false otherwise",examples:["true","false"]},examples:[{title:"Basic equality check",code:"if my.value is 10",explanation:"Check if element value equals 10",output:"Boolean result"},{title:"Type coercion",code:'if "5" == 5',explanation:'String "5" equals number 5 with automatic type conversion',output:"true"},{title:"Null checks",code:"if value is null",explanation:"Check if value is null or undefined",output:"Boolean result"}],seeAlso:["strictEquals","notEquals","matches"],tags:["comparison","equality","logic","type-coercion"]}},zs={name:"strictEquals",category:"Comparison",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["==="],async evaluate(e,t,r){const n=e.evaluationHistory,s=t===r;return n&&Rs(this,e,[t,r],s,n?Date.now():0),s},validate:e=>Rr(e,"strictEquals")},Bs={name:"notEquals",category:"Comparison",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["!=","is not","does not equal"],async evaluate(e,t,r){const n=e.evaluationHistory,s=t!=r;return n&&Rs(this,e,[t,r],s,n?Date.now():0),s},validate:e=>Rr(e,"notEquals")},Fs={name:"strictNotEquals",category:"Comparison",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["!=="],async evaluate(e,t,r){const n=e.evaluationHistory,s=t!==r;return n&&Rs(this,e,[t,r],s,n?Date.now():0),s},validate:e=>Rr(e,"strictNotEquals")},Hs={name:"lessThan",category:"Comparison",evaluatesTo:"Boolean",precedence:12,associativity:"Left",operators:["<","is less than"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=Ps(t,r,"<");return n&&Rs(this,e,[t,r],i,s),i},validate:e=>Rr(e,"lessThan")},Ws={name:"lessThanOrEqual",category:"Comparison",evaluatesTo:"Boolean",precedence:12,associativity:"Left",operators:["<=","is less than or equal to"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=Ps(t,r,"<=");return n&&Rs(this,e,[t,r],i,s),i},validate:e=>Rr(e,"lessThanOrEqual")},Us={name:"greaterThan",category:"Comparison",evaluatesTo:"Boolean",precedence:12,associativity:"Left",operators:[">","is greater than"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=Ps(t,r,">");return n&&Rs(this,e,[t,r],i,s),i},validate:e=>Rr(e,"greaterThan")},Ks={name:"greaterThanOrEqual",category:"Comparison",evaluatesTo:"Boolean",precedence:12,associativity:"Left",operators:[">=","is greater than or equal to"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=Ps(t,r,">=");return n&&Rs(this,e,[t,r],i,s),i},validate:e=>Rr(e,"greaterThanOrEqual")},Js={name:"and",category:"Logical",evaluatesTo:"Boolean",precedence:6,associativity:"Left",operators:["and","&&"],async evaluate(e,t,r){const n=Date.now();try{return Rs(this,e,[t,r],t&&r,n)}catch(s){throw Rs(this,e,[t,r],!1,n,!1,s instanceof Error?s:Error(s+"")),s}},validate:e=>Rr(e,"and"),inputSchema:$s,metadata:{category:"Logical",complexity:"simple",sideEffects:[],dependencies:[],returnTypes:["Boolean"],examples:[{input:"true and false",description:"Logical AND of boolean values",expectedOutput:!1},{input:"name and age",description:"Both name and age must be truthy",expectedOutput:!0,context:{variables:new Map([["name","John"],["age",25]])}}],relatedExpressions:["or","not"],performance:{averageTime:.001,complexity:"O(1)"}},documentation:{summary:"Logical AND operation that returns true only if both operands are truthy",parameters:[{name:"left",type:"unknown",description:"Left operand (evaluated for truthiness)",optional:!1,examples:["true","name","5",'"hello"']},{name:"right",type:"unknown",description:"Right operand (evaluated for truthiness)",optional:!1,examples:["false","age","0",'""']}],returns:{type:"Boolean",description:"True if both operands are truthy, false otherwise",examples:["true","false"]},examples:[{title:"Form validation",code:"if name and email",explanation:"Check if both name and email have values",output:"Boolean result"},{title:"Multiple conditions",code:"if age > 18 and hasLicense",explanation:"Combine multiple conditions",output:"Boolean result"},{title:"Short-circuit evaluation",code:"if element and element.value",explanation:"Check element exists before accessing properties",output:"Boolean result"}],seeAlso:["or","not","exists"],tags:["logic","boolean","conditions","validation"]}},Zs={name:"or",category:"Logical",evaluatesTo:"Boolean",precedence:5,associativity:"Left",operators:["or","||"],async evaluate(e,t,r){const n=e.evaluationHistory,s=t||r;return n&&Rs(this,e,[t,r],s,n?Date.now():0),s},validate:e=>Rr(e,"or")},Xs={name:"not",category:"Logical",evaluatesTo:"Boolean",precedence:15,associativity:"Right",operators:["not","!"],async evaluate(e,t){const r=e.evaluationHistory,n=!t;return r&&Rs(this,e,[t],n,r?Date.now():0),n},validate:e=>jr(e,1,"not","operand")},Ys={name:"isEmpty",category:"Logical",evaluatesTo:"Boolean",operators:["is empty","isEmpty"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0;let s;return s=null==t||(vr(t)||Array.isArray(t)||t instanceof NodeList?0===t.length:!(t instanceof Node||t instanceof Element||!kr(t)||0!==Object.keys(t).length)),r&&Rs(this,e,[t],s,n),s},validate:e=>jr(e,1,"isEmpty","value")},Gs={name:"no",category:"Logical",evaluatesTo:"Boolean",operators:["no"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0;let s;return s=null==t||!1===t||(Array.isArray(t)||t instanceof NodeList?0===t.length:(vr(t),!1)),r&&Rs(this,e,[t],s,n),s},validate:e=>jr(e,1,"no","value")},Qs={name:"isNotEmpty",category:"Logical",evaluatesTo:"Boolean",operators:["is not empty","isNotEmpty"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0,s=!await Ys.evaluate(e,t);return r&&Rs(this,e,[t],s,n),s},validate:e=>jr(e,1,"isNotEmpty","value")},ei={name:"exists",category:"Logical",evaluatesTo:"Boolean",operators:["exists"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0,s=ti(t);return r&&Rs(this,e,[t],s,n),s},validate:e=>jr(e,1,"exists","value")};function ti(e){return null!=e&&(Array.isArray(e)?e.length>0:!("undefined"!=typeof NodeList&&e instanceof NodeList)||e.length>0)}const ri={name:"doesNotExist",category:"Logical",evaluatesTo:"Boolean",operators:["does not exist","doesNotExist"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0,s=!ti(t);return r&&Rs(this,e,[t],s,n),s},validate:e=>jr(e,1,"doesNotExist","value")},ni={name:"contains",category:"Logical",evaluatesTo:"Boolean",operators:["contains","includes","include"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0;let i;if(t&&r){if(_s(t)&&_s(r))return i=t.contains(r),n&&Rs(this,e,[t,r],i,s),i;if(vr(t)&&t.match(/^[.#][\w-]+$/)){const a=document.querySelector(t);if(a&&_s(r))return i=a.contains(r),n&&Rs(this,e,[t,r],i,s),i;if(a&&vr(r)&&r.match(/^[.#][\w-]+$/)){const o=document.querySelector(r);return i=!!o&&a.contains(o),n&&Rs(this,e,[t,r],i,s),i}}if(vr(r)&&r.match(/^[.#][\w-]+$/)&&_s(t)){const a=document.querySelector(r);return i=!!a&&t.contains(a),n&&Rs(this,e,[t,r],i,s),i}}if(vr(t)&&vr(r))i=t.includes(r);else if(Array.isArray(t)||"undefined"!=typeof NodeList&&t instanceof NodeList){const e=Array.from(t);i=e.includes(r)||r instanceof Node&&e.some(e=>e instanceof Node&&e.contains(r))}else i=!(!kr(t)||!vr(r))&&r in t;return n&&Rs(this,e,[t,r],i,s),i},validate:e=>jr(e,2,"contains","container, value")},si={name:"doesNotContain",category:"Logical",evaluatesTo:"Boolean",operators:["does not contain","doesNotContain","does not include","doesNotInclude"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=!await ni.evaluate(e,t,r);return n&&Rs(this,e,[t,r],i,s),i},validate:e=>jr(e,2,"doesNotContain","container, value")},ii={name:"startsWith",category:"Logical",evaluatesTo:"Boolean",operators:["starts with","startsWith"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=null!=t&&null!=r&&(t+"").startsWith(r+"");return n&&Rs(this,e,[t,r],i,s),i},validate:e=>jr(e,2,"startsWith","str, prefix")},ai={name:"endsWith",category:"Logical",evaluatesTo:"Boolean",operators:["ends with","endsWith"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=null!=t&&null!=r&&(t+"").endsWith(r+"");return n&&Rs(this,e,[t,r],i,s),i},validate:e=>jr(e,2,"endsWith","str, suffix")},oi={name:"between",category:"Logical",evaluatesTo:"Boolean",operators:["is between","between"],async evaluate(e,t,r,n){const s=e.evaluationHistory;let i=r,a=n;if(null!=i&&null!=a&&i>a){const e=i;i=a,a=e}const o=null!=i&&null!=a&&t>=i&&a>=t;return s&&Rs(this,e,[t,r,n],o,s?Date.now():0),o},validate:e=>jr(e,3,"between","value, min, max")},li={name:"matches",category:"Logical",evaluatesTo:"Boolean",operators:["matches"],async evaluate(e,t,r){const n=Date.now();try{let s;if(t instanceof Element&&vr(r)){const e=r;if(e.startsWith(".")||e.startsWith("#")||e.startsWith(":")||e.startsWith("[")||/^[a-zA-Z][\w-]*$/.test(e))try{s=function(e,t){return Es.matches(e,t)}(t,e)}catch(e){s=!1}else s=!1}else if(vr(t)&&vr(r)){const e=t,n=r;try{s=(n.startsWith("/")&&n.endsWith("/")?RegExp(n.slice(1,-1)):RegExp(n)).test(e)}catch(t){s=e.includes(n)}}else s=!1;return Rs(this,e,[t,r],s,n)}catch(s){throw Rs(this,e,[t,r],!1,n,!1,s instanceof Error?s:Error(s+"")),s}},validate:e=>jr(e,2,"matches","element, selector"),inputSchema:Vs,metadata:{category:"Logical",complexity:"medium",sideEffects:["dom-query"],dependencies:[],returnTypes:["Boolean"],examples:[{input:'element matches ".active"',description:"Check if element has active class",expectedOutput:!0},{input:'text matches "/^hello/"',description:'Check if text starts with "hello" using regex',expectedOutput:!0,context:{variables:new Map([["text","hello world"]])}}],relatedExpressions:["contains","startsWith","endsWith"],performance:{averageTime:.5,complexity:"O(n)"}},documentation:{summary:"Tests if element matches CSS selector or string matches regex pattern",parameters:[{name:"element",type:"Element | string",description:"DOM element or string to test",optional:!1,examples:["<div>",'"hello world"',"me","target"]},{name:"selector",type:"string",description:"CSS selector or regex pattern to match against",optional:!1,examples:['".active"','"#navbar"','"/^hello/"','"\\\\d+"']}],returns:{type:"Boolean",description:"True if element matches selector/pattern",examples:["true","false"]},examples:[{title:"CSS class matching",code:'if me matches ".active"',explanation:'Check if current element has "active" class',output:"Boolean result"},{title:"Attribute matching",code:'if target matches "[data-role=\\"button\\"]"',explanation:"Check if element has specific data attribute",output:"Boolean result"},{title:"Regex pattern matching",code:'if email matches "/^[^@]+@[^@]+\\\\.[^@]+$/"',explanation:"Validate email format with regex",output:"Boolean result"},{title:"Complex CSS selector",code:'if element matches ".card:hover .button"',explanation:"Match complex CSS selector with pseudo-classes",output:"Boolean result"}],seeAlso:["contains","startsWith","endsWith","querySelector"],tags:["pattern","css","regex","validation","dom"]}},ci={name:"has",category:"Logical",evaluatesTo:"Boolean",operators:["has","have"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0;let i=!1;if(t instanceof Element&&vr(r)){const e=r;e.startsWith(".")?i=t.classList.contains(e.slice(1)):e.startsWith("[")&&e.endsWith("]")&&(i=t.hasAttribute(e.slice(1,-1)))}return n&&Rs(this,e,[t,r],i,s),i},validate:e=>jr(e,2,"has","element, selector")},ui={name:"doesNotHave",category:"Logical",evaluatesTo:"Boolean",operators:["does not have"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=!await ci.evaluate(e,t,r);return n&&Rs(this,e,[t,r],i,s),i},validate:e=>jr(e,2,"doesNotHave","element, selector")},di={equals:Ds,strictEquals:zs,notEquals:Bs,strictNotEquals:Fs,lessThan:Hs,lessThanOrEqual:Ws,greaterThan:Us,greaterThanOrEqual:Ks,and:Js,or:Zs,not:Xs,no:Gs,isEmpty:Ys,isNotEmpty:Qs,exists:ei,doesNotExist:ri,contains:ni,doesNotContain:si,startsWith:ii,endsWith:ai,between:oi,matches:li,has:ci,doesNotHave:ui},mi=Ur({value:Fr().describe("String literal value")}).strict(),pi=Ur({value:Hr().describe("Number literal value")}).strict(),hi=Ur({value:Wr().describe("Boolean literal value")}).strict(),fi=Ur({left:Jr().describe("Left operand"),right:Jr().describe("Right operand")}).strict();const yi={stringLiteral:new class extends Yr{constructor(){super(...arguments),this.name="stringLiteral",this.category="Special",this.syntax="\"string\" or 'string'",this.description="String literals with template interpolation support",this.outputType="String",this.inputSchema=mi,this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid){const t=this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions);return this.trackSimple(e,r,!1),t}let s=t.value;(s.includes("${")||s.includes("$"))&&(s=this.interpolateString(s,e));const i=this.success(s,"string");return this.trackSimple(e,r,!0,s),i}catch(t){return this.trackSimple(e,r,!1),this.failure("StringEvaluationError","runtime-error","String literal evaluation failed: "+(t instanceof Error?t.message:t+""),"STRING_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid string literal input",["Provide a value parameter","Ensure value is a string"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}interpolateString(e,t){let r=e.replace(/\$\{([^}]+)\}/g,(e,r)=>{try{const e=this.resolveExpression(r.trim(),t);return void 0!==e?e+"":""}catch(e){return""}});return r=r.replace(/\$([a-zA-Z_$][a-zA-Z0-9_.$]*)/g,(e,r)=>{try{const e=this.resolveVariable(r,t);return void 0!==e?e+"":""}catch(e){return""}}),r}resolveExpression(e,t){if(e.includes(".")){const r=e.split(".");let n=this.resolveVariable(r[0],t);for(let e=1;r.length>e&&null!=n;e++)n=n[r[e]];return n}return this.resolveVariable(e,t)}resolveVariable(e,t){return"me"===e&&t.me?t.me:"you"===e&&t.you?t.you:"it"===e&&t.it?t.it:"result"===e&&t.result?t.result:t.locals?.has(e)?(_e(e,t),t.locals.get(e)):t.globals?.has(e)?t.globals.get(e):void 0}},numberLiteral:new class extends Yr{constructor(){super(...arguments),this.name="numberLiteral",this.category="Special",this.syntax="123 or 3.14",this.description="Numeric literal with validation",this.inputSchema=pi,this.outputType="Number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);return n.isValid?Number.isFinite(t.value)?(this.trackSimple(e,r,!0,t.value),this.success(t.value,"number")):(this.trackSimple(e,r,!1),this.failure("NumberValidationError","invalid-argument","Number literal must be finite","NUMBER_NOT_FINITE")):(this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions))}catch(t){return this.trackSimple(e,r,!1),this.failure("NumberEvaluationError","runtime-error","Number literal evaluation failed: "+(t instanceof Error?t.message:t+""),"NUMBER_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?Number.isFinite(t.data.value)?this.validationSuccess():this.validationFailure("invalid-argument","Number literal value must be finite",["Use finite numbers only","Avoid Infinity and NaN values"]):this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid number literal input",["Provide a value parameter","Ensure value is a number"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}},booleanLiteral:new class extends Yr{constructor(){super(...arguments),this.name="booleanLiteral",this.category="Special",this.syntax="true or false",this.description="Boolean literal values",this.inputSchema=hi,this.outputType="Boolean",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);return n.isValid?(this.trackSimple(e,r,!0,t.value),this.success(t.value,"boolean")):(this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions))}catch(t){return this.trackSimple(e,r,!1),this.failure("BooleanEvaluationError","runtime-error","Boolean literal evaluation failed: "+(t instanceof Error?t.message:t+""),"BOOLEAN_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid boolean literal input",["Provide a value parameter","Ensure value is a boolean"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}},addition:new class extends Yr{constructor(){super(...arguments),this.name="addition",this.category="Special",this.syntax="left + right",this.description="Addition of two numeric values",this.inputSchema=fi,this.outputType="Number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions);const s=As(t.left,"left operand")+As(t.right,"right operand");return this.trackSimple(e,r,!0,s),this.success(s,"number")}catch(t){return this.trackSimple(e,r,!1),this.failure("AdditionError","runtime-error","Addition failed: "+(t instanceof Error?t.message:t+""),"ADDITION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid addition input",["Provide left and right operands"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}},stringConcatenation:new class extends Yr{constructor(){super(...arguments),this.name="stringConcatenation",this.category="Special",this.syntax="left + right (string concatenation)",this.description="Concatenation of two values into a string",this.inputSchema=fi,this.outputType="String",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors[0]?.message||"Invalid input","STRING_CONCATENATION_VALIDATION_FAILED",n.suggestions);const s=this.convertToString(t.left)+this.convertToString(t.right);return this.trackSimple(e,r,!0,s),this.success(s,"string")}catch(t){return this.trackSimple(e,r,!1),this.failure("StringConcatenationError","runtime-error",t instanceof Error?t.message:"String concatenation failed","STRING_CONCATENATION_ERROR",["Check that operands can be converted to strings"])}}validate(e){const t=fi.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid string concatenation input",["Provide left and right operands for concatenation"])}convertToString(e){if(null===e)return"null";if(void 0===e)return"undefined";if(vr(e))return e;if(br(e))return""+e;if(wr(e))return""+e;if(e instanceof Date)return""+e;try{return e+""}catch{return"[object Object]"}}},multiplication:new class extends Yr{constructor(){super(...arguments),this.name="multiplication",this.category="Special",this.syntax="left * right",this.description="Multiplication of two numeric values",this.inputSchema=fi,this.outputType="Number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions);const s=As(t.left,"left operand")*As(t.right,"right operand");return this.trackSimple(e,r,!0,s),this.success(s,"number")}catch(t){return this.trackSimple(e,r,!1),this.failure("MultiplicationError","runtime-error","Multiplication failed: "+(t instanceof Error?t.message:t+""),"MULTIPLICATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid multiplication input",["Provide left and right operands"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}},gi={String:"string",Number:"number",Boolean:"boolean",Element:"element",ElementList:"element-list",Array:"array",Object:"object",Promise:"promise",Context:"object",Null:"null",Undefined:"undefined",Any:"object"},vi=Ur({collection:Jr().describe("Collection to operate on (array, NodeList, or string)")}).strict(),bi=Ur({collection:Jr().describe("Collection to access"),index:Hr().describe("Index position to access")}).strict(),wi=Ur({collection:Jr().describe("Collection to select random item from")}).strict();new class extends Yr{constructor(){super(...arguments),this.name="first",this.category="Positional",this.syntax="first in collection",this.description="Gets the first element from a collection",this.inputSchema=vi,this.outputType="Any",this.metadata={category:"Positional",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.normalizeCollection(t.collection),i=s.length>0?s[0]:void 0,a={success:!0,value:i,type:gi[this.inferEvaluationType(i)]};return this.trackPerformance(e,t,a,r),a}catch(n){const s=this.failure("FirstExpressionError","runtime-error","First operation failed: "+(n instanceof Error?n.message:n+""),"FIRST_OPERATION_FAILED");return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid first input: "+e.message,suggestions:[]}))??[],suggestions:["Provide a collection parameter","Ensure collection is array, NodeList, or string"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}},new class extends Yr{constructor(){super(...arguments),this.name="last",this.category="Positional",this.syntax="last in collection",this.description="Gets the last element from a collection",this.inputSchema=vi,this.outputType="Any",this.metadata={category:"Positional",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.normalizeCollection(t.collection),i=s.length>0?s[s.length-1]:void 0,a={success:!0,value:i,type:gi[this.inferEvaluationType(i)]};return this.trackPerformance(e,t,a,r),a}catch(n){const s=this.failure("LastExpressionError","runtime-error","Last operation failed: "+(n instanceof Error?n.message:n+""),"LAST_OPERATION_FAILED");return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid last input: "+e.message,suggestions:[]}))??[],suggestions:["Provide a collection parameter","Ensure collection is array, NodeList, or string"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}},new class extends Yr{constructor(){super(...arguments),this.name="at",this.category="Positional",this.syntax="collection[index] or collection at index",this.description="Gets element at specific index from a collection",this.inputSchema=bi,this.outputType="Any",this.metadata={category:"Positional",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.normalizeCollection(t.collection),i=this.normalizeIndex(t.index,s.length),a=i>=0&&s.length>i?s[i]:void 0,o={success:!0,value:a,type:gi[this.inferEvaluationType(a)]};return this.trackPerformance(e,t,o,r),o}catch(n){const s=this.failure("AtExpressionError","runtime-error","At operation failed: "+(n instanceof Error?n.message:n+""),"AT_OPERATION_FAILED");return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid at input: "+e.message,suggestions:[]}))??[],suggestions:["Provide collection and index parameters","Ensure index is a number"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}normalizeIndex(e,t){return 0>e?t+e:e}},new class extends Yr{constructor(){super(...arguments),this.name="random",this.category="Positional",this.syntax="random in collection",this.description="Gets a random element from a collection",this.inputSchema=wi,this.outputType="Any",this.metadata={category:"Positional",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.normalizeCollection(t.collection);if(0===s.length){const n={success:!0,value:void 0,type:"undefined"};return this.trackPerformance(e,t,n,r),n}const i=s[this.getSecureRandomIndex(s.length)],a={success:!0,value:i,type:gi[this.inferEvaluationType(i)]};return this.trackPerformance(e,t,a,r),a}catch(n){const s=this.failure("RandomExpressionError","runtime-error","Random operation failed: "+(n instanceof Error?n.message:n+""),"RANDOM_OPERATION_FAILED");return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid random input: "+e.message,suggestions:[]}))??[],suggestions:["Provide a collection parameter","Ensure collection is array, NodeList, or string"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}getSecureRandomIndex(e){if("undefined"!=typeof crypto&&crypto.getRandomValues){const t=new Uint32Array(1);return crypto.getRandomValues(t),t[0]%e}return Math.floor(Math.random()*e)}};const ki={name:"first",category:"Reference",evaluatesTo:"Any",operators:["first"],async evaluate(e,t){const r=void 0!==t?t:e.it;return null==r?null:Array.isArray(r)||r instanceof NodeList||r instanceof HTMLCollection?r.length>0?r[0]:null:r instanceof Element?r.children.length>0?r.children[0]:null:vr(r)?r.length>0?r[0]:null:kr(r)&&"length"in r&&br(r.length)&&r.length>0?r[0]:null},validate:e=>Mr(e,1,"first","collection")},Ei={name:"last",category:"Reference",evaluatesTo:"Any",operators:["last"],async evaluate(e,t){const r=void 0!==t?t:e.it;if(null==r)return null;if(Array.isArray(r))return r.length>0?r[r.length-1]:null;if(r instanceof NodeList||r instanceof HTMLCollection)return r.length>0?r[r.length-1]:null;if(r instanceof Element){const e=r.children;return e.length>0?e[e.length-1]:null}return vr(r)?r.length>0?r[r.length-1]:null:kr(r)&&"length"in r&&br(r.length)&&r.length>0?r[r.length-1]:null},validate:e=>Mr(e,1,"last","collection")},xi={name:"at",category:"Reference",evaluatesTo:"Any",operators:["at"],async evaluate(e,...t){const[r,n]=t;if(!br(r))throw Error("Index must be a number");const s=r,i=void 0!==n?n:e.it;if(null==i)return null;if(Array.isArray(i)){const e=0>s?i.length+s:s;return e>=0&&i.length>e?i[e]:null}if(i instanceof NodeList||i instanceof HTMLCollection){const e=0>s?i.length+s:s;return e>=0&&i.length>e?i[e]:null}if(i instanceof Element){const e=i.children,t=0>s?e.length+s:s;return t>=0&&e.length>t?e[t]:null}if(vr(i)){const e=0>s?i.length+s:s;return e>=0&&i.length>e?i[e]:null}if(kr(i)&&"length"in i&&br(i.length)){const e=0>s?i.length+s:s;return e>=0&&i.length>e?i[e]:null}return null},validate:e=>_r(e,1,2,"at","index, optional collection")??function(e){return"number"!=typeof e[0]?"at index must be a number":null}(e)};function Ci(e,t){let r=e.nextElementSibling;for(;r;){if(r.matches(t))return r;const e=r.querySelector(t);if(e)return e;r=r.nextElementSibling}const n=e.parentElement;return n&&n!==document.documentElement?Ci(n,t):null}function Si(e,t){let r=e.previousElementSibling;for(;r;){const e=Array.from(r.querySelectorAll(t)).reverse();if(e.length>0)return e[0];if(r.matches(t))return r;r=r.previousElementSibling}const n=e.parentElement;return n&&n!==document.documentElement?Si(n,t):null}function Ai(e,t,r,n){if(r.inSearch){if(null==r.inElt)return;return function(e,t,r,n){const s=Array.from(t??[]),i=[];for(const t of s)(t.matches&&t.matches(r)||t===e)&&i.push(t);for(let t=0;i.length-1>t;t++)if(i[t]===e)return i[t+1];if(n){const e=i[0];if(e&&e.matches&&e.matches(r))return e}}(e,n?Array.from(r.inElt):Array.from(r.inElt).reverse(),t,!!r.wrapping)}const s=r.within??("undefined"!=typeof document?document.body:null);if(s)return n?function(e,t,r,n){const s=t.querySelectorAll(r);for(let t=0;s.length>t;t++){const r=s[t];if(2===r.compareDocumentPosition(e))return r}return n?s[0]:void 0}(e,s,t,!!r.wrapping):function(e,t,r,n){const s=t.querySelectorAll(r);for(let t=s.length-1;t>=0;t--){const r=s[t];if(4===r.compareDocumentPosition(e))return r}return n?s[s.length-1]:void 0}(e,s,t,!!r.wrapping)}function Ti(e){let t=0,r=e;for(;r&&r.parentElement;)t+=Array.from(r.parentElement.children).indexOf(r),r=r.parentElement,t+=1e3;return t}const Oi={first:ki,last:Ei,at:xi,next:{name:"next",category:"Reference",evaluatesTo:"Element",operators:["next"],async evaluate(e,...t){const[r,n,s]=t,i=n||e.me;return i&&i instanceof Element?r?s?Ai(i,r,s,!0):Ci(i,r):i.nextElementSibling:null},validate:e=>Mr(e,3,"next","optional selector, optional fromElement, optional modifiers")||(1>e.length||null==e[0]||"string"==typeof e[0]?2>e.length||null==e[1]||e[1]instanceof Element?null:"fromElement must be an Element":"selector must be a string")},previous:{name:"previous",category:"Reference",evaluatesTo:"Element",operators:["previous","prev"],async evaluate(e,...t){const[r,n,s]=t,i=n||e.me;return i&&i instanceof Element?r?s?Ai(i,r,s,!1):Si(i,r):i.previousElementSibling:null},validate:e=>Mr(e,3,"previous","optional selector, optional fromElement, optional modifiers")||(1>e.length||null==e[0]||"string"==typeof e[0]?2>e.length||null==e[1]||e[1]instanceof Element?null:"fromElement must be an Element":"selector must be a string")},nextWithin:{name:"nextWithin",category:"Reference",evaluatesTo:"Element",operators:["next within"],async evaluate(e,...t){const[r,n,s]=t,i=s||e.me;if(!(i&&i instanceof Element))return null;const a=i.closest(n);return a?function(e,t,r){const n=Array.from(r.querySelectorAll(t)),s=Ti(e);for(const e of n)if(Ti(e)>s)return e;return null}(i,r,a):null},validate:e=>_r(e,2,3,"nextWithin","selector, withinSelector, optional fromElement")||("string"!=typeof e[0]?"selector must be a string":"string"!=typeof e[1]?"withinSelector must be a string":3>e.length||null==e[2]||e[2]instanceof Element?null:"fromElement must be an Element")},previousWithin:{name:"previousWithin",category:"Reference",evaluatesTo:"Element",operators:["previous within"],async evaluate(e,...t){const[r,n,s]=t,i=s||e.me;if(!(i&&i instanceof Element))return null;const a=i.closest(n);return a?function(e,t,r){const n=Array.from(r.querySelectorAll(t)),s=Ti(e);for(let e=n.length-1;e>=0;e--){const t=n[e];if(s>Ti(t))return t}return null}(i,r,a):null},validate:e=>_r(e,2,3,"previousWithin","selector, withinSelector, optional fromElement")||("string"!=typeof e[0]?"selector must be a string":"string"!=typeof e[1]?"withinSelector must be a string":3>e.length||null==e[2]||e[2]instanceof Element?null:"fromElement must be an Element")}};function Li(e,t,r,n,s,i){function a(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var o,l=n.kind,c="getter"===l?"get":"setter"===l?"set":"value",u=!t&&e?n.static?e:e.prototype:null,d=t||(u?Object.getOwnPropertyDescriptor(u,n.name):{}),m=!1,p=r.length-1;p>=0;p--){var h={};for(var f in n)h[f]="access"===f?{}:n[f];for(var f in n.access)h.access[f]=n.access[f];h.addInitializer=function(e){if(m)throw new TypeError("Cannot add initializers after decoration has completed");i.push(a(e||null))};var y=(0,r[p])("accessor"===l?{get:d.get,set:d.set}:d[c],h);if("accessor"===l){if(void 0===y)continue;if(null===y||"object"!=typeof y)throw new TypeError("Object expected");(o=a(y.get))&&(d.get=o),(o=a(y.set))&&(d.set=o),(o=a(y.init))&&s.unshift(o)}else(o=a(y))&&("field"===l?s.unshift(o):d[c]=o)}u&&Object.defineProperty(u,n.name,d),m=!0}function Pi(e,t,r){for(var n=arguments.length>2,s=0;t.length>s;s++)r=n?t[s].call(e,r):t[s].call(e);return n?r:void 0}function ji(e,t,r){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:r?"".concat(r," ",t):t})}function Ni(e){const t=e.trim();return!(!t.startsWith("[@")||!t.endsWith("]"))||!!t.startsWith("@")}function Ii(e){const t=e.trim();if(t.startsWith("[@")&&t.endsWith("]")){const e=t.slice(2,-1),r=e.indexOf("=");if(-1===r)return{name:e.trim()};const n=e.slice(0,r).trim();let s=e.slice(r+1).trim();return(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),{name:n,value:s}}if(t.startsWith("@"))return{name:t.substring(1).trim()};throw Error("Invalid attribute syntax: "+e)}function Ri(e,t){for(const r of e)t(r);return e}function qi(e,t,r){for(const n of e)for(const e of t)r(n,e);return e}function Mi(e,t,r){const n=e.hasAttribute(t);void 0!==r?n&&e.getAttribute(t)===r?e.removeAttribute(t):e.setAttribute(t,r):n?e.removeAttribute(t):e.setAttribute(t,"")}function _i(e){if(!e)return[];if("string"==typeof e)return e.trim().split(/[\s,]+/).map(e=>{const t=e.trim();return t.startsWith(".")?t.substring(1):t}).filter(e=>e.length>0&&Vi(e));if(Array.isArray(e))return e.map(e=>{const t=(e+"").trim();return t.startsWith(".")?t.substring(1):t}).filter(e=>e.length>0&&Vi(e));const t=(e+"").trim(),r=t.startsWith(".")?t.substring(1):t;return r.length>0&&Vi(r)?[r]:[]}function $i(e){const t=e.trim();return/^\{[^}]+\}$/.test(t)}function Vi(e){if(!e||0===e.trim().length)return!1;const t=e.trim();return!!$i(t)||/^[a-zA-Z_-][a-zA-Z0-9_-]*$/.test(t)}function Di(e,t){return e.map(e=>{if($i(e)){const r=function(e){const t=e.trim(),r=t.match(/^\{(.+)\}$/);return r?r[1].trim():t}(e),n=t.locals.get(r)??t.globals.get(r);return null!=n?n+"":(de(`Dynamic class variable '${r}' not found in context`),"")}return e}).filter(e=>e.length>0)}"function"==typeof SuppressedError&&SuppressedError;const zi=Symbol("command:name"),Bi=Symbol("command:category"),Fi=Symbol("command:metadata");function Hi(e){return function(t,r){const n=t;n[zi]=e.name,n[Bi]=e.category,Object.defineProperty(t.prototype,"name",{value:e.name,writable:!1,enumerable:!0})}}function Wi(e){return function(t,r){const n=t,s=n[Bi];if(!s)throw Error("@meta decorator requires @command decorator to be applied first on "+t.name);const i={description:e.description,syntax:e.syntax,examples:e.examples,category:s,sideEffects:e.sideEffects,deprecated:e.deprecated,deprecationMessage:e.deprecationMessage,aliases:e.aliases,relatedCommands:e.relatedCommands,isBlocking:e.isBlocking??!1,hasBody:e.hasBody??!1,version:"1.0.0",compatibility:e.compatibility};n[Fi]=i,Object.defineProperty(t,"metadata",{value:i,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(t.prototype,"metadata",{get:()=>i,enumerable:!0,configurable:!1})}}function Ui(e){return()=>new e}function Ki(e,t){return e?`[${e}] ${t}`:t}function Ji(e,t,r){if(dr(e))return e;if(!e){const e=t.me;if(!e)throw Error(Ki(r,"No target element \u2014 provide explicit target or ensure context.me is set"));return Xi(e)}if("string"==typeof e){const n=e.trim();if("me"===n){if(!t.me)throw Error(Ki(r,'Context reference "me" is not available'));return Xi(t.me)}if("it"===n){if(!dr(t.it))throw Error(Ki(r,'Context reference "it" is not an HTMLElement'));return t.it}if("you"===n){if(!t.you)throw Error(Ki(r,'Context reference "you" is not available'));return Xi(t.you)}const s=t.me?.ownerDocument??("undefined"!=typeof document?document:null);if(!s)throw Error(Ki(r,"DOM not available \u2014 cannot resolve element selector"));const i=s.querySelector(n);if(!i)throw Error(Ki(r,"Element not found with selector: "+n));if(!dr(i))throw Error(Ki(r,"Element found but is not an HTMLElement: "+n));return i}throw Error(Ki(r,"Invalid target type: "+typeof e))}function Zi(e,t){if(Array.isArray(e))return e.filter(dr);if(mr(e))return Array.from(e).filter(dr);if(dr(e))return[e];if(!e){const e=t.me;return e&&dr(e)?[e]:[]}if("string"==typeof e){const r=e.trim();if("me"===r)return t.me&&dr(t.me)?[t.me]:[];if("it"===r)return dr(t.it)?[t.it]:[];if("you"===r)return t.you&&dr(t.you)?[t.you]:[];const n=t.me?.ownerDocument??("undefined"!=typeof document?document:null);if(n){let e=r;e.startsWith("<")&&e.endsWith("/>")&&(e=e.slice(1,-2).trim());const t=n.querySelectorAll(e);return Array.from(t).filter(dr)}}return[]}function Xi(e){if(dr(e))return e;throw Error("Value is not an HTMLElement")}function Yi(e,t,r){switch(e.toLowerCase()){case"my":case"me":if(!t.me)throw Error(Ki(r,'No "me" element in context'));if(!dr(t.me))throw Error(Ki(r,"context.me is not an HTMLElement"));return t.me;case"its":case"it":if(!t.it)throw Error(Ki(r,'No "it" value in context'));if(!dr(t.it))throw Error(Ki(r,"context.it is not an HTMLElement"));return t.it;case"your":case"you":if(!t.you)throw Error(Ki(r,'No "you" element in context'));if(!dr(t.you))throw Error(Ki(r,"context.you is not an HTMLElement"));return t.you;default:throw Error(Ki(r,"Unknown possessive: "+e))}}const Gi=["on","from","to","in","with","at"];async function Qi(e,t,r,n,s={},i){let a=e;if(s.filterPrepositions&&e&&(a=e.filter(e=>{const t=e;return"identifier"!==t?.type||"string"!=typeof t.name||!Gi.includes(t.name.toLowerCase())})),(!a||0===a.length)&&s.fallbackModifierKey&&i){const e=i[s.fallbackModifierKey];e&&(a=[e])}if(!a||0===a.length){if(!r.me)throw Error(n+" command: no target specified and context.me is null");if(!dr(r.me))throw Error(n+" command: context.me must be an HTMLElement");return[r.me]}const o=[];for(const e of a){const s=await t.evaluate(e,r);if(""!==s&&("string"!=typeof s||""!==s.trim()))if(dr(s))o.push(s);else if(mr(s)){const e=Array.from(s).filter(dr);o.push(...e)}else if(Array.isArray(s)){const e=s.filter(dr);o.push(...e)}else{if("string"!=typeof s){if(null==s)continue;throw Error(`Invalid ${n} target: expected HTMLElement or CSS selector, got ${typeof s}`)}try{let e=s;e.startsWith("<")&&e.endsWith("/>")&&(e=e.slice(1,-2).trim());const t=r.me?.ownerDocument??("undefined"!=typeof document?document:null);if(!t)throw Error("DOM not available - cannot resolve element selector");const n=t.querySelectorAll(e),i=Array.from(n).filter(dr);o.push(...i)}catch(e){throw Error(`Invalid CSS selector: "${s}" - ${e instanceof Error?e.message:e+""}`)}}}if(0===o.length){if(!r.me)throw Error(n+" command: no target specified and context.me is null");if(!dr(r.me))throw Error(n+" command: context.me must be an HTMLElement");return[r.me]}return o}function ea(e){return"string"==typeof e&&e.trim().startsWith("*")}function ta(e){const t=function(e){const t=e.trim();if(!t.startsWith("*"))return null;const r=t.substring(1).trim();return r?{property:r}:null}(e);if(!t)return null;const r=t.property.toLowerCase();return["display","visibility","opacity"].includes(r)?r:null}function ra(e,t,r){e.style.setProperty(t,r)}const na=["dialog","details","summary","select"];function sa(e){return e&&"object"==typeof e?"string"==typeof e.selector?e.selector:"string"==typeof e.value?e.value:"string"==typeof e.name?e.name:null:null}async function ia(e,t,r){return function(e){if(!e||"object"!=typeof e)return!1;const t=e.type;if("selector"!==t&&"cssSelector"!==t&&"classSelector"!==t)return!1;const r=sa(e);return"string"==typeof r&&r.startsWith(".")}(e)||function(e){if(!e||"object"!=typeof e)return!1;const t=e.type;if("selector"!==t&&"cssSelector"!==t&&"cssProperty"!==t)return!1;const r=sa(e);return"string"==typeof r&&r.startsWith("*")}(e)?{value:sa(e),extractedFromNode:!0}:function(e){if(!e||"object"!=typeof e)return!1;if("attributeAccess"===e.type)return!0;if("selector"===e.type||"cssSelector"===e.type){const t=sa(e);return"string"==typeof t&&t.startsWith("@")}return!1}(e)?{value:(n=e,"attributeAccess"===n.type?"@"+n.attributeName:sa(n)),extractedFromNode:!0}:{value:await t.evaluate(e,r),extractedFromNode:!1};var n}class aa{async resolveTargets(e,t,r,n){return Qi(e,t,r,this.mode,{filterPrepositions:!0,fallbackModifierKey:this.preposition},n)}async evaluateFirst(e,t,r){return ia(e,t,r)}parseClassNames(e){return _i(e)}isAttribute(e){return Ni(e.trim())}isCSSProperty(e){return ea(e.trim())}validateTargets(e){return Array.isArray(e)&&function(e){return Array.isArray(e)&&e.length>0&&e.every(e=>dr(e))}(e)}validateType(e,t){return function(e,t){return"string"==typeof e&&t.includes(e)}(e,t)}validateStringArray(e,t=1){return Array.isArray(e)&&function(e,t=1){return Array.isArray(e)&&e.length>=t&&e.every(e=>"string"==typeof e&&e.length>0)}(e,t)}}let oa=(()=>{let e,t,r=[Wi({description:"Add CSS classes, attributes, or styles to elements",syntax:"add <classes|@attr|{styles}> [to <target>]",examples:["add .active to me",'add "active selected" to <button/>',"add .highlighted to #modal",'add [@data-test="value"] to #element'],sideEffects:["dom-mutation"]}),Hi({name:"add",category:"dom"})],n=[],s=aa;return t=class extends s{constructor(){super(...arguments),this.mode="add",this.preposition="to"}async parseInput(e,t,r){if(!e.args||0===e.args.length)throw Error("add command requires an argument");const{value:n}=await this.evaluateFirst(e.args[0],t,r);if("object"==typeof n&&null!==n&&!Array.isArray(n))return{type:"styles",styles:n,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)};if("string"==typeof n){const s=n.trim();if(this.isAttribute(s)){const{name:n,value:i}=function(e){const t=Ii(e);return{name:t.name,value:t.value??""}}(s);return{type:"attribute",name:n,value:i,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)}}if(this.isCSSProperty(s)){const n=s.substring(1).trim();if(2>e.args.length)throw Error("add *property requires a value argument");const i=await t.evaluate(e.args[1],r);return{type:"styles",styles:{[n]:i+""},targets:await this.resolveTargets(e.args.slice(2),t,r,e.modifiers)}}}const s=this.parseClassNames(n);if(0===s.length)throw Error("add command: no valid class names found");return{type:"classes",classes:s,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)}}async execute(e,t){switch(e.type){case"classes":{const r=Di(e.classes,t);r.length>0&&qi(e.targets,r,(e,t)=>{e.classList.contains(t)||e.classList.add(t)});break}case"attribute":r=e.name,n=e.value,Ri(e.targets,e=>{e.setAttribute(r,n)});break;case"styles":!function(e,t){qi(e,Object.entries(t),(e,[t,r])=>{e.style.setProperty(t,r)})}(e.targets,e.styles)}var r,n}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;if(!this.validateType(t.type,["classes","attribute","styles"]))return!1;if(!this.validateTargets(t.targets))return!1;if("classes"===t.type){if(!this.validateStringArray(e.classes,1))return!1}else if("attribute"===t.type){if("string"!=typeof e.name||0===e.name.length)return!1;if("string"!=typeof e.value)return!1}else if("styles"===t.type){const t=e;if("object"!=typeof t.styles||null===t.styles)return!1;if(Array.isArray(t.styles))return!1;const r=t.styles;if(0===Object.keys(r).length)return!1;if(!Object.values(r).every(e=>"string"==typeof e))return!1}return!0}},ji(t,"AddCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),Pi(t,n)})(),t})();const la=Ui(oa);function ca(e){return!!e.parentNode&&(e.remove(),!0)}let ua=(()=>{let e,t,r=[Wi({description:"Remove CSS classes, attributes, styles, or elements from the DOM",syntax:"remove <classes|@attr|*prop|element> [from <target>]",examples:["remove .active from me",'remove "active selected" from <button/>',"remove .highlighted from #modal","remove me","remove closest .item"],sideEffects:["dom-mutation"]}),Hi({name:"remove",category:"dom"})],n=[],s=aa;return t=class extends s{constructor(){super(...arguments),this.mode="remove",this.preposition="from"}async parseInput(e,t,r){if(!e.args||0===e.args.length)throw Error("remove command requires an argument");const{value:n}=await this.evaluateFirst(e.args[0],t,r);if(dr(n))return{type:"element",targets:[n]};if(Array.isArray(n)&&n.length>0&&dr(n[0]))return{type:"element",targets:n.filter(e=>dr(e))};if("string"==typeof n){const s=n.trim();if(this.isAttribute(s))return{type:"attribute",name:Ii(s).name,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)};if(this.isCSSProperty(s))return{type:"styles",properties:[s.substring(1).trim()],targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)}}const s=this.parseClassNames(n);if(0===s.length)throw Error("remove command: no valid class names found");return{type:"classes",classes:s,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)}}execute(e,t){switch(e.type){case"classes":{const r=Di(e.classes,t);r.length>0&&qi(e.targets,r,(e,t)=>{e.classList.remove(t)});break}case"attribute":r=e.name,Ri(e.targets,e=>{e.removeAttribute(r)});break;case"styles":!function(e,t){qi(e,t,(e,t)=>{e.style.removeProperty(t)})}(e.targets,e.properties);break;case"element":for(const t of e.targets)ca(t)}var r}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;if(!this.validateType(t.type,["classes","attribute","styles","element"]))return!1;if(!this.validateTargets(t.targets))return!1;if("classes"===t.type){if(!this.validateStringArray(e.classes,1))return!1}else if("attribute"===t.type){if("string"!=typeof e.name||0===e.name.length)return!1}else if("styles"===t.type&&!this.validateStringArray(e.properties,1))return!1;return!0}},ji(t,"RemoveCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),Pi(t,n)})(),t})();const da=Ui(ua);function ma(e){const t=e.trim().match(/^(\d+(?:\.\d+)?)\s*(s|ms|sec|seconds?|milliseconds?)?$/i);if(!t)return null;const r=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();return"ms"===n||"millisecond"===n||"milliseconds"===n?{number:r,milliseconds:Math.floor(r)}:"s"===n||"sec"===n||"second"===n||"seconds"===n?{number:r,milliseconds:Math.floor(1e3*r)}:null}function pa(e,t=300){if("number"==typeof e)return Math.max(0,Math.floor(e));if("string"==typeof e){const r=ma(e);return r?r.milliseconds:t}return t}function ha(e){if("number"==typeof e){if(0>e)throw Error("Duration must be >= 0");return Math.floor(e)}if("string"==typeof e){const t=ma(e);if(!t)throw Error(`Invalid duration format: "${e}"`);return t.milliseconds}throw Error("Invalid duration type: "+typeof e)}function fa(e){return e&&"none"!==e?e.split(",").map(e=>{const t=parseFloat(e.trim());return isNaN(t)?0:e.includes("s")&&!e.includes("ms")?1e3*t:t}):[0]}function ya(e,t){let r=0;for(let n=0;e.length>n;n++)r=Math.max(r,(e[n]||0)+(t[n]||0));return r}function ga(e){return 0===e.length?[]:"SUMMARY"===e[0].tagName?e.map(e=>e.closest("details")).filter(e=>null!==e):e}function va(e){return"DIALOG"===e.tagName}function ba(e){return"DETAILS"===e.tagName}function wa(e,t,r){return()=>{"class"===t?e.classList.toggle(r):"attribute"===t&&Mi(e,r)}}function ka(e,t,r,n){const s=wa(e,t,r),i=setTimeout(s,n);return()=>{clearTimeout(i)}}function Ea(e,t,r,n){const s=wa(e,t,r),i=()=>{s(),e.removeEventListener(n,i)};return e.addEventListener(n,i,{once:!0}),()=>{e.removeEventListener(n,i)}}function xa(e,t,r){if(t.startsWith("@")){const n=t.substring(1);return void(!1===r?e.removeAttribute(n):e.setAttribute(n,!0===r?"":r+""))}const n=r+"";switch(t){case"textContent":return void(e.textContent=n);case"innerHTML":return void(e.innerHTML=n);case"innerText":return void(e.innerText=n);case"id":return void(e.id=n);case"className":return void(e.className=n);case"value":return void("value"in e&&(e.value=n));case"checked":return void("checked"in e&&(e.checked=!!r))}if(t.includes(".")){const n=t.split(".");let s=e;for(let e=0;n.length-1>e;e++)if(s=s[n[e]],null==s)return;return void(s[n[n.length-1]]=r)}if(t.includes("-")||t in e.style)e.style.setProperty(t,n);else try{e[t]=r}catch(e){if(!(e instanceof TypeError&&(e.message.includes("only a getter")||e.message.includes("read only"))))throw Error(`Cannot set property '${t}': ${e instanceof Error?e.message:"Unknown error"}`)}}function Ca(e){return null==e||""===e}const Sa=/^the\s+(.+?)\s+of\s+(.+)$/i,Aa=new Set(["disabled","checked","hidden","readOnly","readonly","required","multiple","selected","autofocus","autoplay","controls","loop","muted","open","reversed","async","defer","noValidate","novalidate","formNoValidate","formnovalidate","draggable","spellcheck","contentEditable"]);function Ta(e){return"string"==typeof e&&Sa.test(e)}function Oa(e,t){const r=e.match(Sa);if(!r)return null;try{return{element:Ji(r[2].trim(),t),property:r[1].trim()}}catch{return null}}async function La(e,t,r){if(function(e){return!(!e||"object"!=typeof e)&&"propertyOfExpression"===e.type&&"object"==typeof e.property&&null!==e.property}(e))return async function(e,t,r){const n=e.property?.name;if(!n)return null;let s=await t.evaluate(e.target,r);return Array.isArray(s)&&(s=s[0]),dr(s)?{element:s,property:n}:null}(e,t,r);if(function(e){return!(!e||"object"!=typeof e)&&"propertyAccess"===e.type&&("string"==typeof e.property||"object"==typeof e.property&&null!==e.property&&"string"==typeof e.property.name)}(e))return async function(e,t,r){const n="string"==typeof e.property?e.property:e.property?.name;if(!n)return null;let s=await t.evaluate(e.object,r);return Array.isArray(s)&&(s=s[0]),dr(s)?{element:s,property:n}:null}(e,t,r);const n=e;if("possessiveExpression"===n?.type||"memberExpression"===n?.type){const e=n.object,s=n.property;let i=await t.evaluate(e,r);if(Array.isArray(i)&&(i=i[0]),!dr(i))return null;const a=s?.name||s?.value;return a?{element:i,property:a}:null}return null}function Pa(e,t){const{element:r,property:n}=e;n.startsWith("*")?ra(r,n.substring(1),t+""):xa(r,n,t)}async function ja(e,t,r){let n,s;if(e?.for){const s=await t.evaluate(e.for,r);n="number"==typeof s?s:"string"==typeof s?pa(s):void 0}if(e?.until){const n=await t.evaluate(e.until,r);"string"==typeof n&&(s=n)}return{duration:n,untilEvent:s}}function Na(e,t){const r=t?.name,n=function(e){if(!e||"object"!=typeof e)return!1;if("identifier"!==e.type)return!1;const t=e.name;return"string"==typeof t&&function(e){if("string"!=typeof e)return!1;const t=e.toLowerCase();return na.includes(t)}(t)}(t);if(dr(e)||Array.isArray(e)&&e.every(e=>dr(e)))return{type:"element",expression:""};if(n&&r)return{type:"element",expression:r};if("string"==typeof e){const t=e.trim();return t.startsWith("@")||t.startsWith("[@")?{type:"attribute",expression:t}:t.startsWith("*")?{type:"css-property",expression:t}:t.startsWith(".")?{type:"class",expression:t}:t.startsWith("#")||function(e){if("string"!=typeof e)return!1;const t=e.toLowerCase();return na.some(e=>t.includes(e))}(t)?{type:"element",expression:t}:{type:"class",expression:t}}return{type:"class",expression:""}}const Ia=Ui((()=>{let e,t,r=[Wi({description:"Toggle classes, attributes, or interactive elements",syntax:["toggle <class> [on <target>]","toggle @attr","toggle <element> [as modal]","toggle <expr> for <duration>"],examples:["toggle .active on me","toggle @disabled","toggle #myDialog as modal","toggle .loading for 2s"],sideEffects:["dom-mutation"]}),Hi({name:"toggle",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("toggle command requires an argument");let n=!1;if(function(e){if(!e||"asExpression"!==e.type)return!1;const t=e.targetType,r="string"==typeof t?t:t?.name;return"string"==typeof r&&"modal"===r.toLowerCase()}(e.args[0])){n=!0;const t=e.args[0].expression;e={...e,args:[t,...e.args.slice(1)]}}const s=e.args[0],i=s?.name;if("between"===i&&e.args.length>=4){const{duration:n,untilEvent:s}=await ja(e.modifiers,t,r),i=async e=>{const n=e;return"selector"===n?.type?n.value:t.evaluate(e,r)},a=await i(e.args[1]),o=await i(e.args[3]),l=[];for(let t=4;e.args.length>t;t++){const r=e.args[t]?.name;"on"!==r&&"from"!==r&&l.push(e.args[t])}const c={filterPrepositions:!0,fallbackModifierKey:"on"},u=await Qi(l,t,r,"toggle",c,e.modifiers);return{type:"classes-between",classA:(a+"").replace(/^\./,""),classB:(o+"").replace(/^\./,""),targets:u,duration:n,untilEvent:s}}const a=await La(s,t,r);if(a)return{type:"property",target:a};if("selector"===s.type&&"string"==typeof s.value&&s.value.startsWith("*")){let n=s.value,i=1;if("*"===n&&e.args.length>1&&"identifier"===e.args[1].type&&(n="*"+e.args[1].name,i=2),"*"===n&&e.modifiers?.on){const s=e.modifiers.on?.name;if(s&&["display","visibility","opacity"].includes(s)){n="*"+s;const{duration:i,untilEvent:a}=await ja(e.modifiers,t,r),o=ta(n);if(o){const e=r.me;return{type:"css-property",property:o,targets:e?[e]:[],duration:i,untilEvent:a}}}}const a=ta(n);if(a){const{duration:n,untilEvent:s}=await ja(e.modifiers,t,r),o={filterPrepositions:!0,fallbackModifierKey:"on"};return{type:"css-property",property:a,targets:await Qi(e.args.slice(i),t,r,"toggle",o,e.modifiers),duration:n,untilEvent:s}}}const{duration:o,untilEvent:l}=await ja(e.modifiers,t,r),{value:c}=await ia(s,t,r);if(Ta(c)){const e=Oa(c,r);if(e)return{type:"property",target:e}}const{type:u,expression:d}=Na(c,s),m={filterPrepositions:!0,fallbackModifierKey:"on"};switch(u){case"attribute":{const{name:n,value:s}=Ii(d);return{type:"attribute",name:n,value:s,targets:await Qi(e.args.slice(1),t,r,"toggle",m,e.modifiers),duration:o,untilEvent:l}}case"css-property":{const n=ta(d);if(!n)throw Error("Invalid CSS property: "+d);return{type:"css-property",property:n,targets:await Qi(e.args.slice(1),t,r,"toggle",m,e.modifiers)}}case"element":{let i;if(dr(c))i=[c];else if(Array.isArray(c)&&c.every(e=>dr(e)))i=c;else if(d){const e=document.querySelectorAll(d);i=Array.from(e).filter(e=>dr(e))}else i=await Qi([s],t,r,"toggle",m,e.modifiers);const a=function(e){if(0===e.length)return null;const t=e[0].tagName;if(!e.every(e=>e.tagName===t))return null;switch(t){case"DIALOG":return"dialog";case"DETAILS":return"details";case"SELECT":return"select";case"SUMMARY":return e.map(e=>e.closest("details")).filter(e=>null!==e).length>0?"details":null;default:return null}}(i);if("dialog"===a){const s=n?"modal":await async function(e,t,r,n){if(t?.as){const e=await r.evaluate(t.as,n);if("string"==typeof e&&"modal"===e.toLowerCase())return"modal"}if(e.length>=2){const t=await r.evaluate(e[1],n);if("string"==typeof t){const s=t.toLowerCase();if("modal"===s||"as modal"===s)return"modal";if("as"===s&&e.length>=3){const t=await r.evaluate(e[2],n);if("string"==typeof t&&"modal"===t.toLowerCase())return"modal"}}}return"non-modal"}(e.args,e.modifiers,t,r);return{type:"dialog",mode:s,targets:i}}return"details"===a?{type:"details",targets:ga(i)}:"select"===a?{type:"select",targets:i}:{type:"classes",classes:_i(d),targets:i,duration:o,untilEvent:l}}default:{const n=_i(d||c);if(!n.length)throw Error("toggle command: no valid class names found");return{type:"classes",classes:n,targets:await Qi(e.args.slice(1),t,r,"toggle",m,e.modifiers),duration:o,untilEvent:l}}}}async execute(e,t){switch(e.type){case"classes":{const r=Di(e.classes,t);if(0===r.length)return[...e.targets];if(qi(e.targets,r,(e,t)=>{e.classList.toggle(t)}),(e.duration||e.untilEvent)&&r.length)for(const t of e.targets)e.duration&&ka(t,"class",r[0],e.duration),e.untilEvent&&Ea(t,"class",r[0],e.untilEvent);return[...e.targets]}case"attribute":if(r=e.name,n=e.value,Ri(e.targets,e=>{Mi(e,r,n)}),e.duration||e.untilEvent)for(const t of e.targets)e.duration&&ka(t,"attribute",e.name,e.duration),e.untilEvent&&Ea(t,"attribute",e.name,e.untilEvent);return[...e.targets];case"css-property":return Ri(e.targets,t=>function(e,t){const r=window.getComputedStyle(e);switch(t){case"display":"none"===r.display?(e.style.display=e.dataset.previousDisplay||"block",delete e.dataset.previousDisplay):(e.dataset.previousDisplay=r.display,e.style.display="none");break;case"visibility":e.style.visibility="hidden"===r.visibility?"visible":"hidden";break;case"opacity":e.style.opacity=0===parseFloat(r.opacity)?"1":"0"}}(t,e.property));case"property":return function(e){const t=function(e){const{element:t,property:r}=e;return r.startsWith("*")?function(e,t){return window.getComputedStyle(e).getPropertyValue(t)}(t,r.substring(1)):Lr(t,r)}(e),r=e.property,n=r.startsWith("@")?r.substring(1):r;if("boolean"==typeof t||Aa.has(n)||Aa.has(n.toLowerCase())){const r=!t;return Pa(e,r),r}if("number"==typeof t){const r=0===t?1:0;return Pa(e,r),r}if("string"==typeof t){const n="__ht_"+r,s=e.element[n];return""===t&&void 0!==s?(Pa(e,s),s):(e.element[n]=t,Pa(e,""),"")}Pa(e,!t)}(e.target),[e.target.element];case"dialog":return Ri(e.targets,t=>{return n=e.mode,void((r=t).open?r.close():"modal"===n?r.showModal():r.show());var r,n});case"details":return Ri(e.targets,e=>{var t;(t=e).open=!t.open});case"select":return Ri(e.targets,e=>function(e){if(document.activeElement===e)e.blur();else{if(e.focus(),"showPicker"in e&&"function"==typeof e.showPicker)try{return void e.showPicker()}catch{}const t=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});e.dispatchEvent(t)}}(e));case"classes-between":for(const t of e.targets){const r=t.classList.contains(e.classA),n=t.classList.contains(e.classB);r?(t.classList.remove(e.classA),t.classList.add(e.classB)):n?(t.classList.remove(e.classB),t.classList.add(e.classA)):t.classList.add(e.classA)}if(e.duration||e.untilEvent)for(const t of e.targets)e.duration&&ka(t,"class",e.classA,e.duration),e.untilEvent&&Ea(t,"class",e.classA,e.untilEvent);return[...e.targets]}var r,n}},ji(t,"ToggleCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})());const Ra=Ui((()=>{let e,t,r=[Wi({description:"Insert content into elements or properties",syntax:["put <value> into <target>","put <value> before <target>","put <value> after <target>"],examples:['put "Hello World" into me',"put <div>Content</div> before #target","put value into #elem's innerHTML"],sideEffects:["dom-mutation"]}),Hi({name:"put",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("put requires arguments");const n=e=>e?.type||"unknown",s=["into","before","after","at","at start of","at end of"];let i=-1,a=null;for(let t=0;e.args.length>t;t++){const r=e.args[t],o=n(r),l="literal"===o?r.value:r.name;if(("literal"===o||"identifier"===o)&&s.includes(l)){i=t,a=l;break}}let o=null,l=null;if(-1===i){const t=s.find(t=>e.modifiers[t]);if(t)o=e.args[0],a=t,l=e.modifiers[t];else if(3>e.args.length){if(2>e.args.length)throw Error("put requires content and position");o=e.args[0],a=e.args[1]?.value||e.args[1]?.name||"into"}else o=e.args[0],a=e.args[1]?.value||e.args[1]?.name||null,l=e.args[2]}else o=e.args.slice(0,i)[0]||null,l=e.args.slice(i+1)[0]||null;if(!o)throw Error("put requires content");if(!a)throw Error("put requires position keyword");const c=await t.evaluate(o,r),u=this.mapPosition(a);let d,m,p=null;if(l){const e=n(l),s=await La(l,t,r);if(s)return{value:c,targets:[s.element],position:"replace",memberPath:s.property};if("memberExpression"===e){const e=l.object,n=l.property;if("selector"===e?.type)p=e.value;else if("identifier"===e?.type){const s=e.name;if("my"===s||"me"===s||"I"===s){if(r.me&&n?.name)return{value:c,targets:[r.me],position:"replace",memberPath:n.name}}else if("its"===s||"it"===s){const e=await t.evaluate(l,r);"string"==typeof e&&(p=e)}else p=s}if(p&&n?.name)d=n.name;else if(!p&&!d){const e=await t.evaluate(l,r);"string"==typeof e&&(p=e)}}else if("identifier"===e&&"me"===l.name)p=null;else if("selector"===e||"cssSelector"===e)p=l.value||l.selector;else if("literal"===e){const e=l.value;if("string"==typeof e&&Ta(e)){const t=Oa(e,r);if(t)return{value:c,targets:[t.element],position:"replace",memberPath:t.property}}"string"==typeof e&&this.looksLikeCss(e)?p=e:m=e+""}else if("identifier"===e){const e=l.name;if(this.looksLikeCss(e))p=e;else{const n=await t.evaluate(l,r),s=this.resolveEvaluatedAsElements(n);if(s)return{value:c,targets:s,position:u,memberPath:d};m=e}}else{const e=await t.evaluate(l,r),n=this.resolveEvaluatedAsElements(e);if(n)return{value:c,targets:n,position:u,memberPath:d};"string"==typeof e&&(this.looksLikeCss(e)?p=e:m=e)}}return m?{value:c,targets:[],position:u,memberPath:d,variableName:m}:{value:c,targets:await this.resolveTargets(p,r),position:u,memberPath:d}}async execute(e,t){const{value:r,targets:n,position:s,memberPath:i,variableName:a}=e;if(a)return t.locals&&t.locals.set(a,r),t[a]=r,void Object.assign(t,{it:r});if(i)for(const e of n)this.setProperty(e,i,r);else for(const e of n){const t=this.parseValue(r);this.insertContent(e,t,s)}return n}mapPosition(e){switch(e){case"into":return"replace";case"before":return"beforebegin";case"after":return"afterend";case"at start of":return"afterbegin";case"at end of":return"beforeend";default:throw Error("Invalid position: "+e)}}async resolveTargets(e,t){if(!e||"me"===e){if(!t.me||!dr(t.me))throw Error("put: no target and context.me is null");return[t.me]}const r=Array.from(document.querySelectorAll(e)).filter(e=>dr(e));if(!r.length)throw Error(`No elements: "${e}"`);return r}parseValue(e){return dr(e)?e:null==e?"":e+""}insertContent(e,t,r){if("replace"!==r)if(dr(t)){const n=t;switch(r){case"beforebegin":e.parentElement?.insertBefore(n,e);break;case"afterbegin":e.insertBefore(n,e.firstChild);break;case"beforeend":e.appendChild(n);break;case"afterend":e.parentElement?.insertBefore(n,e.nextSibling)}}else t.includes("<")&&t.includes(">")?e.insertAdjacentHTML(r,t):e.insertAdjacentText(r,t);else dr(t)?(e.innerHTML="",e.appendChild(t)):t.includes("<")&&t.includes(">")?e.innerHTML=t:e.textContent=t}resolveEvaluatedAsElements(e){if(dr(e))return[e];if(Array.isArray(e)){const t=e.filter(dr);return t.length>0?t:null}if("undefined"!=typeof NodeList&&e instanceof NodeList){const t=Array.from(e).filter(dr);return t.length>0?t:null}return null}looksLikeCss(e){return!!e&&(!!/^[#.\[]/.test(e)||(!(!/[>+~\s]/.test(e)||1>=e.length)||["div","span","p","a","button","input","form","ul","li","ol","table","tr","td","th","img","h1","h2","h3","h4","h5","h6","section","article","header","footer","nav","main","aside","dialog","label","select","option","textarea"].includes(e.toLowerCase())))}setProperty(e,t,r){const n=t.split(".");let s=e;for(let e=0;n.length-1>e;e++){if(!s[n[e]])throw Error(`Property path "${t}" does not exist`);s=s[n[e]]}s[n[n.length-1]]=r}},ji(t,"PutCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})());class qa{async parseInput(e,t,r){const{targets:n}=await async function(e,t,r,n){return{targets:await Qi(e.args,t,r,n)}}(e,t,r,this.mode);return{targets:n,mode:this.mode,defaultDisplay:"show"===this.mode?"block":void 0}}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!(!Array.isArray(t.targets)||!t.targets.every(e=>dr(e))||"show"!==t.mode&&"hide"!==t.mode||"show"===t.mode&&"string"!=typeof t.defaultDisplay)}showElement(e,t="block"){const r=e.dataset.originalDisplay;void 0!==r?(e.style.display=r||t,delete e.dataset.originalDisplay):"none"===e.style.display&&(e.style.display=t),e.classList.add("show")}hideElement(e){if(!e.dataset.originalDisplay){const t=e.style.display;e.dataset.originalDisplay="none"===t?"":t}e.style.display="none",e.classList.remove("show")}}let Ma=(()=>{let e,t,r=[Wi({description:"Hide elements by setting display to none",syntax:"hide [<target>]",examples:["hide me","hide #modal","hide .warnings","hide <button/>"],sideEffects:["dom-mutation"]}),Hi({name:"hide",category:"dom"})],n=[],s=qa;return t=class extends s{constructor(){super(...arguments),this.mode="hide"}async execute(e,t){for(const t of e.targets)this.hideElement(t)}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&!!t.targets.every(e=>dr(e))}},ji(t,"HideCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),Pi(t,n)})(),t})();const _a=Ui(Ma);let $a=(()=>{let e,t,r=[Wi({description:"Show elements by restoring display property",syntax:"show [<target>]",examples:["show me","show #modal","show .hidden","show <button/>"],sideEffects:["dom-mutation"]}),Hi({name:"show",category:"dom"})],n=[],s=qa;return t=class extends s{constructor(){super(...arguments),this.mode="show"}async execute(e,t){const r=e.defaultDisplay||"block";for(const t of e.targets)this.showElement(t,r)}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&!!t.targets.every(e=>dr(e))&&"string"==typeof t.defaultDisplay}},ji(t,"ShowCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),Pi(t,n)})(),t})();const Va=Ui($a),Da={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function za(e){return e.replace(/[&<>"']/g,e=>Da[e])}let Ba=(()=>{let e,t,r=[Wi({description:"Create DOM elements or class instances",syntax:["make a <tag#id.class1.class2/>","make a <ClassName> from <args> called <identifier>"],examples:["make an <a.navlink/> called linkElement",'make a URL from "/path/", "https://origin.example.com"'],sideEffects:["dom-creation","data-mutation"]}),Hi({name:"make",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){const n=e.modifiers.an??e.modifiers.a??e.args[0];if(!n)throw Error("Make command requires class name or DOM element expression");const s=n.raw;let i="string"==typeof s&&s.startsWith("<")?s:await t.evaluate(n,r);if(null==i)throw Error("Make command requires class name or DOM element expression");"string"==typeof i&&i.startsWith("<")&&(i=await async function(e,t){if(!e.includes("{"))return e;const r=/\{([^{}]+)\}/g,n=[];let s;for(;null!==(s=r.exec(e));){let e=s[0];try{const r=await xn(s[1].trim(),t);null!=r&&(e=za(r+""))}catch{}n.push({index:s.index,length:s[0].length,text:e})}let i=e;for(let e=n.length-1;e>=0;e--){const{index:t,length:r,text:s}=n[e];i=i.slice(0,t)+s+i.slice(t+r)}return i}(i,r));const a=void 0!==e.modifiers.an?"an":"a",o=await async function(e,t,r){if(!e)return[];if("arrayLiteral"===e.type&&Array.isArray(e.args)){const n=[];for(const s of e.args)n.push(await t.evaluate(s,r));return n}const n=await t.evaluate(e,r);return Array.isArray(n)?n:[n]}(e.modifiers.from,t,r),l=await async function(e,t,r){if(!e)return;if(("symbol"===e.type||"identifier"===e.type)&&"string"==typeof e.name)return e.name;const n=await t.evaluate(e,r);return"string"==typeof n?n:void 0}(e.modifiers.called,t,r);return{article:a,expression:i,constructorArgs:o,variableName:l}}async execute(e,t){const{expression:r,constructorArgs:n=[],variableName:s}=e,i="string"==typeof r&&r.startsWith("<"),a=i&&r.endsWith("/>")?function(e){const t=e.slice(1,-2);let r="div",n=t;const s=t.match(/^([a-zA-Z][a-zA-Z0-9]*)/);s&&(r=s[1],n=t.slice(s[0].length));const i=document.createElement(r),a=n.split(/(?=[.#])/);for(const e of a)if(e.startsWith("#")){const t=e.slice(1);t&&(i.id=t)}else if(e.startsWith(".")){const t=e.slice(1);t&&i.classList.add(t)}return i}(r):i&&/<\/[a-zA-Z]/.test(r)?function(e){const t=document.createElement("template");t.innerHTML=e.trim();const r=t.content.firstElementChild;if(r&&dr(r))return r;const n=document.createElement("div");n.innerHTML=e.trim();const s=n.firstElementChild;return s&&dr(s)?s:n}(r):function(e,t,r){if(dr(e))return e;const n=e+"";let s;if("undefined"!=typeof window&&(s=window[n]),s||"undefined"==typeof global||(s=global[n]),!s&&r.variables?.has(n)&&(s=r.variables.get(n)),!s||"function"!=typeof s)throw Error(`Constructor '${n}' not found or is not a function`);return 0===t.length?new s:new s(...t)}(r,n,t);return Object.assign(t,{it:a}),s&&fr(s,a,t),a}},ji(t,"MakeCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})();const Fa=Ui(Ba),Ha=Ui((()=>{let e,t,r=[Wi({description:"Remove all children from an element (sets innerHTML to empty)",syntax:["empty","empty <target>","empty the <target>"],examples:["empty me","empty #list","empty .results"],sideEffects:["dom-mutation"]}),Hi({name:"empty",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){return{targets:await Qi(e.args,t,r,"empty",{filterPrepositions:!0,fallbackModifierKey:"on"},e.modifiers)}}async execute(e,t){for(const t of e.targets)t.innerHTML=""}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&t.targets.every(e=>dr(e))}},ji(t,"EmptyCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})());function Wa(e){return e.hasAttribute("popover")}const Ua=Ui((()=>{let e,t,r=[Wi({description:"Open a dialog, details element, or popover",syntax:["open [<target>]","open <dialog> as modal","open <dialog> as non-modal"],examples:["open","open #myDialog","open #details","open #popup as non-modal"],sideEffects:["dom-mutation"]}),Hi({name:"open",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){const n=(e.args??[]).filter(e=>{const t=e;if("identifier"!==t?.type)return!0;const r=t.name?.toLowerCase();return"as"!==r&&"modal"!==r&&"non-modal"!==r&&"nonmodal"!==r}),s=ga(await Qi(n,t,r,"open",{filterPrepositions:!0,fallbackModifierKey:"on"},e.modifiers)),i=await async function(e,t,r,n){if(t?.as){const e=await r.evaluate(t.as,n);if("string"==typeof e){const t=e.toLowerCase().trim();if("non-modal"===t||"nonmodal"===t)return"non-modal";if("modal"===t)return"modal"}}for(let t=0;e.length-1>t;t++){const s=e[t];if("identifier"===s?.type&&"as"===s.name?.toLowerCase()){const s=await r.evaluate(e[t+1],n);if("string"==typeof s){const e=s.toLowerCase().trim();if("non-modal"===e||"nonmodal"===e)return"non-modal";if("modal"===e)return"modal"}}}return"modal"}(e.args??[],e.modifiers??{},t,r);return{targets:s,dialogMode:i}}async execute(e,t){for(const t of e.targets)if(va(t))t.open||("modal"===e.dialogMode?t.showModal():t.show());else if(ba(t))t.open=!0;else if(Wa(t)){const e=t;if("function"==typeof e.showPopover)try{e.showPopover()}catch{}}}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!(!Array.isArray(t.targets)||!t.targets.every(e=>dr(e))||"modal"!==t.dialogMode&&"non-modal"!==t.dialogMode)}},ji(t,"OpenCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})());function Ka(e){return e.hasAttribute("popover")}const Ja=Ui((()=>{let e,t,r=[Wi({description:"Close a dialog, details element, or popover",syntax:["close","close <target>"],examples:["close","close #myDialog","close #details","close #popup"],sideEffects:["dom-mutation"]}),Hi({name:"close",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){return{targets:ga(await Qi(e.args,t,r,"close",{filterPrepositions:!0,fallbackModifierKey:"on"},e.modifiers))}}async execute(e,t){for(const t of e.targets)if(va(t))t.open&&t.close();else if(ba(t))t.open=!1;else if(Ka(t)){const e=t;if("function"==typeof e.hidePopover)try{e.hidePopover()}catch{}}}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&t.targets.every(e=>dr(e))}},ji(t,"CloseCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})());function Za(e){const t=e.tagName;return"INPUT"===t||"TEXTAREA"===t}const Xa=Ui((()=>{let e,t,r=[Wi({description:"Select the contents of a text field, or select the contents of a DOM element",syntax:["select","select <target>"],examples:["select #search","select <textarea/>","select me"],sideEffects:["focus","dom-mutation"]}),Hi({name:"select",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){return{targets:await Qi(e.args,t,r,"select",{filterPrepositions:!0,fallbackModifierKey:"on"},e.modifiers)}}async execute(e,t){if(0!==e.targets.length)for(const t of e.targets){if(Za(t)){t.select();continue}const e=t.ownerDocument??("undefined"!=typeof document?document:null),r=e?.defaultView;if(!e||!r)continue;const n=r.getSelection?.();if(n)try{const r=e.createRange();r.selectNodeContents(t),n.removeAllRanges(),n.addRange(r)}catch{}}}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&t.targets.every(e=>dr(e))}},ji(t,"SelectCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})());function Ya(e){return"FORM"===e.tagName}const Ga=Ui((()=>{let e,t,r=[Wi({description:"Reset a <form> element to its default values (HTMLFormElement.reset())",syntax:["reset","reset <target>"],examples:["reset","reset #myForm","reset <form/>"],sideEffects:["dom-mutation"]}),Hi({name:"reset",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){return{targets:await Qi(e.args,t,r,"reset",{filterPrepositions:!0,fallbackModifierKey:"on"},e.modifiers)}}async execute(e,t){for(const t of e.targets)Ya(t)&&t.reset()}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&t.targets.every(e=>dr(e))}},ji(t,"ResetCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})());function Qa(e,t){if("boolean"==typeof e)return e;if("function"==typeof e)return!0;if(e instanceof Promise)throw Error("Condition must be awaited - use await in the condition expression");if("string"==typeof e){if("me"===e)return!!t.me;if("it"===e)return!!t.it;if("you"===e)return!!t.you;const r=hr(e,t);return void 0!==r?!!r:!!e}return!!e}const eo=Ui((()=>{let e,t,r=[Wi({description:"Conditional execution based on boolean expressions",syntax:["if <condition> then <commands>","if <condition> then <commands> else <commands>","unless <condition> <commands>"],examples:["if x > 5 then add .active","if user.isAdmin then show #adminPanel else hide #adminPanel","unless user.isLoggedIn showLoginForm"],sideEffects:["conditional-execution"],aliases:["unless"]}),Hi({name:"if",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){const n="unless"===e.commandName?.toLowerCase()?"unless":"if";if(!e.args||0===e.args.length)throw Error(n+" command requires a condition to evaluate");let s,i;if("unless"===n){if(2>e.args.length)throw Error("unless command requires a condition and at least one command");s=e.args.slice(1)}else if(e.args.length>=2&&e.args[1]?(s=e.args[1],i=3>e.args.length?void 0:e.args[2]):e.modifiers?.then&&(s=e.modifiers.then,i=e.modifiers.else),!s)throw Error('if command requires "then" branch with commands');return{mode:n,condition:await t.evaluate(e.args[0],r),thenCommands:s,elseCommands:i}}async execute(e,t){const{mode:r,condition:n,thenCommands:s,elseCommands:i}=e,a=Qa(n,t);let o,l;return("unless"===r?!a:a)?(o="then",l=await this.executeCommandsOrBlock(s,t),"unless"===r&&Object.assign(t,{it:l})):i&&"if"===r?(o="else",l=await this.executeCommandsOrBlock(i,t)):o="none",{mode:r,conditionResult:a,executedBranch:o,result:l}}async executeCommandsOrBlock(e,t){return"block"===e?.type?this.executeBlock(e,t):Array.isArray(e)?this.executeCommands(e,t):e}async executeBlock(e,t){const r=t.locals.get("_runtimeExecute");if(!r)throw Error("Runtime execute function not available");let n;if(e.commands?.length)for(const s of e.commands)n=await r(s,t);return n}async executeCommands(e,t){let r;for(const n of e)r=n?.execute?await n.execute(t):"function"==typeof n?await n():n;return r}},ji(t,"ConditionalCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})()),to=eo,ro=eo;let no=(()=>{let e,t,r=[Wi({description:"Iteration in hyperscript - for-in, counted, conditional, event-driven, and infinite loops",syntax:["repeat for <var> in <collection> { <commands> }","repeat <count> times { <commands> }","repeat while <condition> { <commands> }","repeat until <condition> { <commands> }","repeat forever { <commands> }"],examples:["repeat for item in items { log item }",'repeat 5 times { log "hello" }'],sideEffects:["iteration","conditional-execution"]}),Hi({name:"repeat",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){let n;if(e.modifiers?.index){const s=await t.evaluate(e.modifiers.index,r);"string"==typeof s&&(n=s)}let s,i=e.modifiers?.block||e.modifiers?.commands;if(!i){const t=[];for(let r=e.args.length-1;r>=0;r--){const n=e.args[r];if("block"===n?.type&&n.commands&&(t.unshift(n),2===t.length))break}2===t.length?(i=t[0],s=t[1]):1===t.length&&(i=t[0])}const a=e.args[0],o="identifier"===a?.type?a.name:null,l=!!e.modifiers?.bottomTested&&await t.evaluate(e.modifiers.bottomTested,r);if("for"===o||e.modifiers?.for){const a=e.args[1],o=a?.value||a?.name,l=e.args[2]?await t.evaluate(e.args[2],r):void 0;if(!o||void 0===l)throw Error("for loops require variable and collection");return{type:"for",variable:o,collection:Array.isArray(l)?l:[l],indexVariable:n,commands:i,elseCommands:s}}if("times"===o||e.modifiers?.times){const a=e.args[1],o=a?await t.evaluate(a,r):void 0,l="number"==typeof o?o:parseInt(o+"",10);if(isNaN(l))throw Error("times loops require a count number");return{type:"times",count:l,indexVariable:n,commands:i,elseCommands:s}}if("while"===o||e.modifiers?.while){const t=e.args[1]||e.modifiers?.while;if(!t)throw Error("while loops require a condition");return{type:"while",condition:t,indexVariable:n,commands:i,elseCommands:s,bottomTested:l}}if("until"===o&&e.modifiers?.from||"until-event"===o){const a=e.args[1],o=a?.value||a?.name;if(!o)throw Error("until-event loops require an event name");let l=r.me;if(e.args[2]){const n=e.args[2];if("identifier"===n?.type&&"document"===n.name)l=document;else if("identifier"===n?.type&&"window"===n.name&&"undefined"!=typeof window)l=window;else{const n=await t.evaluate(e.args[2],r);n instanceof EventTarget?l=n:"document"===n?l=document:"undefined"!=typeof window&&n===window&&(l=window)}}return{type:"until-event",eventName:o,eventTarget:l,indexVariable:n,commands:i,elseCommands:s}}if("until"===o||e.modifiers?.until){const t=e.args[1]||e.modifiers?.until;if(!t)throw Error("until loops require a condition");return{type:"until",condition:t,indexVariable:n,commands:i,elseCommands:s,bottomTested:l}}if("forever"===o||e.modifiers?.forever)return{type:"forever",indexVariable:n,commands:i,elseCommands:s};throw Error("repeat command requires a loop type (for/times/while/until/forever)")}async execute(e,t){const{type:r,variable:n,collection:s,condition:i,count:a,indexVariable:o,commands:l,elseCommands:c,bottomTested:u,eventName:d,eventTarget:m}=e;let p,h;switch(r){case"for":({config:p,iterCtx:h}=function(e,t,r){return{config:{type:"for",shouldContinue:e=>(e.collection?.length??0)>e.index,beforeIteration:(e,t)=>{e.item=e.collection?.[e.index],e.itemVariable&&t.locals&&t.locals.set(e.itemVariable,e.item)}},iterCtx:{index:0,collection:e,itemVariable:t,indexVariable:r}}}(s,n,o));break;case"times":({config:p,iterCtx:h}=function(e,t){return{config:{type:"times",shouldContinue:e=>(e.count??0)>e.index,beforeIteration:(e,t)=>{Object.assign(t,{it:e.index+1})}},iterCtx:{index:0,count:e,indexVariable:t}}}(a,o));break;case"while":({config:p,iterCtx:h}=function(e,t,r,n){return{config:{type:"while",shouldContinue:()=>t(e,r)},iterCtx:{index:0,conditionExpr:e,indexVariable:n}}}(i,Qa,t,o));break;case"until":({config:p,iterCtx:h}=function(e,t,r,n){return{config:{type:"until",shouldContinue:()=>!t(e,r)},iterCtx:{index:0,conditionExpr:e,indexVariable:n}}}(i,Qa,t,o));break;case"until-event":({config:p,iterCtx:h}=function(e,t,r){const n={index:0,eventFired:!1,indexVariable:r};return{config:{type:"until-event",shouldContinue:e=>!e.eventFired,eventSetup:{eventName:e,target:t,onEvent:()=>{n.eventFired=!0}}},iterCtx:n}}(d,m,o));break;case"forever":({config:p,iterCtx:h}=function(e,t=1e4){return{config:{type:"forever",maxIterations:t,shouldContinue:()=>!0},iterCtx:{index:0,indexVariable:e}}}(o));break;default:throw Error("Unknown repeat type: "+r)}if(u){const e=p.shouldContinue;p.shouldContinue=async t=>0===t.index||await e(t)}try{const e=await async function(e,t,r,n,s){const i=e.maxIterations??1e4;let a,o=0,l=!1;e.eventSetup&&e.eventSetup.target.addEventListener(e.eventSetup.eventName,e.eventSetup.onEvent,{once:!0});try{for(;i>o&&await e.shouldContinue(n);){e.beforeIteration&&await e.beforeIteration(n,r),n.indexVariable&&r.locals&&r.locals.set(n.indexVariable,o);try{a=await s(t,r)}catch(t){if(t instanceof Error){if(t.message.includes("BREAK")){l=!0;break}if(t.message.includes("CONTINUE")){o++,n.index=o,"until-event"===e.type&&await new Promise(e=>setTimeout(e,0));continue}}throw t}o++,n.index=o,"until-event"===e.type&&await new Promise(e=>setTimeout(e,0))}}finally{e.eventSetup&&!n.eventFired&&e.eventSetup.target.removeEventListener(e.eventSetup.eventName,e.eventSetup.onEvent)}return{iterations:o,lastResult:a,interrupted:l}}(p,l,t,h,this.executeCommands.bind(this));if(0===e.iterations&&!e.interrupted&&c){const e=await this.executeCommands(c,t);return Object.assign(t,{it:e}),{type:r,iterations:0,completed:!0,lastResult:e}}return Object.assign(t,{it:e.lastResult}),{type:r,iterations:e.iterations,completed:!e.interrupted,lastResult:e.lastResult,interrupted:e.interrupted}}catch(e){if(e instanceof Error&&(e.message.includes("BREAK")||e.message.includes("CONTINUE")))return{type:r,iterations:0,completed:!0,interrupted:e.message.includes("BREAK")};throw e}}async executeCommands(e,t){if(e&&"object"==typeof e&&"block"===e.type){const r=e,n=t.locals.get("_runtimeExecute");if(!n)throw Error("Runtime execute function not available");let s;if(r.commands)for(const e of r.commands)s=await n(e,t);return s}if(Array.isArray(e)){let r;for(const n of e)r="function"==typeof n?await n(t):n&&"function"==typeof n.execute?await n.execute(t):n;return r}return"function"==typeof e?await e(t):e}},ji(t,"RepeatCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})();const so=Ui(no);class io{async parseInput(e,t,r){return{signalType:this.signalType}}async execute(e,t){const r=Error(this.errorMessage);throw r[this.errorFlag]=!0,"exit"===this.signalType&&(r.returnValue=void 0,r.timestamp=Date.now()),r}}let ao=(()=>{let e,t,r=[Wi({description:"Exit from the current loop (repeat, for, while, until)",syntax:["break"],examples:["break","if found then break","repeat for item in items { if item == target then break }"],sideEffects:["control-flow"]}),Hi({name:"break",category:"control-flow"})],n=[],s=io;return t=class extends s{constructor(){super(...arguments),this.signalType="break",this.errorMessage="BREAK_LOOP",this.errorFlag="isBreak"}},ji(t,"BreakCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),Pi(t,n)})(),t})();const oo=Ui(ao);let lo=(()=>{let e,t,r=[Wi({description:"Skip to the next iteration of the current loop",syntax:["continue"],examples:["continue","if item.isInvalid then continue","repeat for item in items { if item.skip then continue; process item }"],sideEffects:["control-flow"]}),Hi({name:"continue",category:"control-flow"})],n=[],s=io;return t=class extends s{constructor(){super(...arguments),this.signalType="continue",this.errorMessage="CONTINUE_LOOP",this.errorFlag="isContinue"}},ji(t,"ContinueCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),Pi(t,n)})(),t})();const co=Ui(lo),uo=Ui((()=>{let e,t,r=[Wi({description:"Stop command execution or prevent event defaults",syntax:["halt","halt the event"],examples:["halt","halt the event","if error then halt",'on click halt the event then log "clicked"'],sideEffects:["control-flow","event-prevention"]}),Hi({name:"halt",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){if(e.args&&e.args.length>0){const n=e.args[0];return!n||"the"!==n.name&&"the"!==n.value?{target:await t.evaluate(e.args[0],r)}:{target:r.event}}return{}}async execute(e,t){let r=e.target;if(("the"===r&&t.event||"object"==typeof r&&null!==r&&"the"===r.target&&t.event)&&(r=t.event),this.isEvent(r)){const e=r;return e.preventDefault(),e.stopPropagation(),{halted:!0,timestamp:Date.now(),eventHalted:!0}}"halted"in t&&(t.halted=!0);const n=Error("HALT_EXECUTION");throw n.isHalt=!0,n}isEvent(e){return null!==e&&"object"==typeof e&&"preventDefault"in e&&"stopPropagation"in e}},ji(t,"HaltCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})()),mo=Ui((()=>{let e,t,r=[Wi({description:"Return a value from a command sequence or function, terminating execution",syntax:["return","return <value>"],examples:["return","return 42","return user.name","if found then return result"],sideEffects:["control-flow","context-mutation"]}),Hi({name:"return",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){return e.args&&0!==e.args.length?{value:await t.evaluate(e.args[0],r)}:{value:void 0}}async execute(e,t){const{value:r}=e;"returnValue"in t&&(t.returnValue=r),Object.assign(t,{it:r});const n=Error("RETURN_VALUE");throw n.isReturn=!0,n.returnValue=r,n}},ji(t,"ReturnCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})());let po=(()=>{let e,t,r=[Wi({description:"Immediately terminate execution of the current event handler or behavior",syntax:["exit"],examples:["exit","if no draggedItem exit","on click if disabled exit"],sideEffects:["control-flow"]}),Hi({name:"exit",category:"control-flow"})],n=[],s=io;return t=class extends s{constructor(){super(...arguments),this.signalType="exit",this.errorMessage="EXIT_COMMAND",this.errorFlag="isExit"}},ji(t,"ExitCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),Pi(t,n)})(),t})();const ho=Ui(po),fo=Ui((()=>{let e,t,r=[Wi({description:"Throw an error with a specified message",syntax:["throw <message>"],examples:['throw "Invalid input"','if not valid then throw "Validation failed"'],sideEffects:["error-throwing","execution-termination"]}),Hi({name:"throw",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){if(1>e.args.length)throw Error("throw command requires a message or error object");return{message:await t.evaluate(e.args[0],r)}}async execute(e,t){const{message:r}=e;let n;throw n=r instanceof Error?r:Error("string"==typeof r?r:r+""),n}},ji(t,"ThrowCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})()),yo=Ui((()=>{let e,t,r=[Wi({description:"Set values to variables, attributes, or properties",syntax:["set <target> to <value>"],examples:['set myVar to "value"','set @data-theme to "dark"','set my innerHTML to "content"'],sideEffects:["state-mutation","dom-mutation"]}),Hi({name:"set",category:"data"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("set command requires a target");const n=e.args[0],s=n?.name||n?.value,i=n?.scope,a=n?.type;if(a){const s=Re(a);if(s)return{type:"node-write",node:n,value:await this.extractValue(e,t,r),writer:s}}const o=await this.resolveAttributeWriteTarget(n,e,t,r);if(o){const n=await this.extractValue(e,t,r);return{type:"attribute",elements:o.elements,name:o.name,value:n}}const l=await La(n,t,r);if(l){const n=await this.extractValue(e,t,r);if(l.property.startsWith("*")){const e=l.property.substring(1);return{type:"style",element:l.element,property:e,value:n+""}}return{type:"property",element:l.element,property:l.property,value:n}}if("memberExpression"===n?.type||"propertyAccess"===n?.type){const s=await this.tryParseMemberExpression(n,e,t,r);if(s)return s}let c;if(c="identifier"!==n?.type&&"variable"!==n?.type||"string"!=typeof s?await t.evaluate(n,r):s,function(e){if("object"!=typeof e||null===e||Array.isArray(e))return!1;if(dr(e)||e instanceof Node)return!1;const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(c))return{type:"object-literal",properties:c,targets:await this.resolveTargets(e.modifiers.on,t,r)};if(Ta(c)){const n=Oa(c,r);if(n){const s=await this.extractValue(e,t,r);return{type:"property",element:n.element,property:n.property,value:s}}return this.parseTheXofY(c,e,t,r)}if("string"==typeof c&&ea(c)){const n=c.substring(1).trim(),s=await this.extractValue(e,t,r);return{type:"style",element:await this.resolveElement(e.modifiers.on,t,r),property:n,value:s+""}}if("string"==typeof c&&Ni(c)){const n=c.substring(1).trim(),s=await this.extractValue(e,t,r);return{type:"attribute",elements:await this.resolveTargets(e.modifiers.on,t,r),name:n,value:s}}if("string"==typeof c){const n=c.match(/^(my|me|its?|your?)\s+(.+)$/i);if(n){const s=Yi(n[1],r),i=await this.extractValue(e,t,r);return{type:"property",element:s,property:n[2],value:i}}}if(dr(c))return{type:"property",element:c,property:"textContent",value:await this.extractValue(e,t,r)};if(Array.isArray(c)&&c.length>0&&dr(c[0])){const n=await this.extractValue(e,t,r);return{type:"property",element:c[0],property:"textContent",value:n}}if("string"!=typeof c)throw Error("set command target must be a string or object literal"+("memberExpression"===n?.type||"propertyAccess"===n?.type?` (a property chain evaluated to ${null===c?"null":typeof c} \u2014 check that all intermediate objects exist)`:""));return{type:"variable",name:c,value:await this.extractValue(e,t,r),scope:"element"===i||"global"===i?i:void 0}}async execute(e,t){switch(e.type){case"variable":return"element"===e.scope?lr(t,e.name,e.value):"global"===e.scope?fr(e.name,e.value,t,"global"):fr(e.name,e.value,t),"result"!==e.name&&"it"!==e.name||Object.assign(t,{[e.name]:e.value}),Object.assign(t,{it:e.value}),{target:e.name,value:e.value,targetType:"variable"};case"attribute":for(const t of e.elements)t.setAttribute(e.name,e.value+"");return Object.assign(t,{it:e.value}),{target:"@"+e.name,value:e.value,targetType:"attribute"};case"property":return xa(e.element,e.property,e.value),Object.assign(t,{it:e.value}),{target:e.element,value:e.value,targetType:"property"};case"style":return ra(e.element,e.property,e.value),Object.assign(t,{it:e.value}),{target:e.element,value:e.value,targetType:"property"};case"object-literal":for(const t of e.targets)for(const[r,n]of Object.entries(e.properties))xa(t,r,n);return Object.assign(t,{it:e.properties}),{target:e.targets[0]||"unknown",value:e.properties,targetType:"property"};case"member-assignment":return e.container[e.property]=e.value,Object.assign(t,{it:e.value}),{target:e.property,value:e.value,targetType:"property"};case"node-write":return await e.writer(e.node,e.value,t),Object.assign(t,{it:e.value}),{target:e.node.name??"",value:e.value,targetType:"variable"};default:throw Error("Unknown input type: "+e.type)}}async resolveAttributeWriteTarget(e,t,r,n){const s=e;if("attributeAccess"===s?.type)return{elements:await this.resolveTargets(t.modifiers.on,r,n),name:s.attributeName};if("binaryExpression"===s?.type&&"of"===s.operator&&"attributeAccess"===s.left?.type){const e=await this.evaluateToElement(s.right,r,n);if(e)return{elements:[e],name:s.left.attributeName}}if("memberExpression"===s?.type&&"attributeAccess"===s.property?.type){const e=await this.evaluateToElement(s.object,r,n);if(e)return{elements:[e],name:s.property.attributeName}}return null}async evaluateToElement(e,t,r){const n=await t.evaluate(e,r),s=Array.isArray(n)?n[0]:n;return dr(s)?s:null}async tryParseMemberExpression(e,t,r,n){const s=e.object,i=e.property;if(s?.name&&i?.name){const e=s.name.toLowerCase();if(["me","my","it","its","you","your"].includes(e)){const s=Yi(e,n),a=await this.extractValue(t,r,n);return{type:"property",element:s,property:i.name,value:a}}}const a=e.object,o=e.computed;if(a){const s=a;let l;if("memberExpression"===s.type&&!s.computed&&"style"===s.property?.name&&s.object){const e=await r.evaluate(s.object,n);l=(e&&"object"==typeof e&&"style"in e?e.style:void 0)??await r.evaluate(a,n)}else l=await r.evaluate(a,n);if(null!=l&&"object"==typeof l){const s=o?await r.evaluate(e.property,n)+"":i?.name||"";if(s)return{type:"member-assignment",container:l,property:s,value:await this.extractValue(t,r,n)}}}return null}async extractValue(e,t,r){if(e.modifiers.to)return t.evaluate(e.modifiers.to,r);const n=e.args.findIndex(e=>"identifier"===e.type&&"to"===e.name);if(n>=0&&e.args.length>n+1)return t.evaluate(e.args[n+1],r);if(e.args.length>=2)return t.evaluate(e.args[1],r);throw Error('set command requires a value (use "to" keyword)')}async resolveElement(e,t,r){return Ji(e?await t.evaluate(e,r):void 0,r)}async resolveTargets(e,t,r){return Zi(e?await t.evaluate(e,r):void 0,r)}async parseTheXofY(e,t,r,n){const s=e.match(/^the\s+(.+?)\s+of\s+(.+)$/i);if(!s)throw Error('Invalid "the X of Y" syntax');const[,i,a]=s,o=Ji(a,n),l=await this.extractValue(t,r,n);return{type:"property",element:o,property:i.trim(),value:l}}validate(e){if(!e||"object"!=typeof e)return!1;const t=e;if(!t.type||"string"!=typeof t.type)return!1;if(!["variable","attribute","property","style","object-literal"].includes(t.type))return!1;switch(t.type){case"variable":return"string"==typeof t.name&&"value"in t;case"attribute":return"string"==typeof t.name&&Array.isArray(t.elements)&&t.elements.every(dr)&&"value"in t;case"property":return"string"==typeof t.property&&dr(t.element)&&"value"in t;case"style":return"string"==typeof t.property&&""!==t.property&&dr(t.element)&&"string"==typeof t.value;case"object-literal":return null!==t.properties&&"object"==typeof t.properties&&Array.isArray(t.targets)&&t.targets.length>0;default:return!1}}},ji(t,"SetCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})()),go=Ui((()=>{let e,t,r=[Wi({description:"Evaluate an expression and store the result in it",syntax:"get <expression>",examples:["get #my-dialog","get <button/>","get me.parentElement"],sideEffects:["context-mutation"]}),Hi({name:"get",category:"data"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args||0===e.args.length)throw Error("get command requires an expression argument");const n=e.args[0],s=await t.evaluate(n,r);return s instanceof NodeList&&1===s.length||Array.isArray(s)&&1===s.length?{value:s[0]}:{value:s}}execute(e,t){return t.it=e.value,Object.assign(t,{result:e.value}),{value:e.value}}validate(e){return"object"==typeof e&&null!==e&&"value"in e}},ji(t,"GetCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})());function vo(e){return e&&"object"==typeof e&&e.type||"unknown"}let bo=(()=>{let e,t,r=[Wi({description:"Modify a variable or property by a specified amount (default: 1)",syntax:["increment <target> [by <number>]","decrement <target> [by <number>]"],examples:["increment counter","increment counter by 5","decrement counter","decrement counter by 5"],sideEffects:["data-mutation","context-modification"],aliases:["decrement"]}),Hi({name:"increment",category:"data"})],n=[];return t=class{async parseInput(e,t,r){const n="decrement"===e.commandName?.toLowerCase()?"decrement":"increment",s=await async function(e,t,r,n){if(!e.args||0===e.args.length)throw Error(n+" command requires a target");const s=e.args[0];let i,a,o;const l=vo(s);if("identifier"===l)i=s.name,s.scope&&(a=s.scope);else if("literal"===l)i=s.value;else{const e=Re(l);if(e){const n=await t.evaluate(s,r),a="number"==typeof n?n:null==n?0:Number(n)||0;i=a,o={node:s,writer:e,currentValue:a}}else{const e=await t.evaluate(s,r);i=Array.isArray(e)&&e.length>0?e[0]:e}}let c=1,u=a;for(let n=1;e.args.length>n;n++){const s=e.args[n];if(s&&"literal"===s.type){const e=s.value;"global"===e?u="global":"number"==typeof e&&(c=e)}else if(s&&"literal"!==s.type){const e=await t.evaluate(s,r);"number"==typeof e&&(c=e)}}const d=e.modifiers?.by;if(d){const e=d.value;if("literal"===vo(d)&&"number"==typeof e)c=e;else if("literal"!==vo(d)){const e=await t.evaluate(d,r);"number"==typeof e&&(c=e)}}return{target:i,amount:c,...u&&{scope:u},...o&&{customWrite:o}}}(e,t,r,n);return{...s,operation:n}}async execute(e,t){const{target:r,property:n,scope:s,amount:i=1,operation:a="increment",customWrite:o}=e;if(o){const e=isFinite(i)?i:1,r="increment"===a?o.currentValue+e:o.currentValue-e;return await o.writer(o.node,r,t),Object.assign(t,{it:r}),r}const l=function(e,t,r,n){if("number"==typeof e)return e;if(dr(e)){const r=e;return t?t.startsWith("data-")||["id","class","title","alt","src","href"].includes(t)?pr(r.getAttribute(t)):pr(r[t]):pr(r.value||r.textContent)}return"string"==typeof e?"element"===r?pr(hr(e,n,"element")):"global"===r?pr(hr(e,n,"global")):e.includes(".")?function(e,t){const r=e.split("."),n=r[1],s=yr(r[0],t);return s?pr(s[n]):0}(e,n):pr("me"===e&&n.me?n.me.value||0:"it"===e?n.it||0:"you"===e&&n.you?n.you.value||0:hr(e,n)):pr(e)}(r,n,s,t);let c;if(isNaN(l))c=NaN;else{const e=isFinite(i)?i:1;c="increment"===a?l+e:l-e}return function(e,t,r,n,s){if(dr(e)){const r=e;return void(t?t.startsWith("data-")||["id","class","title","alt","src","href"].includes(t)?r.setAttribute(t,n+""):r[t]=n:"value"in r&&void 0!==r.value?r.value=n+"":r.textContent=n+"")}if("string"==typeof e){if("element"===r)return void fr(e,n,s,"element");if("global"===r)return void fr(e,n,s,"global");if(e.includes("."))return void function(e,t,r){const n=e.split("."),s=n[1],i=yr(n[0],r);i&&(i[s]=t)}(e,n,s);if("me"===e&&s.me)return void(s.me.value=n);if("it"===e)return void Object.assign(s,{it:n});if("you"===e&&s.you)return void(s.you.value=n);fr(e,n,s)}}(r,n,s,c,t),Object.assign(t,{it:c}),c}},ji(t,"NumericModifyCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})();const wo=Ui(bo),ko=Ui(bo),Eo=Ui((()=>{let e,t,r=[Wi({description:"Set a value only if it doesn't already exist",syntax:["default <expression> to <expression>"],examples:['default myVar to "fallback"','default @data-theme to "light"','default my innerHTML to "No content"'],sideEffects:["data-mutation","dom-mutation"]}),Hi({name:"default",category:"data"})],n=[];return t=class{async parseInput(e,t,r){if(1>e.args.length)throw Error("default command requires a target");const n=await t.evaluate(e.args[0],r);let s;if(e.modifiers?.to)s=await t.evaluate(e.modifiers.to,r);else{if(2>e.args.length)throw Error('default command requires a value (use "to <value>")');s=await t.evaluate(e.args[1],r)}return{target:n,value:s}}async execute(e,t){const{target:r,value:n}=e;if("string"==typeof r){if(r.startsWith("@"))return this.defaultAttribute(t,r.substring(1),n);const e=r.match(/^(my|its?|your?)\s+(.+)$/);if(e){const[,r,s]=e;return this.defaultElementProperty(t,r,s,n)}return this.defaultVariable(t,r,n)}if(dr(r))return this.defaultElementValue(t,r,n);throw Error("Invalid target type: "+typeof r)}defaultVariable(e,t,r){const n=hr(t,e);return null!=n?{target:t,value:r,wasSet:!1,existingValue:n,targetType:"variable"}:(fr(t,r,e),Object.assign(e,{it:r}),{target:t,value:r,wasSet:!0,targetType:"variable"})}defaultAttribute(e,t,r){if(!e.me)throw Error("No element context available for attribute default");const n=e.me.getAttribute(t);return null!==n?{target:"@"+t,value:r,wasSet:!1,existingValue:n,targetType:"attribute"}:(e.me.setAttribute(t,r+""),Object.assign(e,{it:r}),{target:"@"+t,value:r,wasSet:!0,targetType:"attribute"})}defaultElementProperty(e,t,r,n){const s=Yi(t,e,"default"),i=function(e,t){if(t.startsWith("@"))return e.getAttribute(t.substring(1));switch(t){case"textContent":return e.textContent;case"innerHTML":return e.innerHTML;case"innerText":return e.innerText;case"id":return e.id;case"className":return e.className;case"value":return"value"in e?e.value:void 0;case"checked":return"checked"in e?e.checked:void 0}if(t.includes(".")){const r=t.split(".");let n=e;for(const e of r){if(null==n)break;n=n[e]}return n}return t.includes("-")||t in e.style?e.style.getPropertyValue(t)||e.style[t]:e[t]}(s,r),a=`${t} ${r}`;return Ca(i)?(xa(s,r,n),Object.assign(e,{it:n}),{target:a,value:n,wasSet:!0,targetType:"property"}):{target:a,value:n,wasSet:!1,existingValue:i,targetType:"property"}}defaultElementValue(e,t,r){const n=function(e){return"value"in e?e.value:e.textContent}(t);return Ca(n)?(function(e,t){"value"in e?e.value=t+"":e.textContent=t+""}(t,r),Object.assign(e,{it:r}),{target:"element",value:r,wasSet:!0,targetType:"element"}):{target:"element",value:r,wasSet:!1,existingValue:n,targetType:"element"}}},ji(t,"DefaultCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})());function xo(e){const t=e.tagName;return"INPUT"===t||"TEXTAREA"===t||"SELECT"===t}const Co=Ui((()=>{let e,t,r=[Wi({description:"Reset a variable to null or clear the value of a form field (<input>, <textarea>, <select>)",syntax:["clear <var>","clear :var","clear <target>"],examples:["clear :count","clear myVar","clear #search","clear <textarea/>"],sideEffects:["state-mutation","dom-mutation"]}),Hi({name:"clear",category:"data"})],n=[];return t=class{async parseInput(e,t,r){const n=e.args?.[0],s=n?.type,i=n?.name;if(n&&("variable"===s||"identifier"===s&&"string"==typeof i))try{const e=await t.evaluate(n,r);if(!dr(e)&&!Array.isArray(e))return{type:"variable",name:i}}catch{return{type:"variable",name:i}}return{type:"form-fields",targets:await Qi(e.args,t,r,"clear",{filterPrepositions:!0,fallbackModifierKey:"on"},e.modifiers)}}async execute(e,t){if("variable"===e.type)return t.locals.set(e.name,null),void Object.assign(t,{it:null});for(const t of e.targets)xo(t)&&("SELECT"===t.tagName?t.selectedIndex=-1:t.value="")}validate(e){if("object"!=typeof e||null===e)return!1;if("variable"===e.type)return"string"==typeof e.name;if("form-fields"===e.type){const t=e.targets;return Array.isArray(t)&&t.every(e=>dr(e))}return!1}},ji(t,"ClearCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})());function So(e,t,r,n){return e?new Promise(r=>{const s=()=>{i({event:null,timedOut:!1,cancelled:!0})},i=To(()=>{e.removeEventListener(t,a),n&&n.removeEventListener("abort",s)},r),a=e=>{i({event:e,timedOut:!1,cancelled:!1})};n?.aborted?r({event:null,timedOut:!1,cancelled:!0}):(e.addEventListener(t,a),n&&n.addEventListener("abort",s))}):Promise.reject(Error("waitForEvent: no target provided"))}function Ao(e){return new Promise(t=>setTimeout(t,e))}function To(e,t){let r=!1;return n=>{r||(r=!0,e(),t(n))}}const Oo=Ui((()=>{let e,t,r=[Wi({description:"Wait for time delay, event, or race condition",syntax:["wait <time>","wait for <event>","wait for <event> or <condition>"],examples:["wait 2s","wait for click","wait for click or 1s","wait for mousemove(clientX, clientY)"],sideEffects:["time","event-listening"]}),Hi({name:"wait",category:"async"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("wait command requires an argument");if(e.modifiers.or)return this.parseRaceCondition(e,t,r);if(e.modifiers.for)return this.parseEventWait(e.modifiers.for,e.modifiers.from,t,r);const n=e.args[0];return"arrayLiteral"===n.type&&n.elements?this.parseEventArrayWait(n.elements,e.args[1],t,r):this.parseTimeWait(e.args[0],t,r)}async execute(e,t){const r=Date.now();if("time"===e.type)return await Ao(e.milliseconds),{type:"time",result:e.milliseconds,duration:Date.now()-r};if("event"===e.type){const n=e.target??t.me??document,s=(await So(n,e.eventName)).event;if(Object.assign(t,{it:s}),e.destructure)for(const r of e.destructure)r in s&&t.locals.set(r,s[r]);return{type:"event",result:s,duration:Date.now()-r}}const{result:n,winningCondition:s}=await this.executeRace(e.conditions,t);if(Object.assign(t,{it:n}),n instanceof Event&&"event"===s?.type&&s.destructure)for(const e of s.destructure)e in n&&t.locals.set(e,n[e]);return{type:n instanceof Event?"event":"time",result:n,duration:Date.now()-r}}async parseTimeWait(e,t,r){return{type:"time",milliseconds:ha(await t.evaluate(e,r))}}async parseEventWait(e,t,r,n){const s=await r.evaluate(e,n);if("string"!=typeof s)throw Error("wait for: event name must be a string");const i=s.match(/^(\w+)\(([^)]+)\)$/),a=i?i[1]:s,o=i?i[2].split(",").map(e=>e.trim()):void 0;let l;if(t){const e=await r.evaluate(t,n);if(!e||"object"!=typeof e||!("addEventListener"in e))throw Error("wait for from: target must be an EventTarget");l=e}else l=n.me??void 0;return{type:"event",eventName:a,target:l,destructure:o}}async parseEventArrayWait(e,t,r,n){const s=[];for(const t of e){const e=t;if("objectLiteral"===e.type&&e.properties){let t="",r=[];for(const n of e.properties){const e=n.key?.name||n.key?.value;"name"===e&&n.value?t=n.value.value||"":"args"===e&&n.value?.elements&&(r=n.value.elements.map(e=>e.value||e.name||""))}t&&s.push({name:t,params:r})}}let i;if(t){const e=await r.evaluate(t,n);e&&"object"==typeof e&&"addEventListener"in e&&(i=e)}return i||(i=n.me??void 0),1===s.length?{type:"event",eventName:s[0].name,target:i,destructure:s[0].params.length>0?s[0].params:void 0}:{type:"race",conditions:s.map(e=>({type:"event",eventName:e.name,target:i,destructure:e.params.length>0?e.params:void 0}))}}async parseRaceCondition(e,t,r){const n=[];e.modifiers.for?n.push(await this.parseEventWait(e.modifiers.for,e.modifiers.from,t,r)):e.args[0]&&n.push(await this.parseTimeWait(e.args[0],t,r));const s=await t.evaluate(e.modifiers.or,r),i=Array.isArray(s)?s:[s];for(const e of i)try{n.push({type:"time",milliseconds:ha(e)})}catch{if("string"==typeof e){const t=e.match(/^(\w+)\(([^)]+)\)$/);n.push(t?{type:"event",eventName:t[1],target:r.me??void 0,destructure:t[2].split(",").map(e=>e.trim())}:{type:"event",eventName:e,target:r.me??void 0})}}if(2>n.length)throw Error("wait: race requires at least 2 conditions");return{type:"race",conditions:n}}async executeRace(e,t){const r=new AbortController,n=r.signal,s=e.map(e=>"time"===e.type?Ao(e.milliseconds).then(()=>({result:e.milliseconds,winningCondition:e})):So(e.target??t.me??document,e.eventName,0,n).then(t=>({result:t.event,winningCondition:e})));try{return await Promise.race(s)}finally{r.abort()}}},ji(t,"WaitCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})()),Lo=new Map;let Po=[/^4\d{2}$/,/^5\d{2}$/],jo=(()=>{let e,t,r=[Wi({description:"Make HTTP requests with lifecycle event support",syntax:["fetch <url>","fetch <url> as <type>","fetch <url> with <options>"],examples:['fetch "/api/data"','fetch "/api/users" as json','fetch "/api/save" with { method:"POST" }'],sideEffects:["network","event-dispatching"]}),Hi({name:"fetch",category:"async"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("fetch requires a URL");const n=await this.parseURL(e.args[0],t,r),s=this.parseResponseType(e.modifiers.as);return{url:n,responseType:s,options:await this.parseRequestOptions(e.modifiers.with,t,r),throwOnError:!e.modifiers.doNotThrow&&"response"!==s}}async execute(e,t){const r=Date.now(),{url:n,responseType:s,options:i}=e,a=new AbortController;let o;t.me&&(o=()=>a.abort(),t.me.addEventListener("fetch:abort",o,{once:!0}));const l={...i,signal:a.signal},c=Lo.get(s);if(c?.accept){const e=new Headers(l.headers);e.has("Accept")||e.set("Accept",c.accept),l.headers=e}if(t.me){const e={...l,sender:t.me,headers:l.headers||{}};this.dispatchEvent(t.me,"fetch:beforeRequest",e),l.headers=e.headers}let u;i.timeout&&(u=setTimeout(()=>a.abort(),i.timeout));try{let i=await fetch(n,l);if(t.me){const e={response:i};this.dispatchEvent(t.me,"fetch:afterResponse",e),i=e.response}if(e.throwOnError&&function(e){const t=e+"";return Po.some(e=>e.test(t))}(i.status)){const e=Error(`Fetch failed for ${n}: HTTP ${i.status} ${i.statusText}`.trim());throw e.response=i,e.isFetchStatusError=!0,e}const a=await this.handleResponse(i,s,t);t.me&&this.dispatchEvent(t.me,"fetch:afterRequest",{result:a});const o={status:i.status,statusText:i.statusText,headers:i.headers,data:a,url:i.url,duration:Date.now()-r};return Object.assign(t,{it:a}),o}catch(e){if(t.me&&this.dispatchEvent(t.me,"fetch:error",{reason:e instanceof Error?e.message:e+"",error:e}),e instanceof Error&&"AbortError"===e.name)throw Error("Fetch aborted for "+n);if(e instanceof Error&&!0===e.isFetchStatusError)throw e;throw Error(`Fetch failed for ${n}: ${e instanceof Error?e.message:e+""}`)}finally{u&&clearTimeout(u),t.me&&o&&t.me.removeEventListener("fetch:abort",o)}}async parseURL(e,t,r){const n=await t.evaluate(e,r);if("string"!=typeof n||!n){const t=e;if(null==n&&"identifier"===t?.type&&t.name)throw Error(`fetch: URL expression "${t.name}" evaluated to ${n+""} \u2014 check the variable is set, or quote it if you meant a literal URL (fetch 'https://example.com/path')`);throw Error("fetch: URL must be a non-empty string")}return n}parseResponseType(e){if(!e)return"text";if(("identifier"===e.type||"expression"===e.type)&&e.name){const t=e.name.toLowerCase();if("object"===t)return"json";if(["text","json","html","response","blob","arraybuffer"].includes(t))return"arraybuffer"===t?"arrayBuffer":t;if(Lo.has(t))return t;throw Error(`fetch: invalid response type "${t}"`)}return"text"}async parseRequestOptions(e,t,r){if(!e)return{};const n=await t.evaluate(e,r);if("object"!=typeof n||null===n)throw Error('fetch: "with" options must be an object');const s={};return"method"in n&&(s.method=(n.method+"").toUpperCase()),"headers"in n&&(s.headers=this.parseHeaders(n.headers)),"body"in n&&(s.body=this.parseBody(n.body)),"credentials"in n&&(s.credentials=n.credentials),"mode"in n&&(s.mode=n.mode),"cache"in n&&(s.cache=n.cache),s}parseHeaders(e){if(e instanceof Headers)return e;const t=new Headers;if("object"==typeof e&&null!==e)for(const[r,n]of Object.entries(e))t.set(r,n+"");return t}parseBody(e){return null==e?null:e instanceof FormData||e instanceof Blob||e instanceof ArrayBuffer||e instanceof URLSearchParams||"string"==typeof e?e:"object"==typeof e?JSON.stringify(e):e+""}async handleResponse(e,t,r){switch(t){case"response":return e;case"json":return e.json();case"html":return this.parseHTML(await e.text());case"blob":return e.blob();case"arrayBuffer":return e.arrayBuffer();case"text":return e.text();default:{const n=Lo.get(t);return n?n.handler(e,r):e.text()}}}parseHTML(e){const t=(new DOMParser).parseFromString(e,"text/html"),r=document.createDocumentFragment();return Array.from(t.body.childNodes).forEach(e=>r.appendChild(e.cloneNode(!0))),1===r.childNodes.length&&dr(r.firstChild)?r.firstChild:r}dispatchEvent(e,t,r){e.dispatchEvent(new CustomEvent(t,{detail:r,bubbles:!0,cancelable:!0}))}},ji(t,"FetchCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})();const No=Ui(jo);function Io(e){const t=e.trim();return/^\d+$/.test(t)?parseInt(t,10):/^\d*\.\d+$/.test(t)?parseFloat(t):"true"===t||"false"!==t&&("null"===t?null:"undefined"!==t?t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'")?t.slice(1,-1):t:void 0)}let Ro=(()=>{let e,t,r=[Wi({description:"Dispatch events on elements",syntax:["trigger <event> on <target>","trigger <event>(<detail>) on <target>","send <event> to <target>","send <event>(<detail>) to <target>"],examples:["trigger click on #button","trigger customEvent on me","send dataEvent to #target","send myEvent(count: 42) to me"],sideEffects:["event-dispatch"],aliases:["send"]}),Hi({name:"trigger",category:"event"})],n=[];return t=class{async parseInput(e,t,r){const n="send"===e.commandName?.toLowerCase()?"send":"trigger",s=n;if(!e.args?.length)throw Error(s+" command requires an event name");const i=e=>e?.type||"unknown",a=e.args[0];let o,l,c;if("functionCall"===i(a)||"callExpression"===i(a)){o=a.name||a.callee?.name;const e=a.args||a.arguments;e?.length&&(l=await this.parseEventDetail(e,t,r))}else if("identifier"===i(a)||"keyword"===i(a))o=a.name;else{const e=await t.evaluate(a,r);o="string"==typeof e?e:e+""}const u=e.modifiers?.on||e.modifiers?.to;if(u)c=await this.resolveTargets([u],t,r,s);else{const n=e.args.findIndex((e,t)=>{if(0===t)return!1;const r=e.name||e.value;return"on"===r||"to"===r});if(-1!==n&&e.args.length-1>n){const i=e.args.slice(n+1),a=i.findIndex(e=>"with"===(e.name||e.value)),o=-1===a?i:i.slice(0,a);c=await this.resolveTargets(o,t,r,s)}else{if(!r.me)throw Error(s+": no target specified and context.me is null");c=[r.me]}}return{eventName:o,detail:l,targets:c,options:await this.parseEventOptions(e.args,t,r),mode:n}}async execute(e,t){const r=function(e,t,r={}){return new CustomEvent(e,{detail:void 0!==t?t:{},bubbles:void 0===r.bubbles||r.bubbles,cancelable:void 0===r.cancelable||r.cancelable,composed:void 0!==r.composed&&r.composed})}(e.eventName,e.detail,e.options);for(const t of e.targets)t.dispatchEvent(r);t.it=r}async resolveTargets(e,t,r,n){const s=[];for(const n of e){const e=await t.evaluate(n,r);if("window"!==e&&e!==window)if("document"!==e&&e!==document)if("me"===e&&r.me)s.push(r.me);else if("you"===e&&r.you)s.push(r.you);else if("it"===e&&r.it)s.push(r.it);else if(dr(e))s.push(e);else if(e instanceof NodeList)s.push(...Array.from(e).filter(dr));else if(Array.isArray(e))s.push(...e.filter(dr));else{if("string"==typeof e){const t=document.querySelectorAll(e);if(0===t.length)throw Error(`No elements found: "${e}"`);s.push(...Array.from(t).filter(dr));continue}if(!e||"object"!=typeof e||!("addEventListener"in e))throw Error("Invalid target: "+typeof e);s.push(e)}else s.push(document);else s.push(window)}if(!s.length)throw Error(n+": no valid targets");return s}async parseEventDetail(e,t,r){if(!e?.length)return;if(1===e.length){const n=e[0];if("objectLiteral"!==n?.type)return await t.evaluate(n,r)}const n={};for(const s of e){const e=await t.evaluate(s,r);if("object"!=typeof e||null===e||Array.isArray(e)){if("string"==typeof e&&e.includes(":")){const[t,r]=e.split(":",2);n[t.trim()]=Io(r.trim())}}else Object.assign(n,e)}return Object.keys(n).length?n:void 0}async parseEventOptions(e,t,r){const n={bubbles:!0,cancelable:!0,composed:!1},s=e.findIndex(e=>"with"===(e.name||e.value));if(-1===s)return n;for(const i of e.slice(s+1)){const e=await t.evaluate(i,r);if("string"==typeof e){const t=e.toLowerCase();"bubbles"===t?n.bubbles=!0:"nobubbles"===t?n.bubbles=!1:"cancelable"===t?n.cancelable=!0:"nocancelable"===t?n.cancelable=!1:"composed"===t&&(n.composed=!0)}}return n}},ji(t,"EventDispatchCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})();const qo=Ui(Ro),Mo=Ui(Ro),_o=Ui((()=>{let e,t,r=[Wi({description:"Animate CSS properties using CSS transitions",syntax:"transition <property> to <value> [over <duration>] [with <timing>]",examples:["transition opacity to 0.5","transition left to 100px over 500ms","transition background-color to red over 1s with ease-in-out"],sideEffects:["style-change","timing"]}),Hi({name:"transition",category:"animation"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("transition requires property and value");let n,s;const i=await t.evaluate(e.args[0],r);if(dr(i)||"string"==typeof i&&/^[#.]|^(?:me|it|you)$/.test(i)?(s=i,n=await t.evaluate(e.args[1],r)+""):n=i+"",!n)throw Error("transition requires a CSS property");if(!e.modifiers?.to)throw Error('transition requires "to <value>"');let a=await t.evaluate(e.modifiers.to,r);void 0===a&&"identifier"===e.modifiers.to.type&&(a=e.modifiers.to.name);const o={property:n,value:a};return void 0!==s&&(o.target=s),e.modifiers?.over&&(o.duration=await t.evaluate(e.modifiers.over,r)),e.modifiers?.with&&(o.timingFunction=await t.evaluate(e.modifiers.with,r)+""),o}async execute(e,t){let{property:r}=e;const{target:n,value:s,duration:i,timingFunction:a}=e;r.startsWith("*")&&(r=r.substring(1)),r=r.replace(/([A-Z])/g,"-$1").toLowerCase();const o=Ji(n,t,"transition"),l=pa(i,300),c=getComputedStyle(o).getPropertyValue(r),u=o.style.transition,d=`${r} ${l}ms ${a||"ease"}`;o.style.transition=u?`${u}, ${d}`:d;let m=s+"",p=!1;if("initial"===m||"inherit"===m||"unset"===m||"revert"===m){const e=o.style.getPropertyValue(r);o.style.removeProperty(r),m=getComputedStyle(o).getPropertyValue(r),e&&o.style.setProperty(r,e),p=!0}o.style.setProperty(r,m);const h=await function(e,t,r){return new Promise(n=>{const s=r=>{r.target===e&&r.propertyName===t&&a({completed:!0,cancelled:!1})},i=r=>{r.target===e&&r.propertyName===t&&a({completed:!1,cancelled:!0})},a=To(()=>{e.removeEventListener("transitionend",s),e.removeEventListener("transitioncancel",i),clearTimeout(o)},n);e.addEventListener("transitionend",s),e.addEventListener("transitioncancel",i);const o=setTimeout(()=>{a({completed:!0,cancelled:!1})},r+50)})}(o,r,l);return o.style.transition=u,p&&o.style.removeProperty(r),Object.assign(t,{it:o}),{element:o,property:r,fromValue:c,toValue:m,duration:l,completed:h.completed}}},ji(t,"TransitionCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})()),$o=Ui((()=>{let e,t,r=[Wi({description:"Measure DOM element dimensions, positions, and properties",syntax:["measure","measure <property>","measure <target> <property>"],examples:["measure","measure width","measure #element height","measure x and set dragX"],sideEffects:["data-mutation"]}),Hi({name:"measure",category:"animation"})],n=[];return t=class{async parseInput(e,t,r){let n,s,i;if(e.args?.length){const i=e.args[0];if("identifier"===i.type&&i.name){const a=i.name.toLowerCase();if("me"===a||"it"===a||"you"===a){const a=await t.evaluate(i,r);if(dr(a)&&(n=a,e.args.length>1)){const n=e.args[1];s="identifier"===n.type?n.name:await t.evaluate(n,r)+""}}else s=i.name}else{const a=await t.evaluate(i,r);if(dr(a)||"string"==typeof a&&/^[#.]/.test(a)){if(n=a,e.args.length>1){const n=e.args[1];s="identifier"===n.type?n.name:await t.evaluate(n,r)+""}}else"string"==typeof a&&(s=a)}}e.modifiers?.set&&(i=await t.evaluate(e.modifiers.set,r)+"");const a={};return void 0!==n&&(a.target=n),void 0!==s&&(a.property=s),void 0!==i&&(a.variable=i),a}async execute(e,t){const r=Ji(e.target,t,"measure"),n=e.property||"width",s=this.getMeasurement(r,n);return e.variable&&t.locals&&t.locals.set(e.variable,s.value),Object.assign(t,{it:s.value}),{result:s.value,wasAsync:!1,element:r,property:n,value:s.value,unit:s.unit,stored:!!e.variable}}getMeasurement(e,t){const r=getComputedStyle(e);if(t.startsWith("*")){const e=r.getPropertyValue(t.substring(1)),n=parseFloat(e);if(!isNaN(n)){const t=e.match(/([a-zA-Z%]+)$/);return{value:n,unit:t?t[1]:""}}return{value:e,unit:""}}const n=t.toLowerCase(),s=e.getBoundingClientRect(),i={width:()=>s.width,height:()=>s.height,top:()=>s.top,left:()=>s.left,right:()=>s.right,bottom:()=>s.bottom,x:()=>e.offsetLeft,y:()=>e.offsetTop,clientwidth:()=>e.clientWidth,"client-width":()=>e.clientWidth,clientheight:()=>e.clientHeight,"client-height":()=>e.clientHeight,offsetwidth:()=>e.offsetWidth,"offset-width":()=>e.offsetWidth,offsetheight:()=>e.offsetHeight,"offset-height":()=>e.offsetHeight,scrollwidth:()=>e.scrollWidth,"scroll-width":()=>e.scrollWidth,scrollheight:()=>e.scrollHeight,"scroll-height":()=>e.scrollHeight,scrolltop:()=>e.scrollTop,"scroll-top":()=>e.scrollTop,scrollleft:()=>e.scrollLeft,"scroll-left":()=>e.scrollLeft,offsettop:()=>e.offsetTop,"offset-top":()=>e.offsetTop,offsetleft:()=>e.offsetLeft,"offset-left":()=>e.offsetLeft};if(i[n])return{value:i[n](),unit:"px"};const a=r.getPropertyValue(t),o=parseFloat(a);if(!isNaN(o)){const e=a.match(/([a-zA-Z%]+)$/);return{value:o,unit:e?e[1]:"px"}}return{value:0,unit:"px"}}},ji(t,"MeasureCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})()),Vo=Ui((()=>{let e,t,r=[Wi({description:"Wait for CSS transitions and animations to complete",syntax:"settle [<target>] [for <timeout>]",examples:["settle","settle #animated-element","settle for 3000"],sideEffects:["timing"]}),Hi({name:"settle",category:"animation"})],n=[];return t=class{async parseInput(e,t,r){let n,s;if(e.args&&e.args.length>0){const s=await t.evaluate(e.args[0],r);(dr(s)||"string"==typeof s&&(s.startsWith("#")||s.startsWith(".")||"me"===s||"it"===s||"you"===s))&&(n=s)}e.modifiers?.for&&(s=await t.evaluate(e.modifiers.for,r));const i={};return void 0!==n&&(i.target=n),void 0!==s&&(i.timeout=s),i}async execute(e,t){const{target:r,timeout:n}=e,s=Ji(r,t,"settle"),i=pa(n,5e3),a=Date.now(),o=getComputedStyle(s),l=fa(o.transitionDuration),c=fa(o.transitionDelay),u=fa(o.animationDuration),d=fa(o.animationDelay),m=ya(l,c),p=ya(u,d),h=Math.max(m,p),f=await(y=s,g=h,v=i,g>0?new Promise(e=>{const t=e=>{e.target===y&&n({completed:!0,type:"transition"})},r=e=>{e.target===y&&n({completed:!0,type:"animation"})},n=To(()=>{y.removeEventListener("transitionend",t),y.removeEventListener("animationend",r),clearTimeout(s),clearTimeout(i)},e);y.addEventListener("transitionend",t),y.addEventListener("animationend",r);const s=setTimeout(()=>{n({completed:!0,type:"timeout"})},g+50),i=setTimeout(()=>{n({completed:!1,type:"timeout"})},v)}):Promise.resolve({completed:!0,type:"timeout"}));var y,g,v;const b=Date.now()-a;return Object.assign(t,{it:s}),{element:s,settled:f.completed,timeout:i,duration:b}}},ji(t,"SettleCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})());const Do=Ui((()=>{let e,t,r=[Wi({description:"Move classes, attributes, and properties from one element to another",syntax:["take <property> from <source>","take <property> from <source> and put it on <target>"],examples:["take class from <#source/>","take @data-value from <.source/> and put it on <#target/>"],sideEffects:["dom-mutation","property-transfer"]}),Hi({name:"take",category:"animation"})],n=[];return t=class{async parseInput(e,t,r){if(3>e.args.length)throw Error('take requires property, "from", and source');const n=await t.evaluate(e.args[0],r)+"";if("from"!==await t.evaluate(e.args[1],r))throw Error("take syntax: take <property> from <source>");const s=await t.evaluate(e.args[2],r);let i;if(8>e.args.length)e.args.length>3&&(i=await t.evaluate(e.args[3],r));else{const n=await Promise.all([3,4,5,6].map(n=>t.evaluate(e.args[n],r)));"and"===n[0]&&"put"===n[1]&&"it"===n[2]&&"on"===n[3]&&e.args[7]&&(i=await t.evaluate(e.args[7],r))}return!i&&e.modifiers?.on&&(i=await t.evaluate(e.modifiers.on,r)),{property:n,source:s,target:i}}async execute(e,t){const r=Ji(e.source,t,"take"),n=Ji(e.target?e.target:void 0,t,"take"),s=this.takeProperty(r,e.property);return this.putProperty(n,e.property,s),{targetElement:n,property:e.property,value:s}}takeProperty(e,t){const r=t.trim(),n=r.toLowerCase();if("class"===n||"classes"===n){const t=Array.from(e.classList);return e.className="",t}if(r.startsWith(".")){const t=r.substring(1);return e.classList.contains(t)?(e.classList.remove(t),t):null}if(r.startsWith("@")){const t=r.substring(1),n=e.getAttribute(t);return e.removeAttribute(t),n}if(r.startsWith("data-")){const t=e.getAttribute(r);return e.removeAttribute(r),t}if("id"===n){const t=e.id;return e.id="",t}if("title"===n){const t=e.title;return e.title="",t}if("value"===n&&"value"in e){const t=e.value;return e.value="",t}const s=r.replace(/-([a-z])/g,(e,t)=>t.toUpperCase());if(r.includes("-")||s in e.style||r in e.style){let t;return s in e.style?(t=e.style[s],e.style[s]=""):r in e.style?(t=e.style[r],e.style[r]=""):(t=e.style.getPropertyValue(r),e.style.removeProperty(r)),t}const i=e.getAttribute(t);return null!==i?(e.removeAttribute(t),i):null}putProperty(e,t,r){if(null==r)return;const n=t.trim(),s=n.toLowerCase();if("class"===s||"classes"===s)return void(Array.isArray(r)?r.forEach(t=>t&&"string"==typeof t&&e.classList.add(t)):"string"==typeof r&&(e.className=r));if(n.startsWith("."))return void(r&&e.classList.add(n.substring(1)));if(n.startsWith("@"))return void e.setAttribute(n.substring(1),r+"");if(n.startsWith("data-"))return void e.setAttribute(n,r+"");if("id"===s)return void(e.id=r+"");if("title"===s)return void(e.title=r+"");if("value"===s&&"value"in e)return void(e.value=r+"");const i=n.replace(/-([a-z])/g,(e,t)=>t.toUpperCase());n.includes("-")||i in e.style||n in e.style?i in e.style?e.style[i]=r+"":n in e.style?e.style[n]=r+"":e.style.setProperty(n,r+""):e.setAttribute(t,r+"")}},ji(t,"TakeCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})()),zo=Ui((()=>{let e,t,r=[Wi({description:"Log values to the console",syntax:"log [<values...>]",examples:['log "Hello World"',"log me.value","log x y z",'log "Result:" result'],sideEffects:["console-output"]}),Hi({name:"log",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){return e.args&&0!==e.args.length?{values:await Promise.all(e.args.map(e=>t.evaluate(e,r)))}:{values:[]}}async execute(e,t){const r="undefined"!=typeof window?window.console:console;0===e.values.length?r.log():r.log(...e.values)}validate(e){return"object"==typeof e&&null!==e&&Array.isArray(e.values)}},ji(t,"LogCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})()),Bo=Ui((()=>{let e,t,r=[Wi({description:"Execute commands in the context of target elements",syntax:["tell <target> <command> [<command> ...]"],examples:["tell #sidebar hide","tell .buttons add .disabled","tell closest <form/> submit"],sideEffects:["context-switching","command-execution"]}),Hi({name:"tell",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){if(2>e.args.length)throw Error("tell command requires a target and at least one command");return{target:await t.evaluate(e.args[0],r),commands:e.args.slice(1)}}async execute(e,t){const{target:r,commands:n}=e,s=Zi(r,t);if(0===s.length)throw Error("tell command found no target elements");const i=t.locals.get("_runtimeExecute"),a=[];for(const e of s){const r={...t,me:e,you:e};for(const e of n)try{const t=await this.executeCommand(e,r,i);a.push(t),Object.assign(r,{it:t})}catch(e){throw Error("Command execution failed in tell block: "+(e instanceof Error?e.message:"Unknown error"))}}return{targetElements:s,commandResults:a,executionCount:s.length*n.length}}async executeCommand(e,t,r){if(e&&"object"==typeof e&&"command"===e.type&&r)return await r(e,t);if("function"==typeof e)return await e(t);if(e&&"object"==typeof e&&"function"==typeof e.execute)return await e.execute(t);throw Error("Invalid command: must be a function or object with execute method")}},ji(t,"TellCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})()),Fo=Ui((()=>{let e,t,r=[Wi({description:"Evaluate an expression and store the result in the it variable",syntax:["call <expression>"],examples:["call myFunction()",'call fetch("/api/data")',"call element.focus()"],sideEffects:["function-execution","context-mutation"]}),Hi({name:"call",category:"execution"})],n=[];return t=class{parseInput(e,t,r){if(!e.args?.length)throw Error("call command requires an expression");return Promise.resolve({expression:e.args[0]})}async execute(e,t){const{expression:r}=e,n=t.locals?.get("__evaluator"),s=n?await n.evaluate(r,t):await bn(r,t);let i,a,o=!1;return"function"==typeof s?(a="function",i=s(),i instanceof Promise&&(o=!0,i=await i)):s instanceof Promise?(a="promise",o=!0,i=await s):(a="value",i=s),Object.assign(t,{it:i,result:i}),{result:i,wasAsync:o,expressionType:a}}},ji(t,"CallCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})()),Ho=Ui((()=>{let e,t,r=[Wi({description:"Focus an element (calls HTMLElement.focus())",syntax:["focus","focus <target>","focus on <target>"],examples:["focus","focus #search","focus on <input/>"],sideEffects:["focus"]}),Hi({name:"focus",category:"execution"})],n=[];return t=class{async parseInput(e,t,r){return{targets:await Qi(e.args,t,r,"focus",{filterPrepositions:!0,fallbackModifierKey:"on"},e.modifiers)}}async execute(e,t){for(const t of e.targets)t.focus()}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&t.targets.every(e=>dr(e))}},ji(t,"FocusCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})()),Wo=Ui((()=>{let e,t,r=[Wi({description:"Remove focus from an element (calls HTMLElement.blur())",syntax:["blur","blur <target>","blur on <target>"],examples:["blur","blur #search","blur on <input/>"],sideEffects:["focus"]}),Hi({name:"blur",category:"execution"})],n=[];return t=class{async parseInput(e,t,r){return{targets:await Qi(e.args,t,r,"blur",{filterPrepositions:!0,fallbackModifierKey:"on"},e.modifiers)}}async execute(e,t){for(const t of e.targets)t.blur()}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&t.targets.every(e=>dr(e))}},ji(t,"BlurCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})());let Uo=(()=>{let e,t,r=[Wi({description:"Copy text or element content to the clipboard",syntax:["copy <source>","copy <source> to clipboard"],examples:['copy "Hello World"',"copy #code-snippet","copy my textContent"],sideEffects:["clipboard-write","custom-events"]}),Hi({name:"copy",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){if(1>e.args.length)throw Error("copy command requires a source (text or element)");const n=await t.evaluate(e.args[0],r);let s="text";if(e.modifiers?.format){const n=await t.evaluate(e.modifiers.format,r);"html"!==n&&"text"!==n||(s=n)}return{source:n,format:s}}async execute(e,t){const{source:r,format:n="text"}=e,s=this.extractText(r,n,t);if("undefined"!=typeof navigator&&navigator.clipboard)try{return await navigator.clipboard.writeText(s),this.dispatchCopyEvent(t,"copy:success",{text:s,method:"clipboard-api"}),{success:!0,text:s,format:n,method:"clipboard-api"}}catch{}try{if(this.copyUsingExecCommand(s))return this.dispatchCopyEvent(t,"copy:success",{text:s,method:"execCommand"}),{success:!0,text:s,format:n,method:"execCommand"}}catch{}return this.dispatchCopyEvent(t,"copy:error",{text:s,error:"All copy methods failed"}),{success:!1,text:s,format:n,method:"fallback"}}extractText(e,t,r){if("string"==typeof e)return e;if(dr(e))return"html"===t?e.outerHTML:e.textContent||"";if(e===r.me&&dr(r.me)){const e=r.me;return"html"===t?e.outerHTML:e.textContent||""}return e+""}copyUsingExecCommand(e){if("undefined"==typeof document)return!1;const t=document.createElement("textarea");t.value=e,t.style.cssText="position:fixed;top:0;left:-9999px",t.setAttribute("readonly",""),document.body.appendChild(t);try{t.select(),t.setSelectionRange(0,e.length);const r=document.execCommand("copy");return document.body.removeChild(t),r}catch{return t.parentNode?.removeChild(t),!1}}dispatchCopyEvent(e,t,r){if(dr(e.me)){const n=new CustomEvent(t,{detail:r,bubbles:!0,cancelable:!1});e.me.dispatchEvent(n)}}},ji(t,"CopyCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})();const Ko=Ui(Uo);const Jo=Ui((()=>{let e,t,r=[Wi({description:"Select from a collection (first/last/random/range/regex match)",syntax:["pick first <count> of <expr>","pick last <count> of <expr>","pick random [<count>] of <expr>","pick items <i> to <j> of <expr>","pick match of <regex> from <expr>","pick from <array>","pick <item1>, <item2>, ..."],examples:["pick first 3 of items","pick last 2 of items","pick random 2 of items","pick items 1 to 3 of items",'pick match of "[0-9]+" from text',"pick from colors",'pick "red", "green", "blue"'],sideEffects:["random-selection"]}),Hi({name:"pick",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){const n=e.modifiers?.variant,s=n?.value;if("first"===s||"last"===s){const n=await t.evaluate(e.args[0],r),i=await t.evaluate(e.modifiers.count,r);if(!Array.isArray(n))throw Error(`pick ${s}: source must be an array, got ${typeof n}`);if("number"!=typeof i||!Number.isFinite(i))throw Error(`pick ${s}: count must be a number, got ${typeof i}`);return{variant:s,array:n,count:i}}if("random"===s){const n=await t.evaluate(e.args[0],r);if(!Array.isArray(n))throw Error("pick random: source must be an array");let s;if(e.modifiers.count){const n=await t.evaluate(e.modifiers.count,r);if("number"!=typeof n||!Number.isFinite(n))throw Error("pick random: count must be a number, got "+typeof n);s=n}return{variant:"random",array:n,count:s}}if("range"===s){const n=await t.evaluate(e.args[0],r);if(!Array.isArray(n)&&"string"!=typeof n)throw Error("pick items: source must be an array or string");const s=e.modifiers.rangeStart,i="start"===s?.value?"start":await t.evaluate(e.modifiers.rangeStart,r),a="start"===i?"start":Number(i);let o;if(e.modifiers.rangeEnd)if("end"===e.modifiers.rangeEnd.value)o="end";else{const n=await t.evaluate(e.modifiers.rangeEnd,r);o=Number(n)}const l=e.modifiers.rangeMode;return{variant:"range",array:n,rangeStart:a,rangeEnd:o,rangeMode:l?.value??"default"}}if("match"===s||"matches"===s){const n=await t.evaluate(e.args[0],r);if("string"!=typeof n)throw Error(`pick ${s}: source must be a string, got ${typeof n}`);const i=await t.evaluate(e.modifiers.regex,r),a="string"==typeof i?i:i+"",o=e.modifiers.flags,l=o?.value;return{variant:s,source:n,regex:a,flags:l}}if(e.modifiers?.from){const n=await t.evaluate(e.modifiers.from,r);if(!Array.isArray(n))throw Error("pick from requires an array");if(0===n.length)throw Error("Cannot pick from empty array");return{variant:"random",array:n}}if(0===e.args.length)throw Error("pick command requires items to choose from");return{variant:"random",items:await Promise.all(e.args.map(e=>t.evaluate(e,r)))}}async execute(e,t){const r=e.variant??"random";if("first"===r){const r=e.array??[],n=r.slice(0,e.count??0);return Object.assign(t,{it:n}),{selectedItem:n,sourceLength:r.length,sourceType:"array",variant:"first"}}if("last"===r){const r=e.array??[],n=e.count??0,s=n>0?r.slice(-n):[];return Object.assign(t,{it:s}),{selectedItem:s,sourceLength:r.length,sourceType:"array",variant:"last"}}if("range"===r){const r=e.array??[];let n="start"===e.rangeStart?0:e.rangeStart??0,s=void 0===e.rangeEnd?n+1:"end"===e.rangeEnd?r.length:e.rangeEnd;"inclusive"===e.rangeMode?s++:"exclusive"===e.rangeMode&&n++;const i=r.slice(n,s);return Object.assign(t,{it:i}),{selectedItem:i,sourceLength:r.length,sourceType:"array",variant:"range"}}if("match"===r){const r=e.source??"",n=RegExp(e.regex??"",e.flags).exec(r);return Object.assign(t,{it:n}),{selectedItem:n,sourceLength:r.length,sourceType:"string",variant:"match"}}if("matches"===r){const r=e.source??"",n=e.flags??"g",s=RegExp(e.regex??"",n.includes("g")?n:"g"+n),i=Array.from(r.matchAll(s));return Object.assign(t,{it:i}),{selectedItem:i,sourceLength:r.length,sourceType:"string",variant:"matches"}}const n=e.items??e.array??[];if(0===n.length)throw Error("Cannot pick from empty collection");if(void 0===e.count){const r=Math.floor(Math.random()*n.length),s=n[r];return Object.assign(t,{it:s}),{selectedItem:s,selectedIndex:r,sourceLength:n.length,sourceType:e.items?"items":"array",variant:"random"}}const s=n.slice(),i=[];for(let t=0;e.count>t&&s.length>0;t++){const e=Math.floor(Math.random()*s.length);i.push(s.splice(e,1)[0])}return Object.assign(t,{it:i}),{selectedItem:i,sourceLength:n.length,sourceType:e.items?"items":"array",variant:"random"}}},ji(t,"PickCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})());const Zo=Ui((()=>{let e,t,r=[Wi({description:"Debug output for expressions with type information",syntax:["beep!","beep! <expression>","beep! <expression>, <expression>, ..."],examples:["beep!","beep! myValue","beep! me.id, me.className"],sideEffects:["console-output","debugging"]}),Hi({name:"beep",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){return 0===e.args.length?{expressions:[]}:{expressions:await Promise.all(e.args.map(e=>t.evaluate(e,r)))}}async execute(e,t){const r=e.expressions||[];if(0===r.length)return this.debugContext(t),{expressionCount:0,debugged:!0,outputs:[]};const n=[];console.group("\ud83d\udd14 beep! Debug Output");for(const e of r){const t=this.debugExpression(e);n.push(t),console.log("Value:",e),console.log("Type:",t.type),console.log("Representation:",t.representation),console.log("---")}return console.groupEnd(),{expressionCount:r.length,debugged:!0,outputs:n}}debugContext(e){console.group("\ud83d\udd14 beep! Context Debug"),console.log("me:",e.me),console.log("it:",e.it),console.log("you:",e.you),console.log("locals:",e.locals),console.log("globals:",e.globals),console.log("variables:",e.variables),console.groupEnd()}debugExpression(e){return{value:e,type:this.getType(e),representation:this.getRepresentation(e)}}getType(e){return null===e?"null":void 0===e?"undefined":Array.isArray(e)?"array":dr(e)?"HTMLElement":e instanceof Element?"Element":e instanceof Node?"Node":e instanceof Error?"Error":e instanceof Date?"Date":e instanceof RegExp?"RegExp":typeof e}getRepresentation(e){if(null===e)return"null";if(void 0===e)return"undefined";if(Array.isArray(e))return`Array(${e.length}) [${e.slice(0,3).map(e=>this.getRepresentation(e)).join(", ")}${e.length>3?"...":""}]`;if(dr(e)){const t=e;return`<${t.tagName.toLowerCase()}${t.id?"#"+t.id:""}${t.className?"."+t.className.split(" ").join("."):""}/>`}if(e instanceof Error)return"Error: "+e.message;if("string"==typeof e)return e.length>50?`"${e.substring(0,47)}..."`:`"${e}"`;if("object"==typeof e)try{const t=Object.keys(e);return`Object {${t.slice(0,3).join(", ")}${t.length>3?"...":""}}`}catch{return"[Object]"}return e+""}},ji(t,"BeepCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})()),Xo=Ui((()=>{let e,t,r=[Wi({description:"Drop into the debugger (emits a debugger; statement)",syntax:["breakpoint"],examples:["breakpoint","on click breakpoint"],sideEffects:["debugging"]}),Hi({name:"breakpoint",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){return{}}async execute(e,t){}validate(e){return"object"==typeof e&&null!==e}},ji(t,"BreakpointCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})()),Yo=Ui((()=>{let e,t,r=[Wi({description:"Execute inline JavaScript code with access to hyperscript context",syntax:["js <code> end","js(param1, param2) <code> end"],examples:['js console.log("Hello") end',"js(x, y) return x + y end",'js me.style.color = "red" end'],sideEffects:["code-execution","data-mutation"]}),Hi({name:"js",category:"advanced"})],n=[];return t=class{async parseInput(e,t,r){let n,s;if(0===e.args.length)throw Error("js command requires JavaScript code");const i=e.args[0],a=e.args[1];if(i&&"literal"===i.type&&"string"==typeof i.value)n=i.value;else{if(!i||void 0===i.value)throw Error("js command requires JavaScript code");n=i.value+""}a&&"arrayLiteral"===a.type&&Array.isArray(a.elements)&&(s=a.elements.map(e=>"string"==typeof e.value?e.value:e.value+"").filter(e=>e&&e.length>0));const o={code:n};return s&&s.length>0&&(o.parameters=s),o}async execute(e,t){const{code:r,parameters:n=[]}=e;if(!r.trim())return{result:void 0,executed:!1,codeLength:r.length,parameters:n,preserveArrayResult:!0};try{const e=this.createExecutionContext(t,n),s=Function(...Object.keys(e),r),i=await s(...Object.values(e));return void 0!==i&&Object.assign(t,{it:i}),{result:i,executed:!0,codeLength:r.length,parameters:n,preserveArrayResult:!0}}catch(e){throw Error("JavaScript execution failed: "+(e instanceof Error?e.message:"Unknown error"))}}createExecutionContext(e,t){return{me:e.me,it:e.it,you:e.you,locals:e.locals,globals:e.globals,variables:e.variables,console:console,document:"undefined"!=typeof document?document:void 0,window:"undefined"!=typeof window?window:void 0,...t.reduce((t,r)=>{let n=e.locals?.get(r);return void 0===n&&(n=e.variables?.get(r)),void 0===n&&(n=e[r]),t[r]=n,t},{})}}},ji(t,"JsCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})()),Go=Ui((()=>{let e,t,r=[Wi({description:"Execute commands asynchronously without blocking",syntax:["async <command> [<command> ...]"],examples:["async command1 command2","async fetchData processData","async animateIn showContent"],sideEffects:["async-execution"]}),Hi({name:"async",category:"advanced"})],n=[];return t=class{async parseInput(e,t,r){if(1>e.args.length)throw Error("async command requires at least one command to execute");return{commands:e.args}}async execute(e,t){const{commands:r}=e,n=Date.now();try{const e=await this.executeCommandsAsync(t,r),s=Date.now()-n;return e.length>0&&Object.assign(t,{it:e[e.length-1]}),{commandCount:r.length,results:e,executed:!0,duration:s}}catch(e){throw Error("Async command execution failed: "+(e instanceof Error?e.message:"Unknown error"))}}async executeCommandsAsync(e,t){const r=[];for(let n=0;t.length>n;n++){const s=t[n];try{const t=await this.executeCommand(s,e);r.push(t),Object.assign(e,{it:t})}catch(e){const r=this.getCommandName(s);throw Error(`Command '${r}' (${n+1}/${t.length}) failed: ${e instanceof Error?e.message:"Unknown error"}`)}}return r}async executeCommand(e,t){if("function"==typeof e)return await e(t);if(e&&"object"==typeof e&&"execute"in e&&"function"==typeof e.execute)return await e.execute(t);throw Error("Invalid command: must be a function or object with execute method")}getCommandName(e){return"function"==typeof e?e.name||"anonymous function":e&&"object"==typeof e?e.name||"unnamed command":"unknown"}},ji(t,"AsyncCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})()),Qo=Ui((()=>{let e,t,r=[Wi({description:"Navigation functionality including URL navigation, element scrolling, and browser history",syntax:["go back","go to url <url> [in new window]","go to [position] [of] <element>"],examples:["go back",'go to url "https://example.com"',"go to top of #header"],sideEffects:["navigation","scrolling"]}),Hi({name:"go",category:"navigation"})],n=[];return t=class{async parseInput(e,t,r){return e.args&&0!==e.args.length?{args:await Promise.all(e.args.map(e=>t.evaluate(e,r)))}:{args:[]}}async execute(e,t){const{args:r}=e;if(0===r.length)throw Error("Go command requires arguments");if("string"==typeof r[0]&&"back"===r[0].toLowerCase())return await this.goBack(),{result:"back",type:"back"};if(this.isUrlNavigation(r))return{result:await this.navigateToUrl(r,t),type:"url"};const n=this.findBareUrl(r);return null!==n?{result:await this.navigateToBareUrl(n,r),type:"url"}:{result:await this.scrollToElement(r,t),type:"scroll"}}isUrlNavigation(e){return-1!==e.findIndex(e=>"url"===e)}isBareUrl(e){return!!e.startsWith("/")||/^[a-z][a-z0-9+.-]*:/i.test(e)}findBareUrl(e){for(const t of e)if("to"!==t&&"the"!==t)return"string"==typeof t&&this.isBareUrl(t)?t:null;return null}async navigateToBareUrl(e,t){if(t.includes("new")&&t.includes("window")){if("undefined"!=typeof window&&window.open){const t=window.open(e,"_blank");t?.focus&&t.focus()}}else e.startsWith("#")?"undefined"!=typeof window&&(window.location.hash=e):"undefined"!=typeof window&&(window.location.assign?.(e)??(window.location.href=e));return e}async goBack(){if("undefined"==typeof window||!window.history)throw Error("Browser history API not available");window.history.back()}async navigateToUrl(e,t){const r=e.findIndex(e=>"url"===e),n=e[r+1];if(!n)throw Error('URL is required after "url" keyword');const s="string"==typeof n?n:n+"",i=e.includes("new")&&e.includes("window");if(!this.isValidUrl(s))throw Error(`Invalid URL: "${s}"`);if(i){if("undefined"!=typeof window&&window.open){const e=window.open(s,"_blank");e?.focus&&e.focus()}}else s.startsWith("#")?"undefined"!=typeof window&&(window.location.hash=s):"undefined"!=typeof window&&(window.location.assign?.(s)??(window.location.href=s));return s}isValidUrl(e){try{return e.startsWith("/")||e.startsWith("#")||new URL(e),!0}catch{return!1}}async scrollToElement(e,t){const r=this.parseScrollPosition(e),n=this.parseScrollTarget(e),s=this.parseScrollOffset(e),i=!e.includes("instantly"),a=this.resolveScrollTarget(n,t);if(!a)throw Error("Target element not found: "+n);if("undefined"!=typeof window){const e=i?"smooth":"instant",t=this.mapVerticalPosition(r.vertical),n=this.mapHorizontalPosition(r.horizontal);if(0!==s){a.scrollIntoView?.({behavior:e,block:t,inline:n});const{x:i,y:o}=this.calculateScrollPosition(a,r,s);window.scrollTo?.({left:i,top:o,behavior:e})}else a.scrollIntoView?.({behavior:e,block:t,inline:n})}return a}mapVerticalPosition(e){return{top:"start",middle:"center",bottom:"end",nearest:"nearest"}[e]||"start"}mapHorizontalPosition(e){return{left:"start",center:"center",right:"end",nearest:"nearest"}[e]||"nearest"}parseScrollPosition(e){const t={vertical:"top",horizontal:"nearest"},r=["top","middle","bottom"],n=["left","center","right"];let s=!1,i=!1;for(const a of e)"string"==typeof a&&(r.includes(a)?(t.vertical=a,s=!0):n.includes(a)&&(t.horizontal=a,i=!0));return i&&!s&&(t.vertical="nearest"),t}parseScrollTarget(e){const t=e.findIndex(e=>"of"===e);if(-1!==t&&e.length>t+1){let r=e[t+1];return"the"===r&&e.length>t+2&&(r=e[t+2]),r}for(const t of e)if("object"==typeof t&&t&&t.nodeType)return t;const r=["top","middle","bottom","left","center","right","of","the","to","smoothly","instantly"];for(const t of e)if("string"==typeof t&&!r.includes(t)&&(t.startsWith("#")||t.startsWith(".")||t.includes("[")||/^[a-zA-Z][a-zA-Z0-9-]*$/.test(t)))return t;return"body"}parseScrollOffset(e){for(let t=0;e.length>t;t++){const r=e[t];if("string"==typeof r){const e=r.match(/^([+-]?\d+)(px)?$/);if(e)return parseInt(e[1],10)}if(("+"===r||"-"===r)&&e.length>t+1){const n=e[t+1],s="number"==typeof n?n:parseInt((n+"").replace("px",""),10);if(!isNaN(s))return"-"===r?-s:s}}return 0}resolveScrollTarget(e,t){if("object"==typeof e&&e&&e.nodeType)return e;const r="string"==typeof e?e:e+"";if("body"===r&&"undefined"!=typeof document)return document.body;if("html"===r&&"undefined"!=typeof document)return document.documentElement;if("me"===r&&dr(t.me))return t.me;if("it"===r&&dr(t.it))return t.it;if("you"===r&&dr(t.you))return t.you;const n=hr(r,t);if(dr(n))return n;if("undefined"!=typeof document)try{const e=document.querySelector(r);if(e)return e}catch{try{const e=document.getElementsByTagName(r);if(e.length>0)return e[0]}catch{}}return null}calculateScrollPosition(e,t,r){if("undefined"==typeof window||!e.getBoundingClientRect)return{x:0,y:0};const n=e.getBoundingClientRect(),s=window.pageXOffset||document.documentElement?.scrollLeft||0,i=window.pageYOffset||document.documentElement?.scrollTop||0,a=window.innerWidth||800,o=window.innerHeight||600;let l=s,c=i;switch(t.horizontal){case"left":l=n.left+s;break;case"center":l=n.left+s+n.width/2-a/2;break;case"right":l=n.right+s-a}switch(t.vertical){case"top":c=n.top+i+r;break;case"middle":c=n.top+i+n.height/2-o/2+r;break;case"bottom":c=n.bottom+i-o+r}return{x:Math.max(0,l),y:Math.max(0,c)}}},ji(t,"GoCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})());class el{constructor(){this.name="install"}get metadata(){return el.metadata}async parseInput(e,t,r){if(1>e.args.length)throw Error("install command requires a behavior name");const n=e.args[0];let s,i,a;if(s="identifier"===n?.type&&"string"==typeof n.name?n.name:await t.evaluate(n,r)+"",!/^[A-Z][a-zA-Z0-9_]*$/.test(s))throw Error(`Behavior name must be PascalCase (start with uppercase): "${s}"`);if(e.args.length>=2){const n=await t.evaluate(e.args[1],r);if(n&&"object"==typeof n&&!Array.isArray(n)){i=n;for(const e of Object.keys(i))if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e))throw Error(`Invalid parameter name: "${e}"`)}}return e.modifiers?.on&&(a=await t.evaluate(e.modifiers.on,r)),{behaviorName:s,parameters:i,target:a}}async execute(e,t){const{behaviorName:r,parameters:n={},target:s}=e;try{const e=this.resolveTarget(s,t);if(0===e.length)throw Error("No target elements found to install behavior on");if(!this.behaviorExists(r,t))throw Error(`Behavior "${r}" is not defined. Define it using the 'behavior' keyword before installing.`);const i=[];for(const s of e){const e=await this.installBehavior(r,s,n,t);i.push(e)}return{success:!0,behaviorName:r,installedCount:i.length,instances:i}}catch(e){throw Error(`Failed to install behavior "${r}": ${e instanceof Error?e.message:e+""}`)}}resolveTarget(e,t){if(null==e){const e=t.me||t.locals.get("me");if(dr(e))return[e];throw Error('No target specified and "me" is not available in context')}if(dr(e))return[e];if(Array.isArray(e)){const t=e.filter(e=>dr(e));if(0===t.length)throw Error("Target array contains no valid HTMLElements");return t}if("string"==typeof e){if("me"===e){const e=t.me||t.locals.get("me");if(dr(e))return[e];throw Error('"me" is not available in context')}if("undefined"!=typeof document){const t=document.querySelectorAll(e),r=Array.from(t).filter(e=>dr(e));if(0===r.length)throw Error(`No elements found matching selector: "${e}"`);return r}throw Error("document is not available (not in browser environment)")}if(e&&"object"==typeof e&&"length"in e){const t=Array.from(e).filter(e=>dr(e));if(0===t.length)throw Error("Target collection contains no valid HTMLElements");return t}if("object"==typeof e&&"element"in e){const t=e.element;if(dr(t))return[t]}throw Error("Cannot resolve target to HTMLElement(s): "+e)}behaviorExists(e,t){const r=t.locals.get("_behaviors");if(r&&"object"==typeof r){const t=r;if(t.has(e))return!0;if(t.resolve&&t.resolve(e))return!0}if("undefined"!=typeof globalThis){const t=globalThis._hyperscript;if(t?.behaviors){if(t.behaviors.has(e))return!0;if(t.behaviors.resolve&&t.behaviors.resolve(e))return!0}}return!1}async installBehavior(e,t,r,n){const s=n.locals.get("_behaviors");if(s&&"object"==typeof s){const n=s;if(n.install&&"function"==typeof n.install)return await n.install(e,t,r)}if("undefined"!=typeof globalThis){const n=globalThis._hyperscript;if(n?.behaviors?.install)return await n.behaviors.install(e,t,r)}throw Error("Behavior system not available in context")}}el.metadata={description:"Install a behavior on an element with optional parameters",syntax:["install <BehaviorName>","install <BehaviorName> on <element>","install <BehaviorName>(param: value)","install <BehaviorName>(param: value) on <element>"],examples:["install Removable","install Draggable on #box",'install Tooltip(text: "Help", position: "top")','install Sortable(axis: "y") on .list',"install MyBehavior(foo: 42) on the first <div/>"],category:"behaviors",sideEffects:["behavior-installation","element-modification"]};const tl=Ui((()=>{let e,t,r=[Wi({description:"Add content to the end of a string, array, or HTML element",syntax:["append <content>","append <content> to <target>"],examples:['append "Hello"','append "World" to greeting',"append item to myArray",'append "<p>New</p>" to #content'],sideEffects:["data-mutation","dom-mutation"]}),Hi({name:"append",category:"content"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("append requires content");const n=await t.evaluate(e.args[0],r);let s;if(e.modifiers?.to){const n=e.modifiers.to,i=n.type;s="identifier"!==i&&"variable"!==i&&"symbol"!==i||"string"!=typeof n.name?await t.evaluate(e.modifiers.to,r):n.name}else e.target&&(s=e.target);return{content:n,target:s}}async execute(e,t){const{content:r,target:n}=e,s=r+"";if(!n)return Object.assign(t,void 0===t.it?{it:s}:{it:t.it+""+s}),{result:t.it,targetType:"result"};if("string"==typeof n){if(n.startsWith("#")||n.startsWith(".")||n.includes("[")){const e=this.resolveDOMElement(n);return e.innerHTML+=s,{result:e,targetType:"element",target:e}}if("me"===n||"it"===n||"you"===n){const e=this.resolveContextRef(n,t);if(dr(e))return e.innerHTML+=s,{result:e,targetType:"element",target:e}}const e=hr(n,t);if(void 0!==e){if(dr(e))return e.innerHTML+=s,{result:e,targetType:"element",target:e};if(Array.isArray(e))return e.push(r),{result:e,targetType:"array",target:n};const i=(null==e?"":e+"")+s;return fr(n,i,t),{result:i,targetType:"variable",target:n}}return fr(n,s,t),{result:s,targetType:"variable",target:n}}if(Array.isArray(n))return n.push(r),{result:n,targetType:"array"};if(dr(n))return n.innerHTML+=s,{result:n,targetType:"element",target:n};{const e=n+""+s;return Object.assign(t,{it:e}),{result:e,targetType:"string"}}}resolveDOMElement(e){if("undefined"==typeof document)throw Error("DOM not available");const t=document.querySelector(e);if(!t)throw Error("Element not found: "+e);return t}resolveContextRef(e,t){switch(e){case"me":return t.me;case"it":return t.it;case"you":return t.you;default:throw Error("Unknown context ref: "+e)}}},ji(t,"AppendCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;Li(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),Pi(t,n)})(),t})());class rl{constructor(){this.name="render"}get metadata(){return rl.metadata}async parseInput(e,t,r){if(1>e.args.length)throw Error("render command requires a template");const n=await t.evaluate(e.args[0],r);let s;if(e.args.length>=3&&"with"===await t.evaluate(e.args[1],r)){const n=await t.evaluate(e.args[2],r);n&&"object"==typeof n&&(s=n)}if(!s&&e.modifiers?.with){const n=await t.evaluate(e.modifiers.with,r);n&&"object"==typeof n&&(s=n)}return{template:n,variables:s}}async execute(e,t){const{template:r,variables:n={}}=e,s=this.extractTemplateContent(r,t),i=this.createTemplateContext(t,n),a=[],o=await this.processTemplate(s,i,a),l=this.createDOMElement(o);return Object.assign(t,{it:l}),{element:l,rendered:o,directivesProcessed:a}}extractTemplateContent(e,t){if(e instanceof HTMLTemplateElement)return e.innerHTML;if("string"==typeof e){let r=e;if(!r.includes("<")&&!r.includes("$")){const e=this.resolveVariable(r,t);if(e instanceof HTMLTemplateElement)return e.innerHTML;"string"==typeof e&&(r=e)}const n=r.match(/<template[^>]*>([\s\S]*?)<\/template>/i);return n?n[1]:r}if(e&&"object"==typeof e&&"innerHTML"in e)return e.innerHTML;throw Error("Invalid template format")}createTemplateContext(e,t){return{...e,locals:new Map([...Array.from(e.locals.entries()),...Object.entries(t)])}}async processTemplate(e,t,r){const n=e.split("\n"),s=[];let i=0;for(;n.length>i;){const e=n[i].trim();if(e.startsWith("@repeat ")){const{nextIndex:e,rendered:a}=await this.processRepeatDirective(n,i,t);s.push(a),i=e,r.push("@repeat")}else if(e.startsWith("@if ")){const{nextIndex:e,rendered:a}=await this.processIfDirective(n,i,t,r);s.push(a),i=e,r.push("@if")}else if("@else"===e||"@end"===e)i++;else{const r=this.processVariableInterpolation(e,t);s.push(r),i++}}return s.join("\n")}async processRepeatDirective(e,t,r){const n=e[t].trim(),s=n.match(/^@repeat\s+in\s+(.+)$/);if(!s)throw Error("Invalid @repeat syntax: "+n);const i=this.evaluateExpression(s[1],r),{endIndex:a,blockContent:o}=this.extractDirectiveBlock(e,t+1),l=[];if(Array.isArray(i))for(const e of i){const t={...r,locals:new Map([...r.locals.entries(),["it",e]])},n=await this.processTemplate(o.join("\n"),t,[]);l.push(n)}return{nextIndex:a+1,rendered:l.join("\n")}}async processIfDirective(e,t,r,n){const s=e[t].trim(),i=s.match(/^@if\s+(.+)$/);if(!i)throw Error("Invalid @if syntax: "+s);const a=!!this.evaluateExpression(i[1],r),{endIndex:o,blockContent:l,elseContent:c}=this.extractIfElseBlock(e,t+1);let u="";return a?u=await this.processTemplate(l.join("\n"),r,[]):c.length>0&&(u=await this.processTemplate(c.join("\n"),r,[]),n.push("@else")),{nextIndex:o+1,rendered:u}}extractDirectiveBlock(e,t){const r=[];let n=1,s=t;for(;e.length>s&&n>0;){const t=e[s].trim();t.startsWith("@repeat ")||t.startsWith("@if ")?(n++,r.push(e[s])):"@end"===t?(n--,n>0&&r.push(e[s])):r.push(e[s]),s++}return{endIndex:s-1,blockContent:r}}extractIfElseBlock(e,t){const r=[],n=[];let s=1,i=t,a=!1;for(;e.length>i&&s>0;){const t=e[i].trim();if(t.startsWith("@if "))s++;else{if("@else"===t&&1===s){a=!0,i++;continue}if("@end"===t&&(s--,0===s))break}a?n.push(e[i]):r.push(e[i]),i++}return{endIndex:i,blockContent:r,elseContent:n}}processVariableInterpolation(e,t){return e.replace(/\$\{([^}]+)\}/g,(e,r)=>{try{const e=r.trim();if(e.startsWith("unescaped ")){const r=e.substring(10).trim();return(this.evaluateExpression(r,t)||"")+""}const n=this.evaluateExpression(e,t);return this.escapeHtml((n||"")+"")}catch(t){return de(`render: template interpolation error for ${r}:`,t),e}})}evaluateExpression(e,t){if("true"===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"===e)return;const r=Number(e);if(!isNaN(r)&&""!==e.trim())return r;if(e.startsWith("[")&&e.endsWith("]"))try{return JSON.parse(e)}catch{}if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return e.slice(1,-1);if(e.includes(".")){const r=e.split(".");let n=this.resolveVariable(r[0],t);for(let e=1;r.length>e&&null!=n;e++){if("object"!=typeof n||null===n)return;n=n[r[e]]}return n}return this.resolveVariable(e,t)}resolveVariable(e,t){return t.locals?.has(e)?t.locals.get(e):"me"===e?t.me:"it"===e?t.it:"you"===e?t.you:"result"===e?t.result:t.globals?.has(e)?t.globals.get(e):void 0}escapeHtml(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}createDOMElement(e){if("undefined"==typeof document)return null;const t=document.createElement("div");return t.innerHTML=e,1===t.children.length?t.firstElementChild:t}}rl.metadata={description:"Render templates with @if, @else, and @repeat directives",syntax:["render <template>","render <template> with <variables>","render <template> with (key: value, ...)"],examples:["render myTemplate",'render myTemplate with (name: "Alice")','render "<template>Hello ${name}!</template>" with (name: "World")',"render template with (items: data)"],category:"templates",sideEffects:["dom-creation","template-execution"]};class nl{constructor(){this.name="pseudo-command"}get metadata(){return nl.metadata}async parseInput(e,t,r){if(1===e.args.length&&"objectLiteral"===e.args[0].type){const n=e.args[0].properties||[];let s,i,a="",o=[];for(const e of n){const n=e.value;switch(e.key?.name||e.key?.value){case"methodName":a=n?.value||await t.evaluate(n,r)+"";break;case"methodArgs":"arrayLiteral"===n?.type&&n.elements?o=await Promise.all(n.elements.map(e=>t.evaluate(e,r))):"literal"===n?.type&&Array.isArray(n.value)&&(o=await Promise.all(n.value.map(e=>t.evaluate(e,r))));break;case"preposition":const e=n?.value;e&&"null"!==e&&(s=e);break;case"target":case"targetExpression":i=await t.evaluate(n,r)}}if(!a)throw Error("pseudo-command requires method name");if(null==i)throw Error("pseudo-command requires a target expression");return{methodName:a,methodArgs:o,preposition:s,targetExpression:i}}if(2>e.args.length)throw Error("pseudo-command requires method name and target expression");const n=await t.evaluate(e.args[0],r)+"",s=Array.isArray(e.args[1])?await Promise.all(e.args[1].map(e=>t.evaluate(e,r))):[];let i,a;const o=["from","on","with","into","at","to"];for(const n of o)if(e.modifiers?.[n]){a=n,i=await t.evaluate(e.modifiers[n],r);break}if(i||3>e.args.length||(i=await t.evaluate(e.args[2],r)),!i)throw Error("pseudo-command requires a target expression");return{methodName:n,methodArgs:s,preposition:a,targetExpression:i}}async execute(e,t){const{methodName:r,methodArgs:n,targetExpression:s}=e;try{const e=await this.resolveTarget(s,t);if(null==e)throw Error("Target expression resolved to "+e);const i=this.resolveMethod(e,r);if(!i)throw Error(`Method "${r}" not found on target object`);if("function"!=typeof i)throw Error(`"${r}" is not a function (it's a ${typeof i})`);const a=await this.executeMethod(i,e,n);return t.locals.set("result",a),Object.assign(t,{it:a}),{result:a,methodName:r,target:e}}catch(e){throw Error("Pseudo-command failed: "+(e instanceof Error?e.message:e+""))}}async resolveTarget(e,t){return"object"==typeof e&&null!==e?e:"string"==typeof e?t.locals.has(e)?t.locals.get(e):t.variables?.has(e)?t.variables.get(e):t.globals.has(e)?t.globals.get(e):"me"===e&&t.me?t.me:"it"===e&&t.it?t.it:"document"===e?"undefined"!=typeof document?document:null:"window"===e?"undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:null:this.resolvePropertyPath(e,t):e}resolvePropertyPath(e,t){const r=e.split(".");let n="undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:null;t.locals.has(r[0])?(n=t.locals.get(r[0]),r.shift()):t.variables?.has(r[0])?(n=t.variables.get(r[0]),r.shift()):t.globals.has(r[0])&&(n=t.globals.get(r[0]),r.shift());for(const e of r){if(null==n)return null;n=n[e]}return n}resolveMethod(e,t){if(!e)return null;if(t in e)return e[t];const r=t.split(".");let n=e;for(let e=0;r.length>e;e++){const t=r[e];if(null==n)return null;if(!(t in n))return null;if(n=n[t],e===r.length-1&&"function"==typeof n)return n}return null}async executeMethod(e,t,r){try{const n=e.apply(t,r);return n&&"object"==typeof n&&"then"in n?await n:n}catch(e){throw Error("Method execution failed: "+(e instanceof Error?e.message:e+""))}}}nl.metadata={description:"Treat a method on an object as a top-level command",syntax:["<method>(<args>) [(to|on|with|into|from|at)] <expression>"],examples:['getElementById("d1") from the document',"reload() the location of the window",'setAttribute("foo", "bar") on me',"foo() on me"],category:"execution",sideEffects:["method-execution"]};var sl={to:"destination",into:"destination",from:"source",with:"style",by:"quantity",as:"method",on:"event",over:"duration",for:"duration"},il={set:"destination",on:"event",trigger:"event",send:"event",wait:"duration",fetch:"source",get:"source",if:"condition",unless:"condition",while:"condition",repeat:"loopType",go:"destination",scroll:"destination",tell:"destination",default:"destination",swap:"destination",bind:"destination"},al=new Set(["to","from","into","with","at","in","of","as","by","before","after","without"]),ol=new Set(["add","append","async","beep","blur","break","breakpoint","call","clear","close","continue","decrement","default","empty","exit","fetch","focus","for","get","go","halt","hide","if","increment","install","js","log","make","measure","morph","open","pick","process","push","put","remove","render","repeat","replace","reset","return","select","send","set","settle","show","swap","take","tell","throw","toggle","transition","trigger","unless","wait","live","bind","eventsource","socket","worker","intercept"]),ll=new Set(["then","else","end","and","or","not","if","unless","for","while","until","forever","times","each","index","in","to","from","into","with","without","of","at","by","as","matches","contains","is","exists","on","when","every","event","init","def","behavior","global","local","the","a","an","first","last","start","before","after"]),cl=new Set(["click","dblclick","mousedown","mouseup","mouseenter","mouseleave","mouseover","mouseout","mousemove","keydown","keyup","keypress","focus","blur","change","input","submit","reset","load","unload","resize","scroll","touchstart","touchend","touchmove","touchcancel","dragstart","dragend","dragenter","dragleave","dragover","drop","contextmenu","wheel","pointerdown","pointerup","pointermove","ms","s"]),ul=new Set(["and","or","not","is","exists","matches","contains","then","else"]),dl=new Set(["true","false","null","undefined","it","me","my","result"]),ml=new Set(["first","last","next","previous","prev","at","random","closest","parent","children","within","no","empty","some","starts with","ends with"]),pl=new Set(["if","unless","when","where","\u3082\u3057","\u6642\u306b","\u3068\u304d\u306b","\u3069\u3053\u3067","\u5982\u679c","\u5f53","\u0625\u0630\u0627","\u0639\u0646\u062f\u0645\u0627","\u062d\u064a\u062b","si","cuando","donde","wenn","wann","wo","quand","lorsque","o\u00f9","quando","onde","e\u011fer","zaman","nerede","ketika","saat","dimana","\ub54c","\uc5b4\ub514\uc11c","maypi","wakati","wapi"]),hl=new Set(["then","\u305d\u308c\u304b\u3089","\u90a3\u4e48","\u062b\u0645","entonces","alors","dann","sonra","lalu","chayqa","kisha"]);function fl(e,t,r={}){const{allowEnglishFallback:n=!0}=r,s=new Map,i=new Map,a=new Map,o=new Map,l=new Map,c=new Map,u=new Map,d=new Map,m=new Map,p=new Map;function h(e,t,r=!1){for(const[n,s]of Object.entries(e)){const e=s.toLowerCase();t.set(e,n.toLowerCase()),!r&&m.has(e)||m.set(e,n.toLowerCase()),p.set(n.toLowerCase(),s.toLowerCase())}}e.commands&&h(e.commands,s,!0),e.logical&&h(e.logical,o,!0),e.events&&h(e.events,a),e.values&&h(e.values,c),e.temporal&&h(e.temporal,l),e.modifiers&&h(e.modifiers,i),e.attributes&&h(e.attributes,u),e.expressions&&h(e.expressions,d);const f=new Set(s.keys()),y=new Set(m.keys());if(n){for(const e of ol)f.add(e);for(const e of ll)y.add(e);for(const e of cl)y.add(e)}return{locale:t,resolve(e){const t=e.toLowerCase(),r=m.get(t);if(void 0!==r)return r;if(n){if(ol.has(t)||ll.has(t))return t;if(cl.has(t))return t}},isCommand(e){const t=e.toLowerCase();return!!s.has(t)||!(!n||!ol.has(t))},isKeyword(e){const t=e.toLowerCase();return!!(i.has(t)||o.has(t)||l.has(t)||c.has(t))||!(!n||!ll.has(t))},isEvent(e){const t=e.toLowerCase();return!!a.has(t)||!!cl.has(t)},isModifier(e){const t=e.toLowerCase();return i.has(t)||n&&al.has(t)},isLogical(e){const t=e.toLowerCase();return o.has(t)||n&&ul.has(t)},isValue(e){const t=e.toLowerCase();return c.has(t)||n&&dl.has(t)},isExpression(e){const t=e.toLowerCase();return d.has(t)||n&&ml.has(t)},getCommands:()=>Array.from(f),getKeywords:()=>Array.from(y),toLocale:e=>p.get(e.toLowerCase())}}function yl(){return{locale:"en",resolve(e){const t=e.toLowerCase();if(ol.has(t)||ll.has(t)||cl.has(t))return t},isCommand:e=>ol.has(e.toLowerCase()),isKeyword:e=>ll.has(e.toLowerCase()),isEvent:e=>cl.has(e.toLowerCase()),isModifier:e=>al.has(e.toLowerCase()),isLogical:e=>ul.has(e.toLowerCase()),isValue:e=>dl.has(e.toLowerCase()),isExpression:e=>ml.has(e.toLowerCase()),getCommands:()=>Array.from(ol),getKeywords:()=>Array.from(ll),toLocale:e=>e.toLowerCase()}}var gl={commands:{on:"en",tell:"decir",trigger:"disparar",send:"enviar",take:"tomar",put:"poner",set:"establecer",get:"obtener",add:"agregar",remove:"quitar",toggle:"alternar",hide:"ocultar",show:"mostrar",if:"si",unless:"menos",repeat:"repetir",for:"para",while:"mientras",until:"hasta",continue:"continuar",break:"romper",halt:"detener",wait:"esperar",fetch:"buscar",call:"llamar",return:"retornar",make:"hacer",log:"registrar",throw:"lanzar",catch:"atrapar",measure:"medir",transition:"transici\u00f3n",increment:"incrementar",decrement:"decrementar",default:"predeterminar",go:"ir",pushUrl:"pushUrl",replaceUrl:"reemplazarUrl",copy:"copiar",pick:"escoger",beep:"pitido",js:"js",async:"as\u00edncrono",render:"renderizar",swap:"intercambiar",morph:"transformar",settle:"estabilizar",append:"anexar",exit:"salir",install:"instalar",breakpoint:"punto-interrupci\u00f3n",clear:"limpiar",close:"cerrar",open:"abrir",select:"seleccionar",clone:"clonar",prepend:"anteponer"},modifiers:{to:"a",from:"de",into:"en",with:"con",at:"en",in:"en",of:"de",as:"como",by:"por",before:"antes",after:"despu\u00e9s",over:"sobre",under:"bajo",between:"entre",through:"trav\u00e9s",without:"sin"},events:{click:"clic",dblclick:"dobleclic",mousedown:"rat\u00f3nabajo",mouseup:"rat\u00f3narriba",mouseenter:"rat\u00f3nentrar",mouseleave:"rat\u00f3nsalir",mouseover:"rat\u00f3n encima",mouseout:"rat\u00f3n fuera",mousemove:"rat\u00f3nmover",keydown:"tecla abajo",keyup:"tecla arriba",keypress:"teclapresar",focus:"enfocar",blur:"desenfocar",change:"cambiar",input:"entrada",submit:"env\u00edo",reset:"reiniciar",load:"cargar",unload:"descargar",resize:"redimensionar",scroll:"desplazar",touchstart:"toqueempezar",touchend:"toqueterminar",touchmove:"toquemover",touchcancel:"toquecancelar"},logical:{when:"cuando",where:"donde",and:"y",or:"o",not:"no",is:"es",exists:"existe",matches:"coincide",contains:"contiene",includes:"incluye",equals:"iguala",has:"tiene",have:"tengo",then:"entonces",else:"sino",otherwise:"delocontrario",end:"fin",live:"vivo",changes:"cambia"},temporal:{seconds:"segundos",second:"segundo",milliseconds:"milisegundos",millisecond:"milisegundo",minutes:"minutos",minute:"minuto",hours:"horas",hour:"hora",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"verdadero",false:"falso",null:"nulo",undefined:"indefinido",it:"ello",its:"su",me:"yo",my:"mi",you:"tu",your:"tu",yourself:"ti mismo",myself:"yo mismo",element:"elemento",target:"objetivo",detail:"detalle",event:"evento",window:"ventana",document:"documento",body:"cuerpo",result:"resultado",value:"valor"},attributes:{class:"clase",classes:"clases",style:"estilo",styles:"estilos",attribute:"atributo",attributes:"atributos",property:"propiedad",properties:"propiedades"},expressions:{characters:"caracteres",inclusive:"inclusivo",exclusive:"exclusivo",first:"primero",last:"\u00faltimo",next:"siguiente",previous:"anterior",prev:"ant",at:"en",random:"aleatorio",closest:"cercano",parent:"padre",children:"hijos",within:"dentro",no:"ning\u00fan",empty:"vac\u00edo",some:"alg\u00fan","starts with":"empieza con","ends with":"termina con","ignoring case":"ignorando may\u00fasculas","sorted by":"ordenado por","mapped to":"transformado a","split by":"dividido por","joined by":"unido por"}},vl=fl(gl,"es",{allowEnglishFallback:!0}),bl={commands:{on:"\u3067",tell:"\u4f1d\u3048\u308b",trigger:"\u5f15\u304d\u91d1",send:"\u9001\u308b",take:"\u53d6\u308b",put:"\u7f6e\u304f",set:"\u8a2d\u5b9a",get:"\u53d6\u5f97",add:"\u8ffd\u52a0",remove:"\u524a\u9664",toggle:"\u5207\u308a\u66ff\u3048",hide:"\u96a0\u3059",show:"\u8868\u793a",if:"\u3082\u3057",unless:"\u306a\u3044\u9650\u308a",repeat:"\u7e70\u308a\u8fd4\u3057",for:"\u305f\u3081\u306b",while:"\u306e\u9593",until:"\u307e\u3067",continue:"\u7d9a\u3051\u308b",break:"\u4e2d\u65ad",halt:"\u505c\u6b62",wait:"\u5f85\u3064",fetch:"\u30d5\u30a7\u30c3\u30c1",call:"\u547c\u3073\u51fa\u3057",return:"\u623b\u308b",make:"\u4f5c\u308b",log:"\u8a18\u9332",throw:"\u6295\u3052\u308b",catch:"\u6355\u307e\u3048\u308b",measure:"\u6e2c\u5b9a",transition:"\u9077\u79fb",increment:"\u5897\u52a0",decrement:"\u6e1b\u5c11",default:"\u65e2\u5b9a",go:"\u79fb\u52d5",pushUrl:"URL\u30d7\u30c3\u30b7\u30e5",replaceUrl:"URL\u7f6e\u63db",copy:"\u30b3\u30d4\u30fc",pick:"\u9078\u629e",beep:"\u30d3\u30fc\u30d7",js:"JS\u5b9f\u884c",async:"\u975e\u540c\u671f",render:"\u63cf\u753b",swap:"\u4ea4\u63db",morph:"\u5909\u5f62",settle:"\u5b89\u5b9a",append:"\u672b\u5c3e\u8ffd\u52a0",exit:"\u9000\u51fa",install:"\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb",breakpoint:"\u30d6\u30ec\u30fc\u30af\u30dd\u30a4\u30f3\u30c8",clear:"\u30af\u30ea\u30a2",close:"\u9589\u3058\u308b",open:"\u958b\u304f",select:"\u9078\u3076",clone:"\u8907\u88fd",prepend:"\u5148\u982d\u8ffd\u52a0",socket:"\u30bd\u30b1\u30c3\u30c8"},modifiers:{to:"\u306b",from:"\u304b\u3089",into:"\u3078",with:"\u3068",at:"\u3067",in:"\u306e\u4e2d",of:"\u306e",as:"\u3068\u3057\u3066",by:"\u306b\u3088\u3063\u3066",before:"\u524d\u306b",after:"\u5f8c\u306b",over:"\u4e0a\u306b",under:"\u4e0b\u306b",between:"\u9593\u306b",through:"\u901a\u3057\u3066",without:"\u306a\u3057\u3067"},events:{click:"\u30af\u30ea\u30c3\u30af",dblclick:"dblclick",mousedown:"\u30de\u30a6\u30b9\u62bc\u4e0b",mouseup:"\u30de\u30a6\u30b9\u89e3\u653e",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc",mouseout:"\u30de\u30a6\u30b9\u30a2\u30a6\u30c8",mousemove:"mousemove",keydown:"\u30ad\u30fc\u30c0\u30a6\u30f3",keyup:"\u30ad\u30fc\u30a2\u30c3\u30d7",keypress:"\u30ad\u30fc\u30d7\u30ec\u30b9",focus:"\u30d5\u30a9\u30fc\u30ab\u30b9",blur:"\u307c\u304b\u3057",change:"\u5909\u66f4",input:"\u5165\u529b",submit:"\u9001\u4fe1",reset:"\u30ea\u30bb\u30c3\u30c8",load:"\u8aad\u307f\u8fbc\u307f",unload:"unload",resize:"\u30b5\u30a4\u30ba\u5909\u66f4",scroll:"\u30b9\u30af\u30ed\u30fc\u30eb",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel"},logical:{when:"\u6642",where:"\u3069\u3053",and:"\u305d\u3057\u3066",or:"\u307e\u305f\u306f",not:"\u3067\u306f\u306a\u3044",is:"\u3067\u3042\u308b",exists:"\u5b58\u5728\u3059\u308b",matches:"\u4e00\u81f4\u3059\u308b",contains:"\u542b\u3080",includes:"\u542b\u3081\u308b",equals:"\u7b49\u3057\u3044",has:"\u3042\u308b",have:"\u3042\u308b",then:"\u305d\u308c\u304b\u3089",else:"\u305d\u3046\u3067\u306a\u3051\u308c\u3070",otherwise:"\u305d\u3046\u3067\u306a\u3051\u308c\u3070",end:"\u7d42\u308f\u308a",live:"\u30e9\u30a4\u30d6",bind:"\u30d0\u30a4\u30f3\u30c9",changes:"\u5909\u308f\u3063\u305f\u3089"},temporal:{seconds:"\u79d2",second:"\u79d2",milliseconds:"\u30df\u30ea\u79d2",millisecond:"\u30df\u30ea\u79d2",minutes:"\u5206",minute:"\u5206",hours:"\u6642\u9593",hour:"\u6642\u9593",ms:"ms",s:"\u79d2",min:"\u5206",h:"\u6642"},values:{true:"\u771f",false:"\u507d",null:"null",undefined:"\u672a\u5b9a\u7fa9",it:"\u305d\u308c",its:"\u305d\u306e",me:"\u79c1",my:"\u79c1\u306e",you:"\u3042\u306a\u305f",your:"\u3042\u306a\u305f\u306e",yourself:"\u3042\u306a\u305f\u81ea\u8eab",myself:"\u79c1\u81ea\u8eab",element:"\u8981\u7d20",target:"\u5bfe\u8c61",detail:"\u8a73\u7d30",event:"\u30a4\u30d9\u30f3\u30c8",window:"\u30a6\u30a3\u30f3\u30c9\u30a6",document:"\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8",body:"\u30dc\u30c7\u30a3",result:"\u7d50\u679c",value:"\u5024"},attributes:{class:"\u30af\u30e9\u30b9",classes:"\u30af\u30e9\u30b9\u7fa4",style:"\u30b9\u30bf\u30a4\u30eb",styles:"\u30b9\u30bf\u30a4\u30eb\u7fa4",attribute:"\u5c5e\u6027",attributes:"\u5c5e\u6027\u7fa4",property:"\u30d7\u30ed\u30d1\u30c6\u30a3",properties:"\u30d7\u30ed\u30d1\u30c6\u30a3\u7fa4"},expressions:{characters:"\u6587\u5b57",inclusive:"\u542b\u3080",exclusive:"\u9664\u304f",first:"\u6700\u521d",last:"\u6700\u5f8c",next:"\u6b21",previous:"\u524d",prev:"\u524d",at:"\u3067",random:"\u30e9\u30f3\u30c0\u30e0",closest:"\u6700\u3082\u8fd1\u3044",parent:"\u89aa",children:"\u5b50",within:"\u4ee5\u5185",no:"\u306a\u3044",empty:"\u7a7a",some:"\u3044\u304f\u3064\u304b","starts with":"\u3067\u59cb\u307e\u308b","ends with":"\u3067\u7d42\u308f\u308b","ignoring case":"\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u3092\u7121\u8996","sorted by":"\u3067\u30bd\u30fc\u30c8","mapped to":"\u306b\u5909\u63db","split by":"\u3067\u5206\u5272","joined by":"\u3067\u7d50\u5408"}},wl=fl(bl,"ja",{allowEnglishFallback:!0}),kl={commands:{on:"sur",tell:"dire",trigger:"d\u00e9clencher",send:"envoyer",take:"prendre",put:"mettre",set:"d\u00e9finir",get:"obtenir",add:"ajouter",remove:"supprimer",toggle:"basculer",blur:"d\u00e9focaliser",hide:"cacher",show:"montrer",if:"si",unless:"saufsi",repeat:"r\u00e9p\u00e9ter",for:"pour",while:"tantque",until:"jusqu\u00e0",continue:"continuer",break:"arr\u00eater",halt:"stopper",wait:"attendre",fetch:"r\u00e9cup\u00e9rer",call:"appeler",return:"retourner",make:"cr\u00e9er",log:"enregistrer",throw:"lancer",catch:"attraper",measure:"mesurer",transition:"transition",increment:"incr\u00e9menter",decrement:"d\u00e9cr\u00e9menter",default:"d\u00e9faut",go:"aller",pushUrl:"pousserUrl",replaceUrl:"remplacerUrl",copy:"copier",pick:"choisir",beep:"bip",js:"js",async:"asynchrone",render:"rendu",swap:"\u00e9changer",morph:"transformer",settle:"stabiliser",append:"annexer",exit:"sortir",install:"installer",breakpoint:"point-arr\u00eat",clear:"effacer",close:"fermer",open:"ouvrir",select:"s\u00e9lectionner",clone:"cloner",prepend:"pr\u00e9fixer",focus:"focaliser"},modifiers:{to:"\u00e0",from:"de",into:"dans",with:"avec",at:"\u00e0",in:"en",of:"de",as:"comme",by:"par",before:"avant",after:"apr\u00e8s",over:"sur",under:"sous",between:"entre",through:"\u00e0 travers",without:"sans"},events:{click:"clic",dblclick:"doubleclic",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"sourisentrer",mouseleave:"sourissortir",mouseover:"souris dessus",mouseout:"souris dehors",mousemove:"sourisbouger",keydown:"touche bas",keyup:"touche haut",keypress:"touchepress\u00e9e",focus:"focus",blur:"flou",change:"changer",input:"saisie",submit:"soumettre",reset:"r\u00e9initialiser",load:"charger",unload:"d\u00e9charger",resize:"redimensionner",scroll:"d\u00e9filer",touchstart:"touchercommencer",touchend:"toucherfin",touchmove:"toucherbouger",touchcancel:"toucherannuler"},logical:{when:"quand",where:"o\u00f9",and:"et",or:"ou",not:"non",is:"est",exists:"existe",matches:"correspond",contains:"contient",includes:"inclut",equals:"\u00e9gale",has:"a",have:"ai",then:"alors",else:"sinon",otherwise:"autrement",end:"fin",live:"vif",changes:"change"},temporal:{seconds:"secondes",second:"seconde",milliseconds:"millisecondes",millisecond:"milliseconde",minutes:"minutes",minute:"minute",hours:"heures",hour:"heure",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"vrai",false:"faux",null:"nul",undefined:"ind\u00e9fini",it:"\u00e7a",its:"son",me:"moi",my:"mon",you:"tu",your:"ton",yourself:"toi-m\u00eame",myself:"moi-m\u00eame",element:"\u00e9l\u00e9ment",target:"cible",detail:"d\u00e9tail",event:"\u00e9v\u00e9nement",window:"fen\u00eatre",document:"document",body:"corps",result:"r\u00e9sultat",value:"valeur"},attributes:{class:"classe",classes:"classes",style:"style",styles:"styles",attribute:"attribut",attributes:"attributs",property:"propri\u00e9t\u00e9",properties:"propri\u00e9t\u00e9s"},expressions:{characters:"caract\u00e8res",inclusive:"inclusif",exclusive:"exclusif",first:"premier",last:"dernier",next:"suivant",previous:"pr\u00e9c\u00e9dent",prev:"pr\u00e9c",at:"\u00e0",random:"al\u00e9atoire",closest:"proche",parent:"parent",children:"enfants",within:"dans",no:"aucun",empty:"vide",some:"quelques","starts with":"commence par","ends with":"finit par","ignoring case":"en ignorant la casse","sorted by":"tri\u00e9 par","mapped to":"transform\u00e9 en","split by":"divis\u00e9 par","joined by":"joint par"}},El=fl(kl,"fr",{allowEnglishFallback:!0}),xl={commands:{on:"bei",tell:"sagen",trigger:"ausl\u00f6sen",send:"senden",take:"nehmen",put:"setzen",set:"festlegen",get:"erhalten",add:"hinzuf\u00fcgen",remove:"entfernen",toggle:"umschalten",blur:"defokussieren",hide:"verstecken",show:"zeigen",if:"falls",unless:"wennnicht",repeat:"wiederholen",for:"f\u00fcr",while:"w\u00e4hrend",until:"bis",continue:"weiter",break:"unterbrechen",halt:"anhalten",wait:"warten",fetch:"abrufen",call:"aufrufen",return:"zur\u00fcckgeben",make:"erstellen",log:"protokollieren",throw:"werfen",catch:"fangen",measure:"messen",transition:"\u00fcbergang",increment:"erh\u00f6hen",decrement:"verringern",default:"standard",go:"gehen",pushUrl:"urlHinzuf\u00fcgen",replaceUrl:"urlErsetzen",copy:"kopieren",pick:"ausw\u00e4hlen",beep:"piepton",js:"js",async:"asynchron",render:"rendern",swap:"tauschen",morph:"verwandeln",settle:"stabilisieren",append:"anh\u00e4ngen",exit:"beenden",install:"installieren",breakpoint:"haltepunkt",clear:"bereinigen",close:"schlie\u00dfen",open:"\u00f6ffnen",select:"markieren",clone:"klonen",prepend:"voranstellen",focus:"fokussieren"},modifiers:{to:"zu",from:"von",into:"in",with:"mit",at:"bei",in:"in",of:"von",as:"als",by:"durch",before:"vor",after:"nach",over:"\u00fcber",under:"unter",between:"zwischen",through:"durch",without:"ohne"},events:{click:"klick",dblclick:"doppelklick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mauseintreten",mouseleave:"mausverlassen",mouseover:"maus dr\u00fcber",mouseout:"maus weg",mousemove:"mausbewegen",keydown:"taste unten",keyup:"taste oben",keypress:"tastedr\u00fccken",focus:"fokus",blur:"defokussieren",change:"\u00e4ndern",input:"eingabe",submit:"absenden",reset:"zur\u00fccksetzen",load:"laden",unload:"entladen",resize:"gr\u00f6\u00dfe\u00e4ndern",scroll:"scrollen",touchstart:"ber\u00fchrungstart",touchend:"ber\u00fchrungend",touchmove:"ber\u00fchrungbewegen",touchcancel:"ber\u00fchrungabbrechen"},logical:{when:"wenn",where:"wo",and:"und",or:"oder",not:"nicht",is:"ist",exists:"existiert",matches:"passt",contains:"enth\u00e4lt",includes:"beinhaltet",equals:"gleicht",has:"hat",have:"habe",then:"dann",else:"sonst",otherwise:"andernfalls",end:"ende",live:"live",changes:"\u00e4ndert"},temporal:{seconds:"sekunden",second:"sekunde",milliseconds:"millisekunden",millisecond:"millisekunde",minutes:"minuten",minute:"minute",hours:"stunden",hour:"stunde",ms:"ms",s:"s",min:"min",h:"std"},values:{true:"wahr",false:"falsch",null:"null",undefined:"undefiniert",it:"es",its:"sein",me:"ich",my:"mein",you:"du",your:"dein",yourself:"dich selbst",myself:"ich selbst",element:"element",target:"ziel",detail:"detail",event:"ereignis",window:"fenster",document:"dokument",body:"k\u00f6rper",result:"ergebnis",value:"wert"},attributes:{class:"klasse",classes:"klassen",style:"stil",styles:"stile",attribute:"attribut",attributes:"attribute",property:"eigenschaft",properties:"eigenschaften"},expressions:{characters:"Zeichen",inclusive:"inklusiv",exclusive:"exklusiv",first:"erste",last:"letzte",next:"n\u00e4chste",previous:"vorherige",prev:"vorh",at:"bei",random:"zuf\u00e4llig",closest:"n\u00e4chstgelegene",parent:"elternteil",children:"kinder",within:"innerhalb",no:"kein",empty:"leer",some:"einige","starts with":"beginnt mit","ends with":"endet mit","ignoring case":"ohne Gro\u00df-/Kleinschreibung","sorted by":"sortiert nach","mapped to":"zugeordnet zu","split by":"geteilt durch","joined by":"verbunden mit"}},Cl=fl(xl,"de",{allowEnglishFallback:!0}),Sl={commands:{on:"\u0639\u0644\u0649",tell:"\u0623\u062e\u0628\u0631",trigger:"\u062a\u0634\u063a\u064a\u0644",send:"\u0623\u0631\u0633\u0644",take:"\u062e\u0630",put:"\u0636\u0639",set:"\u0627\u0636\u0628\u0637",get:"\u0627\u062d\u0635\u0644",add:"\u0623\u0636\u0641",remove:"\u0627\u062d\u0630\u0641",toggle:"\u0628\u062f\u0644",hide:"\u0627\u062e\u0641",show:"\u0627\u0638\u0647\u0631",if:"\u0625\u0630\u0627",unless:"\u0625\u0644\u0627",repeat:"\u0643\u0631\u0631",for:"\u0644\u0643\u0644",while:"\u0628\u064a\u0646\u0645\u0627",until:"\u062d\u062a\u0649",continue:"\u0648\u0627\u0635\u0644",break:"\u062a\u0648\u0642\u0641",halt:"\u0623\u0648\u0642\u0641",wait:"\u0627\u0646\u062a\u0638\u0631",fetch:"\u0627\u062d\u0636\u0631",call:"\u0627\u0633\u062a\u062f\u0639",return:"\u0627\u0631\u062c\u0639",make:"\u0627\u0635\u0646\u0639",log:"\u0633\u062c\u0644",throw:"\u0627\u0631\u0645",catch:"\u0627\u0644\u062a\u0642\u0637",measure:"\u0642\u0633",transition:"\u0627\u0646\u062a\u0642\u0627\u0644",increment:"\u0632\u0650\u062f",decrement:"\u0623\u0646\u0642\u0635",default:"\u0627\u0641\u062a\u0631\u0627\u0636\u064a",go:"\u0627\u0630\u0647\u0628",pushUrl:"\u0627\u062f\u0641\u0639 \u0631\u0627\u0628\u0637",replaceUrl:"\u0627\u0633\u062a\u0628\u062f\u0644 \u0631\u0627\u0628\u0637",copy:"\u0627\u0646\u0633\u062e",pick:"\u0627\u062e\u062a\u0631",beep:"\u0635\u0641\u0651\u0631",js:"\u062c\u0627\u0641\u0627\u0633\u0643\u0631\u0628\u062a",async:"\u0645\u062a\u0632\u0627\u0645\u0646",render:"\u0627\u0631\u0633\u0645",swap:"\u0627\u0633\u062a\u0628\u062f\u0644",morph:"\u062d\u0648\u0651\u0644",settle:"\u0627\u0633\u062a\u0642\u0631",append:"\u0623\u0644\u062d\u0642",exit:"\u0627\u062e\u0631\u062c",install:"\u062b\u0628\u0651\u062a",breakpoint:"\u0646\u0642\u0637\u0629-\u062a\u0648\u0642\u0641",clear:"\u0646\u0638\u0651\u0641",close:"\u0623\u063a\u0644\u0642",open:"\u0627\u0641\u062a\u062d",select:"\u0638\u0644\u0644",clone:"\u0627\u0633\u062a\u0646\u0633\u062e",prepend:"\u0633\u0628\u0642",socket:"\u0645\u0642\u0628\u0633"},modifiers:{to:"\u0625\u0644\u0649",from:"\u0645\u0646",into:"\u0641\u064a",with:"\u0645\u0639",at:"\u0639\u0646\u062f",in:"\u0641\u064a",of:"\u0645\u0646",as:"\u0643\u0640",by:"\u0628\u0648\u0627\u0633\u0637\u0629",before:"\u0642\u0628\u0644",after:"\u0628\u0639\u062f",over:"\u0641\u0648\u0642",under:"\u062a\u062d\u062a",between:"\u0628\u064a\u0646",through:"\u0639\u0628\u0631",without:"\u0628\u062f\u0648\u0646"},events:{click:"\u0646\u0642\u0631",dblclick:"dblclick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"\u0641\u0623\u0631\u0629 \u0641\u0648\u0642",mouseout:"mouseout",mousemove:"mousemove",keydown:"\u0645\u0641\u062a\u0627\u062d \u0623\u0633\u0641\u0644",keyup:"\u0645\u0641\u062a\u0627\u062d \u0623\u0639\u0644\u0649",keypress:"keypress",focus:"\u062a\u0631\u0643\u064a\u0632",blur:"\u0636\u0628\u0627\u0628\u064a\u0629",change:"\u062a\u063a\u064a\u064a\u0631",input:"\u0625\u062f\u062e\u0627\u0644",submit:"\u0625\u0631\u0633\u0627\u0644",reset:"reset",load:"\u062a\u062d\u0645\u064a\u0644",unload:"unload",resize:"\u062a\u063a\u064a\u064a\u0631 \u062d\u062c\u0645",scroll:"\u062a\u0645\u0631\u064a\u0631",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel"},logical:{when:"\u0639\u0646\u062f\u0645\u0627",where:"\u0623\u064a\u0646",and:"\u0648",or:"\u0623\u0648",not:"\u0644\u064a\u0633",is:"\u0647\u0648",exists:"\u0645\u0648\u062c\u0648\u062f",matches:"\u064a\u0637\u0627\u0628\u0642",contains:"\u064a\u062d\u062a\u0648\u064a",includes:"\u064a\u0634\u0645\u0644",equals:"\u064a\u0633\u0627\u0648\u064a",has:"\u0644\u062f\u064a\u0647",have:"\u0644\u062f\u064a",then:"\u062b\u0645",else:"\u0648\u0625\u0644\u0627",otherwise:"\u062e\u0644\u0627\u0641 \u0630\u0644\u0643",end:"\u0627\u0644\u0646\u0647\u0627\u064a\u0629",live:"\u062d\u064a",bind:"\u0627\u0631\u0628\u0637",changes:"\u064a\u062a\u063a\u064a\u0631"},temporal:{seconds:"\u062b\u0648\u0627\u0646\u0650",second:"\u062b\u0627\u0646\u064a\u0629",milliseconds:"\u0645\u064a\u0644\u064a \u062b\u0627\u0646\u064a\u0629",millisecond:"\u0645\u064a\u0644\u064a \u062b\u0627\u0646\u064a\u0629",minutes:"\u062f\u0642\u0627\u0626\u0642",minute:"\u062f\u0642\u064a\u0642\u0629",hours:"\u0633\u0627\u0639\u0627\u062a",hour:"\u0633\u0627\u0639\u0629",ms:"\u0645.\u062b",s:"\u062b",min:"\u062f",h:"\u0633"},values:{true:"\u0635\u062d\u064a\u062d",false:"\u062e\u0637\u0623",null:"\u0641\u0627\u0631\u063a",undefined:"\u063a\u064a\u0631 \u0645\u0639\u0631\u0641",it:"\u0647\u0648",its:"\u0644\u0647",me:"\u0623\u0646\u0627",my:"\u0644\u064a",myself:"\u0646\u0641\u0633\u064a",you:"\u0623\u0646\u062a",your:"\u0644\u0643",yourself:"\u0646\u0641\u0633\u0643",element:"\u0639\u0646\u0635\u0631",target:"\u0647\u062f\u0641",detail:"\u062a\u0641\u0627\u0635\u064a\u0644",event:"\u062d\u062f\u062b",window:"\u0646\u0627\u0641\u0630\u0629",document:"\u0648\u062b\u064a\u0642\u0629",body:"\u062c\u0633\u0645",result:"\u0646\u062a\u064a\u062c\u0629",value:"\u0642\u064a\u0645\u0629"},attributes:{class:"\u0641\u0626\u0629",classes:"\u0641\u0626\u0627\u062a",style:"\u0623\u0633\u0644\u0648\u0628",styles:"\u0623\u0633\u0627\u0644\u064a\u0628",attribute:"\u062e\u0627\u0635\u064a\u0629",attributes:"\u062e\u0635\u0627\u0626\u0635",property:"\u062e\u0627\u0635\u064a\u0629",properties:"\u062e\u0635\u0627\u0626\u0635"},expressions:{characters:"\u062d\u0631\u0648\u0641",inclusive:"\u0634\u0627\u0645\u0644",exclusive:"\u062d\u0635\u0631\u064a",first:"\u0623\u0648\u0644",last:"\u0622\u062e\u0631",next:"\u0627\u0644\u062a\u0627\u0644\u064a",previous:"\u0627\u0644\u0633\u0627\u0628\u0642",prev:"\u0633\u0627\u0628\u0642",at:"\u0639\u0646\u062f",random:"\u0639\u0634\u0648\u0627\u0626\u064a",closest:"\u0627\u0644\u0623\u0642\u0631\u0628",parent:"\u0648\u0627\u0644\u062f",children:"\u0623\u0637\u0641\u0627\u0644",within:"\u062f\u0627\u062e\u0644",no:"\u0644\u0627 \u064a\u0648\u062c\u062f",empty:"\u0641\u0627\u0631\u063a",some:"\u0628\u0639\u0636","starts with":"\u064a\u0628\u062f\u0623 \u0628\u0640","ends with":"\u064a\u0646\u062a\u0647\u064a \u0628\u0640","ignoring case":"\u0645\u0639 \u062a\u062c\u0627\u0647\u0644 \u0627\u0644\u062d\u0627\u0644\u0629","sorted by":"\u0645\u0631\u062a\u0628 \u062d\u0633\u0628","mapped to":"\u0645\u062d\u0648\u0644 \u0625\u0644\u0649","split by":"\u0645\u0642\u0633\u0645 \u0628\u0648\u0627\u0633\u0637\u0629","joined by":"\u0645\u062f\u0645\u0648\u062c \u0628\u0648\u0627\u0633\u0637\u0629"}},Al=fl(Sl,"ar",{allowEnglishFallback:!0}),Tl={commands:{on:"\uc5d0",tell:"\ub9d0\ud558\ub2e4",trigger:"\ud2b8\ub9ac\uac70",send:"\ubcf4\ub0b4\ub2e4",take:"\uac00\uc838\uc624\ub2e4",put:"\ub123\ub2e4",set:"\uc124\uc815",get:"\uc5bb\ub2e4",add:"\ucd94\uac00",remove:"\uc81c\uac70",toggle:"\ud1a0\uae00",hide:"\uc228\uae30\ub2e4",show:"\ubcf4\uc774\ub2e4",if:"\ub9cc\uc57d",unless:"\uc544\ub2c8\ub77c\uba74",repeat:"\ubc18\ubcf5",for:"\uac01\uac01",while:"\ub3d9\uc548",until:"\uae4c\uc9c0",continue:"\uacc4\uc18d",break:"\uc911\ub2e8",halt:"\uc815\uc9c0",wait:"\ub300\uae30",fetch:"\uac00\uc838\uc624\uae30",call:"\ud638\ucd9c",return:"\ubc18\ud658",make:"\ub9cc\ub4e4\ub2e4",log:"\ub85c\uadf8",throw:"\ub358\uc9c0\ub2e4",catch:"\uc7a1\ub2e4",measure:"\uce21\uc815",transition:"\uc804\ud658",increment:"\uc99d\uac00",decrement:"\uac10\uc18c",default:"\uae30\ubcf8\uac12",go:"\uc774\ub3d9",pushUrl:"URL\ud478\uc2dc",replaceUrl:"URL\uad50\uccb4",copy:"\ubcf5\uc0ac",pick:"\uc120\ud0dd",beep:"\ube44\ud504",js:"JS\uc2e4\ud589",async:"\ube44\ub3d9\uae30",render:"\ub80c\ub354\ub9c1",swap:"\uad50\ud658",morph:"\ubcc0\ud615",settle:"\uc548\uc815",append:"\ub367\ubd99\uc774\ub2e4",exit:"\ub098\uac00\uae30",install:"\uc124\uce58",breakpoint:"\uc911\ub2e8\uc810",clear:"\uc9c0\uc6b0\uae30",close:"\ub2eb\uae30",open:"\uc5f4\uae30",select:"\uace0\ub974\uae30",clone:"\ubcf5\uc81c",prepend:"\uc55e\uc5d0\ucd94\uac00",socket:"\uc18c\ucf13"},modifiers:{to:"\uc5d0",from:"\uc5d0\uc11c",into:"\uc73c\ub85c",with:"\uc640",at:"\uc5d0",in:"\uc548\uc5d0",of:"\uc758",as:"\ub85c",by:"\uc5d0\uc758\ud574",before:"\uc804\uc5d0",after:"\ud6c4\uc5d0",over:"\uc704\uc5d0",under:"\uc544\ub798",between:"\uc0ac\uc774",through:"\ud1b5\ud574",without:"\uc5c6\uc774"},events:{click:"\ud074\ub9ad",dblclick:"\ub354\ube14\ud074\ub9ad",mousedown:"\ub9c8\uc6b0\uc2a4\ub2e4\uc6b4",mouseup:"\ub9c8\uc6b0\uc2a4\uc5c5",mouseenter:"\ub9c8\uc6b0\uc2a4\uc5d4\ud130",mouseleave:"\ub9c8\uc6b0\uc2a4\ub9ac\ube0c",mouseover:"\ub9c8\uc6b0\uc2a4\uc624\ubc84",mouseout:"\ub9c8\uc6b0\uc2a4\uc544\uc6c3",mousemove:"\ub9c8\uc6b0\uc2a4\ubb34\ube0c",keydown:"\ud0a4\ub2e4\uc6b4",keyup:"\ud0a4\uc5c5",keypress:"\ud0a4\ud504\ub808\uc2a4",focus:"\ud3ec\ucee4\uc2a4",blur:"\ube14\ub7ec",change:"\ubcc0\uacbd",input:"\uc785\ub825",submit:"\uc81c\ucd9c",reset:"\uc7ac\uc124\uc815",load:"\ub85c\ub4dc",unload:"unload",resize:"\ub9ac\uc0ac\uc774\uc988",scroll:"\uc2a4\ud06c\ub864",touchstart:"touchstart",touchend:"\ud130\uce58\uc885\ub8cc",touchmove:"touchmove",touchcancel:"\ud130\uce58\ucde8\uc18c"},logical:{when:"\ub54c",where:"\uc5b4\ub514",and:"\uadf8\ub9ac\uace0",or:"\ub610\ub294",not:"\uc544\ub2c8",is:"\uc774\ub2e4",exists:"\uc874\uc7ac",matches:"\uc77c\uce58",contains:"\ud3ec\ud568",includes:"\ud3ec\ud568\ud558\ub2e4",equals:"\uac19\ub2e4",has:"\uc788\ub2e4",have:"\uc788\ub2e4",then:"\uadf8\ub7ec\uba74",else:"\uc544\ub2c8\uba74",otherwise:"\uadf8\ub807\uc9c0\uc54a\uc73c\uba74",end:"\ub05d",live:"\ub77c\uc774\ube0c",bind:"\ubc14\uc778\ub4dc",changes:"\ubcc0\uacbd\ub418\uba74"},temporal:{seconds:"\ucd08",second:"\ucd08",milliseconds:"\ubc00\ub9ac\ucd08",millisecond:"\ubc00\ub9ac\ucd08",minutes:"\ubd84",minute:"\ubd84",hours:"\uc2dc\uac04",hour:"\uc2dc\uac04",ms:"ms",s:"\ucd08",min:"\ubd84",h:"\uc2dc"},values:{true:"\ucc38",false:"\uac70\uc9d3",null:"\ub110",undefined:"\uc815\uc758\uc548\ub428",it:"\uadf8\uac83",its:"\uadf8\uac83\uc758",me:"\ub098",my:"\ub0b4",myself:"\ub098\uc790\uc2e0",you:"\ub108",your:"\ub124",yourself:"\ub108\uc790\uc2e0",element:"\uc694\uc18c",target:"\ub300\uc0c1",detail:"\uc138\ubd80",event:"\uc774\ubca4\ud2b8",window:"\ucc3d",document:"\ubb38\uc11c",body:"\ubc14\ub514",result:"\uacb0\uacfc",value:"\uac12"},attributes:{class:"\ud074\ub798\uc2a4",classes:"\ud074\ub798\uc2a4\ub4e4",style:"\uc2a4\ud0c0\uc77c",styles:"\uc2a4\ud0c0\uc77c\ub4e4",attribute:"\uc18d\uc131",attributes:"\uc18d\uc131\ub4e4",property:"\ud504\ub85c\ud37c\ud2f0",properties:"\ud504\ub85c\ud37c\ud2f0\ub4e4"},expressions:{characters:"\ubb38\uc790",inclusive:"\ud3ec\ud568",exclusive:"\uc81c\uc678",first:"\uccab\ubc88\uc9f8",last:"\ub9c8\uc9c0\ub9c9",next:"\ub2e4\uc74c",previous:"\uc774\uc804",prev:"\uc774\uc804",at:"\uc5d0\uc11c",random:"\ubb34\uc791\uc704",closest:"\uac00\uc7a5\uac00\uae4c\uc6b4",parent:"\ubd80\ubaa8",children:"\uc790\uc2dd",within:"\uc774\ub0b4",no:"\uc5c6\uc74c",empty:"\ube44\uc5b4\uc788\ub294",some:"\uc77c\ubd80","starts with":"\ub85c\uc2dc\uc791","ends with":"\ub85c\ub05d\ub098\ub294","ignoring case":"\ub300\uc18c\ubb38\uc790_\ubb34\uc2dc","sorted by":"\ub85c_\uc815\ub82c","mapped to":"\ub85c_\ubcc0\ud658","split by":"\ub85c_\ubd84\ud560","joined by":"\ub85c_\uacb0\ud569"}},Ol=fl(Tl,"ko",{allowEnglishFallback:!0}),Ll={commands:{on:"\u5f53",tell:"\u544a\u8bc9",trigger:"\u89e6\u53d1",send:"\u53d1\u9001",take:"\u62ff\u53d6",put:"\u653e\u7f6e",set:"\u8bbe\u7f6e",get:"\u83b7\u5f97",add:"\u6dfb\u52a0",remove:"\u79fb\u9664",toggle:"\u5207\u6362",hide:"\u9690\u85cf",show:"\u663e\u793a",if:"\u5982\u679c",unless:"\u9664\u975e",repeat:"\u91cd\u590d",for:"\u4e3a",while:"\u5f53",until:"\u76f4\u5230",continue:"\u7ee7\u7eed",break:"\u4e2d\u65ad",halt:"\u505c\u6b62",wait:"\u7b49\u5f85",fetch:"\u6293\u53d6",call:"\u8c03\u7528",return:"\u8fd4\u56de",make:"\u5236\u4f5c",log:"\u65e5\u5fd7",throw:"\u629b\u51fa",catch:"\u6355\u83b7",measure:"\u6d4b\u91cf",transition:"\u8fc7\u6e21",increment:"\u589e\u52a0",decrement:"\u51cf\u5c11",default:"\u9ed8\u8ba4",go:"\u524d\u5f80",pushUrl:"\u63a8\u9001\u7f51\u5740",replaceUrl:"\u66ff\u6362\u7f51\u5740",copy:"\u590d\u5236",pick:"\u9009\u53d6",beep:"\u8702\u9e23",js:"JS\u6267\u884c",async:"\u5f02\u6b65",render:"\u6e32\u67d3",swap:"\u4ea4\u6362",morph:"\u53d8\u5f62",settle:"\u7a33\u5b9a",append:"\u8ffd\u52a0",exit:"\u9000\u51fa",install:"\u5b89\u88c5",breakpoint:"\u65ad\u70b9",clear:"\u6e05\u9664",close:"\u5173\u95ed",open:"\u6253\u5f00",select:"\u9009\u62e9",clone:"\u514b\u9686",prepend:"\u524d\u7f6e"},modifiers:{to:"\u5230",from:"\u4ece",into:"\u8fdb\u5165",with:"\u4e0e",at:"\u5728",in:"\u5728",of:"\u7684",as:"\u4f5c\u4e3a",by:"\u901a\u8fc7",before:"\u4e4b\u524d",after:"\u4e4b\u540e",over:"\u5728\u4e0a",under:"\u5728\u4e0b",between:"\u4e4b\u95f4",through:"\u901a\u8fc7",without:"\u6ca1\u6709"},events:{click:"\u70b9\u51fb",dblclick:"\u53cc\u51fb",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"\u9f20\u6807\u79fb\u5165",mouseout:"\u9f20\u6807\u79fb\u51fa",mousemove:"\u9f20\u6807\u79fb\u52a8",keydown:"\u6309\u952e\u6309\u4e0b",keyup:"\u677e\u952e",keypress:"keypress",focus:"\u805a\u7126",blur:"\u5931\u7126",change:"\u6539\u53d8",input:"\u8f93\u5165",submit:"\u63d0\u4ea4",reset:"\u91cd\u7f6e",load:"\u52a0\u8f7d",unload:"\u5378\u8f7d",resize:"\u8c03\u6574\u5927\u5c0f",scroll:"\u6eda\u52a8",touchstart:"\u89e6\u6478\u5f00\u59cb",touchend:"touchend",touchmove:"\u89e6\u6478\u79fb\u52a8",touchcancel:"touchcancel"},logical:{when:"\u5f53",where:"\u54ea\u91cc",and:"\u548c",or:"\u6216",not:"\u975e",is:"\u662f",exists:"\u5b58\u5728",matches:"\u5339\u914d",contains:"\u5305\u542b",includes:"\u5305\u62ec",equals:"\u7b49\u4e8e",has:"\u6709",have:"\u6709",then:"\u90a3\u4e48",else:"\u5426\u5219",otherwise:"\u8981\u4e0d\u7136",end:"\u7ed3\u675f",live:"\u5b9e\u65f6",bind:"\u7ed1\u5b9a",changes:"\u6539\u53d8\u65f6"},temporal:{seconds:"\u79d2",second:"\u79d2",milliseconds:"\u6beb\u79d2",millisecond:"\u6beb\u79d2",minutes:"\u5206\u949f",minute:"\u5206\u949f",hours:"\u5c0f\u65f6",hour:"\u5c0f\u65f6",ms:"\u6beb\u79d2",s:"\u79d2",min:"\u5206",h:"\u65f6"},values:{true:"\u771f",false:"\u5047",null:"\u7a7a",undefined:"\u672a\u5b9a\u4e49",it:"\u5b83",its:"\u5b83\u7684",me:"\u6211",my:"\u6211\u7684",myself:"\u6211\u81ea\u5df1",you:"\u4f60",your:"\u4f60\u7684",yourself:"\u4f60\u81ea\u5df1",element:"\u5143\u7d20",target:"\u76ee\u6807",detail:"\u8be6\u60c5",event:"\u4e8b\u4ef6",window:"\u7a97\u53e3",document:"\u6587\u6863",body:"\u4e3b\u4f53",result:"\u7ed3\u679c",value:"\u503c"},attributes:{class:"\u7c7b",classes:"\u7c7b\u522b",style:"\u6837\u5f0f",styles:"\u6837\u5f0f\u96c6",attribute:"\u5c5e\u6027",attributes:"\u5c5e\u6027\u96c6",property:"\u7279\u6027",properties:"\u7279\u6027\u96c6"},expressions:{characters:"\u5b57\u7b26",inclusive:"\u5305\u542b",exclusive:"\u6392\u9664",first:"\u7b2c\u4e00\u4e2a",last:"\u6700\u540e\u4e00\u4e2a",next:"\u4e0b\u4e00\u4e2a",previous:"\u4e0a\u4e00\u4e2a",prev:"\u4e0a\u4e2a",at:"\u5728",random:"\u968f\u673a",closest:"\u6700\u8fd1\u7684",parent:"\u7236\u7ea7",children:"\u5b50\u7ea7",within:"\u4e4b\u5185",no:"\u6ca1\u6709",empty:"\u7a7a\u7684",some:"\u4e00\u4e9b","starts with":"\u4ee5\u5f00\u5934","ends with":"\u4ee5\u7ed3\u5c3e","ignoring case":"\u5ffd\u7565\u5927\u5c0f\u5199","sorted by":"\u6309_\u6392\u5e8f","mapped to":"\u6620\u5c04\u4e3a","split by":"\u6309_\u5206\u5272","joined by":"\u7528_\u8fde\u63a5"}},Pl=fl(Ll,"zh",{allowEnglishFallback:!0}),jl={commands:{on:"\u00fczerinde",tell:"s\u00f6yle",trigger:"tetikle",send:"g\u00f6nder",take:"tut",put:"koy",set:"ayarla",get:"al",add:"ekle",remove:"kald\u0131r",toggle:"de\u011fi\u015ftir",hide:"gizle",show:"g\u00f6ster",if:"e\u011fer",unless:"de\u011filse",repeat:"tekrarla",for:"i\u00e7in",while:"s\u00fcresince",until:"kadar",continue:"devam",break:"dur",halt:"durdur",wait:"bekle",fetch:"getir",call:"\u00e7a\u011f\u0131r",return:"d\u00f6n",make:"yap",log:"kaydet",throw:"f\u0131rlat",catch:"yakala",measure:"\u00f6l\u00e7",transition:"ge\u00e7i\u015f",increment:"art\u0131r",decrement:"azalt",default:"varsay\u0131lan",go:"git",pushUrl:"urlEkle",replaceUrl:"urlDe\u011fi\u015ftir",copy:"kopyala",pick:"se\u00e7",beep:"bip",js:"js",async:"asenkron",render:"render",swap:"takas",morph:"d\u00f6n\u00fc\u015ft\u00fcr",settle:"sabitlen",append:"ili\u015ftir",exit:"\u00e7\u0131k",install:"kur",breakpoint:"kesme-noktas\u0131",clear:"temizle",close:"kapat",open:"a\u00e7",select:"vurgula",clone:"klonla",prepend:"ba\u015f\u0131naekle",socket:"soket"},modifiers:{to:"e",from:"den",into:"i\u00e7ine",with:"ile",at:"de",in:"i\u00e7inde",of:"nin",as:"olarak",by:"taraf\u0131ndan",before:"\u00f6nce",after:"sonra",over:"\u00fczerinde",under:"alt\u0131nda",between:"aras\u0131nda",through:"boyunca",without:"olmadan"},events:{click:"t\u0131klama",dblclick:"dblclick",mousedown:"farebas",mouseup:"fareb\u0131rak",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"farei\u00e7inde",mouseout:"fared\u0131\u015f\u0131nda",mousemove:"mousemove",keydown:"tu\u015fbasma",keyup:"tu\u015fb\u0131rakma",keypress:"keypress",focus:"odak",blur:"bulan\u0131k",change:"de\u011fi\u015fim",input:"giri\u015f",submit:"g\u00f6nderme",reset:"s\u0131f\u0131rla",load:"y\u00fckle",unload:"unload",resize:"boyutland\u0131rma",scroll:"kayd\u0131r",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel"},logical:{when:"iken",where:"nerede",and:"ve",or:"veya",not:"de\u011fil",is:"dir",exists:"var",matches:"e\u015fle\u015fir",contains:"i\u00e7erir",includes:"dahil",equals:"e\u015fittir",has:"var",have:"var",then:"ard\u0131ndan",else:"yoksa",otherwise:"aksi_halde",end:"son",live:"canl\u0131",changes:"de\u011fi\u015fti\u011finde"},temporal:{seconds:"saniye",second:"saniye",milliseconds:"milisaniye",millisecond:"milisaniye",minutes:"dakika",minute:"dakika",hours:"saat",hour:"saat",ms:"ms",s:"s",min:"dk",h:"sa"},values:{true:"do\u011fru",false:"yanl\u0131\u015f",null:"bo\u015f",undefined:"tan\u0131ms\u0131z",it:"o",its:"onun",me:"ben",my:"benim",myself:"kendim",you:"sen",your:"senin",yourself:"kendin",element:"\u00f6\u011fe",target:"hedef",detail:"detay",event:"olay",window:"pencere",document:"belge",body:"g\u00f6vde",result:"sonu\u00e7",value:"de\u011fer"},attributes:{class:"s\u0131n\u0131f",classes:"s\u0131n\u0131flar",style:"stil",styles:"stiller",attribute:"\u00f6zellik",attributes:"\u00f6zellikler",property:"\u00f6zellik",properties:"\u00f6zellikler"},expressions:{characters:"karakterler",inclusive:"dahil",exclusive:"hari\u00e7",first:"ilk",last:"sonuncu",next:"sonraki",previous:"\u00f6nceki",prev:"\u00f6nc",at:"de",random:"rastgele",closest:"enyak\u0131n",parent:"ebeveyn",children:"\u00e7ocuklar",within:"i\u00e7inde",no:"yok",empty:"bo\u015f",some:"baz\u0131","starts with":"ile ba\u015flar","ends with":"ile biter","ignoring case":"b\u00fcy\u00fck k\u00fc\u00e7\u00fck harf duyars\u0131z","sorted by":"g\u00f6re s\u0131ral\u0131","mapped to":"ye d\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f","split by":"ile b\u00f6l\u00fcnm\u00fc\u015f","joined by":"ile birle\u015ftirilmi\u015f"}},Nl=fl(jl,"tr",{allowEnglishFallback:!0}),Il={commands:{on:"pada",tell:"katakan",trigger:"picu",send:"kirim",take:"ambil",put:"taruh",set:"atur",get:"dapatkan",add:"tambah",remove:"hapus",toggle:"alihkan",hide:"sembunyikan",show:"tampilkan",if:"jika",unless:"kecuali",repeat:"ulangi",for:"untuk",while:"selama",until:"sampai",continue:"lanjutkan",break:"hentikan",halt:"berhenti",wait:"tunggu",fetch:"muat",call:"panggil",return:"kembali",make:"buat",log:"catat",throw:"lempar",catch:"tangkap",measure:"ukur",transition:"transisi",increment:"naikkan",decrement:"kurangi",default:"bawaan",go:"pergi",pushUrl:"tambahUrl",replaceUrl:"gantiUrl",copy:"salin",pick:"pilih",beep:"bunyi",js:"js",async:"asinkron",render:"olah",swap:"tukar",morph:"ubah",settle:"stabilkan",append:"sisipkan",exit:"keluar",install:"pasang",breakpoint:"titik-henti",clear:"bersihkan",close:"tutupkan",open:"buka",select:"tandai",clone:"klon",prepend:"awali"},modifiers:{to:"ke",from:"dari",into:"ke_dalam",with:"dengan",at:"di",in:"dalam",of:"dari",as:"sebagai",by:"oleh",before:"sebelum",after:"setelah",over:"di_atas",under:"di_bawah",between:"antara",through:"melalui",without:"tanpa"},events:{click:"klik",dblclick:"dblclick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"arahkan",mouseout:"tinggalkan",mousemove:"mousemove",keydown:"tekan_tombol",keyup:"keyup",keypress:"keypress",focus:"fokus",blur:"blur",change:"ubah",input:"masukan",submit:"kirim",reset:"reset",load:"muat",unload:"bongkar",resize:"ubah_ukuran",scroll:"gulir",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel"},logical:{when:"ketika",where:"di_mana",and:"dan",or:"atau",not:"bukan",is:"adalah",exists:"ada",matches:"cocok",contains:"berisi",includes:"termasuk",equals:"sama",has:"punya",have:"punya",then:"lalu",else:"lainnya",otherwise:"sebaliknya",end:"akhir",live:"langsung",changes:"berubah"},temporal:{seconds:"detik",second:"detik",milliseconds:"milidetik",millisecond:"milidetik",minutes:"menit",minute:"menit",hours:"jam",hour:"jam",ms:"ms",s:"d",min:"mnt",h:"j"},values:{true:"benar",false:"salah",null:"kosong",undefined:"tidak_terdefinisi",it:"itu",its:"miliknya",me:"saya",my:"saya punya",myself:"saya sendiri",you:"kamu",your:"kamu punya",yourself:"kamu sendiri",element:"elemen",target:"target",detail:"detail",event:"peristiwa",window:"jendela",document:"dokumen",body:"badan",result:"hasil",value:"nilai"},attributes:{class:"kelas",classes:"kelas_kelas",style:"gaya",styles:"gaya_gaya",attribute:"atribut",attributes:"atribut_atribut",property:"properti",properties:"properti_properti"},expressions:{characters:"karakter",inclusive:"inklusif",exclusive:"eksklusif",first:"pertama",last:"terakhir",next:"berikutnya",previous:"sebelumnya",prev:"sblm",at:"di",random:"acak",closest:"terdekat",parent:"induk",children:"anak_anak",within:"dalam",no:"tidak_ada",empty:"kosong",some:"beberapa","starts with":"dimulai dengan","ends with":"diakhiri dengan","ignoring case":"abaikan kapital","sorted by":"diurutkan berdasarkan","mapped to":"dipetakan ke","split by":"dipisah oleh","joined by":"digabung oleh"}},Rl=fl(Il,"id",{allowEnglishFallback:!0}),ql={commands:{on:"kaqpi",tell:"niy",trigger:"kichay",send:"kachay",take:"hapiy",put:"churay",set:"churanay",get:"taripay",add:"yapay",remove:"qichuy",toggle:"tikray",hide:"pakay",show:"rikuchiy",if:"sichus",unless:"mana sichus",repeat:"kutipay",for:"sapankaq",while:"kaykamaqa",until:"hayk_akama",continue:"purichiy",break:"p_akiy",halt:"sayay",wait:"suyay",fetch:"apamuy",call:"qayay",return:"kutimuy",make:"ruray",log:"qillqakuy",throw:"wikchuy",catch:"hapsiy",measure:"tupuy",transition:"pasay",increment:"yapachiy",decrement:"pisiyachiy",default:"\u00f1awpaq_kaq",go:"riy",pushUrl:"url_tanqay",replaceUrl:"url_tikray",copy:"qillqay",pick:"akllay",beep:"waqay",js:"js",async:"mana_suyaspa",render:"rikurichiy",swap:"t'inkuy",morph:"tukunay",settle:"tiyakuy",append:"qatichiy",exit:"lluqsiy",install:"tarpuy",breakpoint:"sayachinay",clear:"pichay",close:"wichqay",open:"paskay",select:"marcay",clone:"kikinchay",prepend:"\u00f1awpachiy",socket:"tinkina"},modifiers:{to:"man",from:"manta",into:"ukupi",with:"wan",at:"pi",in:"ukupi",of:"pa",as:"hina",by:"rayku",before:"\u00f1awpaqpi",after:"qhepapi",over:"hawapi",under:"urapi",between:"chawpipi",through:"pasaspa",without:"mana"},events:{click:"\u00f1itiy",dblclick:"dblclick",mousedown:"rat\u00f1itiy",mouseup:"rathuqariy",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"mouseover",mouseout:"mouseout",mousemove:"mousemove",keydown:"llave uray",keyup:"llave hawa",keypress:"keypress",focus:"qhaway",blur:"paqariy",change:"kambiay",input:"yaykuchiy",submit:"apaykachay",reset:"musuqchay",load:"apakuy",unload:"unload",resize:"hatun_kay",scroll:"kunray",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel"},logical:{when:"maykama",where:"maypi",and:"chaymanta",or:"utaq",not:"mana",is:"kanqa",exists:"tiyan",matches:"tupan",contains:"ukupi_kan",includes:"churasqa",equals:"kikin",has:"kachkan",have:"kachkani",then:"chayqa",else:"manachus",otherwise:"huk_kaqpi",end:"tukuy",live:"kawsay",changes:"tukurikun"},temporal:{seconds:"sikundukuna",second:"sikundu",milliseconds:"iskay_paqta_sikundukuna",millisecond:"iskay_paqta_sikundu",minutes:"minutukuna",minute:"minutu",hours:"horakuna",hour:"hora",ms:"ms",s:"s",min:"m",h:"h"},values:{true:"cheqaq",false:"llulla",null:"chusaq",undefined:"mana_riqsisqa",it:"chay",its:"chaypaq",me:"noqa",my:"noqaq",myself:"noqa killa",you:"qam",your:"qampaq",yourself:"qam killa",element:"raku",target:"punta",detail:"sut_iy",event:"ruway",window:"k_iri",document:"qillqa",body:"kurku",result:"lluqsiy",value:"chanin"},attributes:{class:"ayllu",classes:"ayllukuna",style:"sami",styles:"samikuna",attribute:"kaq",attributes:"kaqkuna",property:"kanay",properties:"kanaykuna"},expressions:{characters:"sanampa",first:"\u00f1awpaq",last:"qhipa",next:"qhipantin",previous:"\u00f1awpaqnin",prev:"\u00f1awpaq",at:"pi",random:"imaymanata",closest:"kaylla",parent:"mama_tayta",children:"wawakuna",within:"ukupi",no:"mana_kanchu",empty:"chusaq",some:"wakin","starts with":"qallarisqa wan","ends with":"tukusqa wan","ignoring case":"hatun-huchuy qillqata-saqiy","sorted by":"niqpi ruwasqa","mapped to":"kay kaqman","split by":"rakisqa","joined by":"hu\u00f1usqa"}},Ml=fl(ql,"qu",{allowEnglishFallback:!0}),_l={commands:{on:"kwenye",tell:"ambia",trigger:"chochea",send:"tuma",take:"chukua",put:"weka",set:"seti",get:"pata",add:"ongeza",remove:"ondoa",toggle:"badilisha",blur:"blur",hide:"ficha",show:"onyesha",if:"kama",unless:"isipokuwa",repeat:"rudia",for:"kwa",while:"wakati",until:"hadi",continue:"endelea",break:"vunja",halt:"simama",wait:"ngoja",fetch:"leta",call:"ita",return:"rudisha",make:"tengeneza",log:"andika",throw:"tupa",catch:"shika",measure:"pima",transition:"mpito",increment:"ongezeko",decrement:"punguza",default:"msingi",go:"nenda",pushUrl:"sukumaUrl",replaceUrl:"badilishaUrl",copy:"nakala",pick:"chagua",beep:"lia",js:"js",async:"sainkroni",render:"chora",swap:"badilishana",morph:"geuza",settle:"tulia",append:"ambatanisha",exit:"toka",install:"sakinisha",breakpoint:"nukta-simama",clear:"safisha",close:"funga",open:"fungua",select:"alama",clone:"nakili",prepend:"tanguliza",focus:"lenga",socket:"soketi"},modifiers:{to:"kwa",from:"kutoka",into:"ndani",with:"na",at:"katika",in:"ndani",of:"ya",as:"kuwa",by:"na",before:"kabla",after:"baada",over:"juu",under:"chini",between:"kati",through:"kupitia",without:"bila"},events:{click:"bonyeza",dblclick:"dblclick",mousedown:"panya_shuka",mouseup:"panya_juu",mouseenter:"panya_ingia",mouseleave:"panya_toka",mouseover:"sogeza juu",mouseout:"panya_nje",mousemove:"panya_sogea",keydown:"kitufe_shuka",keyup:"kitufe_juu",keypress:"keypress",focus:"lenga",blur:"blur",change:"kubadilisha",input:"ingizo",submit:"wasilisha",reset:"reset",load:"pakia",unload:"shuka",resize:"badilisha_ukubwa",scroll:"sogeza",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel"},logical:{when:"wakati",where:"wapi",and:"na",or:"au",not:"si",is:"ni",exists:"ipo",matches:"inafanana",contains:"ina",includes:"pamoja",equals:"sawa",has:"ana",have:"nina",then:"kisha",else:"sivyo",otherwise:"vinginevyo",end:"mwisho",live:"mubashara",changes:"inabadilika"},temporal:{seconds:"sekunde",second:"sekunde",milliseconds:"millisekunde",millisecond:"millisekunde",minutes:"dakika",minute:"dakika",hours:"masaa",hour:"saa",ms:"ms",s:"s",min:"dk",h:"sa"},values:{true:"kweli",false:"uongo",null:"tupu",undefined:"haijafafanuliwa",it:"hiyo",its:"yake",me:"mimi",my:"yangu",myself:"mimi mwenyewe",you:"wewe",your:"yako",yourself:"wewe mwenyewe",element:"kipengele",target:"lengo",detail:"maelezo",event:"tukio",window:"dirisha",document:"hati",body:"mwili",result:"matokeo",value:"thamani"},attributes:{class:"darasa",classes:"madarasa",style:"mtindo",styles:"mitindo",attribute:"sifa",attributes:"sifa",property:"mali",properties:"mali"},expressions:{characters:"herufi",first:"kwanza",last:"wamwisho",next:"ijayo",previous:"iliyopita",prev:"awali",at:"katika",random:"nasibu",closest:"karibu",parent:"mzazi",children:"watoto",within:"ndani_ya",no:"hakuna",empty:"tupu",some:"baadhi","starts with":"huanza na","ends with":"huisha na","ignoring case":"puuza herufi kubwa ndogo","sorted by":"kupangwa kwa","mapped to":"kubadilishwa kuwa","split by":"kugawanywa kwa","joined by":"kuunganishwa kwa"}},$l=fl(_l,"sw",{allowEnglishFallback:!0}),Vl={commands:{on:"em",tell:"dizer",trigger:"disparar",send:"enviar",take:"pegar",put:"colocar",set:"definir",get:"obter",add:"adicionar",remove:"remover",toggle:"alternar",blur:"desfocar",hide:"esconder",show:"mostrar",if:"se",unless:"salvo",repeat:"repetir",for:"para",while:"enquanto",until:"at\u00e9",continue:"continuar",break:"interromper",halt:"parar",wait:"esperar",fetch:"buscar",call:"chamar",return:"retornar",make:"fazer",log:"registrar",throw:"lan\u00e7ar",catch:"capturar",measure:"medir",transition:"transi\u00e7\u00e3o",increment:"incrementar",decrement:"decrementar",default:"padr\u00e3o",go:"ir",pushUrl:"pushUrl",replaceUrl:"substituirUrl",copy:"copiar",pick:"escolher",beep:"apitar",js:"js",async:"ass\u00edncrono",render:"renderizar",swap:"trocar",morph:"transformar",settle:"estabilizar",append:"anexar",exit:"sair",install:"instalar",breakpoint:"ponto-interrup\u00e7\u00e3o",clear:"limpar",close:"fechar",open:"abrir",select:"selecionar",clone:"clonar",prepend:"preceder",focus:"focar",socket:"soquete"},modifiers:{to:"para",from:"de",into:"em",with:"com",at:"em",in:"dentro",of:"de",as:"como",by:"por",before:"antes",after:"depois",over:"sobre",under:"sob",between:"entre",through:"atrav\u00e9s",without:"sem"},events:{click:"clique",dblclick:"duploClique",mousedown:"mouseBaixo",mouseup:"mouseCima",mouseenter:"mouseEntrar",mouseleave:"mouseSair",mouseover:"mouse sobre",mouseout:"mouse fora",mousemove:"mouseMover",keydown:"tecla baixo",keyup:"tecla cima",keypress:"teclaPressionar",focus:"foco",blur:"desfoque",change:"mudan\u00e7a",input:"entrada",submit:"envio",reset:"redefinir",load:"carregar",unload:"descarregar",resize:"redimensionar",scroll:"rolar",touchstart:"toqueIn\u00edcio",touchend:"toqueFim",touchmove:"toqueMover",touchcancel:"toqueCancelar"},logical:{when:"quando",where:"onde",and:"e",or:"ou",not:"n\u00e3o",is:"\u00e9",exists:"existe",matches:"corresponde",contains:"cont\u00e9m",includes:"inclui",equals:"igual",has:"tem",have:"tenho",then:"ent\u00e3o",else:"sen\u00e3o",otherwise:"caso_contr\u00e1rio",end:"fim",live:"vivo",changes:"muda"},temporal:{seconds:"segundos",second:"segundo",milliseconds:"milissegundos",millisecond:"milissegundo",minutes:"minutos",minute:"minuto",hours:"horas",hour:"hora",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"verdadeiro",false:"falso",null:"nulo",undefined:"indefinido",it:"isso",its:"seu",me:"eu",my:"meu",myself:"eu mesmo",you:"voc\u00ea",your:"seu",yourself:"voc\u00ea mesmo",element:"elemento",target:"alvo",detail:"detalhe",event:"evento",window:"janela",document:"documento",body:"corpo",result:"resultado",value:"valor"},attributes:{class:"classe",classes:"classes",style:"estilo",styles:"estilos",attribute:"atributo",attributes:"atributos",property:"propriedade",properties:"propriedades"},expressions:{characters:"caracteres",inclusive:"inclusivo",exclusive:"exclusivo",first:"primeiro",last:"\u00faltimo",next:"pr\u00f3ximo",previous:"anterior",prev:"ant",at:"em",random:"aleat\u00f3rio",closest:"maispr\u00f3ximo",parent:"pai",children:"filhos",within:"dentro",no:"nenhum",empty:"vazio",some:"algum","starts with":"come\u00e7a com","ends with":"termina com","ignoring case":"ignorando mai\u00fasculas","sorted by":"ordenado por","mapped to":"mapeado para","split by":"dividido por","joined by":"unido por"}},Dl=fl(Vl,"pt",{allowEnglishFallback:!0}),zl={commands:{on:"su",tell:"dire",trigger:"scatenare",send:"inviare",take:"prendere",put:"mettere",set:"impostare",get:"ottenere",add:"aggiungere",remove:"rimuovere",toggle:"commutare",hide:"nascondere",show:"mostrare",if:"se",unless:"salvo",repeat:"ripetere",for:"per",while:"mentre",until:"fino",continue:"continuare",break:"interrompere",halt:"fermare",wait:"aspettare",fetch:"recuperare",call:"chiamare",return:"ritornare",make:"fare",log:"registrare",throw:"lanciare",catch:"catturare",measure:"misurare",transition:"transizione",increment:"incrementare",decrement:"decrementare",default:"predefinito",go:"andare",pushUrl:"pushUrl",replaceUrl:"sostituireUrl",copy:"copiare",pick:"scegliere",beep:"beep",js:"js",async:"asincrono",render:"renderizzare",swap:"scambiare",morph:"trasformare",settle:"stabilizzare",append:"accodare",exit:"uscire",install:"installare",breakpoint:"punto-interruzione",clear:"cancellare",close:"chiudere",open:"aprire",select:"selezionare",clone:"clonare",prepend:"anteporre",focus:"focalizzare"},modifiers:{to:"a",from:"da",into:"in",with:"con",at:"a",in:"in",of:"di",as:"come",by:"per",before:"prima",after:"dopo",over:"sopra",under:"sotto",between:"tra",through:"attraverso",without:"senza"},events:{click:"clic",dblclick:"doppioclic",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseentra",mouseleave:"mouseesce",mouseover:"mousesopra",mouseout:"mousefuori",mousemove:"mousemuovi",keydown:"tastogi\u00f9",keyup:"tastosu",keypress:"tastopremi",focus:"fuoco",blur:"sfuocare",change:"cambio",input:"input",submit:"invio",reset:"reimpostare",load:"carica",unload:"scarica",resize:"ridimensiona",scroll:"scorrimento",touchstart:"toccoinizia",touchend:"toccofine",touchmove:"toccomuovi",touchcancel:"toccoannulla"},logical:{when:"quando",where:"dove",and:"e",or:"o",not:"non",is:"\u00e8",exists:"esiste",matches:"corrisponde",contains:"contiene",includes:"include",equals:"uguale",has:"ha",have:"ho",then:"allora",else:"altrimenti",otherwise:"altrimenti",end:"fine",live:"vivo",changes:"cambia"},temporal:{seconds:"secondi",second:"secondo",milliseconds:"millisecondi",millisecond:"millisecondo",minutes:"minuti",minute:"minuto",hours:"ore",hour:"ora",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"vero",false:"falso",null:"nullo",undefined:"indefinito",it:"esso",its:"suo",me:"io",my:"mio",you:"tu",your:"tuo",yourself:"te stesso",myself:"me stesso",element:"elemento",target:"obiettivo",detail:"dettaglio",event:"evento",window:"finestra",document:"documento",body:"corpo",result:"risultato",value:"valore"},attributes:{class:"classe",classes:"classi",style:"stile",styles:"stili",attribute:"attributo",attributes:"attributi",property:"propriet\u00e0",properties:"propriet\u00e0"},expressions:{characters:"caratteri",inclusive:"inclusivo",exclusive:"esclusivo",first:"primo",last:"ultimo",next:"prossimo",previous:"precedente",prev:"prec",at:"a",random:"casuale",closest:"vicino",parent:"genitore",children:"figli",within:"dentro",no:"nessun",empty:"vuoto",some:"qualche","starts with":"inizia con","ends with":"finisce con","ignoring case":"ignorando maiuscole","sorted by":"ordinato per","mapped to":"trasformato in","split by":"diviso per","joined by":"unito per"}};fl(zl,"it",{allowEnglishFallback:!0});var Bl={commands:{on:"khi",tell:"n\u00f3i v\u1edbi",trigger:"k\u00edch ho\u1ea1t",send:"g\u1eedi",take:"l\u1ea5y",put:"\u0111\u1eb7t",set:"g\u00e1n",get:"l\u1ea5y gi\u00e1 tr\u1ecb",add:"th\u00eam",remove:"x\u00f3a",toggle:"chuy\u1ec3n \u0111\u1ed5i",hide:"\u1ea9n",show:"hi\u1ec3n th\u1ecb",if:"n\u1ebfu",unless:"tr\u1eeb khi",repeat:"l\u1eb7p l\u1ea1i",for:"v\u1edbi m\u1ed7i",while:"trong khi",until:"cho \u0111\u1ebfn khi",continue:"ti\u1ebfp t\u1ee5c",break:"d\u1eebng",halt:"d\u1eebng l\u1ea1i",wait:"ch\u1edd",fetch:"t\u1ea3i",call:"g\u1ecdi",return:"tr\u1ea3 v\u1ec1",make:"t\u1ea1o",log:"in ra",throw:"n\u00e9m",catch:"b\u1eaft",measure:"\u0111o l\u01b0\u1eddng",transition:"chuy\u1ec3n ti\u1ebfp",increment:"t\u0103ng",decrement:"gi\u1ea3m",default:"m\u1eb7c \u0111\u1ecbnh",go:"\u0111i \u0111\u1ebfn",pushUrl:"pushUrl",replaceUrl:"thayTh\u1ebfUrl",copy:"sao ch\u00e9p",pick:"ch\u1ecdn",beep:"beep",js:"js",async:"b\u1ea5t \u0111\u1ed3ng b\u1ed9",render:"k\u1ebft xu\u1ea5t",swap:"ho\u00e1n \u0111\u1ed5i",morph:"bi\u1ebfn \u0111\u1ed5i",settle:"\u1ed5n \u0111\u1ecbnh",append:"n\u1ed1i",exit:"tho\u00e1t",focus:"t\u1eadp trung",blur:"m\u1ea5t t\u1eadp trung",init:"kh\u1edfi t\u1ea1o",behavior:"h\u00e0nh vi",install:"c\u00e0i \u0111\u1eb7t",clone:"nh\u00e2n b\u1ea3n",prepend:"th\u00eam v\u00e0o \u0111\u1ea7u",else:"kh\u00f4ng th\u00ec",breakpoint:"\u0111i\u1ec3m-d\u1eebng",clear:"t\u1ea9y",close:"\u0111\u00f3ng",open:"m\u1edf",select:"\u0111\u00e1nh-d\u1ea5u"},modifiers:{into:"v\u00e0o",before:"tr\u01b0\u1edbc",after:"sau",then:"r\u1ed3i",end:"k\u1ebft th\u00fac",from:"t\u1eeb",to:"\u0111\u1ebfn",with:"v\u1edbi",as:"nh\u01b0",by:"b\u1edfi",on:"tr\u00ean",in:"trong",at:"t\u1ea1i",of:"c\u1ee7a",between:"gi\u1eefa",the:"",times:"l\u1ea7n"},events:{click:"nh\u1ea5p",dblclick:"dblclick",input:"nh\u1eadp",change:"change",submit:"n\u1ed9p",keydown:"keydown",keyup:"keyup",keypress:"keypress",mouseover:"mouseover",mouseout:"mouseout",mouseenter:"mouseenter",mouseleave:"mouseleave",focus:"focus",blur:"blur",reset:"reset",load:"load",scroll:"cu\u1ed9n",resize:"\u0111\u1ed5i k\u00edch th\u01b0\u1edbc"},logical:{when:"khi",where:"\u1edf_\u0111\u00e2u",and:"v\u00e0",or:"ho\u1eb7c",not:"kh\u00f4ng",is:"l\u00e0",equals:"b\u1eb1ng",contains:"ch\u1ee9a",matches:"kh\u1edbp",exists:"t\u1ed3n t\u1ea1i",has:"c\u00f3",have:"c\u00f3",empty:"tr\u1ed1ng",true:"\u0111\u00fang",false:"sai",null:"r\u1ed7ng",else:"kh\u00f4ng th\u00ec",end:"k\u1ebft th\u00fac",then:"r\u1ed3i",live:"live",changes:"thay \u0111\u1ed5i"},temporal:{now:"b\u00e2y gi\u1edd",today:"h\u00f4m nay",tomorrow:"ng\u00e0y mai",yesterday:"h\u00f4m qua",always:"lu\u00f4n lu\u00f4n",never:"kh\u00f4ng bao gi\u1edd",sometimes:"\u0111\u00f4i khi",once:"m\u1ed9t l\u1ea7n",twice:"hai l\u1ea7n",forever:"m\u00e3i m\u00e3i"},values:{true:"\u0111\u00fang",false:"sai",null:"r\u1ed7ng",undefined:"kh\u00f4ng x\u00e1c \u0111\u1ecbnh",none:"kh\u00f4ng c\u00f3",all:"t\u1ea5t c\u1ea3",any:"b\u1ea5t k\u1ef3",some:"m\u1ed9t s\u1ed1",each:"m\u1ed7i",every:"t\u1ea5t c\u1ea3",body:"body",event:"s\u1ef1 ki\u1ec7n",it:"n\u00f3",its:"c\u1ee7a n\u00f3",me:"t\u00f4i",my:"c\u1ee7a t\u00f4i",result:"k\u1ebft qu\u1ea3",target:"m\u1ee5c ti\u00eau",you:"b\u1ea1n",your:"c\u1ee7a b\u1ea1n"},attributes:{id:"id",class:"l\u1edbp",style:"ki\u1ec3u",value:"gi\u00e1 tr\u1ecb",text:"v\u0103n b\u1ea3n",html:"html",src:"ngu\u1ed3n",href:"li\u00ean k\u1ebft",disabled:"v\u00f4 hi\u1ec7u",hidden:"\u1ea9n",checked:"\u0111\u01b0\u1ee3c ch\u1ecdn",selected:"\u0111\u01b0\u1ee3c ch\u1ecdn"},expressions:{random:"ng\u1eabu nhi\u00ean",characters:"k\u00fd t\u1ef1",inclusive:"bao g\u1ed3m",exclusive:"lo\u1ea1i tr\u1eeb",me:"t\u00f4i",my:"c\u1ee7a t\u00f4i",it:"n\u00f3",its:"c\u1ee7a n\u00f3",result:"k\u1ebft qu\u1ea3",event:"s\u1ef1 ki\u1ec7n",target:"m\u1ee5c ti\u00eau",first:"\u0111\u1ea7u ti\u00ean",last:"cu\u1ed1i c\u00f9ng",next:"ti\u1ebfp theo",previous:"tr\u01b0\u1edbc \u0111\u00f3",parent:"cha",children:"con",closest:"g\u1ea7n nh\u1ea5t",empty:"l\u00e0m-r\u1ed7ng","starts with":"b\u1eaft \u0111\u1ea7u b\u1eb1ng","ends with":"k\u1ebft th\u00fac b\u1eb1ng","ignoring case":"kh\u00f4ng ph\u00e2n bi\u1ec7t hoa th\u01b0\u1eddng","sorted by":"s\u1eafp x\u1ebfp theo","mapped to":"\u00e1nh x\u1ea1 th\u00e0nh","split by":"t\u00e1ch b\u1edfi","joined by":"n\u1ed1i b\u1edfi"}};fl(Bl,"vi",{allowEnglishFallback:!0});var Fl={commands:{on:"gdy",tell:"powiedz",trigger:"wyzw\u00f3l",send:"wy\u015blij",take:"we\u017a",put:"umie\u015b\u0107",set:"ustaw",get:"uzyskaj",add:"dodaj",remove:"usu\u0144",toggle:"prze\u0142\u0105cz",blur:"rozmyj",hide:"ukryj",show:"poka\u017c",if:"je\u015bli",unless:"chyba",repeat:"powt\u00f3rz",for:"dla",while:"dop\u00f3ki",until:"a\u017c",continue:"kontynuuj",break:"przerwij",halt:"zatrzymaj",wait:"czekaj",fetch:"pobierz",call:"wywo\u0142aj",return:"zwr\u00f3\u0107",make:"utw\u00f3rz",log:"loguj",throw:"rzu\u0107",catch:"z\u0142ap",measure:"zmierz",transition:"animuj",increment:"zwi\u0119ksz",decrement:"zmniejsz",default:"domy\u015blnie",go:"id\u017a",pushUrl:"dodajUrl",replaceUrl:"zamie\u0144Url",copy:"kopiuj",pick:"wybierz",beep:"sygna\u0142",js:"js",async:"async",render:"renderuj",swap:"zamie\u0144",morph:"przekszta\u0142\u0107",settle:"ustabilizuj",append:"do\u0142\u0105cz",exit:"wyjd\u017a",install:"zainstaluj",breakpoint:"punkt-przerwania",clear:"zeruj",close:"zamknij",open:"otw\u00f3rz",select:"zaznacz",clone:"sklonuj",prepend:"poprzed\u017a",focus:"skup"},modifiers:{to:"do",from:"z",into:"do",with:"z",at:"przy",in:"w",of:"z",as:"jako",by:"przez",before:"przed",after:"po",over:"nad",under:"pod",between:"mi\u0119dzy",through:"przez",without:"bez"},events:{click:"klikni\u0119cie",dblclick:"podw\u00f3jneklikni\u0119cie",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"myszwej\u015bcie",mouseleave:"myszwyj\u015bcie",mouseover:"mysznad",mouseout:"myszpoza",mousemove:"myszruch",keydown:"klawiszd\u00f3\u0142",keyup:"klawiszg\u00f3ra",keypress:"klawisznaci\u015bni\u0119cie",focus:"fokus",blur:"rozmycie",change:"zmiana",input:"wej\u015bcie",submit:"wys\u0142aniu",reset:"zresetuj",load:"za\u0142aduj",unload:"wy\u0142aduj",resize:"zmie\u0144rozmiar",scroll:"przewi\u0144",touchstart:"dotykstart",touchend:"dotykkoniec",touchmove:"dotykruch",touchcancel:"dotykanuluj"},logical:{when:"kiedy",where:"gdzie",and:"i",or:"lub",not:"nie",is:"jest",exists:"istnieje",matches:"pasuje",contains:"zawiera",includes:"obejmuje",equals:"r\u00f3wna si\u0119",has:"ma",have:"mam",then:"wtedy",else:"inaczej",otherwise:"wpp",end:"koniec",live:"\u017cywy",changes:"zmienia"},temporal:{seconds:"sekundy",second:"sekunda",milliseconds:"milisekundy",millisecond:"milisekunda",minutes:"minuty",minute:"minuta",hours:"godziny",hour:"godzina",ms:"ms",s:"s",min:"min",h:"godz"},values:{true:"prawda",false:"fa\u0142sz",null:"null",undefined:"niezdefiniowane",it:"to",its:"jego",me:"ja",my:"m\u00f3j",you:"ty",your:"tw\u00f3j",yourself:"ty sam",myself:"ja sam",element:"element",target:"cel",detail:"szczeg\u00f3\u0142",event:"zdarzenie",window:"okno",document:"dokument",body:"body",result:"wynik",value:"warto\u015b\u0107"},attributes:{class:"klasa",classes:"klasy",style:"styl",styles:"style",attribute:"atrybut",attributes:"atrybuty",property:"w\u0142a\u015bciwo\u015b\u0107",properties:"w\u0142a\u015bciwo\u015bci"},expressions:{characters:"znaki",inclusive:"w\u0142\u0105cznie",exclusive:"wy\u0142\u0105cznie",first:"pierwszy",last:"ostatni",next:"nast\u0119pny",previous:"poprzedni",prev:"poprz",at:"przy",random:"losowy",closest:"najbli\u017cszy",parent:"rodzic",children:"dzieci",within:"wewn\u0105trz",no:"brak",empty:"pusty",some:"jaki\u015b","starts with":"zaczyna si\u0119 od","ends with":"ko\u0144czy si\u0119 na","ignoring case":"ignoruj\u0105c wielko\u015b\u0107 liter","sorted by":"sortowane wed\u0142ug","mapped to":"przekszta\u0142cone na","split by":"podzielone przez","joined by":"po\u0142\u0105czone przez"}};fl(Fl,"pl",{allowEnglishFallback:!0});var Hl={commands:{on:"\u043f\u0440\u0438",tell:"\u0441\u043a\u0430\u0437\u0430\u0442\u044c",trigger:"\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c",send:"\u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c",take:"\u0432\u0437\u044f\u0442\u044c",put:"\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c",set:"\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c",get:"\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c",add:"\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c",remove:"\u0443\u0434\u0430\u043b\u0438\u0442\u044c",toggle:"\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c",hide:"\u0441\u043a\u0440\u044b\u0442\u044c",show:"\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c",scroll:"\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c",if:"\u0435\u0441\u043b\u0438",unless:"\u043a\u0440\u043e\u043c\u0435",repeat:"\u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c",for:"\u0434\u043b\u044f",while:"\u043f\u043e\u043a\u0430",until:"\u0434\u043e",continue:"\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c",break:"\u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c",halt:"\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c",wait:"\u0436\u0434\u0430\u0442\u044c",fetch:"\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c",call:"\u0432\u044b\u0437\u0432\u0430\u0442\u044c",return:"\u0432\u0435\u0440\u043d\u0443\u0442\u044c",make:"\u0441\u043e\u0437\u0434\u0430\u0442\u044c",log:"\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c",throw:"\u0431\u0440\u043e\u0441\u0438\u0442\u044c",catch:"\u043f\u043e\u0439\u043c\u0430\u0442\u044c",measure:"\u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c",transition:"\u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c",increment:"\u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c",decrement:"\u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c",default:"\u043f\u043e_\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e",go:"\u043f\u0435\u0440\u0435\u0439\u0442\u0438",pushUrl:"\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c_url",replaceUrl:"\u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c_url",copy:"\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c",pick:"\u0432\u044b\u0431\u0440\u0430\u0442\u044c",beep:"\u0437\u0432\u0443\u043a",js:"js",async:"\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e",render:"\u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c",swap:"\u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c",morph:"\u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c",settle:"\u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c",append:"\u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c",exit:"\u0432\u044b\u0439\u0442\u0438",else:"\u0438\u043d\u0430\u0447\u0435",install:"\u0438\u043d\u0441\u0442\u0430\u043b\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c",init:"\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c",behavior:"\u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435",focus:"\u0441\u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c",blur:"\u0440\u0430\u0437\u043c\u044b\u0442\u044c",clone:"\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c",prepend:"\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c_\u0432_\u043d\u0430\u0447\u0430\u043b\u043e",breakpoint:"\u0442\u043e\u0447\u043a\u0430-\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430",clear:"\u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c",close:"\u0437\u0430\u043a\u0440\u044b\u0442\u044c",open:"\u043e\u0442\u043a\u0440\u044b\u0442\u044c",select:"\u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c"},modifiers:{to:"\u043a",from:"\u0438\u0437",into:"\u0432",with:"\u0441",at:"\u0443",in:"\u0432",of:"\u0438\u0437",as:"\u043a\u0430\u043a",by:"\u043d\u0430",before:"\u0434\u043e",after:"\u043f\u043e\u0441\u043b\u0435",over:"\u043d\u0430\u0434",under:"\u043f\u043e\u0434",between:"\u043c\u0435\u0436\u0434\u0443",through:"\u0447\u0435\u0440\u0435\u0437",without:"\u0431\u0435\u0437",on:"\u043d\u0430"},events:{click:"\u043a\u043b\u0438\u043a",dblclick:"\u0434\u0432\u043e\u0439\u043d\u043e\u0439_\u043a\u043b\u0438\u043a",mousedown:"\u043c\u044b\u0448\u044c\u0432\u043d\u0438\u0437",mouseup:"\u043c\u044b\u0448\u044c\u0432\u0432\u0435\u0440\u0445",mouseenter:"\u043c\u044b\u0448\u044c_\u0432\u0445\u043e\u0434",mouseleave:"\u043c\u044b\u0448\u044c_\u0432\u044b\u0445\u043e\u0434",mouseover:"\u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0435",mouseout:"\u0443\u0445\u043e\u0434",mousemove:"\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435_\u043c\u044b\u0448\u0438",keydown:"\u043a\u043b\u0430\u0432\u0438\u0448\u0430_\u0432\u043d\u0438\u0437",keyup:"\u043a\u043b\u0430\u0432\u0438\u0448\u0430_\u0432\u0432\u0435\u0440\u0445",keypress:"\u043d\u0430\u0436\u0430\u0442\u0438\u0435_\u043a\u043b\u0430\u0432\u0438\u0448\u0438",focus:"\u0444\u043e\u043a\u0443\u0441",blur:"\u043f\u043e\u0442\u0435\u0440\u044f_\u0444\u043e\u043a\u0443\u0441\u0430",change:"\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435",input:"\u0432\u0432\u043e\u0434",submit:"\u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430",reset:"\u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c",load:"\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430",unload:"\u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0430",resize:"\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u0440\u0430\u0437\u043c\u0435\u0440\u0430",scroll:"\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430",touchstart:"\u043a\u0430\u0441\u0430\u043d\u0438\u0435_\u043d\u0430\u0447\u0430\u043b\u043e",touchend:"\u043a\u0430\u0441\u0430\u043d\u0438\u0435_\u043a\u043e\u043d\u0435\u0446",touchmove:"\u043a\u0430\u0441\u0430\u043d\u0438\u0435_\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435",touchcancel:"\u043a\u0430\u0441\u0430\u043d\u0438\u0435_\u043e\u0442\u043c\u0435\u043d\u0430"},logical:{when:"\u043a\u043e\u0433\u0434\u0430",where:"\u0433\u0434\u0435",and:"\u0438",or:"\u0438\u043b\u0438",not:"\u043d\u0435",is:"\u0435\u0441\u0442\u044c",exists:"\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442",matches:"\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442",contains:"\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442",includes:"\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442",equals:"\u0440\u0430\u0432\u043d\u043e",then:"\u0437\u0430\u0442\u0435\u043c",else:"\u0438\u043d\u0430\u0447\u0435",otherwise:"\u0432_\u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c_\u0441\u043b\u0443\u0447\u0430\u0435",end:"\u043a\u043e\u043d\u0435\u0446",live:"\u0436\u0438\u0432\u043e\u0439",changes:"\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f",has:"\u0438\u043c\u0435\u0435\u0442",have:"\u0438\u043c\u0435\u044e",isNot:"\u043d\u0435_\u0435\u0441\u0442\u044c",empty:"\u043f\u0443\u0441\u0442\u043e\u0439"},temporal:{seconds:"\u0441\u0435\u043a\u0443\u043d\u0434",second:"\u0441\u0435\u043a\u0443\u043d\u0434\u0430",milliseconds:"\u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434",millisecond:"\u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430",minutes:"\u043c\u0438\u043d\u0443\u0442",minute:"\u043c\u0438\u043d\u0443\u0442\u0430",hours:"\u0447\u0430\u0441\u043e\u0432",hour:"\u0447\u0430\u0441",ms:"\u043c\u0441",s:"\u0441",min:"\u043c\u0438\u043d",h:"\u0447",forever:"\u0432\u0441\u0435\u0433\u0434\u0430",once:"\u043e\u0434\u043d\u0430\u0436\u0434\u044b",every:"\u043a\u0430\u0436\u0434\u044b\u0439",until:"\u0434\u043e"},values:{true:"\u0438\u0441\u0442\u0438\u043d\u0430",false:"\u043b\u043e\u0436\u044c",null:"\u043d\u0438\u0447\u0435\u0433\u043e",undefined:"\u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e",it:"\u044d\u0442\u043e",its:"\u0435\u0433\u043e",me:"\u044f",my:"\u043c\u043e\u0439",you:"\u0442\u044b",your:"\u0442\u0432\u043e\u0439",yourself:"\u0441\u0430\u043c",myself:"\u044f_\u0441\u0430\u043c",element:"\u044d\u043b\u0435\u043c\u0435\u043d\u0442",target:"\u0446\u0435\u043b\u044c",detail:"\u0434\u0435\u0442\u0430\u043b\u0438",event:"\u0441\u043e\u0431\u044b\u0442\u0438\u0435",window:"\u043e\u043a\u043d\u043e",document:"\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",body:"\u0442\u0435\u043b\u043e",result:"\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442",value:"\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435",first:"\u043f\u0435\u0440\u0432\u044b\u0439",last:"\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439",next:"\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439",previous:"\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439",closest:"\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439",parent:"\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c"},attributes:{class:"\u043a\u043b\u0430\u0441\u0441",classes:"\u043a\u043b\u0430\u0441\u0441\u044b",style:"\u0441\u0442\u0438\u043b\u044c",styles:"\u0441\u0442\u0438\u043b\u0438",attribute:"\u0430\u0442\u0440\u0438\u0431\u0443\u0442",attributes:"\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b",property:"\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e",properties:"\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430",disabled:"\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e",hidden:"\u0441\u043a\u0440\u044b\u0442\u043e",checked:"\u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e",selected:"\u0432\u044b\u0431\u0440\u0430\u043d\u043e",readonly:"\u0442\u043e\u043b\u044c\u043a\u043e_\u0447\u0442\u0435\u043d\u0438\u0435",required:"\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e",text:"\u0442\u0435\u043a\u0441\u0442",html:"html"},expressions:{characters:"\u0441\u0438\u043c\u0432\u043e\u043b\u044b",inclusive:"\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e",exclusive:"\u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e",first:"\u043f\u0435\u0440\u0432\u044b\u0439",last:"\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439",next:"\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439",previous:"\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439",prev:"\u043f\u0440\u0435\u0434",at:"\u0432",random:"\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439",closest:"\u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0439",parent:"\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c",children:"\u0434\u0435\u0442\u0438",within:"\u0432\u043d\u0443\u0442\u0440\u0438",no:"\u043d\u0435\u0442",empty:"\u043f\u0443\u0441\u0442\u043e\u0439",some:"\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435","starts with":"\u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f_\u0441","ends with":"\u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f_\u043d\u0430","ignoring case":"\u0431\u0435\u0437_\u0443\u0447\u0451\u0442\u0430_\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430","sorted by":"\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e_\u043f\u043e","mapped to":"\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043e_\u0432","split by":"\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043e_\u043f\u043e","joined by":"\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043e_\u0447\u0435\u0440\u0435\u0437"}};fl(Hl,"ru",{allowEnglishFallback:!0});var Wl={commands:{on:"\u043f\u0440\u0438",tell:"\u0441\u043a\u0430\u0437\u0430\u0442\u0438",trigger:"\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0438",send:"\u043d\u0430\u0434\u0456\u0441\u043b\u0430\u0442\u0438",take:"\u0432\u0437\u044f\u0442\u0438",put:"\u043f\u043e\u043a\u043b\u0430\u0441\u0442\u0438",set:"\u0432\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0438",get:"\u043e\u0442\u0440\u0438\u043c\u0430\u0442\u0438",add:"\u0434\u043e\u0434\u0430\u0442\u0438",remove:"\u0432\u0438\u0434\u0430\u043b\u0438\u0442\u0438",toggle:"\u043f\u0435\u0440\u0435\u043c\u043a\u043d\u0443\u0442\u0438",hide:"\u0441\u0445\u043e\u0432\u0430\u0442\u0438",show:"\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0438",scroll:"\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u0438",if:"\u044f\u043a\u0449\u043e",unless:"\u043a\u0440\u0456\u043c",repeat:"\u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0438",for:"\u0434\u043b\u044f",while:"\u043f\u043e\u043a\u0438",until:"\u0434\u043e",continue:"\u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438",break:"\u043f\u0435\u0440\u0435\u0440\u0432\u0430\u0442\u0438",halt:"\u0437\u0443\u043f\u0438\u043d\u0438\u0442\u0438",wait:"\u0447\u0435\u043a\u0430\u0442\u0438",fetch:"\u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438",call:"\u0432\u0438\u043a\u043b\u0438\u043a\u0430\u0442\u0438",return:"\u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438",make:"\u0441\u0442\u0432\u043e\u0440\u0438\u0442\u0438",log:"\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u0438",throw:"\u043a\u0438\u043d\u0443\u0442\u0438",catch:"\u0437\u043b\u043e\u0432\u0438\u0442\u0438",measure:"\u0432\u0438\u043c\u0456\u0440\u044f\u0442\u0438",transition:"\u0430\u043d\u0456\u043c\u0443\u0432\u0430\u0442\u0438",increment:"\u0437\u0431\u0456\u043b\u044c\u0448\u0438\u0442\u0438",decrement:"\u0437\u043c\u0435\u043d\u0448\u0438\u0442\u0438",default:"\u0437\u0430_\u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c",go:"\u043f\u0435\u0440\u0435\u0439\u0442\u0438",pushUrl:"\u0434\u043e\u0434\u0430\u0442\u0438_url",replaceUrl:"\u0437\u0430\u043c\u0456\u043d\u0438\u0442\u0438_url",copy:"\u043a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438",pick:"\u0432\u0438\u0431\u0440\u0430\u0442\u0438",beep:"\u0437\u0432\u0443\u043a",js:"js",async:"\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e",render:"\u0432\u0456\u0434\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0438",swap:"\u043f\u043e\u043c\u0456\u043d\u044f\u0442\u0438",morph:"\u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0443\u0432\u0430\u0442\u0438",settle:"\u0441\u0442\u0430\u0431\u0456\u043b\u0456\u0437\u0443\u0432\u0430\u0442\u0438",append:"\u0434\u043e\u043f\u0438\u0441\u0430\u0442\u0438",exit:"\u0432\u0438\u0439\u0442\u0438",else:"\u0456\u043d\u0430\u043a\u0448\u0435",install:"\u0456\u043d\u0441\u0442\u0430\u043b\u044e\u0432\u0430\u0442\u0438",init:"\u0456\u043d\u0456\u0446\u0456\u0430\u043b\u0456\u0437\u0443\u0432\u0430\u0442\u0438",behavior:"\u043f\u043e\u0432\u0435\u0434\u0456\u043d\u043a\u0430",focus:"\u0441\u0444\u043e\u043a\u0443\u0441\u0443\u0432\u0430\u0442\u0438",blur:"\u0440\u043e\u0437\u0444\u043e\u043a\u0443\u0441\u0443\u0432\u0430\u0442\u0438",clone:"\u043a\u043b\u043e\u043d\u0443\u0432\u0430\u0442\u0438",prepend:"\u0434\u043e\u0434\u0430\u0442\u0438_\u043d\u0430_\u043f\u043e\u0447\u0430\u0442\u043e\u043a",breakpoint:"\u0442\u043e\u0447\u043a\u0430-\u0437\u0443\u043f\u0438\u043d\u043a\u0438",clear:"\u043e\u0447\u0438\u0441\u0442\u0438\u0442\u0438",close:"\u0437\u0430\u043a\u0440\u0438\u0442\u0438",open:"\u0432\u0456\u0434\u043a\u0440\u0438\u0442\u0438",select:"\u0432\u0438\u0434\u0456\u043b\u0438\u0442\u0438"},modifiers:{to:"\u0434\u043e",from:"\u0437",into:"\u0432",with:"\u0437",at:"\u0432",in:"\u0443",of:"\u0437",as:"\u044f\u043a",by:"\u043d\u0430",before:"\u0434\u043e",after:"\u043f\u0456\u0441\u043b\u044f",over:"\u043d\u0430\u0434",under:"\u043f\u0456\u0434",between:"\u043c\u0456\u0436",through:"\u0447\u0435\u0440\u0435\u0437",without:"\u0431\u0435\u0437",on:"\u043d\u0430"},events:{click:"\u043a\u043b\u0456\u043a",dblclick:"\u043f\u043e\u0434\u0432\u0456\u0439\u043d\u0438\u0439_\u043a\u043b\u0456\u043a",mousedown:"\u043c\u0438\u0448\u0430\u0432\u043d\u0438\u0437",mouseup:"\u043c\u0438\u0448\u0430\u0432\u0433\u043e\u0440\u0443",mouseenter:"\u043c\u0438\u0448\u0430_\u0432\u0445\u0456\u0434",mouseleave:"\u043c\u0438\u0448\u0430_\u0432\u0438\u0445\u0456\u0434",mouseover:"\u043d\u0430\u0432\u0435\u0434\u0435\u043d\u043d\u044f",mouseout:"\u0432\u0456\u0434\u0432\u0435\u0434\u0435\u043d\u043d\u044f",mousemove:"\u0440\u0443\u0445_\u043c\u0438\u0448\u0456",keydown:"\u043a\u043b\u0430\u0432\u0456\u0448\u0430_\u0432\u043d\u0438\u0437",keyup:"\u043a\u043b\u0430\u0432\u0456\u0448\u0430_\u0432\u0433\u043e\u0440\u0443",keypress:"\u043d\u0430\u0442\u0438\u0441\u043a\u0430\u043d\u043d\u044f_\u043a\u043b\u0430\u0432\u0456\u0448\u0456",focus:"\u0444\u043e\u043a\u0443\u0441",blur:"\u0440\u043e\u0437\u0444\u043e\u043a\u0443\u0441",change:"\u0437\u043c\u0456\u043d\u0430",input:"\u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044f",submit:"\u043d\u0430\u0434\u0441\u0438\u043b\u0430\u043d\u043d\u044f",reset:"\u0441\u043a\u0438\u043d\u0443\u0442\u0438",load:"\u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f",unload:"\u0432\u0438\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f",resize:"\u0437\u043c\u0456\u043d\u0430\u0440\u043e\u0437\u043c\u0456\u0440\u0443",scroll:"\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430",touchstart:"\u0434\u043e\u0442\u0438\u043a_\u043f\u043e\u0447\u0430\u0442\u043e\u043a",touchend:"\u0434\u043e\u0442\u0438\u043a_\u043a\u0456\u043d\u0435\u0446\u044c",touchmove:"\u0434\u043e\u0442\u0438\u043a_\u0440\u0443\u0445",touchcancel:"\u0434\u043e\u0442\u0438\u043a_\u0441\u043a\u0430\u0441\u0443\u0432\u0430\u043d\u043d\u044f"},logical:{when:"\u043a\u043e\u043b\u0438",where:"\u0434\u0435",and:"\u0456",or:"\u0430\u0431\u043e",not:"\u043d\u0435",is:"\u0454",exists:"\u0456\u0441\u043d\u0443\u0454",matches:"\u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u0430\u0454",contains:"\u043c\u0456\u0441\u0442\u0438\u0442\u044c",includes:"\u0432\u043a\u043b\u044e\u0447\u0430\u0454",equals:"\u0434\u043e\u0440\u0456\u0432\u043d\u044e\u0454",then:"\u0442\u043e\u0434\u0456",else:"\u0456\u043d\u0430\u043a\u0448\u0435",otherwise:"\u0432_\u0456\u043d\u0448\u043e\u043c\u0443_\u0432\u0438\u043f\u0430\u0434\u043a\u0443",end:"\u043a\u0456\u043d\u0435\u0446\u044c",live:"\u0436\u0438\u0432\u0438\u0439",changes:"\u0437\u043c\u0456\u043d\u044e\u0454\u0442\u044c\u0441\u044f",has:"\u043c\u0430\u0454",have:"\u043c\u0430\u044e",isNot:"\u043d\u0435_\u0454",empty:"\u043f\u043e\u0440\u043e\u0436\u043d\u0456\u0439"},temporal:{seconds:"\u0441\u0435\u043a\u0443\u043d\u0434",second:"\u0441\u0435\u043a\u0443\u043d\u0434\u0430",milliseconds:"\u043c\u0456\u043b\u0456\u0441\u0435\u043a\u0443\u043d\u0434",millisecond:"\u043c\u0456\u043b\u0456\u0441\u0435\u043a\u0443\u043d\u0434\u0430",minutes:"\u0445\u0432\u0438\u043b\u0438\u043d",minute:"\u0445\u0432\u0438\u043b\u0438\u043d\u0430",hours:"\u0433\u043e\u0434\u0438\u043d",hour:"\u0433\u043e\u0434\u0438\u043d\u0430",ms:"\u043c\u0441",s:"\u0441",min:"\u0445\u0432",h:"\u0433\u043e\u0434",forever:"\u0437\u0430\u0432\u0436\u0434\u0438",once:"\u043e\u0434\u0438\u043d_\u0440\u0430\u0437",every:"\u043a\u043e\u0436\u043d\u0438\u0439",until:"\u0434\u043e"},values:{true:"\u0456\u0441\u0442\u0438\u043d\u0430",false:"\u0445\u0438\u0431\u043d\u0456\u0441\u0442\u044c",null:"\u043d\u0456\u0447\u043e\u0433\u043e",undefined:"\u043d\u0435\u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043e",it:"\u0446\u0435",its:"\u0439\u043e\u0433\u043e",me:"\u044f",my:"\u043c\u0456\u0439",you:"\u0442\u0438",your:"\u0442\u0432\u0456\u0439",yourself:"\u0441\u0430\u043c",myself:"\u044f_\u0441\u0430\u043c",element:"\u0435\u043b\u0435\u043c\u0435\u043d\u0442",target:"\u0446\u0456\u043b\u044c",detail:"\u0434\u0435\u0442\u0430\u043b\u0456",event:"\u043f\u043e\u0434\u0456\u044f",window:"\u0432\u0456\u043a\u043d\u043e",document:"\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",body:"\u0442\u0456\u043b\u043e",result:"\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442",value:"\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f",first:"\u043f\u0435\u0440\u0448\u0438\u0439",last:"\u043e\u0441\u0442\u0430\u043d\u043d\u0456\u0439",next:"\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u0439",previous:"\u043f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439",closest:"\u043d\u0430\u0439\u0431\u043b\u0438\u0436\u0447\u0438\u0439",parent:"\u0431\u0430\u0442\u044c\u043a\u0456\u0432\u0441\u044c\u043a\u0438\u0439"},attributes:{class:"\u043a\u043b\u0430\u0441",classes:"\u043a\u043b\u0430\u0441\u0438",style:"\u0441\u0442\u0438\u043b\u044c",styles:"\u0441\u0442\u0438\u043b\u0456",attribute:"\u0430\u0442\u0440\u0438\u0431\u0443\u0442",attributes:"\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0438",property:"\u0432\u043b\u0430\u0441\u0442\u0438\u0432\u0456\u0441\u0442\u044c",properties:"\u0432\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456",disabled:"\u0432\u0438\u043c\u043a\u043d\u0435\u043d\u043e",hidden:"\u043f\u0440\u0438\u0445\u043e\u0432\u0430\u043d\u043e",checked:"\u043f\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043e",selected:"\u0432\u0438\u0431\u0440\u0430\u043d\u043e",readonly:"\u043b\u0438\u0448\u0435_\u0447\u0438\u0442\u0430\u043d\u043d\u044f",required:"\u043e\u0431\u043e\u0432'\u044f\u0437\u043a\u043e\u0432\u043e",text:"\u0442\u0435\u043a\u0441\u0442",html:"html"},expressions:{characters:"\u0441\u0438\u043c\u0432\u043e\u043b\u0438",inclusive:"\u0432\u043a\u043b\u044e\u0447\u043d\u043e",exclusive:"\u0432\u0438\u043a\u043b\u044e\u0447\u043d\u043e",first:"\u043f\u0435\u0440\u0448\u0438\u0439",last:"\u043e\u0441\u0442\u0430\u043d\u043d\u0456\u0439",next:"\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u0439",previous:"\u043f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439",prev:"\u043f\u043e\u043f\u0435\u0440",at:"\u0432",random:"\u0432\u0438\u043f\u0430\u0434\u043a\u043e\u0432\u0438\u0439",closest:"\u043d\u0430\u0439\u0431\u043b\u0438\u0436\u0447\u0438\u0439",parent:"\u0431\u0430\u0442\u044c\u043a\u0456\u0432\u0441\u044c\u043a\u0438\u0439",children:"\u0434\u0456\u0442\u0438",within:"\u0432\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0456",no:"\u043d\u0456",empty:"\u043f\u043e\u0440\u043e\u0436\u043d\u0456\u0439",some:"\u0434\u0435\u044f\u043a\u0456","starts with":"\u043f\u043e\u0447\u0438\u043d\u0430\u0454\u0442\u044c\u0441\u044f_\u0437","ends with":"\u0437\u0430\u043a\u0456\u043d\u0447\u0443\u0454\u0442\u044c\u0441\u044f_\u043d\u0430","ignoring case":"\u0431\u0435\u0437_\u0443\u0440\u0430\u0445\u0443\u0432\u0430\u043d\u043d\u044f_\u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0443","sorted by":"\u0432\u0456\u0434\u0441\u043e\u0440\u0442\u043e\u0432\u0430\u043d\u043e_\u0437\u0430","mapped to":"\u043f\u0435\u0440\u0435\u0442\u0432\u043e\u0440\u0435\u043d\u043e_\u043d\u0430","split by":"\u0440\u043e\u0437\u0434\u0456\u043b\u0435\u043d\u043e_\u0437\u0430","joined by":"\u043e\u0431'\u0454\u0434\u043d\u0430\u043d\u043e_\u0447\u0435\u0440\u0435\u0437"}};fl(Wl,"uk",{allowEnglishFallback:!0});var Ul={commands:{on:"\u092a\u0930",tell:"\u092c\u0924\u093e\u090f\u0902",trigger:"\u091f\u094d\u0930\u093f\u0917\u0930",send:"\u092d\u0947\u091c\u0947\u0902",take:"\u0932\u0947\u0902",put:"\u0930\u0916\u0947\u0902",set:"\u0938\u0947\u091f",get:"\u092a\u094d\u0930\u093e\u092a\u094d\u0924",add:"\u091c\u094b\u0921\u093c\u0947\u0902",remove:"\u0939\u091f\u093e\u090f\u0902",toggle:"\u091f\u0949\u0917\u0932",hide:"\u091b\u093f\u092a\u093e\u090f\u0902",show:"\u0926\u093f\u0916\u093e\u090f\u0902",if:"\u0905\u0917\u0930",unless:"\u091c\u092c \u0924\u0915 \u0928\u0939\u0940\u0902",repeat:"\u0926\u094b\u0939\u0930\u093e\u090f\u0902",for:"\u0939\u0947\u0924\u0941",while:"\u091c\u092c \u0924\u0915",until:"\u0924\u0915",continue:"\u091c\u093e\u0930\u0940",break:"\u0930\u094b\u0915\u0947\u0902",halt:"\u0930\u094b\u0915\u0947\u0902",wait:"\u092a\u094d\u0930\u0924\u0940\u0915\u094d\u0937\u093e",fetch:"\u0932\u093e\u090f\u0902",call:"\u0915\u0949\u0932",return:"\u0932\u094c\u091f\u093e\u090f\u0902",make:"\u092c\u0928\u093e\u090f\u0902",log:"\u0932\u0949\u0917",throw:"\u092b\u0947\u0902\u0915\u0947\u0902",catch:"\u092a\u0915\u0921\u093c\u0947\u0902",measure:"\u092e\u093e\u092a\u0947\u0902",transition:"\u0938\u0902\u0915\u094d\u0930\u092e\u0923",increment:"\u092c\u0922\u093c\u093e\u090f\u0902",decrement:"\u0918\u091f\u093e\u090f\u0902",default:"\u0921\u093f\u092b\u093c\u0949\u0932\u094d\u091f",go:"\u091c\u093e\u090f\u0902",pushUrl:"url_\u091c\u094b\u0921\u093c\u0947\u0902",replaceUrl:"url_\u092c\u0926\u0932\u0947\u0902",copy:"\u0915\u0949\u092a\u0940",pick:"\u091a\u0941\u0928\u0947\u0902",beep:"\u092c\u0940\u092a",js:"\u091c\u0947\u090f\u0938",async:"\u0905\u0938\u093f\u0902\u0915",render:"\u0930\u0947\u0902\u0921\u0930",swap:"\u0935\u093f\u0928\u093f\u092e\u092f",morph:"\u0930\u0942\u092a\u093e\u0902\u0924\u0930",settle:"\u0938\u094d\u0925\u093f\u0930",append:"\u0938\u0902\u0932\u0917\u094d\u0928",exit:"\u092c\u093e\u0939\u0930",else:"\u0935\u0930\u0928\u093e",install:"\u0907\u0902\u0938\u094d\u091f\u0949\u0932",init:"\u092a\u094d\u0930\u093e\u0930\u0902\u092d",behavior:"\u0935\u094d\u092f\u0935\u0939\u093e\u0930",focus:"\u092b\u094b\u0915\u0938",blur:"\u0927\u0941\u0902\u0927\u0932\u093e",clone:"\u0915\u094d\u0932\u094b\u0928",prepend:"\u091c\u094b\u0921\u093c\u0947\u0902_\u0936\u0941\u0930\u0942",breakpoint:"\u092c\u094d\u0930\u0947\u0915\u092a\u094d\u0935\u093e\u0907\u0902\u091f",clear:"\u0938\u093e\u092b\u093c-\u0915\u0930\u0947\u0902",close:"\u092c\u0902\u0926-\u0915\u0930\u0947\u0902",open:"\u0916\u094b\u0932\u0947\u0902",select:"\u091a\u093f\u0939\u094d\u0928\u093f\u0924-\u0915\u0930\u0947\u0902",socket:"\u0938\u0949\u0915\u0947\u091f"},modifiers:{to:"\u0915\u094b",from:"\u0938\u0947",into:"\u092e\u0947\u0902",with:"\u0915\u0947_\u0938\u093e\u0925",at:"\u092a\u0930",in:"\u092e\u0947\u0902",of:"\u0915\u093e",as:"\u0915\u0947_\u0930\u0942\u092a_\u092e\u0947\u0902",by:"\u0926\u094d\u0935\u093e\u0930\u093e",before:"\u0938\u0947 \u092a\u0939\u0932\u0947",after:"\u0915\u0947 \u092c\u093e\u0926",over:"\u0915\u0947_\u090a\u092a\u0930",under:"\u0915\u0947_\u0928\u0940\u091a\u0947",between:"\u0915\u0947_\u092c\u0940\u091a",through:"\u0915\u0947_\u092e\u093e\u0927\u094d\u092f\u092e_\u0938\u0947",without:"\u0915\u0947_\u092c\u093f\u0928\u093e",on:"\u092a\u0930"},events:{click:"\u0915\u094d\u0932\u093f\u0915",dblclick:"\u0921\u092c\u0932_\u0915\u094d\u0932\u093f\u0915",mousedown:"\u092e\u093e\u0909\u0938\u0928\u0940\u091a\u0947",mouseup:"\u092e\u093e\u0909\u0938\u090a\u092a\u0930",mouseenter:"\u092e\u093e\u0909\u0938_\u092a\u094d\u0930\u0935\u0947\u0936",mouseleave:"\u092e\u093e\u0909\u0938_\u092c\u093e\u0939\u0930",mouseover:"\u092e\u093e\u0909\u0938_\u0913\u0935\u0930",mouseout:"\u092e\u093e\u0909\u0938_\u0906\u0909\u091f",mousemove:"\u092e\u093e\u0909\u0938_\u092e\u0942\u0935",keydown:"\u0915\u0940_\u0928\u0940\u091a\u0947",keyup:"\u0915\u0940_\u090a\u092a\u0930",keypress:"\u0915\u0940_\u092a\u094d\u0930\u0947\u0938",focus:"\u092b\u094b\u0915\u0938",blur:"\u0927\u0941\u0902\u0927\u0932\u093e",change:"\u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928",input:"\u0907\u0928\u092a\u0941\u091f",submit:"\u091c\u092e\u093e",reset:"\u0930\u0940\u0938\u0947\u091f",load:"\u0932\u094b\u0921",unload:"\u0905\u0928\u0932\u094b\u0921",resize:"\u0906\u0915\u093e\u0930_\u092c\u0926\u0932\u0947\u0902",scroll:"\u0938\u094d\u0915\u094d\u0930\u0949\u0932",touchstart:"\u091f\u091a_\u0936\u0941\u0930\u0942",touchend:"\u091f\u091a_\u0938\u092e\u093e\u092a\u094d\u0924",touchmove:"\u091f\u091a_\u092e\u0942\u0935",touchcancel:"\u091f\u091a_\u0930\u0926\u094d\u0926"},logical:{when:"\u091c\u092c",where:"\u0915\u0939\u093e\u0901",and:"\u0914\u0930",or:"\u092f\u093e",not:"\u0928\u0939\u0940\u0902",is:"\u0939\u0948",exists:"\u092e\u094c\u091c\u0942\u0926",matches:"\u092e\u0947\u0932 \u0916\u093e\u0924\u093e",contains:"\u0936\u093e\u092e\u093f\u0932",includes:"\u092e\u0947\u0902_\u0939\u0948",equals:"\u092c\u0930\u093e\u092c\u0930",then:"\u092b\u093f\u0930",else:"\u0935\u0930\u0928\u093e",otherwise:"\u0905\u0928\u094d\u092f\u0925\u093e",end:"\u0938\u092e\u093e\u092a\u094d\u0924",live:"\u0932\u093e\u0907\u0935",changes:"\u092c\u0926\u0932\u0928\u0947 \u092a\u0930",has:"\u0939\u0948",have:"\u0939\u0948",isNot:"\u0928\u0939\u0940\u0902_\u0939\u0948",empty:"\u0916\u093e\u0932\u0940"},temporal:{seconds:"\u0938\u0947\u0915\u0902\u0921",second:"\u0938\u0947\u0915\u0902\u0921",milliseconds:"\u092e\u093f\u0932\u0940\u0938\u0947\u0915\u0902\u0921",millisecond:"\u092e\u093f\u0932\u0940\u0938\u0947\u0915\u0902\u0921",minutes:"\u092e\u093f\u0928\u091f",minute:"\u092e\u093f\u0928\u091f",hours:"\u0918\u0902\u091f\u0947",hour:"\u0918\u0902\u091f\u093e",ms:"\u092e\u093f\u0938\u0947",s:"\u0938\u0947",min:"\u092e\u093f",h:"\u0918\u0902",forever:"\u0939\u092e\u0947\u0936\u093e",once:"\u090f\u0915_\u092c\u093e\u0930",every:"\u0939\u0930",until:"\u0924\u0915"},values:{true:"\u0938\u091a",false:"\u091d\u0942\u0920",null:"\u0916\u093e\u0932\u0940",undefined:"\u0905\u092a\u0930\u093f\u092d\u093e\u0937\u093f\u0924",it:"\u092f\u0939",its:"\u0907\u0938\u0915\u093e",me:"\u092e\u0948\u0902",my:"\u092e\u0947\u0930\u093e",you:"\u0906\u092a",your:"\u0906\u092a\u0915\u093e",yourself:"\u0938\u094d\u0935\u092f\u0902",myself:"\u092e\u0948\u0902_\u0938\u094d\u0935\u092f\u0902",element:"\u0924\u0924\u094d\u0935",target:"\u0932\u0915\u094d\u0937\u094d\u092f",detail:"\u0935\u093f\u0935\u0930\u0923",event:"\u0918\u091f\u0928\u093e",window:"\u0935\u093f\u0902\u0921\u094b",document:"\u0926\u0938\u094d\u0924\u093e\u0935\u0947\u091c\u093c",body:"\u092c\u0949\u0921\u0940",result:"\u092a\u0930\u093f\u0923\u093e\u092e",value:"\u092e\u093e\u0928",first:"\u092a\u0939\u0932\u093e",last:"\u0905\u0902\u0924\u093f\u092e",next:"\u0905\u0917\u0932\u093e",previous:"\u092a\u093f\u091b\u0932\u093e",closest:"\u0928\u093f\u0915\u091f\u0924\u092e",parent:"\u092e\u0942\u0932"},attributes:{class:"\u0915\u094d\u0932\u093e\u0938",classes:"\u0915\u094d\u0932\u093e\u0938\u0947\u0938",style:"\u0938\u094d\u091f\u093e\u0907\u0932",styles:"\u0938\u094d\u091f\u093e\u0907\u0932\u094d\u0938",attribute:"\u0917\u0941\u0923",attributes:"\u0917\u0941\u0923",property:"\u0938\u0902\u092a\u0924\u094d\u0924\u093f",properties:"\u0938\u0902\u092a\u0924\u094d\u0924\u093f\u092f\u093e\u0901",disabled:"\u0905\u0915\u094d\u0937\u092e",hidden:"\u091b\u093f\u092a\u093e",checked:"\u091a\u0947\u0915",selected:"\u091a\u092f\u0928\u093f\u0924",readonly:"\u0915\u0947\u0935\u0932_\u092a\u0922\u093c\u0928\u0947",required:"\u0906\u0935\u0936\u094d\u092f\u0915",text:"\u092a\u093e\u0920",html:"html"},expressions:{characters:"\u0905\u0915\u094d\u0937\u0930",first:"\u092a\u0939\u0932\u093e",last:"\u0905\u0902\u0924\u093f\u092e",next:"\u0905\u0917\u0932\u093e",previous:"\u092a\u093f\u091b\u0932\u093e",prev:"\u092a\u093f\u091b",at:"\u092a\u0930",random:"\u092f\u093e\u0926\u0943\u091a\u094d\u091b\u093f\u0915",closest:"\u0928\u093f\u0915\u091f\u0924\u092e",parent:"\u092e\u0942\u0932",children:"\u092c\u091a\u094d\u091a\u0947",within:"\u0915\u0947_\u0905\u0902\u0926\u0930",no:"\u0928\u0939\u0940\u0902",empty:"\u0916\u093e\u0932\u0940",some:"\u0915\u0941\u091b","starts with":"\u0938\u0947_\u0936\u0941\u0930\u0942","ends with":"\u092a\u0930_\u0938\u092e\u093e\u092a\u094d\u0924","ignoring case":"\u0915\u0947\u0938_\u0905\u0928\u0926\u0947\u0916\u093e","sorted by":"\u0926\u094d\u0935\u093e\u0930\u093e_\u0915\u094d\u0930\u092e\u092c\u0926\u094d\u0927","mapped to":"\u092e\u0947\u0902_\u092a\u0930\u093f\u0935\u0930\u094d\u0924\u093f\u0924","split by":"\u0926\u094d\u0935\u093e\u0930\u093e_\u0935\u093f\u092d\u093e\u091c\u093f\u0924","joined by":"\u0926\u094d\u0935\u093e\u0930\u093e_\u091c\u0941\u0921\u093c\u093e"}};fl(Ul,"hi",{allowEnglishFallback:!0});var Kl={commands:{on:"\u09a4\u09c7",toggle:"\u099f\u0997\u09b2",add:"\u09af\u09cb\u0997",remove:"\u09b8\u09b0\u09be\u09a8",set:"\u09b8\u09c7\u099f",get:"\u09aa\u09be\u09a8",put:"\u09b0\u09be\u0996\u09c1\u09a8",take:"\u09a8\u09bf\u09a8",show:"\u09a6\u09c7\u0996\u09be\u09a8",hide:"\u09b2\u09c1\u0995\u09be\u09a8",increment:"\u09ac\u09c3\u09a6\u09cd\u09a7\u09bf",decrement:"\u09b9\u09cd\u09b0\u09be\u09b8",if:"\u09af\u09a6\u09bf",else:"\u09a8\u09a4\u09c1\u09ac\u09be",repeat:"\u09aa\u09c1\u09a8\u09b0\u09be\u09ac\u09c3\u09a4\u09cd\u09a4\u09bf",for:"\u099c\u09a8\u09cd\u09af",while:"\u09af\u09a4\u0995\u09cd\u09b7\u09a3",wait:"\u0985\u09aa\u09c7\u0995\u09cd\u09b7\u09be",fetch:"\u0986\u09a8\u09c1\u09a8",call:"\u0995\u09b2",return:"\u09ab\u09bf\u09b0\u09c1\u09a8",log:"\u09b2\u0997",trigger:"\u099f\u09cd\u09b0\u09bf\u0997\u09be\u09b0",send:"\u09aa\u09be\u09a0\u09be\u09a8",go:"\u09af\u09be\u09a8",halt:"\u09a5\u09be\u09ae\u09c1\u09a8",throw:"\u09a8\u09bf\u0995\u09cd\u09b7\u09c7\u09aa",continue:"\u099a\u09be\u09b2\u09bf\u09af\u09bc\u09c7 \u09af\u09be\u09a8",make:"\u09a4\u09c8\u09b0\u09bf \u0995\u09b0\u09c1\u09a8",append:"\u099c\u09c1\u09a1\u09bc\u09c1\u09a8",prepend:"\u09b6\u09c1\u09b0\u09c1\u09a4\u09c7 \u09af\u09cb\u0997",focus:"\u09ab\u09cb\u0995\u09be\u09b8",blur:"\u099d\u09be\u09aa\u09b8\u09be",transition:"\u09b8\u0982\u0995\u09cd\u09b0\u09ae\u09a3",settle:"\u09b8\u09cd\u09a5\u09bf\u09b0",measure:"\u09ae\u09be\u09aa\u09c1\u09a8",async:"\u0985\u09cd\u09af\u09be\u09b8\u09bf\u0999\u09cd\u0995",tell:"\u09ac\u09b2\u09c1\u09a8",default:"\u09a1\u09bf\u09ab\u09b2\u09cd\u099f",init:"\u09b6\u09c1\u09b0\u09c1",behavior:"\u0986\u099a\u09b0\u09a3",install:"\u0987\u09a8\u09b8\u09cd\u099f\u09b2",clone:"\u0995\u09cd\u09b2\u09cb\u09a8",swap:"\u09ac\u09a6\u09b2",morph:"\u09b0\u09c2\u09aa\u09be\u09a8\u09cd\u09a4\u09b0",beep:"\u09ac\u09c0\u09aa",break:"\u09ad\u09be\u0999\u09c1\u09a8",copy:"\u0995\u09aa\u09bf",exit:"\u09ac\u09c7\u09b0",js:"\u099c\u09c7\u098f\u09b8",pick:"\u09ac\u09be\u099b\u09c1\u09a8",render:"\u09b0\u09c7\u09a8\u09cd\u09a1\u09be\u09b0",until:"\u09aa\u09b0\u09cd\u09af\u09a8\u09cd\u09a4",breakpoint:"\u09ac\u09cd\u09b0\u09c7\u0995\u09aa\u09af\u09bc\u09c7\u09a8\u09cd\u099f",clear:"\u09aa\u09b0\u09bf\u09b7\u09cd\u0995\u09be\u09b0",close:"\u09ac\u09a8\u09cd\u09a7",open:"\u0996\u09c1\u09b2\u09c1\u09a8",select:"\u09a8\u09bf\u09b0\u09cd\u09ac\u09be\u099a\u09a8",socket:"\u09b8\u0995\u09c7\u099f"},modifiers:{to:"\u0995\u09c7",from:"\u09a5\u09c7\u0995\u09c7",into:"\u09a4\u09c7",on:"\u09a4\u09c7",with:"\u09b8\u09be\u09a5\u09c7",by:"\u09a6\u09cd\u09ac\u09be\u09b0\u09be",as:"\u09b9\u09bf\u09b8\u09be\u09ac\u09c7",before:"\u0986\u0997\u09c7",after:"\u09aa\u09b0\u09c7",at:"\u098f",in:"\u098f",over:"\u0989\u09aa\u09b0",between:"\u09ae\u09a7\u09cd\u09af\u09c7",then:"\u09a4\u09be\u09b0\u09aa\u09b0",and:"\u098f\u09ac\u0982",end:"\u09b6\u09c7\u09b7",until:"\u09aa\u09b0\u09cd\u09af\u09a8\u09cd\u09a4",of:"\u09b0"},events:{click:"\u0995\u09cd\u09b2\u09bf\u0995",change:"\u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8",input:"\u0987\u09a8\u09aa\u09c1\u099f",submit:"\u099c\u09ae\u09be",load:"\u09b2\u09cb\u09a1",focus:"\u09ab\u09cb\u0995\u09be\u09b8",blur:"\u099d\u09be\u09aa\u09b8\u09be",reset:"\u09b0\u09bf\u09b8\u09c7\u099f",keydown:"keydown",keyup:"keyup",mouseover:"mouseover",mouseout:"mouseout",scroll:"\u09b8\u09cd\u0995\u09cd\u09b0\u09cb\u09b2",resize:"\u09b0\u09bf\u09b8\u09be\u0987\u099c",every:"\u09aa\u09cd\u09b0\u09a4\u09bf"},logical:{if:"\u09af\u09a6\u09bf",when:"\u09af\u0996\u09a8",where:"\u0995\u09cb\u09a5\u09be\u09af\u09bc",else:"\u09a8\u09a4\u09c1\u09ac\u09be",not:"\u09a8\u09be",and:"\u098f\u09ac\u0982",or:"\u0985\u09a5\u09ac\u09be",is:"\u09b9\u09af\u09bc",exists:"\u0986\u099b\u09c7",has:"\u0986\u099b\u09c7",have:"\u0986\u099b\u09bf",empty:"\u0996\u09be\u09b2\u09bf",true:"\u09b8\u09a4\u09cd\u09af",false:"\u09ae\u09bf\u09a5\u09cd\u09af\u09be",null:"\u09b6\u09c2\u09a8\u09cd\u09af",undefined:"\u0985\u09a8\u09bf\u09b0\u09cd\u09a7\u09be\u09b0\u09bf\u09a4",end:"\u09b6\u09c7\u09b7",then:"\u09a4\u09be\u09b0\u09aa\u09b0",live:"\u09b2\u09be\u0987\u09ad",bind:"\u09ac\u09be\u0987\u09a8\u09cd\u09a1",changes:"\u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09bf\u09a4 \u09b9\u09b2\u09c7"},temporal:{now:"\u098f\u0996\u09a8",seconds:"\u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",milliseconds:"\u09ae\u09bf\u09b2\u09bf\u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",minutes:"\u09ae\u09bf\u09a8\u09bf\u099f",hours:"\u0998\u09a3\u09cd\u099f\u09be",forever:"\u099a\u09bf\u09b0\u0995\u09be\u09b2",times:"\u09ac\u09be\u09b0",s:"\u09b8\u09c7",ms:"\u09ae\u09bf\u09b8\u09c7"},values:{me:"\u0986\u09ae\u09bf",my:"\u0986\u09ae\u09be\u09b0",it:"\u098f\u099f\u09bf",its:"\u098f\u09b0",result:"\u09ab\u09b2\u09be\u09ab\u09b2",event:"\u0998\u099f\u09a8\u09be",target:"\u09b2\u0995\u09cd\u09b7\u09cd\u09af",body:"\u09ac\u09a1\u09bf",you:"\u0986\u09aa\u09a8\u09bf",your:"\u09a4\u09cb\u09ae\u09be\u09b0"},attributes:{class:"\u09b6\u09cd\u09b0\u09c7\u09a3\u09bf",id:"\u0986\u0987\u09a1\u09bf",style:"\u09b6\u09c8\u09b2\u09c0",value:"\u09ae\u09be\u09a8",text:"\u09aa\u09be\u09a0\u09cd\u09af",html:"\u098f\u0987\u099a\u099f\u09bf\u098f\u09ae\u098f\u09b2",disabled:"\u0985\u0995\u09cd\u09b7\u09ae",checked:"\u099a\u09c7\u0995 \u0995\u09b0\u09be"},expressions:{characters:"\u0985\u0995\u09cd\u09b7\u09b0",inclusive:"\u0985\u09a8\u09cd\u09a4\u09b0\u09cd\u09ad\u09c1\u0995\u09cd\u09a4",exclusive:"\u09ac\u09be\u09a6",first:"\u09aa\u09cd\u09b0\u09a5\u09ae",last:"\u09b6\u09c7\u09b7",next:"\u09aa\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0",previous:"\u0986\u0997\u09c7\u09b0",closest:"\u09a8\u09bf\u0995\u099f\u09a4\u09ae",parent:"\u09ae\u09c2\u09b2",children:"\u09b8\u09a8\u09cd\u09a4\u09be\u09a8",random:"\u098f\u09b2\u09cb\u09ae\u09c7\u09b2\u09cb",length:"\u09a6\u09c8\u09b0\u09cd\u0998\u09cd\u09af",index:"\u09b8\u09c2\u099a\u0995",empty:"\u0996\u09be\u09b2\u09bf-\u0995\u09b0\u09c1\u09a8","starts with":"\u09a6\u09bf\u09af\u09bc\u09c7_\u09b6\u09c1\u09b0\u09c1","ends with":"\u09a6\u09bf\u09af\u09bc\u09c7_\u09b6\u09c7\u09b7","ignoring case":"\u0995\u09c7\u09b8_\u0989\u09aa\u09c7\u0995\u09cd\u09b7\u09be","sorted by":"\u09a6\u09cd\u09ac\u09be\u09b0\u09be_\u09b8\u09be\u099c\u09be\u09a8\u09cb","mapped to":"\u09a4\u09c7_\u09b0\u09c2\u09aa\u09be\u09a8\u09cd\u09a4\u09b0\u09bf\u09a4","split by":"\u09a6\u09cd\u09ac\u09be\u09b0\u09be_\u09ac\u09bf\u09ad\u0995\u09cd\u09a4","joined by":"\u09a6\u09cd\u09ac\u09be\u09b0\u09be_\u09af\u09c1\u0995\u09cd\u09a4"}};fl(Kl,"bn",{allowEnglishFallback:!0});var Jl={commands:{on:"\u0e40\u0e21\u0e37\u0e48\u0e2d",toggle:"\u0e2a\u0e25\u0e31\u0e1a",add:"\u0e40\u0e1e\u0e34\u0e48\u0e21",remove:"\u0e25\u0e1a",set:"\u0e15\u0e31\u0e49\u0e07",get:"\u0e23\u0e31\u0e1a\u0e04\u0e48\u0e32",put:"\u0e43\u0e2a\u0e48",take:"\u0e23\u0e31\u0e1a",show:"\u0e41\u0e2a\u0e14\u0e07",hide:"\u0e0b\u0e48\u0e2d\u0e19",increment:"\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e04\u0e48\u0e32",decrement:"\u0e25\u0e14\u0e04\u0e48\u0e32",if:"\u0e16\u0e49\u0e32",else:"\u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19",repeat:"\u0e17\u0e33\u0e0b\u0e49\u0e33",for:"\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a",while:"\u0e43\u0e19\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48",wait:"\u0e23\u0e2d",fetch:"\u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25",call:"\u0e40\u0e23\u0e35\u0e22\u0e01",return:"\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32",log:"\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01",trigger:"\u0e17\u0e23\u0e34\u0e01\u0e40\u0e01\u0e2d\u0e23\u0e4c",send:"\u0e2a\u0e48\u0e07",go:"\u0e44\u0e1b",halt:"\u0e2b\u0e22\u0e38\u0e14",throw:"\u0e42\u0e22\u0e19",continue:"\u0e15\u0e48\u0e2d\u0e44\u0e1b",make:"\u0e2a\u0e23\u0e49\u0e32\u0e07",append:"\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e17\u0e49\u0e32\u0e22",prepend:"\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e2b\u0e19\u0e49\u0e32",focus:"\u0e42\u0e1f\u0e01\u0e31\u0e2a",blur:"\u0e40\u0e1a\u0e25\u0e2d",transition:"\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e1c\u0e48\u0e32\u0e19",settle:"\u0e04\u0e07\u0e17\u0e35\u0e48",measure:"\u0e27\u0e31\u0e14",async:"\u0e2d\u0e30\u0e0b\u0e34\u0e07\u0e04\u0e4c",tell:"\u0e1a\u0e2d\u0e01",default:"\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19",init:"\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19",behavior:"\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21",install:"\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07",clone:"\u0e42\u0e04\u0e25\u0e19",swap:"\u0e2a\u0e25\u0e31\u0e1a\u0e17\u0e35\u0e48",morph:"\u0e41\u0e1b\u0e25\u0e07\u0e23\u0e48\u0e32\u0e07",beep:"\u0e1a\u0e35\u0e4a\u0e1a",break:"\u0e02\u0e31\u0e14\u0e08\u0e31\u0e07\u0e2b\u0e27\u0e30",copy:"\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01",exit:"\u0e2d\u0e2d\u0e01",js:"\u0e40\u0e08\u0e40\u0e2d\u0e2a",pick:"\u0e40\u0e25\u0e37\u0e2d\u0e01",render:"\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25",until:"\u0e08\u0e19\u0e16\u0e36\u0e07",breakpoint:"\u0e08\u0e38\u0e14\u0e1e\u0e31\u0e01",clear:"\u0e40\u0e04\u0e25\u0e35\u0e22\u0e23\u0e4c",close:"\u0e1b\u0e34\u0e14",open:"\u0e40\u0e1b\u0e34\u0e14",select:"\u0e17\u0e33\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22"},modifiers:{to:"\u0e44\u0e1b\u0e22\u0e31\u0e07",from:"\u0e08\u0e32\u0e01",into:"\u0e43\u0e19",on:"\u0e40\u0e21\u0e37\u0e48\u0e2d",with:"\u0e14\u0e49\u0e27\u0e22",by:"\u0e42\u0e14\u0e22",as:"\u0e40\u0e1b\u0e47\u0e19",before:"\u0e01\u0e48\u0e2d\u0e19",after:"\u0e2b\u0e25\u0e31\u0e07",at:"\u0e17\u0e35\u0e48",in:"\u0e43\u0e19",over:"\u0e40\u0e2b\u0e19\u0e37\u0e2d",between:"\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07",then:"\u0e41\u0e25\u0e49\u0e27",and:"\u0e41\u0e25\u0e30",end:"\u0e08\u0e1a",until:"\u0e08\u0e19\u0e16\u0e36\u0e07",of:"\u0e02\u0e2d\u0e07"},events:{click:"\u0e04\u0e25\u0e34\u0e01",change:"\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07",input:"\u0e2d\u0e34\u0e19\u0e1e\u0e38\u0e15",submit:"\u0e2a\u0e48\u0e07",load:"\u0e42\u0e2b\u0e25\u0e14",focus:"\u0e42\u0e1f\u0e01\u0e31\u0e2a",blur:"\u0e40\u0e1a\u0e25\u0e2d",reset:"\u0e23\u0e35\u0e40\u0e0b\u0e47\u0e15",keydown:"\u0e01\u0e14\u0e04\u0e35\u0e22\u0e4c",keyup:"\u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e04\u0e35\u0e22\u0e4c",mouseover:"\u0e40\u0e21\u0e32\u0e2a\u0e4c\u0e40\u0e02\u0e49\u0e32",mouseout:"\u0e40\u0e21\u0e32\u0e2a\u0e4c\u0e2d\u0e2d\u0e01",scroll:"\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19",resize:"\u0e1b\u0e23\u0e31\u0e1a\u0e02\u0e19\u0e32\u0e14",every:"\u0e17\u0e38\u0e01"},logical:{if:"\u0e16\u0e49\u0e32",when:"\u0e40\u0e21\u0e37\u0e48\u0e2d",where:"\u0e17\u0e35\u0e48\u0e44\u0e2b\u0e19",else:"\u0e44\u0e21\u0e48\u0e07\u0e31\u0e49\u0e19",not:"\u0e44\u0e21\u0e48",and:"\u0e41\u0e25\u0e30",or:"\u0e2b\u0e23\u0e37\u0e2d",is:"\u0e40\u0e1b\u0e47\u0e19",exists:"\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48",has:"\u0e21\u0e35",have:"\u0e21\u0e35",empty:"\u0e27\u0e48\u0e32\u0e07",true:"\u0e08\u0e23\u0e34\u0e07",false:"\u0e40\u0e17\u0e47\u0e08",null:"\u0e27\u0e48\u0e32\u0e07",undefined:"\u0e44\u0e21\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14",end:"\u0e08\u0e1a",then:"\u0e41\u0e25\u0e49\u0e27",live:"\u0e2a\u0e14",changes:"\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19"},temporal:{now:"\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49",seconds:"\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",milliseconds:"\u0e21\u0e34\u0e25\u0e25\u0e34\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",minutes:"\u0e19\u0e32\u0e17\u0e35",hours:"\u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",forever:"\u0e15\u0e25\u0e2d\u0e14\u0e44\u0e1b",times:"\u0e04\u0e23\u0e31\u0e49\u0e07",s:"\u0e27\u0e34",ms:"\u0e21\u0e27"},values:{me:"\u0e09\u0e31\u0e19",my:"\u0e02\u0e2d\u0e07\u0e09\u0e31\u0e19",it:"\u0e21\u0e31\u0e19",its:"\u0e02\u0e2d\u0e07\u0e21\u0e31\u0e19",result:"\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c",event:"\u0e40\u0e2b\u0e15\u0e38\u0e01\u0e32\u0e23\u0e13\u0e4c",target:"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22",body:"\u0e1a\u0e2d\u0e14\u0e35\u0e49",you:"\u0e04\u0e38\u0e13",your:"\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13"},attributes:{class:"\u0e04\u0e25\u0e32\u0e2a",id:"\u0e44\u0e2d\u0e14\u0e35",style:"\u0e2a\u0e44\u0e15\u0e25\u0e4c",value:"\u0e04\u0e48\u0e32",text:"\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",html:"\u0e40\u0e2d\u0e0a\u0e17\u0e35\u0e40\u0e2d\u0e47\u0e21\u0e41\u0e2d\u0e25",disabled:"\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19",checked:"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e41\u0e25\u0e49\u0e27"},expressions:{characters:"\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30",inclusive:"\u0e23\u0e27\u0e21",exclusive:"\u0e22\u0e01\u0e40\u0e27\u0e49\u0e19",first:"\u0e41\u0e23\u0e01",last:"\u0e2a\u0e38\u0e14\u0e17\u0e49\u0e32\u0e22",next:"\u0e16\u0e31\u0e14\u0e44\u0e1b",previous:"\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32",closest:"\u0e43\u0e01\u0e25\u0e49\u0e2a\u0e38\u0e14",parent:"\u0e15\u0e49\u0e19\u0e17\u0e32\u0e07",children:"\u0e25\u0e39\u0e01",random:"\u0e2a\u0e38\u0e48\u0e21",length:"\u0e04\u0e27\u0e32\u0e21\u0e22\u0e32\u0e27",index:"\u0e14\u0e31\u0e0a\u0e19\u0e35",empty:"\u0e25\u0e49\u0e32\u0e07","starts with":"\u0e02\u0e36\u0e49\u0e19\u0e15\u0e49\u0e19\u0e14\u0e49\u0e27\u0e22","ends with":"\u0e25\u0e07\u0e17\u0e49\u0e32\u0e22\u0e14\u0e49\u0e27\u0e22","ignoring case":"\u0e44\u0e21\u0e48\u0e2a\u0e19\u0e15\u0e31\u0e27\u0e1e\u0e34\u0e21\u0e1e\u0e4c","sorted by":"\u0e40\u0e23\u0e35\u0e22\u0e07\u0e15\u0e32\u0e21","mapped to":"\u0e41\u0e1b\u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19","split by":"\u0e41\u0e22\u0e01\u0e14\u0e49\u0e27\u0e22","joined by":"\u0e23\u0e27\u0e21\u0e14\u0e49\u0e27\u0e22"}};fl(Jl,"th",{allowEnglishFallback:!0});var Zl={commands:{on:"apabila",tell:"beritahu",trigger:"cetuskan",send:"hantar",take:"ambil",put:"letak",set:"tetapkan",get:"dapatkan",add:"tambah",remove:"buang",toggle:"togol",hide:"sembunyi",show:"tunjuk",if:"jika",unless:"kecuali",repeat:"ulang",for:"untuk",while:"selagi",until:"sehingga",continue:"teruskan",break:"henti",halt:"henti",wait:"tunggu",fetch:"ambil_dari",call:"panggil",return:"pulang",make:"buat",log:"catat",throw:"lempar",catch:"tangkap",measure:"ukur",transition:"peralihan",increment:"tambah_satu",decrement:"kurang_satu",default:"lalai",go:"pergi",pushUrl:"tolak_url",replaceUrl:"ganti_url",copy:"salin",pick:"pilih",beep:"bunyi",js:"js",async:"tak_segerak",render:"papar",swap:"tukar_tempat",morph:"ubah_bentuk",settle:"selesai",append:"tambah_hujung",prepend:"tambah_mula",exit:"keluar",else:"kalau_tidak",focus:"fokus",blur:"kabur",install:"pasang",behavior:"kelakuan",init:"mula",clone:"klon",breakpoint:"titik-henti",clear:"bersihkan",close:"tutup",open:"buka",select:"tandai",socket:"soket"},modifiers:{to:"ke",from:"dari",into:"ke_dalam",with:"dengan",at:"di",in:"dalam",of:"daripada",as:"sebagai",by:"oleh",before:"sebelum",after:"selepas",over:"atas",under:"bawah",between:"antara",through:"melalui",without:"tanpa",on:"pada",then:"kemudian",and:"dan",end:"tamat",until:"sehingga"},events:{click:"click",dblclick:"dblclick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"mouseover",mouseout:"mouseout",mousemove:"mousemove",keydown:"keydown",keyup:"keyup",keypress:"keypress",focus:"focus",blur:"blur",change:"change",input:"input",submit:"submit",reset:"reset",load:"load",unload:"unload",resize:"resize",scroll:"scroll",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel",every:"setiap"},logical:{when:"apabila",where:"di_mana",and:"dan",or:"atau",not:"bukan",is:"adalah",exists:"wujud",matches:"sepadan",contains:"mengandungi",includes:"termasuk",equals:"sama",has:"ada",have:"ada",then:"kemudian",else:"kalau_tidak",otherwise:"jika_tidak",end:"tamat",live:"langsung",changes:"berubah",if:"jika",empty:"kosong",true:"benar",false:"salah",null:"null",undefined:"tidak_ditakrifkan"},temporal:{seconds:"saat",second:"saat",milliseconds:"milisaat",millisecond:"milisaat",minutes:"minit",minute:"minit",hours:"jam",hour:"jam",ms:"ms",s:"s",min:"min",h:"j",now:"sekarang",forever:"selamanya",times:"kali"},values:{true:"benar",false:"salah",null:"null",undefined:"tidak_ditakrifkan",it:"ia",its:"nya",me:"saya",my:"saya_punya",myself:"diri_saya",you:"kamu",your:"kamu_punya",yourself:"diri_kamu",element:"elemen",target:"sasaran",detail:"perincian",event:"peristiwa",window:"tetingkap",document:"dokumen",body:"badan",result:"hasil",value:"nilai"},attributes:{class:"kelas",classes:"kelas_kelas",style:"gaya",styles:"gaya_gaya",attribute:"atribut",attributes:"atribut_atribut",property:"sifat",properties:"sifat_sifat",id:"id",value:"nilai",text:"teks",html:"html",disabled:"dilumpuhkan",checked:"ditanda"},expressions:{characters:"aksara",inclusive:"inklusif",exclusive:"eksklusif",first:"pertama",last:"terakhir",next:"seterusnya",previous:"sebelumnya",prev:"sebelum",at:"di",random:"rawak",closest:"terdekat",parent:"induk",children:"anak_anak",within:"dalam",no:"tiada",empty:"kosong",some:"beberapa","starts with":"bermula_dengan","ends with":"berakhir_dengan","ignoring case":"abaikan_huruf_besar_kecil","sorted by":"disusun_mengikut","mapped to":"dipetakan_ke","split by":"dipecah_oleh","joined by":"digabung_oleh",length:"panjang",index:"indeks"}};fl(Zl,"ms",{allowEnglishFallback:!0});var Xl={commands:{on:"kapag",tell:"sabihin",trigger:"palitawin",send:"ipadala",take:"kumuha",put:"ilagay",set:"itakda",get:"kunin",add:"idagdag",remove:"alisin",toggle:"palitan",hide:"itago",show:"ipakita",if:"kung",unless:"maliban_kung",repeat:"ulitin",for:"para_sa",while:"habang",until:"hanggang",continue:"magpatuloy",break:"itigil",halt:"huminto",wait:"maghintay",fetch:"kuhanin_mula",call:"tawagin",return:"ibalik",make:"gumawa",log:"itala",throw:"ihagis",catch:"hulihin",measure:"sukatin",transition:"lumipat",increment:"dagdagan",decrement:"bawasan",default:"pamantayan",go:"pumunta",pushUrl:"itulak_url",replaceUrl:"palitan_url",copy:"kopyahin",pick:"pumili",beep:"tunog",js:"js",async:"sabay",render:"irender",swap:"palitan_pwesto",morph:"baguhin",settle:"magpatahimik",append:"idagdag_sa_dulo",prepend:"idagdag_sa_simula",exit:"lumabas",else:"kung_hindi",focus:"ituon",blur:"alisin_tuon",install:"ikabit",behavior:"ugali",init:"simulan",clone:"i-clone",breakpoint:"breakpoint",clear:"burahin",close:"isara",open:"buksan",select:"piliin"},modifiers:{to:"sa",from:"mula_sa",into:"papasok_sa",with:"kasama",at:"sa",in:"sa_loob",of:"ng",as:"bilang",by:"sa_pamamagitan_ng",before:"bago",after:"matapos",over:"sa_ibabaw",under:"sa_ilalim",between:"sa_pagitan",through:"sa_pamamagitan",without:"walang",on:"sa",then:"pagkatapos",and:"at",end:"wakas",until:"hanggang"},events:{click:"click",dblclick:"dblclick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"mouseover",mouseout:"mouseout",mousemove:"mousemove",keydown:"keydown",keyup:"keyup",keypress:"keypress",focus:"focus",blur:"blur",change:"change",input:"input",submit:"submit",reset:"reset",load:"load",unload:"unload",resize:"resize",scroll:"scroll",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel",every:"bawat"},logical:{when:"kapag",where:"kung_saan",and:"at",or:"o",not:"hindi",is:"ay",exists:"may",matches:"tumutugma",contains:"naglalaman",includes:"kasama",equals:"katumbas",has:"may",have:"may",then:"pagkatapos",else:"kung_hindi",otherwise:"kung_hindi_man",end:"wakas",live:"live",changes:"nagbabago",if:"kung",empty:"walang_laman",true:"totoo",false:"mali",null:"wala",undefined:"hindi_tinukoy"},temporal:{seconds:"segundo",second:"segundo",milliseconds:"milisegundo",millisecond:"milisegundo",minutes:"minuto",minute:"minuto",hours:"oras",hour:"oras",ms:"ms",s:"s",min:"min",h:"h",now:"ngayon",forever:"magpakailanman",times:"beses"},values:{true:"totoo",false:"mali",null:"wala",undefined:"hindi_tinukoy",it:"ito",its:"nito",me:"ako",my:"aking",myself:"sarili_ko",you:"ikaw",your:"iyong",yourself:"sarili_mo",element:"elemento",target:"target",detail:"detalye",event:"pangyayari",window:"bintana",document:"dokumento",body:"katawan",result:"resulta",value:"halaga"},attributes:{class:"klase",classes:"mga_klase",style:"estilo",styles:"mga_estilo",attribute:"katangian",attributes:"mga_katangian",property:"ari_arian",properties:"mga_ari_arian",id:"id",value:"halaga",text:"teksto",html:"html",disabled:"hindi_pinagana",checked:"naka_tsek"},expressions:{characters:"karakter",inclusive:"kasama",exclusive:"bukod",first:"una",last:"huli",next:"susunod",previous:"nakaraan",prev:"nakaraan",at:"sa",random:"random",closest:"pinakamalapit",parent:"magulang",children:"mga_anak",within:"sa_loob_ng",no:"walang",empty:"walang_laman",some:"ilan","starts with":"nagsisimula_sa","ends with":"nagtatapos_sa","ignoring case":"huwag_pansinin_ang_case","sorted by":"nakaayos_ayon_sa","mapped to":"binago_sa","split by":"hinati_sa","joined by":"pinagsama_sa",length:"haba",index:"indeks"}};fl(Xl,"tl",{allowEnglishFallback:!0});var Yl={commands:{add:"\u05d4\u05d5\u05e1\u05e3",append:"\u05e6\u05e8\u05e3",async:"\u05d0\u05e1\u05d9\u05e0\u05db\u05e8\u05d5\u05e0\u05d9",beep:"\u05d1\u05d9\u05e4",break:"\u05e9\u05d1\u05d5\u05e8",call:"\u05e7\u05e8\u05d0",clear:"\u05e0\u05e7\u05d4",continue:"\u05d4\u05de\u05e9\u05da",copy:"\u05d4\u05e2\u05ea\u05e7",decrement:"\u05d4\u05e7\u05d8\u05df",default:"\u05d1\u05e8\u05d9\u05e8\u05ea \u05de\u05d7\u05d3\u05dc",exit:"\u05e6\u05d0",fetch:"\u05d4\u05d1\u05d0",for:"\u05e2\u05d1\u05d5\u05e8",get:"\u05e7\u05d1\u05dc",go:"\u05dc\u05da",halt:"\u05e2\u05e6\u05d5\u05e8",hide:"\u05d4\u05e1\u05ea\u05e8",if:"\u05d0\u05dd",unless:"\u05d0\u05dc\u05d0",increment:"\u05d4\u05d2\u05d3\u05dc",install:"\u05d4\u05ea\u05e7\u05df",js:"js",log:"\u05e8\u05e9\u05d5\u05dd",make:"\u05e6\u05d5\u05e8",measure:"\u05de\u05d3\u05d5\u05d3",morph:"\u05d4\u05e4\u05d5\u05da",on:"\u05d1",pick:"\u05d1\u05d7\u05e8",put:"\u05e9\u05d9\u05dd",remove:"\u05d4\u05e1\u05e8",render:"\u05e8\u05e0\u05d3\u05e8",repeat:"\u05d7\u05d6\u05d5\u05e8",return:"\u05d4\u05d7\u05d6\u05e8",scroll:"\u05d2\u05dc\u05d5\u05dc",send:"\u05e9\u05dc\u05d7",set:"\u05e7\u05d1\u05e2",settle:"\u05d4\u05ea\u05d9\u05d9\u05e6\u05d1",show:"\u05d4\u05e8\u05d0\u05d4",swap:"\u05d4\u05d7\u05dc\u05e3",take:"\u05e7\u05d7",tell:"\u05d0\u05de\u05d5\u05e8",throw:"\u05d6\u05e8\u05d5\u05e7",toggle:"\u05de\u05ea\u05d2",transition:"\u05de\u05e2\u05d1\u05e8",trigger:"\u05d4\u05e4\u05e2\u05dc",until:"\u05e2\u05d3",wait:"\u05d7\u05db\u05d4",while:"\u05db\u05dc \u05e2\u05d5\u05d3"},modifiers:{after:"\u05d0\u05d7\u05e8\u05d9",before:"\u05dc\u05e4\u05e0\u05d9",from:"\u05de",into:"\u05dc\u05ea\u05d5\u05da",to:"\u05e2\u05dc",with:"\u05e2\u05dd"},events:{blur:"\u05d8\u05e9\u05d8\u05e9",change:"\u05e9\u05d9\u05e0\u05d5\u05d9",click:"\u05dc\u05d7\u05d9\u05e6\u05d4",focus:"\u05de\u05e7\u05d3",input:"\u05e7\u05dc\u05d8",submit:"\u05e9\u05dc\u05d9\u05d7\u05d4"},logical:{and:"\u05d5\u05d2\u05dd",else:"\u05d0\u05d7\u05e8\u05ea",end:"\u05e1\u05d5\u05e3",then:"\u05d0\u05d6",live:"\u05d7\u05d9",bind:"\u05e7\u05e9\u05d5\u05e8",changes:"\u05de\u05e9\u05ea\u05e0\u05d4",when:"\u05db\u05d0\u05e9\u05e8",where:"\u05d0\u05d9\u05e4\u05d4"},temporal:{},values:{body:"\u05d2\u05d5\u05e3",event:"\u05d0\u05d9\u05e8\u05d5\u05e2",it:"\u05d6\u05d4",its:"\u05e9\u05dc\u05d5",me:"\u05d0\u05e0\u05d9",my:"\u05e9\u05dc\u05d9",result:"\u05ea\u05d5\u05e6\u05d0\u05d4",target:"\u05d9\u05e2\u05d3",you:"\u05d0\u05ea\u05d4",your:"\u05e9\u05dc\u05da"},attributes:{},expressions:{random:"\u05d0\u05e7\u05e8\u05d0\u05d9",characters:"\u05ea\u05d5\u05d5\u05d9\u05dd",inclusive:"\u05db\u05d5\u05dc\u05dc",exclusive:"\u05d1\u05dc\u05e2\u05d3\u05d9",last:"\u05d0\u05d7\u05e8\u05d5\u05df"}};fl(Yl,"he",{allowEnglishFallback:!0});var Gl=class e{static register(t,r){e.providers.set(t.toLowerCase(),r)}static unregister(t){e.providers.delete(t.toLowerCase())}static setDefault(t){const r=t.toLowerCase();if("en"!==r&&!e.providers.has(r))throw Error(`Locale '${t}' is not registered. Available locales: ${e.getAvailable().join(", ")}`);e.defaultLocale=r}static getDefault(){return e.defaultLocale}static get(t){const r=(t||e.defaultLocale).toLowerCase();if("en"===r)return e.englishProvider;const n=e.providers.get(r);if(!n)throw Error(`Locale '${r}' is not registered. Available locales: ${e.getAvailable().join(", ")}`);return n}static has(t){const r=t.toLowerCase();return"en"===r||e.providers.has(r)}static getAvailable(){return["en",...Array.from(e.providers.keys())]}static reset(){e.providers.clear(),e.defaultLocale="en"}static registerAll(t){for(const[r,n]of Object.entries(t))e.register(r,n)}};Gl.providers=new Map,Gl.defaultLocale="en",Gl.englishProvider=yl();var Ql=Gl;function ec(e,t){const r=[],n=new Set;for(const s of t){const t=e.get(s);t&&(r.push(t),n.add(s))}for(const[t,s]of e)n.has(t)||r.push(s);return r}function tc(e,t,r){const n=[];for(const s of e){let e=t.find(e=>e.role===s.role);"event"===e?.role&&/^[#.<@[]/.test(s.translated||s.value)&&(e=void 0),"duration"===e?.role&&/^(me|you|it)$/i.test(s.value)&&(e=void 0),e?"preposition"===r?(e.form&&n.push(e.form),n.push(s.translated||s.value)):"postposition"===r?(n.push(s.translated||s.value),e.form&&n.push(e.form)):n.push(s.translated||s.value):n.push(s.translated||s.value)}return n}function rc(e){if(0===e.length)return"";let t="";for(let r=0;e.length>r;r++){const n=e[r],s=e[r+1],i=n.endsWith("-"),a=n.startsWith("-");let o=n;if(i&&(o=n.slice(0,-1)),a&&(o=n.substring(1)),t+=o,s){const e=s.startsWith("-");i||e||(t+=" ")}}return t}function nc(e){return{name:"halt-call-fused-verb-final",description:"Split the swept `halt <operand> call <args>` blob; both verbs clause-final",priority:95,match:{commands:["halt"],requiredRoles:["action","event","patient"],predicate:t=>{const r=t.roles.get("patient");return!!r&&/\bcall\b/.test(r.value)&&!!r.translated&&r.translated.includes(e.callVerb)}},transform:{roleOrder:[],custom:t=>{const r=t.roles.get("patient"),n=t.roles.get("event"),s=t.roles.get("action");let i=(r.translated??r.value).trim();const a="EVENTBLOCKPLACEHOLDER";let o="";i.endsWith(a)&&(i=i.slice(0,-21).trim(),o=" "+a);const l=i.indexOf(e.callVerb),c=i.slice(0,l).trim(),u=i.slice(l+e.callVerb.length).trim();return[c,e.patientMarker,n.translated??n.value,e.eventMarker,s.translated??s.value,e.connective,u,e.patientMarker,e.callVerb].join(" ")+o}}}}function sc(e){return{name:"pick-range-verb-final",description:"Reassemble the pick range (unit + endpoints + root) adjacent, verb-final",priority:95,match:{commands:["pick"],requiredRoles:["action","patient","destination"],predicate:e=>{const t=e.roles.get("patient"),r=e.roles.get("destination");return!!t&&!!r&&/^\S+\s+\d+$/.test(t.value.trim())&&/^\d+\s+of\s+\S+$/.test(r.value.trim())}},transform:{roleOrder:[],custom:t=>{const r=t.roles.get("patient"),n=t.roles.get("destination"),s=t.roles.get("action"),i=t.roles.get("event"),a=(r.translated??r.value).trim().split(/\s+/),o=a[a.length-1],l=a.slice(0,-1).join(" "),c=n.value.trim().match(/^(\d+)\s+of\s+(\S+)$/);return[c[2],e.genitive,l,o,e.rangeSep,c[1],e.patientMarker,...i?[i.translated??i.value,e.eventMarker]:[],s.translated??s.value].join(" ")}}}}var ic={en:{code:"en",name:"English",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","source","destination","quantity","duration","method","style"],markers:[{form:"on",role:"event",position:"preposition",required:!0},{form:"to",role:"destination",position:"preposition",required:!1},{form:"into",role:"destination",position:"preposition",required:!1},{form:"from",role:"source",position:"preposition",required:!1},{form:"with",role:"style",position:"preposition",required:!1},{form:"by",role:"quantity",position:"preposition",required:!1},{form:"as",role:"method",position:"preposition",required:!1},{form:"over",role:"duration",position:"preposition",required:!1},{form:"for",role:"duration",position:"preposition",required:!1}]},ja:{code:"ja",name:"\u65e5\u672c\u8a9e",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"\u3092",role:"patient",position:"postposition",required:!0},{form:"\u306b",role:"destination",position:"postposition",required:!0},{form:"\u304b\u3089",role:"source",position:"postposition",required:!0},{form:"\u3067",role:"event",position:"postposition",required:!0},{form:"\u3067",role:"style",position:"postposition",required:!1},{form:"\u3068",role:"style",position:"postposition",required:!1},{form:"\u3078",role:"destination",position:"postposition",required:!1}],rules:[{name:"event-handler",description:"Transform event handlers to Japanese SOV order",priority:100,match:{commands:["on"],requiredRoles:["event","action"],optionalRoles:["patient"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}},{name:"put-into",description:"Transform put X into Y to Japanese order",priority:90,match:{commands:["put","\u7f6e\u304f"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"set-to",description:"Transform set X to Y to Japanese verb-final order",priority:90,match:{commands:["set","\u8a2d\u5b9a"],requiredRoles:["action","patient","destination"],predicate:e=>!/(^|\s)end$/i.test((e.original??"").trim())},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"bind-to",description:"Transform bind $var to #el to Japanese verb-final order",priority:90,match:{commands:["bind","\u30d0\u30a4\u30f3\u30c9"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},nc({callVerb:"\u547c\u3073\u51fa\u3057",patientMarker:"\u3092",eventMarker:"\u3067",connective:"\u305d\u308c\u304b\u3089"}),sc({genitive:"\u306e",rangeSep:"\u304b\u3089",patientMarker:"\u3092",eventMarker:"\u3067"})]},ko:{code:"ko",name:"\ud55c\uad6d\uc5b4",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"\ub97c",role:"patient",position:"postposition",required:!0,alternatives:["\uc744"]},{form:"\uc5d0",role:"destination",position:"postposition",required:!0},{form:"\uc5d0\uc11c",role:"source",position:"postposition",required:!0},{form:"\ud560 \ub54c",role:"event",position:"postposition",required:!0},{form:"\ub85c",role:"style",position:"postposition",required:!1,alternatives:["\uc73c\ub85c"]},{form:"\uc640",role:"style",position:"postposition",required:!1,alternatives:["\uacfc"]},{form:"\ub85c",role:"method",position:"postposition",required:!1,alternatives:["\uc73c\ub85c"]}],rules:[{name:"event-handler",description:"Transform event handlers to Korean SOV order",priority:100,match:{commands:["on"],requiredRoles:["event","action"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}},{name:"put-into",description:"Transform put X into Y to Korean verb-final order",priority:90,match:{commands:["put","\ub123\ub2e4"],requiredRoles:["action","patient","destination"],predicate:e=>!e.roles.has("event")},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"set-to",description:"Transform set X to Y to Korean verb-final order",priority:90,match:{commands:["set","\uc124\uc815"],requiredRoles:["action","patient","destination"],predicate:e=>!/(^|\s)end$/i.test((e.original??"").trim())},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"bind-to",description:"Transform bind $var to #el to Korean verb-final order",priority:90,match:{commands:["bind","\ubc14\uc778\ub4dc"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},nc({callVerb:"\ud638\ucd9c",patientMarker:"\ub97c",eventMarker:"\ud560 \ub54c",connective:"\uadf8\ub7ec\uba74"}),sc({genitive:"\uc758",rangeSep:"\ubd80\ud130",patientMarker:"\ub97c",eventMarker:"\ud560 \ub54c"})]},zh:{code:"zh",name:"\u4e2d\u6587",wordOrder:"SVO",adpositionType:"preposition",morphology:"isolating",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"\u5f53",role:"event",position:"preposition",required:!0},{form:"\u65f6",role:"event",position:"postposition",required:!0},{form:"\u628a",role:"patient",position:"preposition",required:!1},{form:"\u5230",role:"destination",position:"preposition",required:!1},{form:"\u4ece",role:"source",position:"preposition",required:!1},{form:"\u7528",role:"style",position:"preposition",required:!1},{form:"\u7684",role:"method",position:"postposition",required:!1}],rules:[{name:"event-handler-standard",description:"Standard event handler: \u5f53 X \u65f6 Y",priority:100,match:{requiredRoles:["event","action"]},transform:{roleOrder:["event","action","patient"],insertMarkers:!0,custom:(e,t)=>{const r=e.roles.get("event"),n=e.roles.get("action"),s=new Map(e.roles);s.delete("event"),s.delete("action");const i=tc(ec(s,(t.canonicalOrder||[]).filter(e=>"event"!==e&&"action"!==e)),t.markers,t.adpositionType),a=["\u5f53",r?.translated||r?.value||"","\u65f6"];return n&&a.push(n.translated||n.value),a.push(...i),a.filter(Boolean).join(" ")}}},{name:"ba-construction",description:"BA construction for object-fronting: \u628a X Y",priority:80,match:{commands:["put","set","move"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","action","destination"],insertMarkers:!0}},{name:"bind-to",description:"Bind binds a variable to an element: \u7ed1\u5b9a X \u5230 Y (no \u628a)",priority:90,match:{commands:["bind","\u7ed1\u5b9a"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["action","patient","destination"],custom:e=>{const t=e.roles.get("action"),r=e.roles.get("patient"),n=e.roles.get("destination");return[t?.translated||t?.value||"",r?.translated||r?.value||"","\u5230",n?.translated||n?.value||""].filter(Boolean).join(" ")}}}]},ar:{code:"ar",name:"\u0627\u0644\u0639\u0631\u0628\u064a\u0629",wordOrder:"VSO",adpositionType:"preposition",morphology:"fusional",direction:"rtl",canonicalOrder:["action","agent","patient","destination","source"],markers:[{form:"\u0639\u0646\u062f",role:"event",position:"preposition",required:!0},{form:"\u0625\u0644\u0649",role:"destination",position:"preposition",required:!1},{form:"\u0641\u064a",role:"destination",position:"preposition",required:!1},{form:"\u0645\u0646",role:"source",position:"preposition",required:!1},{form:"\u0628\u0640-",role:"style",position:"preposition",required:!1},{form:"\u0645\u0639",role:"style",position:"preposition",required:!1},{form:"\u0643\u0640-",role:"method",position:"preposition",required:!1}],rules:[{name:"event-handler-vso",description:"VSO event handler: VERB TARGET \u0639\u0646\u062f EVENT",priority:100,match:{commands:["on"],requiredRoles:["event","action"]},transform:{roleOrder:["action","patient","event"],insertMarkers:!0}}]},tr:{code:"tr",name:"T\u00fcrk\u00e7e",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"i",role:"patient",position:"postposition",required:!0,alternatives:["\u0131","u","\u00fc"]},{form:"e",role:"destination",position:"postposition",required:!0,alternatives:["a"]},{form:"den",role:"source",position:"postposition",required:!0,alternatives:["dan"]},{form:"de",role:"event",position:"postposition",required:!0,alternatives:["da"]},{form:"ile",role:"style",position:"postposition",required:!1},{form:"olarak",role:"method",position:"postposition",required:!1}],rules:[{name:"event-handler-sov",description:"SOV event handler",priority:100,match:{commands:["on"],requiredRoles:["event","action"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}},{name:"put-into",description:"Transform put X into Y to Turkish verb-final order",priority:90,match:{commands:["put","koy"],requiredRoles:["action","patient","destination"],predicate:e=>!e.roles.has("event")},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"set-to",description:"Transform set X to Y to Turkish verb-final order",priority:90,match:{commands:["set","ayarla"],requiredRoles:["action","patient","destination"],predicate:e=>!/(^|\s)end$/i.test((e.original??"").trim())},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"bind-to",description:"Transform bind $var to #el to Turkish verb-final order",priority:90,match:{commands:["bind"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"wait-oblique-verb-final",description:"Keep wait's from-phrase and or-run inside the clause, verb-final",priority:90,match:{commands:["wait","bekle"],requiredRoles:["action","duration","source"],predicate:e=>!e.roles.has("event")},transform:{roleOrder:["patient","source","duration","action"],insertMarkers:!0}},{name:"repeat-until-event-verb-final",description:"Keep repeat-until-event's from-phrase before the verb",priority:90,match:{commands:["repeat","tekrarla"],requiredRoles:["action","patient","source"],predicate:e=>/^repeat\s+until\s+event\b/i.test((e.original??"").trim())},transform:{roleOrder:["patient","source","action"],insertMarkers:!0}},nc({callVerb:"\u00e7a\u011f\u0131r",patientMarker:"i",eventMarker:"de",connective:"ard\u0131ndan"}),sc({genitive:"nin",rangeSep:"ile",patientMarker:"i",eventMarker:"de"})]},es:{code:"es",name:"Espa\u00f1ol",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"en",role:"event",position:"preposition",required:!0},{form:"a",role:"destination",position:"preposition",required:!1},{form:"hacia",role:"destination",position:"preposition",required:!1},{form:"de",role:"source",position:"preposition",required:!1},{form:"con",role:"style",position:"preposition",required:!1},{form:"por",role:"quantity",position:"preposition",required:!1},{form:"como",role:"method",position:"preposition",required:!1}]},de:{code:"de",name:"Deutsch",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"bei",role:"event",position:"preposition",required:!0},{form:"zu",role:"destination",position:"preposition",required:!1},{form:"in",role:"destination",position:"preposition",required:!1},{form:"von",role:"source",position:"preposition",required:!1},{form:"aus",role:"source",position:"preposition",required:!1},{form:"mit",role:"style",position:"preposition",required:!1},{form:"um",role:"quantity",position:"preposition",required:!1},{form:"als",role:"method",position:"preposition",required:!1}]},fr:{code:"fr",name:"Fran\u00e7ais",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"sur",role:"event",position:"preposition",required:!0},{form:"\u00e0",role:"destination",position:"preposition",required:!1},{form:"dans",role:"destination",position:"preposition",required:!1},{form:"de",role:"source",position:"preposition",required:!1},{form:"avec",role:"style",position:"preposition",required:!1},{form:"par",role:"quantity",position:"preposition",required:!1},{form:"comme",role:"method",position:"preposition",required:!1}]},pt:{code:"pt",name:"Portugu\u00eas",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"em",role:"event",position:"preposition",required:!0},{form:"para",role:"destination",position:"preposition",required:!1},{form:"em",role:"destination",position:"preposition",required:!1},{form:"de",role:"source",position:"preposition",required:!1},{form:"com",role:"style",position:"preposition",required:!1},{form:"por",role:"quantity",position:"preposition",required:!1},{form:"como",role:"method",position:"preposition",required:!1}]},id:{code:"id",name:"Bahasa Indonesia",wordOrder:"SVO",adpositionType:"preposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"pada",role:"event",position:"preposition",required:!0},{form:"ke",role:"destination",position:"preposition",required:!1},{form:"dari",role:"source",position:"preposition",required:!1},{form:"dengan",role:"style",position:"preposition",required:!1},{form:"sebagai",role:"method",position:"preposition",required:!1}]},ms:{code:"ms",name:"Bahasa Melayu",wordOrder:"SVO",adpositionType:"preposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"apabila",role:"event",position:"preposition",required:!0},{form:"ke",role:"destination",position:"preposition",required:!1},{form:"dari",role:"source",position:"preposition",required:!1},{form:"dengan",role:"style",position:"preposition",required:!1},{form:"sebagai",role:"method",position:"preposition",required:!1}]},qu:{code:"qu",name:"Runasimi",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","source","destination","event","action"],markers:[{form:"ta",role:"patient",position:"postposition",required:!0},{form:"man",role:"destination",position:"postposition",required:!0},{form:"manta",role:"source",position:"postposition",required:!0},{form:"pi",role:"event",position:"postposition",required:!0},{form:"wan",role:"style",position:"postposition",required:!1},{form:"hina",role:"method",position:"postposition",required:!1}],rules:[{name:"wait-oblique-verb-final",description:"Keep wait's from-phrase and or-run inside the clause, verb-final",priority:90,match:{commands:["wait","suyay"],requiredRoles:["action","duration","source"],predicate:e=>!e.roles.has("event")},transform:{roleOrder:["patient","source","duration","action"],insertMarkers:!0}},nc({callVerb:"qayay",patientMarker:"ta",eventMarker:"pi",connective:"chayqa"}),sc({genitive:"pa",rangeSep:"kama",patientMarker:"ta",eventMarker:"pi"})]},sw:{code:"sw",name:"Kiswahili",wordOrder:"SVO",adpositionType:"preposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"kwenye",role:"event",position:"preposition",required:!0},{form:"kwa",role:"destination",position:"preposition",required:!1},{form:"kutoka",role:"source",position:"preposition",required:!1},{form:"na",role:"style",position:"preposition",required:!1},{form:"kuwa",role:"method",position:"preposition",required:!1}]},bn:{code:"bn",name:"\u09ac\u09be\u0982\u09b2\u09be",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"\u0995\u09c7",role:"patient",position:"postposition",required:!0},{form:"\u09a4\u09c7",role:"destination",position:"postposition",required:!0},{form:"\u098f",role:"event",position:"postposition",required:!0},{form:"\u09a5\u09c7\u0995\u09c7",role:"source",position:"postposition",required:!0},{form:"\u09a6\u09bf\u09af\u09bc\u09c7",role:"style",position:"postposition",required:!1},{form:"\u099c\u09a8\u09cd\u09af",role:"duration",position:"postposition",required:!1}],rules:[{name:"event-handler",description:"Transform event handlers to Bengali SOV order",priority:100,match:{commands:["on"],requiredRoles:["event","action"],optionalRoles:["patient"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}},{name:"put-into",description:"Transform put X into Y to Bengali verb-final order",priority:90,match:{commands:["put","\u09b0\u09be\u0996\u09c1\u09a8"],requiredRoles:["action","patient","destination"],predicate:e=>!e.roles.has("event")},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"set-to",description:"Transform set X to Y to Bengali verb-final order",priority:90,match:{commands:["set","\u09b8\u09c7\u099f"],requiredRoles:["action","patient","destination"],predicate:e=>!/(^|\s)end$/i.test((e.original??"").trim())},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"bind-to",description:"Transform bind $var to #el to Bengali verb-final order",priority:90,match:{commands:["bind","\u09ac\u09be\u0987\u09a8\u09cd\u09a1"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},nc({callVerb:"\u0995\u09b2",patientMarker:"\u0995\u09c7",eventMarker:"\u098f",connective:"\u09a4\u09be\u09b0\u09aa\u09b0"}),sc({genitive:"\u09b0",rangeSep:"\u09a5\u09c7\u0995\u09c7",patientMarker:"\u0995\u09c7",eventMarker:"\u098f"})]},it:{code:"it",name:"Italiano",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"su",role:"event",position:"preposition",required:!0},{form:"in",role:"destination",position:"preposition",required:!1},{form:"a",role:"destination",position:"preposition",required:!1},{form:"da",role:"source",position:"preposition",required:!1},{form:"di",role:"source",position:"preposition",required:!1},{form:"con",role:"style",position:"preposition",required:!1},{form:"come",role:"method",position:"preposition",required:!1}]},ru:{code:"ru",name:"\u0420\u0443\u0441\u0441\u043a\u0438\u0439",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"\u043f\u0440\u0438",role:"event",position:"preposition",required:!0},{form:"\u0432",role:"destination",position:"preposition",required:!1},{form:"\u043d\u0430",role:"destination",position:"preposition",required:!1},{form:"\u043a",role:"destination",position:"preposition",required:!1},{form:"\u0438\u0437",role:"source",position:"preposition",required:!1},{form:"\u043e\u0442",role:"source",position:"preposition",required:!1},{form:"\u0441",role:"source",position:"preposition",required:!1},{form:"\u0441",role:"style",position:"preposition",required:!1},{form:"\u0441\u043e",role:"style",position:"preposition",required:!1},{form:"\u043a\u0430\u043a",role:"method",position:"preposition",required:!1}]},uk:{code:"uk",name:"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"\u043f\u0440\u0438",role:"event",position:"preposition",required:!0},{form:"\u0432",role:"destination",position:"preposition",required:!1},{form:"\u043d\u0430",role:"destination",position:"preposition",required:!1},{form:"\u0434\u043e",role:"destination",position:"preposition",required:!1},{form:"\u0437",role:"source",position:"preposition",required:!1},{form:"\u0432\u0456\u0434",role:"source",position:"preposition",required:!1},{form:"\u0456\u0437",role:"source",position:"preposition",required:!1},{form:"\u0437",role:"style",position:"preposition",required:!1},{form:"\u0456\u0437",role:"style",position:"preposition",required:!1},{form:"\u044f\u043a",role:"method",position:"preposition",required:!1}]},vi:{code:"vi",name:"Ti\u1ebfng Vi\u1ec7t",wordOrder:"SVO",adpositionType:"preposition",morphology:"isolating",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"khi",role:"event",position:"preposition",required:!0},{form:"v\u00e0o",role:"destination",position:"preposition",required:!1},{form:"cho",role:"destination",position:"preposition",required:!1},{form:"\u0111\u1ebfn",role:"destination",position:"preposition",required:!1},{form:"t\u1eeb",role:"source",position:"preposition",required:!1},{form:"kh\u1ecfi",role:"source",position:"preposition",required:!1},{form:"v\u1edbi",role:"style",position:"preposition",required:!1},{form:"nh\u01b0",role:"method",position:"preposition",required:!1}]},hi:{code:"hi",name:"\u0939\u093f\u0928\u094d\u0926\u0940",wordOrder:"SOV",adpositionType:"postposition",morphology:"fusional",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"\u0915\u094b",role:"patient",position:"postposition",required:!0},{form:"\u092e\u0947\u0902",role:"destination",position:"postposition",required:!0},{form:"\u092a\u0930",role:"destination",position:"postposition",required:!1},{form:"\u092a\u0930",role:"event",position:"postposition",required:!0},{form:"\u0938\u0947",role:"source",position:"postposition",required:!0},{form:"\u0938\u0947",role:"style",position:"postposition",required:!1},{form:"\u0938\u093e\u0925",role:"style",position:"postposition",required:!1},{form:"\u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902",role:"method",position:"postposition",required:!1}],rules:[{name:"event-handler",description:"Transform event handlers to Hindi SOV order",priority:100,match:{commands:["on"],requiredRoles:["event","action"],optionalRoles:["patient"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}},{name:"put-into",description:"Transform put X into Y to Hindi verb-final order",priority:90,match:{commands:["put","\u0930\u0916\u0947\u0902"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"set-to",description:"Transform set X to Y to Hindi verb-final order",priority:90,match:{commands:["set","\u0938\u0947\u091f"],requiredRoles:["action","patient","destination"],predicate:e=>!/(^|\s)end$/i.test((e.original??"").trim())},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},{name:"bind-to",description:"Transform bind $var to #el to Hindi verb-final order",priority:90,match:{commands:["bind","\u092c\u093e\u0907\u0902\u0921","\u092c\u093e\u0902\u0927\u0947\u0902"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}},nc({callVerb:"\u0915\u0949\u0932",patientMarker:"\u0915\u094b",eventMarker:"\u092a\u0930",connective:"\u092b\u093f\u0930"}),sc({genitive:"\u0915\u093e",rangeSep:"\u0938\u0947",patientMarker:"\u0915\u094b",eventMarker:"\u092a\u0930"})]},tl:{code:"tl",name:"Tagalog",wordOrder:"VSO",adpositionType:"preposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["action","agent","patient","destination","source"],markers:[{form:"kapag",role:"event",position:"preposition",required:!0},{form:"sa",role:"destination",position:"preposition",required:!1},{form:"mula_sa",role:"source",position:"preposition",required:!1},{form:"nang",role:"style",position:"preposition",required:!1},{form:"bilang",role:"method",position:"preposition",required:!1}],rules:[{name:"event-handler-vso",description:"VSO event handler: VERB TARGET kapag EVENT",priority:100,match:{commands:["on"],requiredRoles:["event","action"]},transform:{roleOrder:["action","patient","event"],insertMarkers:!0}}]},th:{code:"th",name:"\u0e44\u0e17\u0e22",wordOrder:"SVO",adpositionType:"preposition",morphology:"isolating",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"\u0e40\u0e21\u0e37\u0e48\u0e2d",role:"event",position:"preposition",required:!0},{form:"\u0e43\u0e19",role:"destination",position:"preposition",required:!1},{form:"\u0e44\u0e1b\u0e22\u0e31\u0e07",role:"destination",position:"preposition",required:!1},{form:"\u0e08\u0e32\u0e01",role:"source",position:"preposition",required:!1},{form:"\u0e14\u0e49\u0e27\u0e22",role:"style",position:"preposition",required:!1},{form:"\u0e40\u0e1b\u0e47\u0e19",role:"method",position:"preposition",required:!1}]},pl:{code:"pl",name:"Polski",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"gdy",role:"event",position:"preposition",required:!0},{form:"przy",role:"event",position:"preposition",required:!1},{form:"do",role:"destination",position:"preposition",required:!1},{form:"w",role:"destination",position:"preposition",required:!1},{form:"na",role:"destination",position:"preposition",required:!1},{form:"z",role:"source",position:"preposition",required:!1},{form:"od",role:"source",position:"preposition",required:!1},{form:"ze",role:"source",position:"preposition",required:!1},{form:"z",role:"style",position:"preposition",required:!1},{form:"ze",role:"style",position:"preposition",required:!1},{form:"jako",role:"method",position:"preposition",required:!1}]},he:{code:"he",name:"\u05e2\u05d1\u05e8\u05d9\u05ea",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"rtl",canonicalOrder:["event","action","patient","destination"],markers:[{form:"\u05d1",role:"event",position:"preposition",required:!0},{form:"\u05e2\u05dc",role:"destination",position:"preposition",required:!1},{form:"\u05d0\u05dc",role:"destination",position:"preposition",required:!1},{form:"\u05dc",role:"destination",position:"preposition",required:!1},{form:"\u05d0\u05ea",role:"patient",position:"preposition",required:!1},{form:"\u05de",role:"source",position:"preposition",required:!1},{form:"\u05de\u05df",role:"source",position:"preposition",required:!1},{form:"\u05e2\u05dd",role:"style",position:"preposition",required:!1},{form:"\u05db",role:"method",position:"preposition",required:!1}],rules:[{name:"bind-to",description:"Bind binds a variable to an element: \u05e7\u05e9\u05d5\u05e8 X \u05dc Y",priority:90,match:{commands:["bind","\u05e7\u05e9\u05d5\u05e8"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["action","patient","destination"],custom:e=>{const t=e.roles.get("action"),r=e.roles.get("patient"),n=e.roles.get("destination");return[t?.translated||t?.value||"",r?.translated||r?.value||"","\u05dc",n?.translated||n?.value||""].filter(Boolean).join(" ")}}}]}};function ac(e){return ic[e]}function oc(e){const t={};for(const[r,n]of Object.entries(e.words))t[n]=r;const r={};if(e.categories)for(const[t,n]of Object.entries(e.categories)){r[t]={};for(const[e,s]of Object.entries(n))r[t][s]=e}const n={source:e.target,target:e.source,words:t};return Object.keys(r).length>0&&(n.categories=r),n}function lc(e,t,r,n){const s={},i={};for(const r of["commands","modifiers","events","logical","temporal","values","attributes"]){const n=e[r],a=t[r];if(n&&a){i[r]={};for(const[e,t]of Object.entries(n)){const n=a[e];n&&t!==n&&(s[t]=n,i[r][t]=n)}}}return{source:r,target:n,words:s,categories:i}}var cc=lc(bl,Ll,"ja","zh"),uc=oc(cc),dc=lc(Tl,bl,"ko","ja"),mc=oc(dc),pc={source:"es",target:"pt",words:{en:"em",decir:"dizer",disparar:"disparar",enviar:"enviar",tomar:"pegar",poner:"colocar",establecer:"definir",obtener:"obter",agregar:"adicionar",quitar:"remover",alternar:"alternar",ocultar:"esconder",mostrar:"mostrar",si:"se",menos:"a menos",repetir:"repetir",para:"para",mientras:"enquanto",hasta:"at\u00e9",continuar:"continuar",romper:"parar",detener:"parar",esperar:"esperar",buscar:"buscar",llamar:"chamar",retornar:"retornar",hacer:"fazer",registrar:"registrar",lanzar:"lan\u00e7ar",atrapar:"capturar",medir:"medir","transici\u00f3n":"transi\u00e7\u00e3o",incrementar:"incrementar",decrementar:"decrementar",predeterminar:"padr\u00e3o",ir:"ir",copiar:"copiar",escoger:"escolher",intercambiar:"trocar",transformar:"transformar","a\u00f1adir":"anexar",salir:"sair",a:"para",de:"de",dentro:"em",con:"com",como:"como",por:"por",clic:"clique",cambio:"mudan\u00e7a",entrada:"entrada","env\u00edo":"envio",carga:"carregar",enfoque:"foco",desenfoque:"desfoque",verdadero:"verdadeiro",falso:"falso",y:"e",o:"ou",no:"n\u00e3o",es:"\u00e9",segundos:"segundos",milisegundos:"milissegundos",nulo:"nulo",indefinido:"indefinido","vac\u00edo":"vazio"},categories:{commands:{en:"em",decir:"dizer",tomar:"pegar",poner:"colocar",establecer:"definir",obtener:"obter",agregar:"adicionar",quitar:"remover",ocultar:"esconder",si:"se",mientras:"enquanto",hasta:"at\u00e9",romper:"parar",detener:"parar",llamar:"chamar",hacer:"fazer",lanzar:"lan\u00e7ar",atrapar:"capturar",escoger:"escolher",intercambiar:"trocar","a\u00f1adir":"anexar",salir:"sair"},events:{clic:"clique",cambio:"mudan\u00e7a",carga:"carregar",enfoque:"foco",desenfoque:"desfoque"},logical:{verdadero:"verdadeiro",y:"e",o:"ou",no:"n\u00e3o",es:"\u00e9"}}},hc=oc(pc),fc=new Map([["ja->zh",cc],["zh->ja",uc],["ko->ja",dc],["ja->ko",mc],["es->pt",pc],["pt->es",hc]]),yc={en:{commands:{on:"on",tell:"tell",trigger:"trigger",send:"send",take:"take",put:"put",set:"set",get:"get",add:"add",remove:"remove",toggle:"toggle",hide:"hide",show:"show",if:"if",unless:"unless",repeat:"repeat",for:"for",while:"while",until:"until",continue:"continue",break:"break",halt:"halt",wait:"wait",fetch:"fetch",call:"call",return:"return",make:"make",log:"log",throw:"throw",catch:"catch",measure:"measure",transition:"transition",increment:"increment",decrement:"decrement",default:"default",bind:"bind",eventsource:"eventsource",socket:"socket",worker:"worker",intercept:"intercept",go:"go",pushUrl:"pushUrl",replaceUrl:"replaceUrl",copy:"copy",pick:"pick",beep:"beep",js:"js",async:"async",render:"render",swap:"swap",morph:"morph",settle:"settle",append:"append",exit:"exit",install:"install",open:"open",close:"close",select:"select",clear:"clear",breakpoint:"breakpoint",prepend:"prepend",clone:"clone",scroll:"scroll",push:"push",replace:"replace",process:"process"},modifiers:{to:"to",from:"from",into:"into",with:"with",at:"at",in:"in",of:"of",as:"as",by:"by",before:"before",after:"after",over:"over",under:"under",between:"between",through:"through",without:"without"},events:{click:"click",dblclick:"dblclick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"mouseover",mouseout:"mouseout",mousemove:"mousemove",keydown:"keydown",keyup:"keyup",keypress:"keypress",focus:"focus",blur:"blur",change:"change",input:"input",submit:"submit",reset:"reset",load:"load",unload:"unload",resize:"resize",scroll:"scroll",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel"},logical:{when:"when",where:"where",and:"and",or:"or",not:"not",is:"is",exists:"exists",matches:"matches",contains:"contains",includes:"includes",equals:"equals",has:"has",have:"have",then:"then",else:"else",otherwise:"otherwise",end:"end",live:"live",changes:"changes"},temporal:{seconds:"seconds",second:"second",milliseconds:"milliseconds",millisecond:"millisecond",minutes:"minutes",minute:"minute",hours:"hours",hour:"hour",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"true",false:"false",null:"null",undefined:"undefined",it:"it",its:"its",me:"me",my:"my",myself:"myself",you:"you",your:"your",yourself:"yourself",element:"element",target:"target",detail:"detail",event:"event",window:"window",document:"document",body:"body",result:"result",value:"value"},attributes:{class:"class",classes:"classes",style:"style",styles:"styles",attribute:"attribute",attributes:"attributes",property:"property",properties:"properties"},expressions:{first:"first",last:"last",next:"next",previous:"previous",prev:"prev",at:"at",random:"random",closest:"closest",parent:"parent",children:"children",within:"within",no:"no",empty:"empty",some:"some","starts with":"starts with","ends with":"ends with","ignoring case":"ignoring case","sorted by":"sorted by","mapped to":"mapped to","split by":"split by","joined by":"joined by"}},es:gl,ko:Tl,zh:Ll,fr:kl,de:xl,ja:bl,ar:Sl,tr:jl,id:Il,qu:ql,sw:_l,pt:Vl,it:zl,vi:Bl,pl:Fl,ru:Hl,uk:Wl,hi:Ul,bn:Kl,th:Jl,ms:Zl,tl:Xl,he:Yl},gc=["commands","modifiers","events","logical","temporal","values","attributes","expressions"];function vc(e){const t=new Set(ol),r=yc[e];return r?.commands&&Object.values(r.commands).forEach(e=>{"string"==typeof e&&t.add(e.toLowerCase())}),t}var bc=["is","are","was","were","am","be"];function wc(e){const t=new Set(bc);if("en"!==e)for(const r of bc)t.add(zc(r,"en",e).toLowerCase());return t}function kc(e,t,r){const n=e[t-1]?.toLowerCase();return!!n&&r.has(n)}function Ec(e,t,r,n){for(let s=t+1;e.length>s;s++){const t=e[s].toLowerCase();if(r.has(t))return!0;if(n.has(t))return!1}return!1}function xc(e){const t=e.filter(e=>!e.isBlank&&e.originalIndent.length>0);if(0===t.length)return e.map(()=>"");const r=t.map(e=>e.originalIndent.replace(/\t/g," ").length),n=Math.min(...r),s=n>0?n:4;return e.map(e=>{if(e.isBlank)return"";if(0===e.originalIndent.length)return"";const t=e.originalIndent.replace(/\t/g," ");return" ".repeat(Math.round(t.length/s))})}var Cc=new Set(["to","into","from","with","by","as","at","in","on","of","over"]),Sc=new Map,Ac=new Set(["toggle","add","remove","trigger","send"]);function Tc(e,t){for(const r of e){const e=r.toLowerCase();if(t.has(e)&&!Cc.has(e)&&!Ic.has(e))return e}return null}var Oc=new Set(["live","when","unless"]),Lc=new Set(["if","repeat","unless","while","for"]),Pc=new Set(["he","zh"]);function jc(e,t){const r=vc(t),n=function(e){const t=Sc.get(e);if(t)return t;const r=new Set(Cc),n=ac(e);return n?.markers.forEach(e=>{const t=e.form.replace(/^-|-$/g,"").toLowerCase();t&&r.add(t),e.alternatives?.forEach(e=>{const t=e.replace(/^-|-$/g,"").toLowerCase();t&&r.add(t)})}),Sc.set(e,r),r}(t),{forWords:s,inWords:i}=function(e){const t=new Set(["for"]),r=new Set(["in"]);return"en"!==e&&(t.add(zc("for","en",e).toLowerCase()),r.add(zc("in","en",e).toLowerCase())),{forWords:t,inWords:r}}(t),a=e.split(/\s+/);if(0===a.length)return[e];const o=[];let l=[];const c=a[0]?.toLowerCase();let u=!Ic.has(c),d=0;for(let e=0;a.length>e;e++){const t=a[e],c=t.toLowerCase();if(Oc.has(c)?d++:"end"===c&&d>0&&d--,r.has(c)&&l.length>0){const m=l[l.length-1].toLowerCase();if(!u){u=!0,l.push(t);continue}if(d>0){l.push(t);continue}if(s.has(c)&&!Ec(a,e,i,r)){l.push(t);continue}if(Cc.has(c)){const n=Tc(l,r);if(n&&Ac.has(n)){l.push(t);continue}if("on"===c&&"set"===n){const r=a[e+1],n=r?.toLowerCase();if(r&&(/^[#.<@[]/.test(r)||"me"===n||"it"===n||"you"===n)){l.push(t);continue}}}if(!n.has(m)&&!r.has(m)){o.push(l.join(" ")),l=[t];continue}}l.push(t)}return l.length>0&&o.push(l.join(" ")),o.filter(e=>e.length>0)}function Nc(e,t){const r=Array.from(hl),n="en"===t?null:yc[t];n?.modifiers?.then&&r.push(n.modifiers.then),n?.logical?.then&&r.push((n?.logical).then);const s=r.map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),i=RegExp(`\\s+(${s.join("|")})\\s+`,"gi");return e.split(i).filter(e=>{const t=e.toLowerCase().trim();return t&&!r.some(e=>e.toLowerCase()===t)}).map(e=>e.trim()).filter(e=>e.length>0)}var Ic=function(){const e=new Set;e.add("on");for(const t of Object.values(ic))for(const r of t.markers)if("event"===r.role){const t=r.form.replace(/^-|-$/g,"").toLowerCase();t&&e.add(t),r.alternatives?.forEach(t=>{const r=t.replace(/^-|-$/g,"").toLowerCase();r&&e.add(r)})}return e}(),Rc=new Set(["or"]),qc=new Set(["async","once","debounced","debounce","throttled","throttle"]);function Mc(e,t){const r=function(e){const t={};e.markers.forEach(e=>{const r=e.form.replace(/^-|-$/g,"").toLowerCase();r&&(t[r]=e.role),e.alternatives?.forEach(r=>{const n=r.replace(/^-|-$/g,"").toLowerCase();n&&(t[n]=e.role)})});for(const[e,r]of Object.entries(sl))e in t||(t[e]=r);return t}(e),n=t?.toLowerCase();if("SVO"!==e.wordOrder||!n||!Ac.has(n))return r;const s={};for(const[e,t]of Object.entries(r))s[e]="event"===t?"destination":t;return s}var _c={zh:["\u65f6","\u7684","\u5730","\u5f97"],ja:[],ko:[]},$c={zh:["\u5f53"],ar:["\u0628\u0640","\u0643\u0640","\u0648"]};function Vc(e,t){const r=[];let n="",s=!1,i=0,a=0,o=0;for(let t=0;e.length>t;t++){const l=e[t];"<"===l?(s=!0,i++):">"===l&&s&&(i--,0===i&&(s=!1)),"["===l?a++:"]"===l&&a>0&&a--,"("===l?o++:")"===l&&o>0&&o--,/\s/.test(l)&&!s&&0===a&&0===o?n&&(r.push(n),n=""):n+=l}return n&&r.push(n),function(e,t){const r=_c[t]||[],n=$c[t]||[];if(0===r.length&&0===n.length)return e;const s=[];for(const t of e){if(/^[#.<@]/.test(t)||/^\d+/.test(t)){s.push(t);continue}let e=t,i="",a="";for(const t of n)if(e.startsWith(t)&&e.length>t.length){i=t,e=e.slice(t.length);break}for(const t of r)if(e.endsWith(t)&&e.length>t.length){a=t,e=e.slice(0,-t.length);break}i&&s.push(i),e&&s.push(e),a&&s.push(a)}return s}(r,t.code)}var Dc=new Set(["duration","quantity"]);function zc(e,t,r){if(/^[#.<@]/.test(e))return e;if(/^\d+/.test(e))return e;if(/\s/.test(e)&&e.startsWith("("))return e.split(/\s+/).map(e=>zc(e,t,r)).join(" ");if(e.length>1&&(e.startsWith("(")||e.endsWith(")"))){const n=e.match(/^(\(*)([^()]+)(\)*)$/);if(n&&(n[1]||n[3]))return n[1]+zc(n[2],t,r)+n[3]}const n="en"===t?null:yc[t],s=yc[r];if(!s)return e;let i=e;if(n){const t=function(e,t){const r=t.toLowerCase();for(const t of gc){const n=e[t];for(const[e,s]of Object.entries(n))if(s.toLowerCase()===r)return{category:t,englishKey:e}}}(n,e);t&&(i=t.englishKey)}const a=function(e,t){const r=t.toLowerCase();for(const t of gc){const n=e[t][r];if(n)return n}}(s,i);return a??e}var Bc={en:{type:"suffix",marker:"'s"},es:{type:"preposition",marker:"de"},pt:{type:"preposition",marker:"de"},fr:{type:"preposition",marker:"de"},de:{type:"preposition",marker:"von"},ja:{type:"suffix",marker:"\u306e"},ko:{type:"suffix",marker:"\uc758"},zh:{type:"suffix",marker:"\u7684"},ar:{type:"preposition",marker:"\u0644\u0640"},tr:{type:"particle",marker:"\u0131n"},id:{type:"preposition",marker:"dari"},qu:{type:"particle",marker:"pa"},bn:{type:"suffix",marker:"\u09b0"},sw:{type:"preposition",marker:"ya"}};function Fc(e,t,r){const n=e.match(/^(.+)'s$/i);if(!n)return e;const s=n[1],i=Bc[r]||Bc.en,a={me:"my",it:"its",you:"your"},o=s.toLowerCase();if(a[o])return zc(a[o],"en",r);const l=zc(s,t,r);switch(i.type){case"suffix":return`${l}${i.marker}`;case"particle":return`${l} ${i.marker}`;case"preposition":return`__POSS__${i.marker}__${l}__POSS__`;default:return l+"'s"}}var Hc=/^(my|its|your|me|it|you)(\??\..+)$/i,Wc={me:"my",it:"its",you:"your",my:"my",its:"its",your:"your"};function Uc(e,t,r){const n=e.match(Hc);if(!n)return null;const s=n[1].toLowerCase(),i=n[2],a=Wc[s]||s,o=zc(a,t,r);if(o.includes(" "))return null;if(o!==a)return o+i;if(s!==a){const e=zc(s,t,r);if(e!==s&&!e.includes(" "))return e+i}return null}function Kc(e,t,r){if(e.includes("[")){const n=[],s=e.replace(/\[[^\]]*\]/g,e=>(n.push(e),`\ue000${n.length-1}\ue001`));if(n.length>0)return Kc(s,t,r).replace(/\ue000(\d+)\ue001/g,(e,t)=>n[Number(t)])}if(!e.includes(" ")){if(e.includes("'s"))return Fc(e,t,r);const n=Uc(e,t,r);return null!==n?n:zc(e,t,r)}const n=e.split(/\s+/),s=[];let i=0;for(;n.length>i;){const e=n[i];if(e.includes("'s")){const a=Fc(e,t,r),o=a.match(/^__POSS__(.+)__(.+)__POSS__$/);if(o&&n.length>i+1){const e=o[1],a=o[2],l=zc(n[i+1],t,r);s.push(`${l} ${e} ${a}`),i+=2;continue}if(o){s.push(`${o[1]} ${o[2]}`),i++;continue}s.push(a),i++;continue}if(/^[#.<@]/.test(e)||/^\d+/.test(e)){s.push(e),i++;continue}if(/^["'].*["']$/.test(e)){s.push(e),i++;continue}const a=Uc(e,t,r);null===a?(s.push(zc(e,t,r)),i++):(s.push(a),i++)}return s.join(" ")}var Jc=/(\^[A-Za-z_][\w-]*)(\s+on\s+(?:[#.][\w-]+|<[^>]*\/>|\[[^\]]+\]))/g,Zc=class{constructor(e="en",t){const r=ac(e),n=ac(t);if(!r)throw Error("Unknown source locale: "+e);if(!n)throw Error("Unknown target locale: "+t);this.sourceProfile=r,this.targetProfile=n}transform(e){const t=this.transformInternal(e);return"he"===this.targetProfile.code?function(e){const t=vc("he"),r=e.split(/\s+/);let n=!1;for(let e=0;r.length>e+1;e++)"\u05d0\u05ea"===r[e]&&t.has(r[e+1].toLowerCase())&&([r[e],r[e+1]]=[r[e+1],r[e]],n=!0,e++);return n?r.join(" "):e}(t):t}transformInternal(e){const t=function(e){const t=[],r=e.replace(Jc,(e,r,n)=>{const s=t.length;return t.push(n),`${r}\ue000${s}\ue001`});return t.length>0?{masked:r,scopes:t}:null}(e);if(t)return function(e,t){return e.replace(RegExp("\ue000(\\d+)\ue001","g"),(e,r)=>t[Number(r)]??"")}(this.transform(t.masked),t.scopes);const r=function(e){if("en"===e)return"then";const t=yc[e];return t&&(t.modifiers?.then||t.logical?.then)||"then"}(this.targetProfile.code);if(!e.includes("\n")){const t=this.tryTransformJsBlock(e);if(null!==t)return t;const r=this.tryTransformEventWithModifierBody(e);if(null!==r)return r;const n=this.tryTransformEventWithBlockBody(e);if(null!==n)return n;const s=this.tryTransformEventWithUnlessGuard(e);if(null!==s)return s}if(e.includes("\n")){const{parts:t,lineMetadata:n,partToLineIndex:s}=function(e,t){const r=e.split("\n"),n=[],s=[],i=[];for(let e=0;r.length>e;e++){const a=r[e],o=a.match(/^(\s*)/),l=o?o[1]:"",c=a.trim();if(n.push({content:c,originalIndent:l,isBlank:0===c.length}),c.length>0){const r=Nc(c,t);for(const n of r){const r=jc(n,t);for(const t of r)s.push(t),i.push(e)}}}return{parts:s,lineMetadata:n,partToLineIndex:i}}(e,this.sourceProfile.code);return function(e,t,r,n){if(1>=t.filter(e=>!e.isBlank).length&&1>=e.length){const r=xc(t),n=[];for(let s=0;t.length>s;s++)t[s].isBlank?n.push(""):e.length>0&&n.push(r[s]+e[0]);return n.join("\n")}const s=xc(t),i=new Map;for(let t=0;e.length>t;t++){const n=r[t];i.has(n)||i.set(n,[]),i.get(n).push(e[t])}const a=[];for(let e=0;t.length>e;e++){const r=s[e];if(t[e].isBlank)a.push("");else{const t=i.get(e)||[];if(t.length>0){const e=t.join(` ${n} `);a.push(r+e)}}}return a.join("\n")}(t.map(e=>this.transformSingle(e)),n,s,r)}const n=function(e,t){const r=e.split(/\n/).map(e=>e.trim()).filter(e=>e.length>0),n=[];for(const e of r){const r=Nc(e,t);for(const e of r){const r=jc(e,t);n.push(...r)}}return n}(e,this.sourceProfile.code);return n.length>1?n.map(e=>this.transformSingle(e)).join(` ${r} `):this.transformSingle(e)}transformSingle(e){const t=function(e,t){const r=e.split(/\s+/),n=r[0]?.toLowerCase();if(!n||!Oc.has(n))return null;let s=1,i=-1;for(let e=1;r.length>e;e++){const t=r[e].toLowerCase();if(Oc.has(t))s++;else if("end"===t&&(s--,0===s)){i=e;break}}if(-1!==i&&i!==r.length-1)return null;const a=-1!==i?r.slice(1,i):r.slice(1),o={headKeyword:r[0],body:""};if(-1!==i&&(o.tailKeyword=r[i]),"live"===n)return{...o,body:a.join(" ")};if("when"===n){const e=a.findIndex(e=>"changes"===e.toLowerCase());return 0>e?null:{...o,prefixExpr:a.slice(0,e).join(" "),connector:a[e],body:a.slice(e+1).join(" ")}}const l=vc(t),c=wc(t);let u=-1;for(let e=0;a.length>e;e++)if(l.has(a[e].toLowerCase())&&!kc(a,e,c)){u=e;break}return u>0?{...o,prefixExpr:a.slice(0,u).join(" "),body:a.slice(u).join(" ")}:null}(e,this.sourceProfile.code);if(t)return this.transformBlock(t);const r=this.transformWithTrailingEnd(e);if(null!==r)return r;const n=this.transformSetWithScope(e);if(null!==n)return n;const s=function(e,t="en"){const r=ac(t);if(!r)return null;const n=Vc(e,r),s=function(e,t){if(0===e.length)return"unknown";const r=e[0].toLowerCase(),n=t.markers.find(e=>"event"===e.role&&"preposition"===e.position);return n&&r===n.form.toLowerCase()||Ic.has(r)?"event-handler":pl.has(r)?"conditional":"command"}(n,r);switch(s){case"event-handler":return function(e,t){const r=new Map;let n=Ic.has(e[0]?.toLowerCase())?1:0;if(e[n]){const t=[e[n]];for(n++;e[n]&&Rc.has(e[n].toLowerCase())&&e[n+1];)t.push(e[n],e[n+1]),n+=2;r.set("event",{role:"event",value:t.join(" ")})}if(e[n]&&"from"===e[n].toLowerCase()&&e[n+1]){n++;const t=[];for(;e[n]&&!ol.has(e[n].toLowerCase());)t.push(e[n]),n++;if(t.length>0){const e=t.join(" ");r.set("source",{role:"source",value:e,isSelector:/^[#.<@]/.test(e)})}}if(e[n]&&(r.set("action",{role:"action",value:e[n]}),n++),e[n]){const s=Mc(t,r.get("action")?.value);let i="patient",a=[];for(let t=n;e.length>t;t++){const n=e[t],o=s[n.toLowerCase()];if(o){if(a.length>0){const e=a.join(" ");r.set(i,{role:i,value:e,isSelector:/^[#.<@]/.test(e)})}i=o,a=[]}else a.push(n)}if(a.length>0){const e=a.join(" ");r.set(i,{role:i,value:e,isSelector:/^[#.<@]/.test(e)})}}return{type:"event-handler",roles:r,original:e.join(" ")}}(n,r);case"command":return function(e,t){const r=new Map;if(0===e.length)return{type:"command",roles:r,original:""};r.set("action",{role:"action",value:e[0]});const n=Mc(t,e[0]);let s="patient",i=[];for(let t=1;e.length>t;t++){const a=e[t],o=n[a.toLowerCase()];if(o){if(i.length>0){const e=i.join(" ");r.set(s,{role:s,value:e,isSelector:/^[#.<@]/.test(e)})}s=o,i=[]}else i.push(a)}if(i.length>0){const e=i.join(" ");r.set(s,{role:s,value:e,isSelector:/^[#.<@]/.test(e)})}return{type:"command",roles:r,original:e.join(" ")}}(n,r);case"conditional":return function(e){const t=new Map;t.set("action",{role:"action",value:e[0]});const r=e.findIndex(e=>hl.has(e.toLowerCase()));if(r>1){const n=e.slice(1,r).join(" ");t.set("condition",{role:"condition",value:n})}else-1===r&&e.length>1&&t.set("condition",{role:"condition",value:e.slice(1).join(" ")});return{type:"conditional",roles:t,original:e.join(" ")}}(n);default:return null}}(e,this.sourceProfile.code);if(!s)return e;!function(e,t){if("command"!==e.type)return;const r=e.roles.get("action")?.value;if(!r)return;const n=il[r.toLowerCase()];if(!n||!Dc.has(n))return;const s=e.roles.get("patient");s&&!e.roles.has(n)&&(t.markers.some(e=>e.role===n)||(e.roles.delete("patient"),e.roles.set(n,{...s,role:n})))}(s,this.targetProfile),function(e,t,r){for(const[n,s]of e.roles)s.translated=s.value.includes("'s")?Kc(s.value,t,r):s.isSelector||s.isLiteral?s.value:Kc(s.value,t,r)}(s,this.sourceProfile.code,this.targetProfile.code);const i=this.findRule(s);if(i?.transform.custom)return i.transform.custom(s,this.targetProfile);const a=ec(s.roles,i?.transform.roleOrder||this.targetProfile.canonicalOrder);return rc(i?.transform.insertMarkers??1?tc(a,this.targetProfile.markers,this.targetProfile.adpositionType):a.map(e=>e.translated||e.value))}transformWithTrailingEnd(e){const t=this.sourceProfile.code,r=e.trim().split(/\s+/);if(2>r.length)return null;const n=zc("end","en",t).toLowerCase();if(r[r.length-1].toLowerCase()!==n)return null;const s=new Set(["if","repeat","unless","while","when","live","js"].map(e=>zc(e,"en",t).toLowerCase()));return r.slice(0,-1).some(e=>s.has(e.toLowerCase()))?null:`${this.transformSingle(r.slice(0,-1).join(" "))} ${zc(r[r.length-1],t,this.targetProfile.code)}`}tryTransformJsBlock(e){const t=this.sourceProfile.code,r=this.targetProfile.code,n=zc("js","en",t),s=zc("end","en",t).toLowerCase(),i=e.split(/\s+/).filter(e=>e.length>0),a=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),o=RegExp(`^${a}(\\(.*\\))?$`,"i"),l=i.findIndex(e=>o.test(e));if(-1===l)return null;let c=-1;for(let e=l+1;i.length>e;e++)if(i[e].toLowerCase()===s){c=e;break}if(-1===c)return null;if(c!==i.length-1)return null;const u=i[l],d=u.match(o)?.[1]??"",m=d?u.slice(0,u.length-d.length):u,p=i.slice(l+1,c).join(" "),h=[zc(m,t,r)+d,p,zc(i[c],t,r)].filter(e=>e.length>0).join(" "),f=i.slice(0,l);if(0===f.length)return h;const y="JSBLOCKPLACEHOLDER",g=this.transformSingle([...f,y].join(" "));return g.includes(y)?g.replace(y,h):null}tryTransformEventWithBlockBody(e){const t=Vc(e,this.sourceProfile);if(0===t.length)return null;if(!Ic.has(t[0]?.toLowerCase()))return null;let r=-1;for(let e=1;t.length>e;e++)if(Lc.has(t[e].toLowerCase())){r=e;break}if(0>=r)return null;if("end"!==t[t.length-1].toLowerCase())return null;const n=t.slice(0,r),s=t.slice(r);if("VSO"===this.targetProfile.wordOrder&&n.some(e=>"from"===e.toLowerCase()))return null;const i="EVENTBLOCKPLACEHOLDER",a=this.transformSingle([...n,i].join(" "));if(!a.includes(i))return null;const o=this.transformBlockBody(s);return[a.replace(i,"").replace(/\s+/g," ").trim(),o].filter(e=>e.length>0).join(" ")}tryTransformEventWithUnlessGuard(e){if(!Pc.has(this.targetProfile.code))return null;const t=Vc(e,this.sourceProfile);if(0===t.length)return null;if(!Ic.has(t[0]?.toLowerCase()))return null;let r=-1;for(let e=1;t.length>e;e++)if("unless"===t[e].toLowerCase()){r=e;break}if(0>=r)return null;if("end"===t[t.length-1].toLowerCase())return null;const n=t.slice(0,r),s=t.slice(r).join(" "),i=this.transform(s);if(!i)return null;const a="EVENTGUARDPLACEHOLDER",o=this.transformSingle([...n,a].join(" "));return o.includes(a)?[o.replace(a,"").replace(/\s+/g," ").trim(),i].filter(e=>e.length>0).join(" "):null}tryTransformEventWithModifierBody(e){if("SOV"!==this.targetProfile.wordOrder)return null;const t=Vc(e,this.sourceProfile);if(0===t.length)return null;if(!Ic.has(t[0]?.toLowerCase()))return null;let r=1;if(!t[r])return null;for(r++;t[r]&&Rc.has(t[r].toLowerCase())&&t[r+1];)r+=2;if("from"===t[r]?.toLowerCase()&&t[r+1])for(r++;t[r]&&!ol.has(t[r].toLowerCase())&&!qc.has(t[r].toLowerCase());)r++;const n=t[r]?.toLowerCase();if(!n||!qc.has(n))return null;const s=r;let i=r+1;"async"!==n&&"once"!==n&&("at"===t[i]?.toLowerCase()&&i++,t[i]&&/^\d+(ms|s|m)?$/.test(t[i])&&i++);const a=t.slice(s,i).join(" "),o=[...t.slice(0,s),...t.slice(i)].join(" ");return t.length-(i-s)>2?[a,this.transform(o)].filter(e=>e.length>0).join(" "):null}transformSetWithScope(e){const t=this.sourceProfile.code,r=this.targetProfile.code,n=e.match(/^(.*\bset\b.*\S)\s+on\s+([#.<@[]\S*|me|it|you)\s*$/i);if(!n)return null;const s=n[2],i=this.transformSingle(n[1]),a=/^[#.<@[]/.test(s)?s:zc(s,t,r);if("SOV"===this.targetProfile.wordOrder){const t=zc("set","en",r),n=e.trim().split(/\s+/)[0]?.toLowerCase(),s=!!n&&Ic.has(n),o=i.split(/\s+/).filter(Boolean);if(s){if(o.length>0&&o[o.length-1]===t)return o.splice(o.length-1,0,"on",a),o.join(" ")}else{const e=o.indexOf(t);if(e>=0)return o.splice(e,1),o.push("on",a,t),o.join(" ")}return`${i} on ${a}`}return`${i} on ${a}`}transformBlockBody(e){const t=this.sourceProfile.code,r=this.targetProfile.code,n=e[0],s="end"===e[e.length-1]?.toLowerCase(),i=s?e[e.length-1]:"",a=e.slice(1,s?-1:void 0),o=vc(t),l=wc(t);let c=a.findIndex((e,t)=>o.has(e.toLowerCase())&&!kc(a,t,l));0>c&&(c=a.length);const u=a.slice(0,c).join(" "),d=a.slice(c),m=zc(n,t,r),p=i?zc(i,t,r):"",h=u?Kc(u,t,r):"",f=this.transformConditionalBody(d);return[m,h,"SOV"===this.targetProfile.wordOrder&&h&&new Set(["first","last","next","previous","closest"]).has(d[1]?.toLowerCase())&&"then"!==a[c-1]?.toLowerCase()?zc("then",t,r):"",f,p].filter(e=>e.length>0).join(" ")}transformConditionalBody(e){const t=this.sourceProfile.code,r=this.targetProfile.code,n=zc("else","en",t).toLowerCase();let s=0,i=-1;for(let t=0;e.length>t;t++){const r=e[t].toLowerCase();if(Lc.has(r))s++;else if("end"===r&&s>0)s--;else if(r===n&&0===s){i=t;break}}if(-1===i){const t=e.join(" ");return t?this.transform(t):""}const a=e.slice(0,i).join(" "),o=e.slice(i+1).join(" "),l=zc(e[i],t,r);return[a?this.transform(a):"",l,o?this.transform(o):""].filter(e=>e.length>0).join(" ")}transformBlock(e){const t=this.sourceProfile.code,r=this.targetProfile.code,n=zc(e.headKeyword,t,r),s=e.tailKeyword?zc(e.tailKeyword,t,r):"",i=e.connector?zc(e.connector,t,r):"";return[n,e.prefixExpr?Kc(e.prefixExpr,t,r):"",i,this.transform(e.body),s].filter(e=>e.length>0).join(" ")}findRule(e){if(this.targetProfile.rules)return this.targetProfile.rules.filter(t=>this.matchesRule(e,t)).sort((e,t)=>t.priority-e.priority)[0]}matchesRule(e,t){const{match:r}=t;for(const t of r.requiredRoles)if(!e.roles.has(t))return!1;if(r.commands&&r.commands.length>0){const t=e.roles.get("action");if(!t)return!1;const n=t.value.toLowerCase();if(!r.commands.some(e=>e.toLowerCase()===n))return!1}return!(r.predicate&&!r.predicate(e))}};function Xc(e,t){return new Zc("en",t).transform(e)}function Yc(e,t){return new Zc(t,"en").transform(e)}Ql.register("en",yl()),Ql.register("es",vl),Ql.register("ja",wl),Ql.register("fr",El),Ql.register("de",Cl),Ql.register("ar",Al),Ql.register("ko",Ol),Ql.register("zh",Pl),Ql.register("tr",Nl),Ql.register("id",Rl),Ql.register("pt",Dl),Ql.register("qu",Ml),Ql.register("sw",$l);let Gc="en";const Qc=ls(ws,di,yi,fn,dn,Oi),eu=function(e,t){const r=new Yn(null);for(const t of e)r.register(t);return new os({registry:r,expressionRegistry:t.expressionRegistry,enableAsyncCommands:t.enableAsyncCommands??!0,commandTimeout:t.commandTimeout??1e4,enableErrorReporting:t.enableErrorReporting??!0,enableResultPattern:t.enableResultPattern??!0})}([la(),da(),Ia(),Ra(),_a(),Va(),Fa(),Ha(),Ua(),Ja(),Xa(),Ga(),to(),ro(),so(),oo(),co(),uo(),mo(),ho(),fo(),yo(),go(),wo(),ko(),Eo(),Co(),Oo(),No(),qo(),Mo(),_o(),$o(),Vo(),Do(),zo(),Bo(),Fo(),Ko(),Jo(),Zo(),Xo(),Ho(),Wo(),Yo(),Go(),Qo(),new el,tl(),new rl,new nl],{expressionRegistry:Qc});function tu(e){const t=function(){if("en"!==Gc)return Ql.get(Gc)}();return Yt(e,t?{keywords:t}:void 0)}const ru={parse:e=>tu(e),execute:async(e,t)=>{const r=ur(t),n=tu(e);if(!n.success||!n.node)throw Error(n.error?.message||"Parse failed");return await eu.execute(n.node,r)}},nu=function(e){return new cs(e)}(ru),su={getLocale:()=>Gc,setLocale(e){if(Ql.has(e)){if(Gc=e,Ql.setDefault(e),"undefined"!=typeof document){document.documentElement.setAttribute("lang",e);const t=ac(e);"rtl"===t?.direction?document.documentElement.setAttribute("dir","rtl"):document.documentElement.setAttribute("dir","ltr")}}else console.warn(`Locale '${e}' not registered. Available: ${Ql.getAvailable().join(", ")}`)},getAvailableLocales:()=>Ql.getAvailable(),detectAndSetLocale(){if("undefined"==typeof navigator)return"en";const e=navigator.languages||[navigator.language];for(const t of e){const e=t.split("-")[0].toLowerCase();if(Ql.has(e))return this.setLocale(e),e}return"en"},registerLocale(e,t){Ql.register(e,t)},toLocale:(e,t)=>Xc(e,t||Gc),toEnglish:(e,t)=>Yc(e,t||Gc),translate:function(e,t,r){return t===r?e:"en"===t?Xc(e,r):"en"===r?Yc(e,t):fc.has(`${t}->${r}`)?function(e,t,r){const n=fc.get(`${t}->${r}`);if(!n)return Xc(Yc(e,t),r);return e.split(/\s+/).map(e=>{if(e.startsWith("#")||e.startsWith(".")||e.startsWith("@"))return e;if(e.startsWith('"')||e.startsWith("'"))return e;const t=n.words[e];if(t)return t;const r=e.match(/^(.+?)(-.+)$/);if(r){const[,e,t]=r;return(n.words[e]||e)+t}return e}).join(" ")}(e,t,r):Xc(Yc(e,t),r)},createTransformer:(e,t)=>new Zc(e,t),getProfile:ac,getSupportedGrammarLocales:function(){return Object.keys(ic)},profiles:ic,dictionaries:{en:{},es:gl,ja:bl,fr:kl,de:xl,ar:Sl,ko:Tl,zh:Ll,tr:jl,id:Il,pt:Vl,qu:ql,sw:_l},createKeywordProvider:fl},iu={runtime:ru,parse:e=>tu(e),compile:e=>{const t=performance.now();try{const r=tu(e);return{success:r.success,ast:r.node,errors:r.errors??(r.error?[r.error]:[]),tokens:r.tokens||[],compilationTime:performance.now()-t}}catch(e){return{success:!1,ast:void 0,errors:[{message:e instanceof Error?e.message:e+"",line:1,column:1}],tokens:[],compilationTime:performance.now()-t}}},execute:async(e,t)=>{const r=ur(t);if("string"==typeof e){const t=tu(e);if(!t.success||!t.node)throw Error(t.error?.message||"Parse failed");return await eu.execute(t.node,r)}if(e&&"object"==typeof e)return await eu.execute(e,r);throw Error("execute() requires a code string or compiled AST")},run:async(e,t)=>{const r=ur(t),n=tu(e);if(!n.success||!n.node)throw Error(n.error?.message||"Parse failed");return await eu.execute(n.node,r)},evaluate:async(e,t)=>iu.run(e,t),processNode:e=>{e===document?nu.scanAndProcessAll():e instanceof HTMLElement&&nu.processElement(e)},process:e=>iu.processNode(e),createContext:cr,attributeProcessor:nu,version:"1.1.0-classic-i18n",i18n:su,commands:["add","remove","toggle","put","hide","show","make","if","unless","repeat","break","continue","halt","return","exit","throw","set","get","increment","decrement","default","wait","fetch","trigger","send","transition","measure","settle","take","log","tell","call","copy","pick","beep","js","async","go","install","append","render","pseudo-command"],locales:["en","es","ja","fr","de","ar","ko","zh","tr","id","pt","qu","sw"],eval:async(e,t)=>ru.execute(e,t),init:e=>{!1!==e?.autoDetectLocale&&su.detectAndSetLocale(),nu.init()}};"undefined"!=typeof window&&(window.hyperfixi=iu,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{iu.init()}):iu.init());class au{constructor(){this.name="addition",this.category="Special",this.syntax="left + right",this.outputType="number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=this.validate(t);if(!r.isValid)return{success:!1,errors:r.errors,suggestions:r.suggestions};try{const{left:e,right:r}=t,n=As(e,"left operand");return{success:!0,value:Os(n+As(r,"right operand"),"addition"),type:"number"}}catch(e){return{success:!1,errors:[Is("runtime-error","Addition failed: "+(e instanceof Error?e.message:e+""))],suggestions:["Ensure both operands are numeric"]}}}validate(e){const t=function(e){if(null==e)return Ns([Is("missing-argument","Input is null or undefined")],["Provide an object with left and right operands"]);if("object"!=typeof e)return Ns([Is("type-mismatch","Expected object, got "+typeof e)],["Provide an object with left and right operands"]);const t=e;if(!("left"in t)||!("right"in t)){const e=[];return"left"in t||e.push("left"),"right"in t||e.push("right"),Ns([Is("missing-argument",`Missing ${e.join(" and ")} operand${e.length>1?"s":""}`)],["Provide { left: value, right: value }"])}return{isValid:!0,errors:[],suggestions:[]}}(e);if(!t.isValid)return t;const{left:r,right:n}=e;return Ls(r)?Ls(n)?{isValid:!0,errors:[],suggestions:[]}:{isValid:!1,errors:[Is("type-mismatch","Right operand cannot be converted to number: "+n)],suggestions:["Provide a numeric value for right operand"]}:{isValid:!1,errors:[Is("type-mismatch","Left operand cannot be converted to number: "+r)],suggestions:["Provide a numeric value for left operand"]}}}const ou={addition:new au,subtraction:new class{constructor(){this.name="subtraction",this.category="Special",this.syntax="left - right",this.outputType="number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=this.validate(t);if(!r.isValid)return{success:!1,errors:r.errors,suggestions:r.suggestions};try{const{left:e,right:r}=t,n=As(e,"left operand");return{success:!0,value:Os(n-As(r,"right operand"),"subtraction"),type:"number"}}catch(e){return{success:!1,errors:[Is("runtime-error","Subtraction failed: "+(e instanceof Error?e.message:e+""))],suggestions:["Ensure both operands are numeric"]}}}validate(e){return(new au).validate(e)}},multiplication:new class{constructor(){this.name="multiplication",this.category="Special",this.syntax="left * right",this.outputType="number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=this.validate(t);if(!r.isValid)return{success:!1,errors:r.errors,suggestions:r.suggestions};try{const{left:e,right:r}=t,n=As(e,"left operand");return{success:!0,value:Os(n*As(r,"right operand"),"multiplication"),type:"number"}}catch(e){return{success:!1,errors:[Is("runtime-error","Multiplication failed: "+(e instanceof Error?e.message:e+""))],suggestions:["Ensure both operands are numeric"]}}}validate(e){return(new au).validate(e)}},division:new class{constructor(){this.name="division",this.category="Special",this.syntax="left / right",this.outputType="number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=this.validate(t);if(!r.isValid)return{success:!1,errors:r.errors,suggestions:r.suggestions};try{const{left:e,right:r}=t,n=function(e,t,r=!0){if(0===t){if(r)return 0===e?NaN:e>0?1/0:-1/0;throw Error("Division by zero")}return e/t}(As(e,"left operand"),As(r,"right operand"),!0);return{success:!0,value:n,type:"number"}}catch(e){return{success:!1,errors:[Is("runtime-error","Division failed: "+(e instanceof Error?e.message:e+""))],suggestions:["Ensure both operands are numeric"]}}}validate(e){return(new au).validate(e)}},modulo:new class{constructor(){this.name="modulo",this.category="Special",this.syntax="left mod right",this.outputType="number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=this.validate(t);if(!r.isValid)return{success:!1,errors:r.errors,suggestions:r.suggestions};try{const{left:e,right:r}=t,n=function(e,t){if(0===t)throw Error("Modulo by zero");return e%t}(As(e,"left operand"),As(r,"right operand"));return{success:!0,value:n,type:"number"}}catch(e){return{success:!1,errors:[Is("runtime-error","Modulo failed: "+(e instanceof Error?e.message:e+""))],suggestions:["Ensure both operands are numeric and divisor is not zero"]}}}validate(e){return(new au).validate(e)}},power:new class{constructor(){this.name="power",this.category="Special",this.syntax="left ** right",this.outputType="number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=this.validate(t);if(!r.isValid)return{success:!1,errors:r.errors,suggestions:r.suggestions};try{const{left:e,right:r}=t,n=As(e,"left operand"),s=As(r,"right operand");return{success:!0,value:Os(Math.pow(n,s),"power"),type:"number"}}catch(e){return{success:!1,errors:[Is("runtime-error","Power failed: "+(e instanceof Error?e.message:e+""))],suggestions:["Ensure both operands are numeric"]}}}validate(e){return(new au).validate(e)}}};var lu=Object.freeze({__proto__:null,conversion:dn,conversionExpressions:dn,createCommonRegistry:function(){return ls(ws,di,yi,dn,Oi)},createCoreRegistry:function(){return ls(ws,di,yi)},createExpressionRegistry:ls,createFullExpressionRegistry:function(){return ls(ws,di,dn,Oi,fn,yi,ou)},createFullRegistry:function(){return ls(ws,di,yi,dn,Oi,fn)},logical:di,logicalExpressions:di,positional:Oi,positionalExpressions:Oi,properties:fn,propertiesExpressions:fn,references:ws,referencesExpressions:ws,special:yi,specialExpressions:yi});return iu}();
2
2
  //# sourceMappingURL=hyperfixi-classic-i18n.js.map