proofboard-mcp 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,56 +1,56 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var K_=Object.create;var Bl=Object.defineProperty;var H_=Object.getOwnPropertyDescriptor;var W_=Object.getOwnPropertyNames;var J_=Object.getPrototypeOf,Y_=Object.prototype.hasOwnProperty;var ut=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var U=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),pf=(e,t)=>{for(var r in t)Bl(e,r,{get:t[r],enumerable:!0})},X_=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of W_(t))!Y_.call(e,o)&&o!==r&&Bl(e,o,{get:()=>t[o],enumerable:!(n=H_(t,o))||n.enumerable});return e};var kn=(e,t,r)=>(r=e!=null?K_(J_(e)):{},X_(t||!e||!e.__esModule?Bl(r,"default",{value:e,enumerable:!0}):r,e));var _s=U(je=>{"use strict";Object.defineProperty(je,"__esModule",{value:!0});je.regexpCode=je.getEsmExportName=je.getProperty=je.safeStringify=je.stringify=je.strConcat=je.addCodeArg=je.str=je._=je.nil=je._Code=je.Name=je.IDENTIFIER=je._CodeOrName=void 0;var vs=class{};je._CodeOrName=vs;je.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var wn=class extends vs{constructor(t){if(super(),!je.IDENTIFIER.test(t))throw new Error("CodeGen: name must be a valid identifier");this.str=t}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};je.Name=wn;var tr=class extends vs{constructor(t){super(),this._items=typeof t=="string"?[t]:t}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let t=this._items[0];return t===""||t==='""'}get str(){var t;return(t=this._str)!==null&&t!==void 0?t:this._str=this._items.reduce((r,n)=>`${r}${n}`,"")}get names(){var t;return(t=this._names)!==null&&t!==void 0?t:this._names=this._items.reduce((r,n)=>(n instanceof wn&&(r[n.str]=(r[n.str]||0)+1),r),{})}};je._Code=tr;je.nil=new tr("");function ay(e,...t){let r=[e[0]],n=0;for(;n<t.length;)fu(r,t[n]),r.push(e[++n]);return new tr(r)}je._=ay;var pu=new tr("+");function iy(e,...t){let r=[zs(e[0])],n=0;for(;n<t.length;)r.push(pu),fu(r,t[n]),r.push(pu,zs(e[++n]));return cP(r),new tr(r)}je.str=iy;function fu(e,t){t instanceof tr?e.push(...t._items):t instanceof wn?e.push(t):e.push(pP(t))}je.addCodeArg=fu;function cP(e){let t=1;for(;t<e.length-1;){if(e[t]===pu){let r=uP(e[t-1],e[t+1]);if(r!==void 0){e.splice(t-1,3,r);continue}e[t++]="+"}t++}}function uP(e,t){if(t==='""')return e;if(e==='""')return t;if(typeof e=="string")return t instanceof wn||e[e.length-1]!=='"'?void 0:typeof t!="string"?`${e.slice(0,-1)}${t}"`:t[0]==='"'?e.slice(0,-1)+t.slice(1):void 0;if(typeof t=="string"&&t[0]==='"'&&!(e instanceof wn))return`"${e}${t.slice(1)}`}function dP(e,t){return t.emptyStr()?e:e.emptyStr()?t:iy`${e}${t}`}je.strConcat=dP;function pP(e){return typeof e=="number"||typeof e=="boolean"||e===null?e:zs(Array.isArray(e)?e.join(","):e)}function fP(e){return new tr(zs(e))}je.stringify=fP;function zs(e){return JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}je.safeStringify=zs;function mP(e){return typeof e=="string"&&je.IDENTIFIER.test(e)?new tr(`.${e}`):ay`[${e}]`}je.getProperty=mP;function hP(e){if(typeof e=="string"&&je.IDENTIFIER.test(e))return new tr(`${e}`);throw new Error(`CodeGen: invalid export name: ${e}, use explicit $id name mapping`)}je.getEsmExportName=hP;function gP(e){return new tr(e.toString())}je.regexpCode=gP});var gu=U(Vt=>{"use strict";Object.defineProperty(Vt,"__esModule",{value:!0});Vt.ValueScope=Vt.ValueScopeName=Vt.Scope=Vt.varKinds=Vt.UsedValueState=void 0;var Lt=_s(),mu=class extends Error{constructor(t){super(`CodeGen: "code" for ${t} not defined`),this.value=t.value}},Pi;(function(e){e[e.Started=0]="Started",e[e.Completed=1]="Completed"})(Pi||(Vt.UsedValueState=Pi={}));Vt.varKinds={const:new Lt.Name("const"),let:new Lt.Name("let"),var:new Lt.Name("var")};var $i=class{constructor({prefixes:t,parent:r}={}){this._names={},this._prefixes=t,this._parent=r}toName(t){return t instanceof Lt.Name?t:this.name(t)}name(t){return new Lt.Name(this._newName(t))}_newName(t){let r=this._names[t]||this._nameGroup(t);return`${t}${r.index++}`}_nameGroup(t){var r,n;if(!((n=(r=this._parent)===null||r===void 0?void 0:r._prefixes)===null||n===void 0)&&n.has(t)||this._prefixes&&!this._prefixes.has(t))throw new Error(`CodeGen: prefix "${t}" is not allowed in this scope`);return this._names[t]={prefix:t,index:0}}};Vt.Scope=$i;var Ei=class extends Lt.Name{constructor(t,r){super(r),this.prefix=t}setValue(t,{property:r,itemIndex:n}){this.value=t,this.scopePath=(0,Lt._)`.${new Lt.Name(r)}[${n}]`}};Vt.ValueScopeName=Ei;var bP=(0,Lt._)`\n`,hu=class extends $i{constructor(t){super(t),this._values={},this._scope=t.scope,this.opts={...t,_n:t.lines?bP:Lt.nil}}get(){return this._scope}name(t){return new Ei(t,this._newName(t))}value(t,r){var n;if(r.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let o=this.toName(t),{prefix:s}=o,a=(n=r.key)!==null&&n!==void 0?n:r.ref,i=this._values[s];if(i){let u=i.get(a);if(u)return u}else i=this._values[s]=new Map;i.set(a,o);let l=this._scope[s]||(this._scope[s]=[]),c=l.length;return l[c]=r.ref,o.setValue(r,{property:s,itemIndex:c}),o}getValue(t,r){let n=this._values[t];if(n)return n.get(r)}scopeRefs(t,r=this._values){return this._reduceValues(r,n=>{if(n.scopePath===void 0)throw new Error(`CodeGen: name "${n}" has no value`);return(0,Lt._)`${t}${n.scopePath}`})}scopeCode(t=this._values,r,n){return this._reduceValues(t,o=>{if(o.value===void 0)throw new Error(`CodeGen: name "${o}" has no value`);return o.value.code},r,n)}_reduceValues(t,r,n={},o){let s=Lt.nil;for(let a in t){let i=t[a];if(!i)continue;let l=n[a]=n[a]||new Map;i.forEach(c=>{if(l.has(c))return;l.set(c,Pi.Started);let u=r(c);if(u){let d=this.opts.es5?Vt.varKinds.var:Vt.varKinds.const;s=(0,Lt._)`${s}${d} ${c} = ${u};${this.opts._n}`}else if(u=o?.(c))s=(0,Lt._)`${s}${u}${this.opts._n}`;else throw new mu(c);l.set(c,Pi.Completed)})}return s}};Vt.ValueScope=hu});var be=U(ke=>{"use strict";Object.defineProperty(ke,"__esModule",{value:!0});ke.or=ke.and=ke.not=ke.CodeGen=ke.operators=ke.varKinds=ke.ValueScopeName=ke.ValueScope=ke.Scope=ke.Name=ke.regexpCode=ke.stringify=ke.getProperty=ke.nil=ke.strConcat=ke.str=ke._=void 0;var Te=_s(),pr=gu(),sn=_s();Object.defineProperty(ke,"_",{enumerable:!0,get:function(){return sn._}});Object.defineProperty(ke,"str",{enumerable:!0,get:function(){return sn.str}});Object.defineProperty(ke,"strConcat",{enumerable:!0,get:function(){return sn.strConcat}});Object.defineProperty(ke,"nil",{enumerable:!0,get:function(){return sn.nil}});Object.defineProperty(ke,"getProperty",{enumerable:!0,get:function(){return sn.getProperty}});Object.defineProperty(ke,"stringify",{enumerable:!0,get:function(){return sn.stringify}});Object.defineProperty(ke,"regexpCode",{enumerable:!0,get:function(){return sn.regexpCode}});Object.defineProperty(ke,"Name",{enumerable:!0,get:function(){return sn.Name}});var Ti=gu();Object.defineProperty(ke,"Scope",{enumerable:!0,get:function(){return Ti.Scope}});Object.defineProperty(ke,"ValueScope",{enumerable:!0,get:function(){return Ti.ValueScope}});Object.defineProperty(ke,"ValueScopeName",{enumerable:!0,get:function(){return Ti.ValueScopeName}});Object.defineProperty(ke,"varKinds",{enumerable:!0,get:function(){return Ti.varKinds}});ke.operators={GT:new Te._Code(">"),GTE:new Te._Code(">="),LT:new Te._Code("<"),LTE:new Te._Code("<="),EQ:new Te._Code("==="),NEQ:new Te._Code("!=="),NOT:new Te._Code("!"),OR:new Te._Code("||"),AND:new Te._Code("&&"),ADD:new Te._Code("+")};var Fr=class{optimizeNodes(){return this}optimizeNames(t,r){return this}},bu=class extends Fr{constructor(t,r,n){super(),this.varKind=t,this.name=r,this.rhs=n}render({es5:t,_n:r}){let n=t?pr.varKinds.var:this.varKind,o=this.rhs===void 0?"":` = ${this.rhs}`;return`${n} ${this.name}${o};`+r}optimizeNames(t,r){if(t[this.name.str])return this.rhs&&(this.rhs=io(this.rhs,t,r)),this}get names(){return this.rhs instanceof Te._CodeOrName?this.rhs.names:{}}},Ai=class extends Fr{constructor(t,r,n){super(),this.lhs=t,this.rhs=r,this.sideEffects=n}render({_n:t}){return`${this.lhs} = ${this.rhs};`+t}optimizeNames(t,r){if(!(this.lhs instanceof Te.Name&&!t[this.lhs.str]&&!this.sideEffects))return this.rhs=io(this.rhs,t,r),this}get names(){let t=this.lhs instanceof Te.Name?{}:{...this.lhs.names};return Ii(t,this.rhs)}},yu=class extends Ai{constructor(t,r,n,o){super(t,n,o),this.op=r}render({_n:t}){return`${this.lhs} ${this.op}= ${this.rhs};`+t}},ku=class extends Fr{constructor(t){super(),this.label=t,this.names={}}render({_n:t}){return`${this.label}:`+t}},vu=class extends Fr{constructor(t){super(),this.label=t,this.names={}}render({_n:t}){return`break${this.label?` ${this.label}`:""};`+t}},zu=class extends Fr{constructor(t){super(),this.error=t}render({_n:t}){return`throw ${this.error};`+t}get names(){return this.error.names}},_u=class extends Fr{constructor(t){super(),this.code=t}render({_n:t}){return`${this.code};`+t}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(t,r){return this.code=io(this.code,t,r),this}get names(){return this.code instanceof Te._CodeOrName?this.code.names:{}}},ws=class extends Fr{constructor(t=[]){super(),this.nodes=t}render(t){return this.nodes.reduce((r,n)=>r+n.render(t),"")}optimizeNodes(){let{nodes:t}=this,r=t.length;for(;r--;){let n=t[r].optimizeNodes();Array.isArray(n)?t.splice(r,1,...n):n?t[r]=n:t.splice(r,1)}return t.length>0?this:void 0}optimizeNames(t,r){let{nodes:n}=this,o=n.length;for(;o--;){let s=n[o];s.optimizeNames(t,r)||(yP(t,s.names),n.splice(o,1))}return n.length>0?this:void 0}get names(){return this.nodes.reduce((t,r)=>Pn(t,r.names),{})}},Zr=class extends ws{render(t){return"{"+t._n+super.render(t)+"}"+t._n}},wu=class extends ws{},ao=class extends Zr{};ao.kind="else";var xn=class e extends Zr{constructor(t,r){super(r),this.condition=t}render(t){let r=`if(${this.condition})`+super.render(t);return this.else&&(r+="else "+this.else.render(t)),r}optimizeNodes(){super.optimizeNodes();let t=this.condition;if(t===!0)return this.nodes;let r=this.else;if(r){let n=r.optimizeNodes();r=this.else=Array.isArray(n)?new ao(n):n}if(r)return t===!1?r instanceof e?r:r.nodes:this.nodes.length?this:new e(ly(t),r instanceof e?[r]:r.nodes);if(!(t===!1||!this.nodes.length))return this}optimizeNames(t,r){var n;if(this.else=(n=this.else)===null||n===void 0?void 0:n.optimizeNames(t,r),!!(super.optimizeNames(t,r)||this.else))return this.condition=io(this.condition,t,r),this}get names(){let t=super.names;return Ii(t,this.condition),this.else&&Pn(t,this.else.names),t}};xn.kind="if";var Sn=class extends Zr{};Sn.kind="for";var xu=class extends Sn{constructor(t){super(),this.iteration=t}render(t){return`for(${this.iteration})`+super.render(t)}optimizeNames(t,r){if(super.optimizeNames(t,r))return this.iteration=io(this.iteration,t,r),this}get names(){return Pn(super.names,this.iteration.names)}},Su=class extends Sn{constructor(t,r,n,o){super(),this.varKind=t,this.name=r,this.from=n,this.to=o}render(t){let r=t.es5?pr.varKinds.var:this.varKind,{name:n,from:o,to:s}=this;return`for(${r} ${n}=${o}; ${n}<${s}; ${n}++)`+super.render(t)}get names(){let t=Ii(super.names,this.from);return Ii(t,this.to)}},Oi=class extends Sn{constructor(t,r,n,o){super(),this.loop=t,this.varKind=r,this.name=n,this.iterable=o}render(t){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(t)}optimizeNames(t,r){if(super.optimizeNames(t,r))return this.iterable=io(this.iterable,t,r),this}get names(){return Pn(super.names,this.iterable.names)}},xs=class extends Zr{constructor(t,r,n){super(),this.name=t,this.args=r,this.async=n}render(t){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(t)}};xs.kind="func";var Ss=class extends ws{render(t){return"return "+super.render(t)}};Ss.kind="return";var Pu=class extends Zr{render(t){let r="try"+super.render(t);return this.catch&&(r+=this.catch.render(t)),this.finally&&(r+=this.finally.render(t)),r}optimizeNodes(){var t,r;return super.optimizeNodes(),(t=this.catch)===null||t===void 0||t.optimizeNodes(),(r=this.finally)===null||r===void 0||r.optimizeNodes(),this}optimizeNames(t,r){var n,o;return super.optimizeNames(t,r),(n=this.catch)===null||n===void 0||n.optimizeNames(t,r),(o=this.finally)===null||o===void 0||o.optimizeNames(t,r),this}get names(){let t=super.names;return this.catch&&Pn(t,this.catch.names),this.finally&&Pn(t,this.finally.names),t}},Ps=class extends Zr{constructor(t){super(),this.error=t}render(t){return`catch(${this.error})`+super.render(t)}};Ps.kind="catch";var $s=class extends Zr{render(t){return"finally"+super.render(t)}};$s.kind="finally";var $u=class{constructor(t,r={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...r,_n:r.lines?`
4
- `:""},this._extScope=t,this._scope=new pr.Scope({parent:t}),this._nodes=[new wu]}toString(){return this._root.render(this.opts)}name(t){return this._scope.name(t)}scopeName(t){return this._extScope.name(t)}scopeValue(t,r){let n=this._extScope.value(t,r);return(this._values[n.prefix]||(this._values[n.prefix]=new Set)).add(n),n}getScopeValue(t,r){return this._extScope.getValue(t,r)}scopeRefs(t){return this._extScope.scopeRefs(t,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(t,r,n,o){let s=this._scope.toName(r);return n!==void 0&&o&&(this._constants[s.str]=n),this._leafNode(new bu(t,s,n)),s}const(t,r,n){return this._def(pr.varKinds.const,t,r,n)}let(t,r,n){return this._def(pr.varKinds.let,t,r,n)}var(t,r,n){return this._def(pr.varKinds.var,t,r,n)}assign(t,r,n){return this._leafNode(new Ai(t,r,n))}add(t,r){return this._leafNode(new yu(t,ke.operators.ADD,r))}code(t){return typeof t=="function"?t():t!==Te.nil&&this._leafNode(new _u(t)),this}object(...t){let r=["{"];for(let[n,o]of t)r.length>1&&r.push(","),r.push(n),(n!==o||this.opts.es5)&&(r.push(":"),(0,Te.addCodeArg)(r,o));return r.push("}"),new Te._Code(r)}if(t,r,n){if(this._blockNode(new xn(t)),r&&n)this.code(r).else().code(n).endIf();else if(r)this.code(r).endIf();else if(n)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(t){return this._elseNode(new xn(t))}else(){return this._elseNode(new ao)}endIf(){return this._endBlockNode(xn,ao)}_for(t,r){return this._blockNode(t),r&&this.code(r).endFor(),this}for(t,r){return this._for(new xu(t),r)}forRange(t,r,n,o,s=this.opts.es5?pr.varKinds.var:pr.varKinds.let){let a=this._scope.toName(t);return this._for(new Su(s,a,r,n),()=>o(a))}forOf(t,r,n,o=pr.varKinds.const){let s=this._scope.toName(t);if(this.opts.es5){let a=r instanceof Te.Name?r:this.var("_arr",r);return this.forRange("_i",0,(0,Te._)`${a}.length`,i=>{this.var(s,(0,Te._)`${a}[${i}]`),n(s)})}return this._for(new Oi("of",o,s,r),()=>n(s))}forIn(t,r,n,o=this.opts.es5?pr.varKinds.var:pr.varKinds.const){if(this.opts.ownProperties)return this.forOf(t,(0,Te._)`Object.keys(${r})`,n);let s=this._scope.toName(t);return this._for(new Oi("in",o,s,r),()=>n(s))}endFor(){return this._endBlockNode(Sn)}label(t){return this._leafNode(new ku(t))}break(t){return this._leafNode(new vu(t))}return(t){let r=new Ss;if(this._blockNode(r),this.code(t),r.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(Ss)}try(t,r,n){if(!r&&!n)throw new Error('CodeGen: "try" without "catch" and "finally"');let o=new Pu;if(this._blockNode(o),this.code(t),r){let s=this.name("e");this._currNode=o.catch=new Ps(s),r(s)}return n&&(this._currNode=o.finally=new $s,this.code(n)),this._endBlockNode(Ps,$s)}throw(t){return this._leafNode(new zu(t))}block(t,r){return this._blockStarts.push(this._nodes.length),t&&this.code(t).endBlock(r),this}endBlock(t){let r=this._blockStarts.pop();if(r===void 0)throw new Error("CodeGen: not in self-balancing block");let n=this._nodes.length-r;if(n<0||t!==void 0&&n!==t)throw new Error(`CodeGen: wrong number of nodes: ${n} vs ${t} expected`);return this._nodes.length=r,this}func(t,r=Te.nil,n,o){return this._blockNode(new xs(t,r,n)),o&&this.code(o).endFunc(),this}endFunc(){return this._endBlockNode(xs)}optimize(t=1){for(;t-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(t){return this._currNode.nodes.push(t),this}_blockNode(t){this._currNode.nodes.push(t),this._nodes.push(t)}_endBlockNode(t,r){let n=this._currNode;if(n instanceof t||r&&n instanceof r)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${r?`${t.kind}/${r.kind}`:t.kind}"`)}_elseNode(t){let r=this._currNode;if(!(r instanceof xn))throw new Error('CodeGen: "else" without "if"');return this._currNode=r.else=t,this}get _root(){return this._nodes[0]}get _currNode(){let t=this._nodes;return t[t.length-1]}set _currNode(t){let r=this._nodes;r[r.length-1]=t}};ke.CodeGen=$u;function Pn(e,t){for(let r in t)e[r]=(e[r]||0)+(t[r]||0);return e}function Ii(e,t){return t instanceof Te._CodeOrName?Pn(e,t.names):e}function io(e,t,r){if(e instanceof Te.Name)return n(e);if(!o(e))return e;return new Te._Code(e._items.reduce((s,a)=>(a instanceof Te.Name&&(a=n(a)),a instanceof Te._Code?s.push(...a._items):s.push(a),s),[]));function n(s){let a=r[s.str];return a===void 0||t[s.str]!==1?s:(delete t[s.str],a)}function o(s){return s instanceof Te._Code&&s._items.some(a=>a instanceof Te.Name&&t[a.str]===1&&r[a.str]!==void 0)}}function yP(e,t){for(let r in t)e[r]=(e[r]||0)-(t[r]||0)}function ly(e){return typeof e=="boolean"||typeof e=="number"||e===null?!e:(0,Te._)`!${Eu(e)}`}ke.not=ly;var kP=cy(ke.operators.AND);function vP(...e){return e.reduce(kP)}ke.and=vP;var zP=cy(ke.operators.OR);function _P(...e){return e.reduce(zP)}ke.or=_P;function cy(e){return(t,r)=>t===Te.nil?r:r===Te.nil?t:(0,Te._)`${Eu(t)} ${e} ${Eu(r)}`}function Eu(e){return e instanceof Te.Name?e:(0,Te._)`(${e})`}});var Ce=U(ze=>{"use strict";Object.defineProperty(ze,"__esModule",{value:!0});ze.checkStrictMode=ze.getErrorPath=ze.Type=ze.useFunc=ze.setEvaluated=ze.evaluatedPropsToName=ze.mergeEvaluated=ze.eachItem=ze.unescapeJsonPointer=ze.escapeJsonPointer=ze.escapeFragment=ze.unescapeFragment=ze.schemaRefOrVal=ze.schemaHasRulesButRef=ze.schemaHasRules=ze.checkUnknownRules=ze.alwaysValidSchema=ze.toHash=void 0;var Ve=be(),wP=_s();function xP(e){let t={};for(let r of e)t[r]=!0;return t}ze.toHash=xP;function SP(e,t){return typeof t=="boolean"?t:Object.keys(t).length===0?!0:(py(e,t),!fy(t,e.self.RULES.all))}ze.alwaysValidSchema=SP;function py(e,t=e.schema){let{opts:r,self:n}=e;if(!r.strictSchema||typeof t=="boolean")return;let o=n.RULES.keywords;for(let s in t)o[s]||gy(e,`unknown keyword: "${s}"`)}ze.checkUnknownRules=py;function fy(e,t){if(typeof e=="boolean")return!e;for(let r in e)if(t[r])return!0;return!1}ze.schemaHasRules=fy;function PP(e,t){if(typeof e=="boolean")return!e;for(let r in e)if(r!=="$ref"&&t.all[r])return!0;return!1}ze.schemaHasRulesButRef=PP;function $P({topSchemaRef:e,schemaPath:t},r,n,o){if(!o){if(typeof r=="number"||typeof r=="boolean")return r;if(typeof r=="string")return(0,Ve._)`${r}`}return(0,Ve._)`${e}${t}${(0,Ve.getProperty)(n)}`}ze.schemaRefOrVal=$P;function EP(e){return my(decodeURIComponent(e))}ze.unescapeFragment=EP;function AP(e){return encodeURIComponent(Ou(e))}ze.escapeFragment=AP;function Ou(e){return typeof e=="number"?`${e}`:e.replace(/~/g,"~0").replace(/\//g,"~1")}ze.escapeJsonPointer=Ou;function my(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}ze.unescapeJsonPointer=my;function OP(e,t){if(Array.isArray(e))for(let r of e)t(r);else t(e)}ze.eachItem=OP;function uy({mergeNames:e,mergeToName:t,mergeValues:r,resultToName:n}){return(o,s,a,i)=>{let l=a===void 0?s:a instanceof Ve.Name?(s instanceof Ve.Name?e(o,s,a):t(o,s,a),a):s instanceof Ve.Name?(t(o,a,s),s):r(s,a);return i===Ve.Name&&!(l instanceof Ve.Name)?n(o,l):l}}ze.mergeEvaluated={props:uy({mergeNames:(e,t,r)=>e.if((0,Ve._)`${r} !== true && ${t} !== undefined`,()=>{e.if((0,Ve._)`${t} === true`,()=>e.assign(r,!0),()=>e.assign(r,(0,Ve._)`${r} || {}`).code((0,Ve._)`Object.assign(${r}, ${t})`))}),mergeToName:(e,t,r)=>e.if((0,Ve._)`${r} !== true`,()=>{t===!0?e.assign(r,!0):(e.assign(r,(0,Ve._)`${r} || {}`),Iu(e,r,t))}),mergeValues:(e,t)=>e===!0?!0:{...e,...t},resultToName:hy}),items:uy({mergeNames:(e,t,r)=>e.if((0,Ve._)`${r} !== true && ${t} !== undefined`,()=>e.assign(r,(0,Ve._)`${t} === true ? true : ${r} > ${t} ? ${r} : ${t}`)),mergeToName:(e,t,r)=>e.if((0,Ve._)`${r} !== true`,()=>e.assign(r,t===!0?!0:(0,Ve._)`${r} > ${t} ? ${r} : ${t}`)),mergeValues:(e,t)=>e===!0?!0:Math.max(e,t),resultToName:(e,t)=>e.var("items",t)})};function hy(e,t){if(t===!0)return e.var("props",!0);let r=e.var("props",(0,Ve._)`{}`);return t!==void 0&&Iu(e,r,t),r}ze.evaluatedPropsToName=hy;function Iu(e,t,r){Object.keys(r).forEach(n=>e.assign((0,Ve._)`${t}${(0,Ve.getProperty)(n)}`,!0))}ze.setEvaluated=Iu;var dy={};function IP(e,t){return e.scopeValue("func",{ref:t,code:dy[t.code]||(dy[t.code]=new wP._Code(t.code))})}ze.useFunc=IP;var Au;(function(e){e[e.Num=0]="Num",e[e.Str=1]="Str"})(Au||(ze.Type=Au={}));function TP(e,t,r){if(e instanceof Ve.Name){let n=t===Au.Num;return r?n?(0,Ve._)`"[" + ${e} + "]"`:(0,Ve._)`"['" + ${e} + "']"`:n?(0,Ve._)`"/" + ${e}`:(0,Ve._)`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return r?(0,Ve.getProperty)(e).toString():"/"+Ou(e)}ze.getErrorPath=TP;function gy(e,t,r=e.opts.strictSchema){if(r){if(t=`strict mode: ${t}`,r===!0)throw new Error(t);e.self.logger.warn(t)}}ze.checkStrictMode=gy});var Br=U(Tu=>{"use strict";Object.defineProperty(Tu,"__esModule",{value:!0});var $t=be(),CP={data:new $t.Name("data"),valCxt:new $t.Name("valCxt"),instancePath:new $t.Name("instancePath"),parentData:new $t.Name("parentData"),parentDataProperty:new $t.Name("parentDataProperty"),rootData:new $t.Name("rootData"),dynamicAnchors:new $t.Name("dynamicAnchors"),vErrors:new $t.Name("vErrors"),errors:new $t.Name("errors"),this:new $t.Name("this"),self:new $t.Name("self"),scope:new $t.Name("scope"),json:new $t.Name("json"),jsonPos:new $t.Name("jsonPos"),jsonLen:new $t.Name("jsonLen"),jsonPart:new $t.Name("jsonPart")};Tu.default=CP});var Es=U(Et=>{"use strict";Object.defineProperty(Et,"__esModule",{value:!0});Et.extendErrors=Et.resetErrorsCount=Et.reportExtraError=Et.reportError=Et.keyword$DataError=Et.keywordError=void 0;var Ne=be(),Ci=Ce(),Rt=Br();Et.keywordError={message:({keyword:e})=>(0,Ne.str)`must pass "${e}" keyword validation`};Et.keyword$DataError={message:({keyword:e,schemaType:t})=>t?(0,Ne.str)`"${e}" keyword must be ${t} ($data)`:(0,Ne.str)`"${e}" keyword is invalid ($data)`};function NP(e,t=Et.keywordError,r,n){let{it:o}=e,{gen:s,compositeRule:a,allErrors:i}=o,l=ky(e,t,r);n??(a||i)?by(s,l):yy(o,(0,Ne._)`[${l}]`)}Et.reportError=NP;function RP(e,t=Et.keywordError,r){let{it:n}=e,{gen:o,compositeRule:s,allErrors:a}=n,i=ky(e,t,r);by(o,i),s||a||yy(n,Rt.default.vErrors)}Et.reportExtraError=RP;function jP(e,t){e.assign(Rt.default.errors,t),e.if((0,Ne._)`${Rt.default.vErrors} !== null`,()=>e.if(t,()=>e.assign((0,Ne._)`${Rt.default.vErrors}.length`,t),()=>e.assign(Rt.default.vErrors,null)))}Et.resetErrorsCount=jP;function MP({gen:e,keyword:t,schemaValue:r,data:n,errsCount:o,it:s}){if(o===void 0)throw new Error("ajv implementation error");let a=e.name("err");e.forRange("i",o,Rt.default.errors,i=>{e.const(a,(0,Ne._)`${Rt.default.vErrors}[${i}]`),e.if((0,Ne._)`${a}.instancePath === undefined`,()=>e.assign((0,Ne._)`${a}.instancePath`,(0,Ne.strConcat)(Rt.default.instancePath,s.errorPath))),e.assign((0,Ne._)`${a}.schemaPath`,(0,Ne.str)`${s.errSchemaPath}/${t}`),s.opts.verbose&&(e.assign((0,Ne._)`${a}.schema`,r),e.assign((0,Ne._)`${a}.data`,n))})}Et.extendErrors=MP;function by(e,t){let r=e.const("err",t);e.if((0,Ne._)`${Rt.default.vErrors} === null`,()=>e.assign(Rt.default.vErrors,(0,Ne._)`[${r}]`),(0,Ne._)`${Rt.default.vErrors}.push(${r})`),e.code((0,Ne._)`${Rt.default.errors}++`)}function yy(e,t){let{gen:r,validateName:n,schemaEnv:o}=e;o.$async?r.throw((0,Ne._)`new ${e.ValidationError}(${t})`):(r.assign((0,Ne._)`${n}.errors`,t),r.return(!1))}var $n={keyword:new Ne.Name("keyword"),schemaPath:new Ne.Name("schemaPath"),params:new Ne.Name("params"),propertyName:new Ne.Name("propertyName"),message:new Ne.Name("message"),schema:new Ne.Name("schema"),parentSchema:new Ne.Name("parentSchema")};function ky(e,t,r){let{createErrors:n}=e.it;return n===!1?(0,Ne._)`{}`:DP(e,t,r)}function DP(e,t,r={}){let{gen:n,it:o}=e,s=[LP(o,r),VP(e,r)];return FP(e,t,s),n.object(...s)}function LP({errorPath:e},{instancePath:t}){let r=t?(0,Ne.str)`${e}${(0,Ci.getErrorPath)(t,Ci.Type.Str)}`:e;return[Rt.default.instancePath,(0,Ne.strConcat)(Rt.default.instancePath,r)]}function VP({keyword:e,it:{errSchemaPath:t}},{schemaPath:r,parentSchema:n}){let o=n?t:(0,Ne.str)`${t}/${e}`;return r&&(o=(0,Ne.str)`${o}${(0,Ci.getErrorPath)(r,Ci.Type.Str)}`),[$n.schemaPath,o]}function FP(e,{params:t,message:r},n){let{keyword:o,data:s,schemaValue:a,it:i}=e,{opts:l,propertyName:c,topSchemaRef:u,schemaPath:d}=i;n.push([$n.keyword,o],[$n.params,typeof t=="function"?t(e):t||(0,Ne._)`{}`]),l.messages&&n.push([$n.message,typeof r=="function"?r(e):r]),l.verbose&&n.push([$n.schema,a],[$n.parentSchema,(0,Ne._)`${u}${d}`],[Rt.default.data,s]),c&&n.push([$n.propertyName,c])}});var zy=U(lo=>{"use strict";Object.defineProperty(lo,"__esModule",{value:!0});lo.boolOrEmptySchema=lo.topBoolOrEmptySchema=void 0;var ZP=Es(),BP=be(),GP=Br(),UP={message:"boolean schema is false"};function qP(e){let{gen:t,schema:r,validateName:n}=e;r===!1?vy(e,!1):typeof r=="object"&&r.$async===!0?t.return(GP.default.data):(t.assign((0,BP._)`${n}.errors`,null),t.return(!0))}lo.topBoolOrEmptySchema=qP;function KP(e,t){let{gen:r,schema:n}=e;n===!1?(r.var(t,!1),vy(e)):r.var(t,!0)}lo.boolOrEmptySchema=KP;function vy(e,t){let{gen:r,data:n}=e,o={gen:r,keyword:"false schema",data:n,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e};(0,ZP.reportError)(o,UP,void 0,t)}});var Cu=U(co=>{"use strict";Object.defineProperty(co,"__esModule",{value:!0});co.getRules=co.isJSONType=void 0;var HP=["string","number","integer","boolean","null","object","array"],WP=new Set(HP);function JP(e){return typeof e=="string"&&WP.has(e)}co.isJSONType=JP;function YP(){let e={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...e,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}co.getRules=YP});var Nu=U(an=>{"use strict";Object.defineProperty(an,"__esModule",{value:!0});an.shouldUseRule=an.shouldUseGroup=an.schemaHasRulesForType=void 0;function XP({schema:e,self:t},r){let n=t.RULES.types[r];return n&&n!==!0&&_y(e,n)}an.schemaHasRulesForType=XP;function _y(e,t){return t.rules.some(r=>wy(e,r))}an.shouldUseGroup=_y;function wy(e,t){var r;return e[t.keyword]!==void 0||((r=t.definition.implements)===null||r===void 0?void 0:r.some(n=>e[n]!==void 0))}an.shouldUseRule=wy});var As=U(At=>{"use strict";Object.defineProperty(At,"__esModule",{value:!0});At.reportTypeError=At.checkDataTypes=At.checkDataType=At.coerceAndCheckDataType=At.getJSONTypes=At.getSchemaTypes=At.DataType=void 0;var QP=Cu(),e$=Nu(),t$=Es(),ge=be(),xy=Ce(),uo;(function(e){e[e.Correct=0]="Correct",e[e.Wrong=1]="Wrong"})(uo||(At.DataType=uo={}));function r$(e){let t=Sy(e.type);if(t.includes("null")){if(e.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!t.length&&e.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');e.nullable===!0&&t.push("null")}return t}At.getSchemaTypes=r$;function Sy(e){let t=Array.isArray(e)?e:e?[e]:[];if(t.every(QP.isJSONType))return t;throw new Error("type must be JSONType or JSONType[]: "+t.join(","))}At.getJSONTypes=Sy;function n$(e,t){let{gen:r,data:n,opts:o}=e,s=o$(t,o.coerceTypes),a=t.length>0&&!(s.length===0&&t.length===1&&(0,e$.schemaHasRulesForType)(e,t[0]));if(a){let i=ju(t,n,o.strictNumbers,uo.Wrong);r.if(i,()=>{s.length?s$(e,t,s):Mu(e)})}return a}At.coerceAndCheckDataType=n$;var Py=new Set(["string","number","integer","boolean","null"]);function o$(e,t){return t?e.filter(r=>Py.has(r)||t==="array"&&r==="array"):[]}function s$(e,t,r){let{gen:n,data:o,opts:s}=e,a=n.let("dataType",(0,ge._)`typeof ${o}`),i=n.let("coerced",(0,ge._)`undefined`);s.coerceTypes==="array"&&n.if((0,ge._)`${a} == 'object' && Array.isArray(${o}) && ${o}.length == 1`,()=>n.assign(o,(0,ge._)`${o}[0]`).assign(a,(0,ge._)`typeof ${o}`).if(ju(t,o,s.strictNumbers),()=>n.assign(i,o))),n.if((0,ge._)`${i} !== undefined`);for(let c of r)(Py.has(c)||c==="array"&&s.coerceTypes==="array")&&l(c);n.else(),Mu(e),n.endIf(),n.if((0,ge._)`${i} !== undefined`,()=>{n.assign(o,i),a$(e,i)});function l(c){switch(c){case"string":n.elseIf((0,ge._)`${a} == "number" || ${a} == "boolean"`).assign(i,(0,ge._)`"" + ${o}`).elseIf((0,ge._)`${o} === null`).assign(i,(0,ge._)`""`);return;case"number":n.elseIf((0,ge._)`${a} == "boolean" || ${o} === null
3
+ var iw=Object.create;var Jl=Object.defineProperty;var lw=Object.getOwnPropertyDescriptor;var cw=Object.getOwnPropertyNames;var uw=Object.getPrototypeOf,dw=Object.prototype.hasOwnProperty;var dt=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var q=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),vf=(e,t)=>{for(var r in t)Jl(e,r,{get:t[r],enumerable:!0})},pw=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of cw(t))!dw.call(e,o)&&o!==r&&Jl(e,o,{get:()=>t[o],enumerable:!(n=lw(t,o))||n.enumerable});return e};var zn=(e,t,r)=>(r=e!=null?iw(uw(e)):{},pw(t||!e||!e.__esModule?Jl(r,"default",{value:e,enumerable:!0}):r,e));var Ps=q(je=>{"use strict";Object.defineProperty(je,"__esModule",{value:!0});je.regexpCode=je.getEsmExportName=je.getProperty=je.safeStringify=je.stringify=je.strConcat=je.addCodeArg=je.str=je._=je.nil=je._Code=je.Name=je.IDENTIFIER=je._CodeOrName=void 0;var xs=class{};je._CodeOrName=xs;je.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var Sn=class extends xs{constructor(t){if(super(),!je.IDENTIFIER.test(t))throw new Error("CodeGen: name must be a valid identifier");this.str=t}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};je.Name=Sn;var rr=class extends xs{constructor(t){super(),this._items=typeof t=="string"?[t]:t}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let t=this._items[0];return t===""||t==='""'}get str(){var t;return(t=this._str)!==null&&t!==void 0?t:this._str=this._items.reduce((r,n)=>`${r}${n}`,"")}get names(){var t;return(t=this._names)!==null&&t!==void 0?t:this._names=this._items.reduce((r,n)=>(n instanceof Sn&&(r[n.str]=(r[n.str]||0)+1),r),{})}};je._Code=rr;je.nil=new rr("");function my(e,...t){let r=[e[0]],n=0;for(;n<t.length;)vu(r,t[n]),r.push(e[++n]);return new rr(r)}je._=my;var ku=new rr("+");function hy(e,...t){let r=[Ss(e[0])],n=0;for(;n<t.length;)r.push(ku),vu(r,t[n]),r.push(ku,Ss(e[++n]));return wP(r),new rr(r)}je.str=hy;function vu(e,t){t instanceof rr?e.push(...t._items):t instanceof Sn?e.push(t):e.push(PP(t))}je.addCodeArg=vu;function wP(e){let t=1;for(;t<e.length-1;){if(e[t]===ku){let r=xP(e[t-1],e[t+1]);if(r!==void 0){e.splice(t-1,3,r);continue}e[t++]="+"}t++}}function xP(e,t){if(t==='""')return e;if(e==='""')return t;if(typeof e=="string")return t instanceof Sn||e[e.length-1]!=='"'?void 0:typeof t!="string"?`${e.slice(0,-1)}${t}"`:t[0]==='"'?e.slice(0,-1)+t.slice(1):void 0;if(typeof t=="string"&&t[0]==='"'&&!(e instanceof Sn))return`"${e}${t.slice(1)}`}function SP(e,t){return t.emptyStr()?e:e.emptyStr()?t:hy`${e}${t}`}je.strConcat=SP;function PP(e){return typeof e=="number"||typeof e=="boolean"||e===null?e:Ss(Array.isArray(e)?e.join(","):e)}function $P(e){return new rr(Ss(e))}je.stringify=$P;function Ss(e){return JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}je.safeStringify=Ss;function EP(e){return typeof e=="string"&&je.IDENTIFIER.test(e)?new rr(`.${e}`):my`[${e}]`}je.getProperty=EP;function AP(e){if(typeof e=="string"&&je.IDENTIFIER.test(e))return new rr(`${e}`);throw new Error(`CodeGen: invalid export name: ${e}, use explicit $id name mapping`)}je.getEsmExportName=AP;function OP(e){return new rr(e.toString())}je.regexpCode=OP});var wu=q(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});Ft.ValueScope=Ft.ValueScopeName=Ft.Scope=Ft.varKinds=Ft.UsedValueState=void 0;var Vt=Ps(),zu=class extends Error{constructor(t){super(`CodeGen: "code" for ${t} not defined`),this.value=t.value}},Oi;(function(e){e[e.Started=0]="Started",e[e.Completed=1]="Completed"})(Oi||(Ft.UsedValueState=Oi={}));Ft.varKinds={const:new Vt.Name("const"),let:new Vt.Name("let"),var:new Vt.Name("var")};var Ii=class{constructor({prefixes:t,parent:r}={}){this._names={},this._prefixes=t,this._parent=r}toName(t){return t instanceof Vt.Name?t:this.name(t)}name(t){return new Vt.Name(this._newName(t))}_newName(t){let r=this._names[t]||this._nameGroup(t);return`${t}${r.index++}`}_nameGroup(t){var r,n;if(!((n=(r=this._parent)===null||r===void 0?void 0:r._prefixes)===null||n===void 0)&&n.has(t)||this._prefixes&&!this._prefixes.has(t))throw new Error(`CodeGen: prefix "${t}" is not allowed in this scope`);return this._names[t]={prefix:t,index:0}}};Ft.Scope=Ii;var Ti=class extends Vt.Name{constructor(t,r){super(r),this.prefix=t}setValue(t,{property:r,itemIndex:n}){this.value=t,this.scopePath=(0,Vt._)`.${new Vt.Name(r)}[${n}]`}};Ft.ValueScopeName=Ti;var IP=(0,Vt._)`\n`,_u=class extends Ii{constructor(t){super(t),this._values={},this._scope=t.scope,this.opts={...t,_n:t.lines?IP:Vt.nil}}get(){return this._scope}name(t){return new Ti(t,this._newName(t))}value(t,r){var n;if(r.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let o=this.toName(t),{prefix:s}=o,a=(n=r.key)!==null&&n!==void 0?n:r.ref,i=this._values[s];if(i){let u=i.get(a);if(u)return u}else i=this._values[s]=new Map;i.set(a,o);let c=this._scope[s]||(this._scope[s]=[]),l=c.length;return c[l]=r.ref,o.setValue(r,{property:s,itemIndex:l}),o}getValue(t,r){let n=this._values[t];if(n)return n.get(r)}scopeRefs(t,r=this._values){return this._reduceValues(r,n=>{if(n.scopePath===void 0)throw new Error(`CodeGen: name "${n}" has no value`);return(0,Vt._)`${t}${n.scopePath}`})}scopeCode(t=this._values,r,n){return this._reduceValues(t,o=>{if(o.value===void 0)throw new Error(`CodeGen: name "${o}" has no value`);return o.value.code},r,n)}_reduceValues(t,r,n={},o){let s=Vt.nil;for(let a in t){let i=t[a];if(!i)continue;let c=n[a]=n[a]||new Map;i.forEach(l=>{if(c.has(l))return;c.set(l,Oi.Started);let u=r(l);if(u){let d=this.opts.es5?Ft.varKinds.var:Ft.varKinds.const;s=(0,Vt._)`${s}${d} ${l} = ${u};${this.opts._n}`}else if(u=o?.(l))s=(0,Vt._)`${s}${u}${this.opts._n}`;else throw new zu(l);c.set(l,Oi.Completed)})}return s}};Ft.ValueScope=_u});var be=q(ke=>{"use strict";Object.defineProperty(ke,"__esModule",{value:!0});ke.or=ke.and=ke.not=ke.CodeGen=ke.operators=ke.varKinds=ke.ValueScopeName=ke.ValueScope=ke.Scope=ke.Name=ke.regexpCode=ke.stringify=ke.getProperty=ke.nil=ke.strConcat=ke.str=ke._=void 0;var Te=Ps(),hr=wu(),an=Ps();Object.defineProperty(ke,"_",{enumerable:!0,get:function(){return an._}});Object.defineProperty(ke,"str",{enumerable:!0,get:function(){return an.str}});Object.defineProperty(ke,"strConcat",{enumerable:!0,get:function(){return an.strConcat}});Object.defineProperty(ke,"nil",{enumerable:!0,get:function(){return an.nil}});Object.defineProperty(ke,"getProperty",{enumerable:!0,get:function(){return an.getProperty}});Object.defineProperty(ke,"stringify",{enumerable:!0,get:function(){return an.stringify}});Object.defineProperty(ke,"regexpCode",{enumerable:!0,get:function(){return an.regexpCode}});Object.defineProperty(ke,"Name",{enumerable:!0,get:function(){return an.Name}});var ji=wu();Object.defineProperty(ke,"Scope",{enumerable:!0,get:function(){return ji.Scope}});Object.defineProperty(ke,"ValueScope",{enumerable:!0,get:function(){return ji.ValueScope}});Object.defineProperty(ke,"ValueScopeName",{enumerable:!0,get:function(){return ji.ValueScopeName}});Object.defineProperty(ke,"varKinds",{enumerable:!0,get:function(){return ji.varKinds}});ke.operators={GT:new Te._Code(">"),GTE:new Te._Code(">="),LT:new Te._Code("<"),LTE:new Te._Code("<="),EQ:new Te._Code("==="),NEQ:new Te._Code("!=="),NOT:new Te._Code("!"),OR:new Te._Code("||"),AND:new Te._Code("&&"),ADD:new Te._Code("+")};var Br=class{optimizeNodes(){return this}optimizeNames(t,r){return this}},xu=class extends Br{constructor(t,r,n){super(),this.varKind=t,this.name=r,this.rhs=n}render({es5:t,_n:r}){let n=t?hr.varKinds.var:this.varKind,o=this.rhs===void 0?"":` = ${this.rhs}`;return`${n} ${this.name}${o};`+r}optimizeNames(t,r){if(t[this.name.str])return this.rhs&&(this.rhs=co(this.rhs,t,r)),this}get names(){return this.rhs instanceof Te._CodeOrName?this.rhs.names:{}}},Ci=class extends Br{constructor(t,r,n){super(),this.lhs=t,this.rhs=r,this.sideEffects=n}render({_n:t}){return`${this.lhs} = ${this.rhs};`+t}optimizeNames(t,r){if(!(this.lhs instanceof Te.Name&&!t[this.lhs.str]&&!this.sideEffects))return this.rhs=co(this.rhs,t,r),this}get names(){let t=this.lhs instanceof Te.Name?{}:{...this.lhs.names};return Ri(t,this.rhs)}},Su=class extends Ci{constructor(t,r,n,o){super(t,n,o),this.op=r}render({_n:t}){return`${this.lhs} ${this.op}= ${this.rhs};`+t}},Pu=class extends Br{constructor(t){super(),this.label=t,this.names={}}render({_n:t}){return`${this.label}:`+t}},$u=class extends Br{constructor(t){super(),this.label=t,this.names={}}render({_n:t}){return`break${this.label?` ${this.label}`:""};`+t}},Eu=class extends Br{constructor(t){super(),this.error=t}render({_n:t}){return`throw ${this.error};`+t}get names(){return this.error.names}},Au=class extends Br{constructor(t){super(),this.code=t}render({_n:t}){return`${this.code};`+t}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(t,r){return this.code=co(this.code,t,r),this}get names(){return this.code instanceof Te._CodeOrName?this.code.names:{}}},$s=class extends Br{constructor(t=[]){super(),this.nodes=t}render(t){return this.nodes.reduce((r,n)=>r+n.render(t),"")}optimizeNodes(){let{nodes:t}=this,r=t.length;for(;r--;){let n=t[r].optimizeNodes();Array.isArray(n)?t.splice(r,1,...n):n?t[r]=n:t.splice(r,1)}return t.length>0?this:void 0}optimizeNames(t,r){let{nodes:n}=this,o=n.length;for(;o--;){let s=n[o];s.optimizeNames(t,r)||(TP(t,s.names),n.splice(o,1))}return n.length>0?this:void 0}get names(){return this.nodes.reduce((t,r)=>En(t,r.names),{})}},Zr=class extends $s{render(t){return"{"+t._n+super.render(t)+"}"+t._n}},Ou=class extends $s{},lo=class extends Zr{};lo.kind="else";var Pn=class e extends Zr{constructor(t,r){super(r),this.condition=t}render(t){let r=`if(${this.condition})`+super.render(t);return this.else&&(r+="else "+this.else.render(t)),r}optimizeNodes(){super.optimizeNodes();let t=this.condition;if(t===!0)return this.nodes;let r=this.else;if(r){let n=r.optimizeNodes();r=this.else=Array.isArray(n)?new lo(n):n}if(r)return t===!1?r instanceof e?r:r.nodes:this.nodes.length?this:new e(gy(t),r instanceof e?[r]:r.nodes);if(!(t===!1||!this.nodes.length))return this}optimizeNames(t,r){var n;if(this.else=(n=this.else)===null||n===void 0?void 0:n.optimizeNames(t,r),!!(super.optimizeNames(t,r)||this.else))return this.condition=co(this.condition,t,r),this}get names(){let t=super.names;return Ri(t,this.condition),this.else&&En(t,this.else.names),t}};Pn.kind="if";var $n=class extends Zr{};$n.kind="for";var Iu=class extends $n{constructor(t){super(),this.iteration=t}render(t){return`for(${this.iteration})`+super.render(t)}optimizeNames(t,r){if(super.optimizeNames(t,r))return this.iteration=co(this.iteration,t,r),this}get names(){return En(super.names,this.iteration.names)}},Tu=class extends $n{constructor(t,r,n,o){super(),this.varKind=t,this.name=r,this.from=n,this.to=o}render(t){let r=t.es5?hr.varKinds.var:this.varKind,{name:n,from:o,to:s}=this;return`for(${r} ${n}=${o}; ${n}<${s}; ${n}++)`+super.render(t)}get names(){let t=Ri(super.names,this.from);return Ri(t,this.to)}},Ni=class extends $n{constructor(t,r,n,o){super(),this.loop=t,this.varKind=r,this.name=n,this.iterable=o}render(t){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(t)}optimizeNames(t,r){if(super.optimizeNames(t,r))return this.iterable=co(this.iterable,t,r),this}get names(){return En(super.names,this.iterable.names)}},Es=class extends Zr{constructor(t,r,n){super(),this.name=t,this.args=r,this.async=n}render(t){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(t)}};Es.kind="func";var As=class extends $s{render(t){return"return "+super.render(t)}};As.kind="return";var Cu=class extends Zr{render(t){let r="try"+super.render(t);return this.catch&&(r+=this.catch.render(t)),this.finally&&(r+=this.finally.render(t)),r}optimizeNodes(){var t,r;return super.optimizeNodes(),(t=this.catch)===null||t===void 0||t.optimizeNodes(),(r=this.finally)===null||r===void 0||r.optimizeNodes(),this}optimizeNames(t,r){var n,o;return super.optimizeNames(t,r),(n=this.catch)===null||n===void 0||n.optimizeNames(t,r),(o=this.finally)===null||o===void 0||o.optimizeNames(t,r),this}get names(){let t=super.names;return this.catch&&En(t,this.catch.names),this.finally&&En(t,this.finally.names),t}},Os=class extends Zr{constructor(t){super(),this.error=t}render(t){return`catch(${this.error})`+super.render(t)}};Os.kind="catch";var Is=class extends Zr{render(t){return"finally"+super.render(t)}};Is.kind="finally";var Nu=class{constructor(t,r={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...r,_n:r.lines?`
4
+ `:""},this._extScope=t,this._scope=new hr.Scope({parent:t}),this._nodes=[new Ou]}toString(){return this._root.render(this.opts)}name(t){return this._scope.name(t)}scopeName(t){return this._extScope.name(t)}scopeValue(t,r){let n=this._extScope.value(t,r);return(this._values[n.prefix]||(this._values[n.prefix]=new Set)).add(n),n}getScopeValue(t,r){return this._extScope.getValue(t,r)}scopeRefs(t){return this._extScope.scopeRefs(t,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(t,r,n,o){let s=this._scope.toName(r);return n!==void 0&&o&&(this._constants[s.str]=n),this._leafNode(new xu(t,s,n)),s}const(t,r,n){return this._def(hr.varKinds.const,t,r,n)}let(t,r,n){return this._def(hr.varKinds.let,t,r,n)}var(t,r,n){return this._def(hr.varKinds.var,t,r,n)}assign(t,r,n){return this._leafNode(new Ci(t,r,n))}add(t,r){return this._leafNode(new Su(t,ke.operators.ADD,r))}code(t){return typeof t=="function"?t():t!==Te.nil&&this._leafNode(new Au(t)),this}object(...t){let r=["{"];for(let[n,o]of t)r.length>1&&r.push(","),r.push(n),(n!==o||this.opts.es5)&&(r.push(":"),(0,Te.addCodeArg)(r,o));return r.push("}"),new Te._Code(r)}if(t,r,n){if(this._blockNode(new Pn(t)),r&&n)this.code(r).else().code(n).endIf();else if(r)this.code(r).endIf();else if(n)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(t){return this._elseNode(new Pn(t))}else(){return this._elseNode(new lo)}endIf(){return this._endBlockNode(Pn,lo)}_for(t,r){return this._blockNode(t),r&&this.code(r).endFor(),this}for(t,r){return this._for(new Iu(t),r)}forRange(t,r,n,o,s=this.opts.es5?hr.varKinds.var:hr.varKinds.let){let a=this._scope.toName(t);return this._for(new Tu(s,a,r,n),()=>o(a))}forOf(t,r,n,o=hr.varKinds.const){let s=this._scope.toName(t);if(this.opts.es5){let a=r instanceof Te.Name?r:this.var("_arr",r);return this.forRange("_i",0,(0,Te._)`${a}.length`,i=>{this.var(s,(0,Te._)`${a}[${i}]`),n(s)})}return this._for(new Ni("of",o,s,r),()=>n(s))}forIn(t,r,n,o=this.opts.es5?hr.varKinds.var:hr.varKinds.const){if(this.opts.ownProperties)return this.forOf(t,(0,Te._)`Object.keys(${r})`,n);let s=this._scope.toName(t);return this._for(new Ni("in",o,s,r),()=>n(s))}endFor(){return this._endBlockNode($n)}label(t){return this._leafNode(new Pu(t))}break(t){return this._leafNode(new $u(t))}return(t){let r=new As;if(this._blockNode(r),this.code(t),r.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(As)}try(t,r,n){if(!r&&!n)throw new Error('CodeGen: "try" without "catch" and "finally"');let o=new Cu;if(this._blockNode(o),this.code(t),r){let s=this.name("e");this._currNode=o.catch=new Os(s),r(s)}return n&&(this._currNode=o.finally=new Is,this.code(n)),this._endBlockNode(Os,Is)}throw(t){return this._leafNode(new Eu(t))}block(t,r){return this._blockStarts.push(this._nodes.length),t&&this.code(t).endBlock(r),this}endBlock(t){let r=this._blockStarts.pop();if(r===void 0)throw new Error("CodeGen: not in self-balancing block");let n=this._nodes.length-r;if(n<0||t!==void 0&&n!==t)throw new Error(`CodeGen: wrong number of nodes: ${n} vs ${t} expected`);return this._nodes.length=r,this}func(t,r=Te.nil,n,o){return this._blockNode(new Es(t,r,n)),o&&this.code(o).endFunc(),this}endFunc(){return this._endBlockNode(Es)}optimize(t=1){for(;t-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(t){return this._currNode.nodes.push(t),this}_blockNode(t){this._currNode.nodes.push(t),this._nodes.push(t)}_endBlockNode(t,r){let n=this._currNode;if(n instanceof t||r&&n instanceof r)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${r?`${t.kind}/${r.kind}`:t.kind}"`)}_elseNode(t){let r=this._currNode;if(!(r instanceof Pn))throw new Error('CodeGen: "else" without "if"');return this._currNode=r.else=t,this}get _root(){return this._nodes[0]}get _currNode(){let t=this._nodes;return t[t.length-1]}set _currNode(t){let r=this._nodes;r[r.length-1]=t}};ke.CodeGen=Nu;function En(e,t){for(let r in t)e[r]=(e[r]||0)+(t[r]||0);return e}function Ri(e,t){return t instanceof Te._CodeOrName?En(e,t.names):e}function co(e,t,r){if(e instanceof Te.Name)return n(e);if(!o(e))return e;return new Te._Code(e._items.reduce((s,a)=>(a instanceof Te.Name&&(a=n(a)),a instanceof Te._Code?s.push(...a._items):s.push(a),s),[]));function n(s){let a=r[s.str];return a===void 0||t[s.str]!==1?s:(delete t[s.str],a)}function o(s){return s instanceof Te._Code&&s._items.some(a=>a instanceof Te.Name&&t[a.str]===1&&r[a.str]!==void 0)}}function TP(e,t){for(let r in t)e[r]=(e[r]||0)-(t[r]||0)}function gy(e){return typeof e=="boolean"||typeof e=="number"||e===null?!e:(0,Te._)`!${Ru(e)}`}ke.not=gy;var CP=by(ke.operators.AND);function NP(...e){return e.reduce(CP)}ke.and=NP;var RP=by(ke.operators.OR);function jP(...e){return e.reduce(RP)}ke.or=jP;function by(e){return(t,r)=>t===Te.nil?r:r===Te.nil?t:(0,Te._)`${Ru(t)} ${e} ${Ru(r)}`}function Ru(e){return e instanceof Te.Name?e:(0,Te._)`(${e})`}});var Ce=q(ze=>{"use strict";Object.defineProperty(ze,"__esModule",{value:!0});ze.checkStrictMode=ze.getErrorPath=ze.Type=ze.useFunc=ze.setEvaluated=ze.evaluatedPropsToName=ze.mergeEvaluated=ze.eachItem=ze.unescapeJsonPointer=ze.escapeJsonPointer=ze.escapeFragment=ze.unescapeFragment=ze.schemaRefOrVal=ze.schemaHasRulesButRef=ze.schemaHasRules=ze.checkUnknownRules=ze.alwaysValidSchema=ze.toHash=void 0;var Fe=be(),MP=Ps();function DP(e){let t={};for(let r of e)t[r]=!0;return t}ze.toHash=DP;function LP(e,t){return typeof t=="boolean"?t:Object.keys(t).length===0?!0:(vy(e,t),!zy(t,e.self.RULES.all))}ze.alwaysValidSchema=LP;function vy(e,t=e.schema){let{opts:r,self:n}=e;if(!r.strictSchema||typeof t=="boolean")return;let o=n.RULES.keywords;for(let s in t)o[s]||xy(e,`unknown keyword: "${s}"`)}ze.checkUnknownRules=vy;function zy(e,t){if(typeof e=="boolean")return!e;for(let r in e)if(t[r])return!0;return!1}ze.schemaHasRules=zy;function VP(e,t){if(typeof e=="boolean")return!e;for(let r in e)if(r!=="$ref"&&t.all[r])return!0;return!1}ze.schemaHasRulesButRef=VP;function FP({topSchemaRef:e,schemaPath:t},r,n,o){if(!o){if(typeof r=="number"||typeof r=="boolean")return r;if(typeof r=="string")return(0,Fe._)`${r}`}return(0,Fe._)`${e}${t}${(0,Fe.getProperty)(n)}`}ze.schemaRefOrVal=FP;function BP(e){return _y(decodeURIComponent(e))}ze.unescapeFragment=BP;function ZP(e){return encodeURIComponent(Mu(e))}ze.escapeFragment=ZP;function Mu(e){return typeof e=="number"?`${e}`:e.replace(/~/g,"~0").replace(/\//g,"~1")}ze.escapeJsonPointer=Mu;function _y(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}ze.unescapeJsonPointer=_y;function GP(e,t){if(Array.isArray(e))for(let r of e)t(r);else t(e)}ze.eachItem=GP;function yy({mergeNames:e,mergeToName:t,mergeValues:r,resultToName:n}){return(o,s,a,i)=>{let c=a===void 0?s:a instanceof Fe.Name?(s instanceof Fe.Name?e(o,s,a):t(o,s,a),a):s instanceof Fe.Name?(t(o,a,s),s):r(s,a);return i===Fe.Name&&!(c instanceof Fe.Name)?n(o,c):c}}ze.mergeEvaluated={props:yy({mergeNames:(e,t,r)=>e.if((0,Fe._)`${r} !== true && ${t} !== undefined`,()=>{e.if((0,Fe._)`${t} === true`,()=>e.assign(r,!0),()=>e.assign(r,(0,Fe._)`${r} || {}`).code((0,Fe._)`Object.assign(${r}, ${t})`))}),mergeToName:(e,t,r)=>e.if((0,Fe._)`${r} !== true`,()=>{t===!0?e.assign(r,!0):(e.assign(r,(0,Fe._)`${r} || {}`),Du(e,r,t))}),mergeValues:(e,t)=>e===!0?!0:{...e,...t},resultToName:wy}),items:yy({mergeNames:(e,t,r)=>e.if((0,Fe._)`${r} !== true && ${t} !== undefined`,()=>e.assign(r,(0,Fe._)`${t} === true ? true : ${r} > ${t} ? ${r} : ${t}`)),mergeToName:(e,t,r)=>e.if((0,Fe._)`${r} !== true`,()=>e.assign(r,t===!0?!0:(0,Fe._)`${r} > ${t} ? ${r} : ${t}`)),mergeValues:(e,t)=>e===!0?!0:Math.max(e,t),resultToName:(e,t)=>e.var("items",t)})};function wy(e,t){if(t===!0)return e.var("props",!0);let r=e.var("props",(0,Fe._)`{}`);return t!==void 0&&Du(e,r,t),r}ze.evaluatedPropsToName=wy;function Du(e,t,r){Object.keys(r).forEach(n=>e.assign((0,Fe._)`${t}${(0,Fe.getProperty)(n)}`,!0))}ze.setEvaluated=Du;var ky={};function UP(e,t){return e.scopeValue("func",{ref:t,code:ky[t.code]||(ky[t.code]=new MP._Code(t.code))})}ze.useFunc=UP;var ju;(function(e){e[e.Num=0]="Num",e[e.Str=1]="Str"})(ju||(ze.Type=ju={}));function qP(e,t,r){if(e instanceof Fe.Name){let n=t===ju.Num;return r?n?(0,Fe._)`"[" + ${e} + "]"`:(0,Fe._)`"['" + ${e} + "']"`:n?(0,Fe._)`"/" + ${e}`:(0,Fe._)`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return r?(0,Fe.getProperty)(e).toString():"/"+Mu(e)}ze.getErrorPath=qP;function xy(e,t,r=e.opts.strictSchema){if(r){if(t=`strict mode: ${t}`,r===!0)throw new Error(t);e.self.logger.warn(t)}}ze.checkStrictMode=xy});var Gr=q(Lu=>{"use strict";Object.defineProperty(Lu,"__esModule",{value:!0});var Et=be(),KP={data:new Et.Name("data"),valCxt:new Et.Name("valCxt"),instancePath:new Et.Name("instancePath"),parentData:new Et.Name("parentData"),parentDataProperty:new Et.Name("parentDataProperty"),rootData:new Et.Name("rootData"),dynamicAnchors:new Et.Name("dynamicAnchors"),vErrors:new Et.Name("vErrors"),errors:new Et.Name("errors"),this:new Et.Name("this"),self:new Et.Name("self"),scope:new Et.Name("scope"),json:new Et.Name("json"),jsonPos:new Et.Name("jsonPos"),jsonLen:new Et.Name("jsonLen"),jsonPart:new Et.Name("jsonPart")};Lu.default=KP});var Ts=q(At=>{"use strict";Object.defineProperty(At,"__esModule",{value:!0});At.extendErrors=At.resetErrorsCount=At.reportExtraError=At.reportError=At.keyword$DataError=At.keywordError=void 0;var Ne=be(),Mi=Ce(),jt=Gr();At.keywordError={message:({keyword:e})=>(0,Ne.str)`must pass "${e}" keyword validation`};At.keyword$DataError={message:({keyword:e,schemaType:t})=>t?(0,Ne.str)`"${e}" keyword must be ${t} ($data)`:(0,Ne.str)`"${e}" keyword is invalid ($data)`};function HP(e,t=At.keywordError,r,n){let{it:o}=e,{gen:s,compositeRule:a,allErrors:i}=o,c=$y(e,t,r);n??(a||i)?Sy(s,c):Py(o,(0,Ne._)`[${c}]`)}At.reportError=HP;function WP(e,t=At.keywordError,r){let{it:n}=e,{gen:o,compositeRule:s,allErrors:a}=n,i=$y(e,t,r);Sy(o,i),s||a||Py(n,jt.default.vErrors)}At.reportExtraError=WP;function JP(e,t){e.assign(jt.default.errors,t),e.if((0,Ne._)`${jt.default.vErrors} !== null`,()=>e.if(t,()=>e.assign((0,Ne._)`${jt.default.vErrors}.length`,t),()=>e.assign(jt.default.vErrors,null)))}At.resetErrorsCount=JP;function YP({gen:e,keyword:t,schemaValue:r,data:n,errsCount:o,it:s}){if(o===void 0)throw new Error("ajv implementation error");let a=e.name("err");e.forRange("i",o,jt.default.errors,i=>{e.const(a,(0,Ne._)`${jt.default.vErrors}[${i}]`),e.if((0,Ne._)`${a}.instancePath === undefined`,()=>e.assign((0,Ne._)`${a}.instancePath`,(0,Ne.strConcat)(jt.default.instancePath,s.errorPath))),e.assign((0,Ne._)`${a}.schemaPath`,(0,Ne.str)`${s.errSchemaPath}/${t}`),s.opts.verbose&&(e.assign((0,Ne._)`${a}.schema`,r),e.assign((0,Ne._)`${a}.data`,n))})}At.extendErrors=YP;function Sy(e,t){let r=e.const("err",t);e.if((0,Ne._)`${jt.default.vErrors} === null`,()=>e.assign(jt.default.vErrors,(0,Ne._)`[${r}]`),(0,Ne._)`${jt.default.vErrors}.push(${r})`),e.code((0,Ne._)`${jt.default.errors}++`)}function Py(e,t){let{gen:r,validateName:n,schemaEnv:o}=e;o.$async?r.throw((0,Ne._)`new ${e.ValidationError}(${t})`):(r.assign((0,Ne._)`${n}.errors`,t),r.return(!1))}var An={keyword:new Ne.Name("keyword"),schemaPath:new Ne.Name("schemaPath"),params:new Ne.Name("params"),propertyName:new Ne.Name("propertyName"),message:new Ne.Name("message"),schema:new Ne.Name("schema"),parentSchema:new Ne.Name("parentSchema")};function $y(e,t,r){let{createErrors:n}=e.it;return n===!1?(0,Ne._)`{}`:XP(e,t,r)}function XP(e,t,r={}){let{gen:n,it:o}=e,s=[QP(o,r),e$(e,r)];return t$(e,t,s),n.object(...s)}function QP({errorPath:e},{instancePath:t}){let r=t?(0,Ne.str)`${e}${(0,Mi.getErrorPath)(t,Mi.Type.Str)}`:e;return[jt.default.instancePath,(0,Ne.strConcat)(jt.default.instancePath,r)]}function e$({keyword:e,it:{errSchemaPath:t}},{schemaPath:r,parentSchema:n}){let o=n?t:(0,Ne.str)`${t}/${e}`;return r&&(o=(0,Ne.str)`${o}${(0,Mi.getErrorPath)(r,Mi.Type.Str)}`),[An.schemaPath,o]}function t$(e,{params:t,message:r},n){let{keyword:o,data:s,schemaValue:a,it:i}=e,{opts:c,propertyName:l,topSchemaRef:u,schemaPath:d}=i;n.push([An.keyword,o],[An.params,typeof t=="function"?t(e):t||(0,Ne._)`{}`]),c.messages&&n.push([An.message,typeof r=="function"?r(e):r]),c.verbose&&n.push([An.schema,a],[An.parentSchema,(0,Ne._)`${u}${d}`],[jt.default.data,s]),l&&n.push([An.propertyName,l])}});var Ay=q(uo=>{"use strict";Object.defineProperty(uo,"__esModule",{value:!0});uo.boolOrEmptySchema=uo.topBoolOrEmptySchema=void 0;var r$=Ts(),n$=be(),o$=Gr(),s$={message:"boolean schema is false"};function a$(e){let{gen:t,schema:r,validateName:n}=e;r===!1?Ey(e,!1):typeof r=="object"&&r.$async===!0?t.return(o$.default.data):(t.assign((0,n$._)`${n}.errors`,null),t.return(!0))}uo.topBoolOrEmptySchema=a$;function i$(e,t){let{gen:r,schema:n}=e;n===!1?(r.var(t,!1),Ey(e)):r.var(t,!0)}uo.boolOrEmptySchema=i$;function Ey(e,t){let{gen:r,data:n}=e,o={gen:r,keyword:"false schema",data:n,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e};(0,r$.reportError)(o,s$,void 0,t)}});var Vu=q(po=>{"use strict";Object.defineProperty(po,"__esModule",{value:!0});po.getRules=po.isJSONType=void 0;var l$=["string","number","integer","boolean","null","object","array"],c$=new Set(l$);function u$(e){return typeof e=="string"&&c$.has(e)}po.isJSONType=u$;function d$(){let e={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...e,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}po.getRules=d$});var Fu=q(ln=>{"use strict";Object.defineProperty(ln,"__esModule",{value:!0});ln.shouldUseRule=ln.shouldUseGroup=ln.schemaHasRulesForType=void 0;function p$({schema:e,self:t},r){let n=t.RULES.types[r];return n&&n!==!0&&Oy(e,n)}ln.schemaHasRulesForType=p$;function Oy(e,t){return t.rules.some(r=>Iy(e,r))}ln.shouldUseGroup=Oy;function Iy(e,t){var r;return e[t.keyword]!==void 0||((r=t.definition.implements)===null||r===void 0?void 0:r.some(n=>e[n]!==void 0))}ln.shouldUseRule=Iy});var Cs=q(Ot=>{"use strict";Object.defineProperty(Ot,"__esModule",{value:!0});Ot.reportTypeError=Ot.checkDataTypes=Ot.checkDataType=Ot.coerceAndCheckDataType=Ot.getJSONTypes=Ot.getSchemaTypes=Ot.DataType=void 0;var f$=Vu(),m$=Fu(),h$=Ts(),ge=be(),Ty=Ce(),fo;(function(e){e[e.Correct=0]="Correct",e[e.Wrong=1]="Wrong"})(fo||(Ot.DataType=fo={}));function g$(e){let t=Cy(e.type);if(t.includes("null")){if(e.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!t.length&&e.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');e.nullable===!0&&t.push("null")}return t}Ot.getSchemaTypes=g$;function Cy(e){let t=Array.isArray(e)?e:e?[e]:[];if(t.every(f$.isJSONType))return t;throw new Error("type must be JSONType or JSONType[]: "+t.join(","))}Ot.getJSONTypes=Cy;function b$(e,t){let{gen:r,data:n,opts:o}=e,s=y$(t,o.coerceTypes),a=t.length>0&&!(s.length===0&&t.length===1&&(0,m$.schemaHasRulesForType)(e,t[0]));if(a){let i=Zu(t,n,o.strictNumbers,fo.Wrong);r.if(i,()=>{s.length?k$(e,t,s):Gu(e)})}return a}Ot.coerceAndCheckDataType=b$;var Ny=new Set(["string","number","integer","boolean","null"]);function y$(e,t){return t?e.filter(r=>Ny.has(r)||t==="array"&&r==="array"):[]}function k$(e,t,r){let{gen:n,data:o,opts:s}=e,a=n.let("dataType",(0,ge._)`typeof ${o}`),i=n.let("coerced",(0,ge._)`undefined`);s.coerceTypes==="array"&&n.if((0,ge._)`${a} == 'object' && Array.isArray(${o}) && ${o}.length == 1`,()=>n.assign(o,(0,ge._)`${o}[0]`).assign(a,(0,ge._)`typeof ${o}`).if(Zu(t,o,s.strictNumbers),()=>n.assign(i,o))),n.if((0,ge._)`${i} !== undefined`);for(let l of r)(Ny.has(l)||l==="array"&&s.coerceTypes==="array")&&c(l);n.else(),Gu(e),n.endIf(),n.if((0,ge._)`${i} !== undefined`,()=>{n.assign(o,i),v$(e,i)});function c(l){switch(l){case"string":n.elseIf((0,ge._)`${a} == "number" || ${a} == "boolean"`).assign(i,(0,ge._)`"" + ${o}`).elseIf((0,ge._)`${o} === null`).assign(i,(0,ge._)`""`);return;case"number":n.elseIf((0,ge._)`${a} == "boolean" || ${o} === null
5
5
  || (${a} == "string" && ${o} && ${o} == +${o})`).assign(i,(0,ge._)`+${o}`);return;case"integer":n.elseIf((0,ge._)`${a} === "boolean" || ${o} === null
6
6
  || (${a} === "string" && ${o} && ${o} == +${o} && !(${o} % 1))`).assign(i,(0,ge._)`+${o}`);return;case"boolean":n.elseIf((0,ge._)`${o} === "false" || ${o} === 0 || ${o} === null`).assign(i,!1).elseIf((0,ge._)`${o} === "true" || ${o} === 1`).assign(i,!0);return;case"null":n.elseIf((0,ge._)`${o} === "" || ${o} === 0 || ${o} === false`),n.assign(i,null);return;case"array":n.elseIf((0,ge._)`${a} === "string" || ${a} === "number"
7
- || ${a} === "boolean" || ${o} === null`).assign(i,(0,ge._)`[${o}]`)}}}function a$({gen:e,parentData:t,parentDataProperty:r},n){e.if((0,ge._)`${t} !== undefined`,()=>e.assign((0,ge._)`${t}[${r}]`,n))}function Ru(e,t,r,n=uo.Correct){let o=n===uo.Correct?ge.operators.EQ:ge.operators.NEQ,s;switch(e){case"null":return(0,ge._)`${t} ${o} null`;case"array":s=(0,ge._)`Array.isArray(${t})`;break;case"object":s=(0,ge._)`${t} && typeof ${t} == "object" && !Array.isArray(${t})`;break;case"integer":s=a((0,ge._)`!(${t} % 1) && !isNaN(${t})`);break;case"number":s=a();break;default:return(0,ge._)`typeof ${t} ${o} ${e}`}return n===uo.Correct?s:(0,ge.not)(s);function a(i=ge.nil){return(0,ge.and)((0,ge._)`typeof ${t} == "number"`,i,r?(0,ge._)`isFinite(${t})`:ge.nil)}}At.checkDataType=Ru;function ju(e,t,r,n){if(e.length===1)return Ru(e[0],t,r,n);let o,s=(0,xy.toHash)(e);if(s.array&&s.object){let a=(0,ge._)`typeof ${t} != "object"`;o=s.null?a:(0,ge._)`!${t} || ${a}`,delete s.null,delete s.array,delete s.object}else o=ge.nil;s.number&&delete s.integer;for(let a in s)o=(0,ge.and)(o,Ru(a,t,r,n));return o}At.checkDataTypes=ju;var i$={message:({schema:e})=>`must be ${e}`,params:({schema:e,schemaValue:t})=>typeof e=="string"?(0,ge._)`{type: ${e}}`:(0,ge._)`{type: ${t}}`};function Mu(e){let t=l$(e);(0,t$.reportError)(t,i$)}At.reportTypeError=Mu;function l$(e){let{gen:t,data:r,schema:n}=e,o=(0,xy.schemaRefOrVal)(e,n,"type");return{gen:t,keyword:"type",data:r,schema:n.type,schemaCode:o,schemaValue:o,parentSchema:n,params:{},it:e}}});var Ey=U(Ni=>{"use strict";Object.defineProperty(Ni,"__esModule",{value:!0});Ni.assignDefaults=void 0;var po=be(),c$=Ce();function u$(e,t){let{properties:r,items:n}=e.schema;if(t==="object"&&r)for(let o in r)$y(e,o,r[o].default);else t==="array"&&Array.isArray(n)&&n.forEach((o,s)=>$y(e,s,o.default))}Ni.assignDefaults=u$;function $y(e,t,r){let{gen:n,compositeRule:o,data:s,opts:a}=e;if(r===void 0)return;let i=(0,po._)`${s}${(0,po.getProperty)(t)}`;if(o){(0,c$.checkStrictMode)(e,`default is ignored for: ${i}`);return}let l=(0,po._)`${i} === undefined`;a.useDefaults==="empty"&&(l=(0,po._)`${l} || ${i} === null || ${i} === ""`),n.if(l,(0,po._)`${i} = ${(0,po.stringify)(r)}`)}});var rr=U(Le=>{"use strict";Object.defineProperty(Le,"__esModule",{value:!0});Le.validateUnion=Le.validateArray=Le.usePattern=Le.callValidateCode=Le.schemaProperties=Le.allSchemaProperties=Le.noPropertyInData=Le.propertyInData=Le.isOwnProperty=Le.hasPropFunc=Le.reportMissingProp=Le.checkMissingProp=Le.checkReportMissingProp=void 0;var Je=be(),Du=Ce(),ln=Br(),d$=Ce();function p$(e,t){let{gen:r,data:n,it:o}=e;r.if(Vu(r,n,t,o.opts.ownProperties),()=>{e.setParams({missingProperty:(0,Je._)`${t}`},!0),e.error()})}Le.checkReportMissingProp=p$;function f$({gen:e,data:t,it:{opts:r}},n,o){return(0,Je.or)(...n.map(s=>(0,Je.and)(Vu(e,t,s,r.ownProperties),(0,Je._)`${o} = ${s}`)))}Le.checkMissingProp=f$;function m$(e,t){e.setParams({missingProperty:t},!0),e.error()}Le.reportMissingProp=m$;function Ay(e){return e.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,Je._)`Object.prototype.hasOwnProperty`})}Le.hasPropFunc=Ay;function Lu(e,t,r){return(0,Je._)`${Ay(e)}.call(${t}, ${r})`}Le.isOwnProperty=Lu;function h$(e,t,r,n){let o=(0,Je._)`${t}${(0,Je.getProperty)(r)} !== undefined`;return n?(0,Je._)`${o} && ${Lu(e,t,r)}`:o}Le.propertyInData=h$;function Vu(e,t,r,n){let o=(0,Je._)`${t}${(0,Je.getProperty)(r)} === undefined`;return n?(0,Je.or)(o,(0,Je.not)(Lu(e,t,r))):o}Le.noPropertyInData=Vu;function Oy(e){return e?Object.keys(e).filter(t=>t!=="__proto__"):[]}Le.allSchemaProperties=Oy;function g$(e,t){return Oy(t).filter(r=>!(0,Du.alwaysValidSchema)(e,t[r]))}Le.schemaProperties=g$;function b$({schemaCode:e,data:t,it:{gen:r,topSchemaRef:n,schemaPath:o,errorPath:s},it:a},i,l,c){let u=c?(0,Je._)`${e}, ${t}, ${n}${o}`:t,d=[[ln.default.instancePath,(0,Je.strConcat)(ln.default.instancePath,s)],[ln.default.parentData,a.parentData],[ln.default.parentDataProperty,a.parentDataProperty],[ln.default.rootData,ln.default.rootData]];a.opts.dynamicRef&&d.push([ln.default.dynamicAnchors,ln.default.dynamicAnchors]);let p=(0,Je._)`${u}, ${r.object(...d)}`;return l!==Je.nil?(0,Je._)`${i}.call(${l}, ${p})`:(0,Je._)`${i}(${p})`}Le.callValidateCode=b$;var y$=(0,Je._)`new RegExp`;function k$({gen:e,it:{opts:t}},r){let n=t.unicodeRegExp?"u":"",{regExp:o}=t.code,s=o(r,n);return e.scopeValue("pattern",{key:s.toString(),ref:s,code:(0,Je._)`${o.code==="new RegExp"?y$:(0,d$.useFunc)(e,o)}(${r}, ${n})`})}Le.usePattern=k$;function v$(e){let{gen:t,data:r,keyword:n,it:o}=e,s=t.name("valid");if(o.allErrors){let i=t.let("valid",!0);return a(()=>t.assign(i,!1)),i}return t.var(s,!0),a(()=>t.break()),s;function a(i){let l=t.const("len",(0,Je._)`${r}.length`);t.forRange("i",0,l,c=>{e.subschema({keyword:n,dataProp:c,dataPropType:Du.Type.Num},s),t.if((0,Je.not)(s),i)})}}Le.validateArray=v$;function z$(e){let{gen:t,schema:r,keyword:n,it:o}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");if(r.some(l=>(0,Du.alwaysValidSchema)(o,l))&&!o.opts.unevaluated)return;let a=t.let("valid",!1),i=t.name("_valid");t.block(()=>r.forEach((l,c)=>{let u=e.subschema({keyword:n,schemaProp:c,compositeRule:!0},i);t.assign(a,(0,Je._)`${a} || ${i}`),e.mergeValidEvaluated(u,i)||t.if((0,Je.not)(a))})),e.result(a,()=>e.reset(),()=>e.error(!0))}Le.validateUnion=z$});var Cy=U(xr=>{"use strict";Object.defineProperty(xr,"__esModule",{value:!0});xr.validateKeywordUsage=xr.validSchemaType=xr.funcKeywordCode=xr.macroKeywordCode=void 0;var jt=be(),En=Br(),_$=rr(),w$=Es();function x$(e,t){let{gen:r,keyword:n,schema:o,parentSchema:s,it:a}=e,i=t.macro.call(a.self,o,s,a),l=Ty(r,n,i);a.opts.validateSchema!==!1&&a.self.validateSchema(i,!0);let c=r.name("valid");e.subschema({schema:i,schemaPath:jt.nil,errSchemaPath:`${a.errSchemaPath}/${n}`,topSchemaRef:l,compositeRule:!0},c),e.pass(c,()=>e.error(!0))}xr.macroKeywordCode=x$;function S$(e,t){var r;let{gen:n,keyword:o,schema:s,parentSchema:a,$data:i,it:l}=e;$$(l,t);let c=!i&&t.compile?t.compile.call(l.self,s,a,l):t.validate,u=Ty(n,o,c),d=n.let("valid");e.block$data(d,p),e.ok((r=t.valid)!==null&&r!==void 0?r:d);function p(){if(t.errors===!1)f(),t.modifying&&Iy(e),h(()=>e.error());else{let g=t.async?m():b();t.modifying&&Iy(e),h(()=>P$(e,g))}}function m(){let g=n.let("ruleErrs",null);return n.try(()=>f((0,jt._)`await `),v=>n.assign(d,!1).if((0,jt._)`${v} instanceof ${l.ValidationError}`,()=>n.assign(g,(0,jt._)`${v}.errors`),()=>n.throw(v))),g}function b(){let g=(0,jt._)`${u}.errors`;return n.assign(g,null),f(jt.nil),g}function f(g=t.async?(0,jt._)`await `:jt.nil){let v=l.opts.passContext?En.default.this:En.default.self,_=!("compile"in t&&!i||t.schema===!1);n.assign(d,(0,jt._)`${g}${(0,_$.callValidateCode)(e,u,v,_)}`,t.modifying)}function h(g){var v;n.if((0,jt.not)((v=t.valid)!==null&&v!==void 0?v:d),g)}}xr.funcKeywordCode=S$;function Iy(e){let{gen:t,data:r,it:n}=e;t.if(n.parentData,()=>t.assign(r,(0,jt._)`${n.parentData}[${n.parentDataProperty}]`))}function P$(e,t){let{gen:r}=e;r.if((0,jt._)`Array.isArray(${t})`,()=>{r.assign(En.default.vErrors,(0,jt._)`${En.default.vErrors} === null ? ${t} : ${En.default.vErrors}.concat(${t})`).assign(En.default.errors,(0,jt._)`${En.default.vErrors}.length`),(0,w$.extendErrors)(e)},()=>e.error())}function $$({schemaEnv:e},t){if(t.async&&!e.$async)throw new Error("async keyword in sync schema")}function Ty(e,t,r){if(r===void 0)throw new Error(`keyword "${t}" failed to compile`);return e.scopeValue("keyword",typeof r=="function"?{ref:r}:{ref:r,code:(0,jt.stringify)(r)})}function E$(e,t,r=!1){return!t.length||t.some(n=>n==="array"?Array.isArray(e):n==="object"?e&&typeof e=="object"&&!Array.isArray(e):typeof e==n||r&&typeof e>"u")}xr.validSchemaType=E$;function A$({schema:e,opts:t,self:r,errSchemaPath:n},o,s){if(Array.isArray(o.keyword)?!o.keyword.includes(s):o.keyword!==s)throw new Error("ajv implementation error");let a=o.dependencies;if(a?.some(i=>!Object.prototype.hasOwnProperty.call(e,i)))throw new Error(`parent schema must have dependencies of ${s}: ${a.join(",")}`);if(o.validateSchema&&!o.validateSchema(e[s])){let l=`keyword "${s}" value is invalid at path "${n}": `+r.errorsText(o.validateSchema.errors);if(t.validateSchema==="log")r.logger.error(l);else throw new Error(l)}}xr.validateKeywordUsage=A$});var Ry=U(cn=>{"use strict";Object.defineProperty(cn,"__esModule",{value:!0});cn.extendSubschemaMode=cn.extendSubschemaData=cn.getSubschema=void 0;var Sr=be(),Ny=Ce();function O$(e,{keyword:t,schemaProp:r,schema:n,schemaPath:o,errSchemaPath:s,topSchemaRef:a}){if(t!==void 0&&n!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(t!==void 0){let i=e.schema[t];return r===void 0?{schema:i,schemaPath:(0,Sr._)`${e.schemaPath}${(0,Sr.getProperty)(t)}`,errSchemaPath:`${e.errSchemaPath}/${t}`}:{schema:i[r],schemaPath:(0,Sr._)`${e.schemaPath}${(0,Sr.getProperty)(t)}${(0,Sr.getProperty)(r)}`,errSchemaPath:`${e.errSchemaPath}/${t}/${(0,Ny.escapeFragment)(r)}`}}if(n!==void 0){if(o===void 0||s===void 0||a===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:n,schemaPath:o,topSchemaRef:a,errSchemaPath:s}}throw new Error('either "keyword" or "schema" must be passed')}cn.getSubschema=O$;function I$(e,t,{dataProp:r,dataPropType:n,data:o,dataTypes:s,propertyName:a}){if(o!==void 0&&r!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');let{gen:i}=t;if(r!==void 0){let{errorPath:c,dataPathArr:u,opts:d}=t,p=i.let("data",(0,Sr._)`${t.data}${(0,Sr.getProperty)(r)}`,!0);l(p),e.errorPath=(0,Sr.str)`${c}${(0,Ny.getErrorPath)(r,n,d.jsPropertySyntax)}`,e.parentDataProperty=(0,Sr._)`${r}`,e.dataPathArr=[...u,e.parentDataProperty]}if(o!==void 0){let c=o instanceof Sr.Name?o:i.let("data",o,!0);l(c),a!==void 0&&(e.propertyName=a)}s&&(e.dataTypes=s);function l(c){e.data=c,e.dataLevel=t.dataLevel+1,e.dataTypes=[],t.definedProperties=new Set,e.parentData=t.data,e.dataNames=[...t.dataNames,c]}}cn.extendSubschemaData=I$;function T$(e,{jtdDiscriminator:t,jtdMetadata:r,compositeRule:n,createErrors:o,allErrors:s}){n!==void 0&&(e.compositeRule=n),o!==void 0&&(e.createErrors=o),s!==void 0&&(e.allErrors=s),e.jtdDiscriminator=t,e.jtdMetadata=r}cn.extendSubschemaMode=T$});var Fu=U((j3,jy)=>{"use strict";jy.exports=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var n,o,s;if(Array.isArray(t)){if(n=t.length,n!=r.length)return!1;for(o=n;o--!==0;)if(!e(t[o],r[o]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(s=Object.keys(t),n=s.length,n!==Object.keys(r).length)return!1;for(o=n;o--!==0;)if(!Object.prototype.hasOwnProperty.call(r,s[o]))return!1;for(o=n;o--!==0;){var a=s[o];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r}});var Dy=U((M3,My)=>{"use strict";var un=My.exports=function(e,t,r){typeof t=="function"&&(r=t,t={}),r=t.cb||r;var n=typeof r=="function"?r:r.pre||function(){},o=r.post||function(){};Ri(t,n,o,e,"",e)};un.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};un.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};un.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};un.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function Ri(e,t,r,n,o,s,a,i,l,c){if(n&&typeof n=="object"&&!Array.isArray(n)){t(n,o,s,a,i,l,c);for(var u in n){var d=n[u];if(Array.isArray(d)){if(u in un.arrayKeywords)for(var p=0;p<d.length;p++)Ri(e,t,r,d[p],o+"/"+u+"/"+p,s,o,u,n,p)}else if(u in un.propsKeywords){if(d&&typeof d=="object")for(var m in d)Ri(e,t,r,d[m],o+"/"+u+"/"+C$(m),s,o,u,n,m)}else(u in un.keywords||e.allKeys&&!(u in un.skipKeywords))&&Ri(e,t,r,d,o+"/"+u,s,o,u,n)}r(n,o,s,a,i,l,c)}}function C$(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}});var Os=U(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});Ft.getSchemaRefs=Ft.resolveUrl=Ft.normalizeId=Ft._getFullPath=Ft.getFullPath=Ft.inlineRef=void 0;var N$=Ce(),R$=Fu(),j$=Dy(),M$=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function D$(e,t=!0){return typeof e=="boolean"?!0:t===!0?!Zu(e):t?Ly(e)<=t:!1}Ft.inlineRef=D$;var L$=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function Zu(e){for(let t in e){if(L$.has(t))return!0;let r=e[t];if(Array.isArray(r)&&r.some(Zu)||typeof r=="object"&&Zu(r))return!0}return!1}function Ly(e){let t=0;for(let r in e){if(r==="$ref")return 1/0;if(t++,!M$.has(r)&&(typeof e[r]=="object"&&(0,N$.eachItem)(e[r],n=>t+=Ly(n)),t===1/0))return 1/0}return t}function Vy(e,t="",r){r!==!1&&(t=fo(t));let n=e.parse(t);return Fy(e,n)}Ft.getFullPath=Vy;function Fy(e,t){return e.serialize(t).split("#")[0]+"#"}Ft._getFullPath=Fy;var V$=/#\/?$/;function fo(e){return e?e.replace(V$,""):""}Ft.normalizeId=fo;function F$(e,t,r){return r=fo(r),e.resolve(t,r)}Ft.resolveUrl=F$;var Z$=/^[a-z_][-a-z0-9._]*$/i;function B$(e,t){if(typeof e=="boolean")return{};let{schemaId:r,uriResolver:n}=this.opts,o=fo(e[r]||t),s={"":o},a=Vy(n,o,!1),i={},l=new Set;return j$(e,{allKeys:!0},(d,p,m,b)=>{if(b===void 0)return;let f=a+p,h=s[b];typeof d[r]=="string"&&(h=g.call(this,d[r])),v.call(this,d.$anchor),v.call(this,d.$dynamicAnchor),s[p]=h;function g(_){let w=this.opts.uriResolver.resolve;if(_=fo(h?w(h,_):_),l.has(_))throw u(_);l.add(_);let k=this.refs[_];return typeof k=="string"&&(k=this.refs[k]),typeof k=="object"?c(d,k.schema,_):_!==fo(f)&&(_[0]==="#"?(c(d,i[_],_),i[_]=d):this.refs[_]=f),_}function v(_){if(typeof _=="string"){if(!Z$.test(_))throw new Error(`invalid anchor "${_}"`);g.call(this,`#${_}`)}}}),i;function c(d,p,m){if(p!==void 0&&!R$(d,p))throw u(m)}function u(d){return new Error(`reference "${d}" resolves to more than one schema`)}}Ft.getSchemaRefs=B$});var Cs=U(dn=>{"use strict";Object.defineProperty(dn,"__esModule",{value:!0});dn.getData=dn.KeywordCxt=dn.validateFunctionCode=void 0;var qy=zy(),Zy=As(),Gu=Nu(),ji=As(),G$=Ey(),Ts=Cy(),Bu=Ry(),se=be(),de=Br(),U$=Os(),Gr=Ce(),Is=Es();function q$(e){if(Wy(e)&&(Jy(e),Hy(e))){W$(e);return}Ky(e,()=>(0,qy.topBoolOrEmptySchema)(e))}dn.validateFunctionCode=q$;function Ky({gen:e,validateName:t,schema:r,schemaEnv:n,opts:o},s){o.code.es5?e.func(t,(0,se._)`${de.default.data}, ${de.default.valCxt}`,n.$async,()=>{e.code((0,se._)`"use strict"; ${By(r,o)}`),H$(e,o),e.code(s)}):e.func(t,(0,se._)`${de.default.data}, ${K$(o)}`,n.$async,()=>e.code(By(r,o)).code(s))}function K$(e){return(0,se._)`{${de.default.instancePath}="", ${de.default.parentData}, ${de.default.parentDataProperty}, ${de.default.rootData}=${de.default.data}${e.dynamicRef?(0,se._)`, ${de.default.dynamicAnchors}={}`:se.nil}}={}`}function H$(e,t){e.if(de.default.valCxt,()=>{e.var(de.default.instancePath,(0,se._)`${de.default.valCxt}.${de.default.instancePath}`),e.var(de.default.parentData,(0,se._)`${de.default.valCxt}.${de.default.parentData}`),e.var(de.default.parentDataProperty,(0,se._)`${de.default.valCxt}.${de.default.parentDataProperty}`),e.var(de.default.rootData,(0,se._)`${de.default.valCxt}.${de.default.rootData}`),t.dynamicRef&&e.var(de.default.dynamicAnchors,(0,se._)`${de.default.valCxt}.${de.default.dynamicAnchors}`)},()=>{e.var(de.default.instancePath,(0,se._)`""`),e.var(de.default.parentData,(0,se._)`undefined`),e.var(de.default.parentDataProperty,(0,se._)`undefined`),e.var(de.default.rootData,de.default.data),t.dynamicRef&&e.var(de.default.dynamicAnchors,(0,se._)`{}`)})}function W$(e){let{schema:t,opts:r,gen:n}=e;Ky(e,()=>{r.$comment&&t.$comment&&Xy(e),eE(e),n.let(de.default.vErrors,null),n.let(de.default.errors,0),r.unevaluated&&J$(e),Yy(e),nE(e)})}function J$(e){let{gen:t,validateName:r}=e;e.evaluated=t.const("evaluated",(0,se._)`${r}.evaluated`),t.if((0,se._)`${e.evaluated}.dynamicProps`,()=>t.assign((0,se._)`${e.evaluated}.props`,(0,se._)`undefined`)),t.if((0,se._)`${e.evaluated}.dynamicItems`,()=>t.assign((0,se._)`${e.evaluated}.items`,(0,se._)`undefined`))}function By(e,t){let r=typeof e=="object"&&e[t.schemaId];return r&&(t.code.source||t.code.process)?(0,se._)`/*# sourceURL=${r} */`:se.nil}function Y$(e,t){if(Wy(e)&&(Jy(e),Hy(e))){X$(e,t);return}(0,qy.boolOrEmptySchema)(e,t)}function Hy({schema:e,self:t}){if(typeof e=="boolean")return!e;for(let r in e)if(t.RULES.all[r])return!0;return!1}function Wy(e){return typeof e.schema!="boolean"}function X$(e,t){let{schema:r,gen:n,opts:o}=e;o.$comment&&r.$comment&&Xy(e),tE(e),rE(e);let s=n.const("_errs",de.default.errors);Yy(e,s),n.var(t,(0,se._)`${s} === ${de.default.errors}`)}function Jy(e){(0,Gr.checkUnknownRules)(e),Q$(e)}function Yy(e,t){if(e.opts.jtd)return Gy(e,[],!1,t);let r=(0,Zy.getSchemaTypes)(e.schema),n=(0,Zy.coerceAndCheckDataType)(e,r);Gy(e,r,!n,t)}function Q$(e){let{schema:t,errSchemaPath:r,opts:n,self:o}=e;t.$ref&&n.ignoreKeywordsWithRef&&(0,Gr.schemaHasRulesButRef)(t,o.RULES)&&o.logger.warn(`$ref: keywords ignored in schema at path "${r}"`)}function eE(e){let{schema:t,opts:r}=e;t.default!==void 0&&r.useDefaults&&r.strictSchema&&(0,Gr.checkStrictMode)(e,"default is ignored in the schema root")}function tE(e){let t=e.schema[e.opts.schemaId];t&&(e.baseId=(0,U$.resolveUrl)(e.opts.uriResolver,e.baseId,t))}function rE(e){if(e.schema.$async&&!e.schemaEnv.$async)throw new Error("async schema in sync schema")}function Xy({gen:e,schemaEnv:t,schema:r,errSchemaPath:n,opts:o}){let s=r.$comment;if(o.$comment===!0)e.code((0,se._)`${de.default.self}.logger.log(${s})`);else if(typeof o.$comment=="function"){let a=(0,se.str)`${n}/$comment`,i=e.scopeValue("root",{ref:t.root});e.code((0,se._)`${de.default.self}.opts.$comment(${s}, ${a}, ${i}.schema)`)}}function nE(e){let{gen:t,schemaEnv:r,validateName:n,ValidationError:o,opts:s}=e;r.$async?t.if((0,se._)`${de.default.errors} === 0`,()=>t.return(de.default.data),()=>t.throw((0,se._)`new ${o}(${de.default.vErrors})`)):(t.assign((0,se._)`${n}.errors`,de.default.vErrors),s.unevaluated&&oE(e),t.return((0,se._)`${de.default.errors} === 0`))}function oE({gen:e,evaluated:t,props:r,items:n}){r instanceof se.Name&&e.assign((0,se._)`${t}.props`,r),n instanceof se.Name&&e.assign((0,se._)`${t}.items`,n)}function Gy(e,t,r,n){let{gen:o,schema:s,data:a,allErrors:i,opts:l,self:c}=e,{RULES:u}=c;if(s.$ref&&(l.ignoreKeywordsWithRef||!(0,Gr.schemaHasRulesButRef)(s,u))){o.block(()=>ek(e,"$ref",u.all.$ref.definition));return}l.jtd||sE(e,t),o.block(()=>{for(let p of u.rules)d(p);d(u.post)});function d(p){(0,Gu.shouldUseGroup)(s,p)&&(p.type?(o.if((0,ji.checkDataType)(p.type,a,l.strictNumbers)),Uy(e,p),t.length===1&&t[0]===p.type&&r&&(o.else(),(0,ji.reportTypeError)(e)),o.endIf()):Uy(e,p),i||o.if((0,se._)`${de.default.errors} === ${n||0}`))}}function Uy(e,t){let{gen:r,schema:n,opts:{useDefaults:o}}=e;o&&(0,G$.assignDefaults)(e,t.type),r.block(()=>{for(let s of t.rules)(0,Gu.shouldUseRule)(n,s)&&ek(e,s.keyword,s.definition,t.type)})}function sE(e,t){e.schemaEnv.meta||!e.opts.strictTypes||(aE(e,t),e.opts.allowUnionTypes||iE(e,t),lE(e,e.dataTypes))}function aE(e,t){if(t.length){if(!e.dataTypes.length){e.dataTypes=t;return}t.forEach(r=>{Qy(e.dataTypes,r)||Uu(e,`type "${r}" not allowed by context "${e.dataTypes.join(",")}"`)}),uE(e,t)}}function iE(e,t){t.length>1&&!(t.length===2&&t.includes("null"))&&Uu(e,"use allowUnionTypes to allow union type keyword")}function lE(e,t){let r=e.self.RULES.all;for(let n in r){let o=r[n];if(typeof o=="object"&&(0,Gu.shouldUseRule)(e.schema,o)){let{type:s}=o.definition;s.length&&!s.some(a=>cE(t,a))&&Uu(e,`missing type "${s.join(",")}" for keyword "${n}"`)}}}function cE(e,t){return e.includes(t)||t==="number"&&e.includes("integer")}function Qy(e,t){return e.includes(t)||t==="integer"&&e.includes("number")}function uE(e,t){let r=[];for(let n of e.dataTypes)Qy(t,n)?r.push(n):t.includes("integer")&&n==="number"&&r.push("integer");e.dataTypes=r}function Uu(e,t){let r=e.schemaEnv.baseId+e.errSchemaPath;t+=` at "${r}" (strictTypes)`,(0,Gr.checkStrictMode)(e,t,e.opts.strictTypes)}var Mi=class{constructor(t,r,n){if((0,Ts.validateKeywordUsage)(t,r,n),this.gen=t.gen,this.allErrors=t.allErrors,this.keyword=n,this.data=t.data,this.schema=t.schema[n],this.$data=r.$data&&t.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,Gr.schemaRefOrVal)(t,this.schema,n,this.$data),this.schemaType=r.schemaType,this.parentSchema=t.schema,this.params={},this.it=t,this.def=r,this.$data)this.schemaCode=t.gen.const("vSchema",tk(this.$data,t));else if(this.schemaCode=this.schemaValue,!(0,Ts.validSchemaType)(this.schema,r.schemaType,r.allowUndefined))throw new Error(`${n} value must be ${JSON.stringify(r.schemaType)}`);("code"in r?r.trackErrors:r.errors!==!1)&&(this.errsCount=t.gen.const("_errs",de.default.errors))}result(t,r,n){this.failResult((0,se.not)(t),r,n)}failResult(t,r,n){this.gen.if(t),n?n():this.error(),r?(this.gen.else(),r(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(t,r){this.failResult((0,se.not)(t),void 0,r)}fail(t){if(t===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(t),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(t){if(!this.$data)return this.fail(t);let{schemaCode:r}=this;this.fail((0,se._)`${r} !== undefined && (${(0,se.or)(this.invalid$data(),t)})`)}error(t,r,n){if(r){this.setParams(r),this._error(t,n),this.setParams({});return}this._error(t,n)}_error(t,r){(t?Is.reportExtraError:Is.reportError)(this,this.def.error,r)}$dataError(){(0,Is.reportError)(this,this.def.$dataError||Is.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,Is.resetErrorsCount)(this.gen,this.errsCount)}ok(t){this.allErrors||this.gen.if(t)}setParams(t,r){r?Object.assign(this.params,t):this.params=t}block$data(t,r,n=se.nil){this.gen.block(()=>{this.check$data(t,n),r()})}check$data(t=se.nil,r=se.nil){if(!this.$data)return;let{gen:n,schemaCode:o,schemaType:s,def:a}=this;n.if((0,se.or)((0,se._)`${o} === undefined`,r)),t!==se.nil&&n.assign(t,!0),(s.length||a.validateSchema)&&(n.elseIf(this.invalid$data()),this.$dataError(),t!==se.nil&&n.assign(t,!1)),n.else()}invalid$data(){let{gen:t,schemaCode:r,schemaType:n,def:o,it:s}=this;return(0,se.or)(a(),i());function a(){if(n.length){if(!(r instanceof se.Name))throw new Error("ajv implementation error");let l=Array.isArray(n)?n:[n];return(0,se._)`${(0,ji.checkDataTypes)(l,r,s.opts.strictNumbers,ji.DataType.Wrong)}`}return se.nil}function i(){if(o.validateSchema){let l=t.scopeValue("validate$data",{ref:o.validateSchema});return(0,se._)`!${l}(${r})`}return se.nil}}subschema(t,r){let n=(0,Bu.getSubschema)(this.it,t);(0,Bu.extendSubschemaData)(n,this.it,t),(0,Bu.extendSubschemaMode)(n,t);let o={...this.it,...n,items:void 0,props:void 0};return Y$(o,r),o}mergeEvaluated(t,r){let{it:n,gen:o}=this;n.opts.unevaluated&&(n.props!==!0&&t.props!==void 0&&(n.props=Gr.mergeEvaluated.props(o,t.props,n.props,r)),n.items!==!0&&t.items!==void 0&&(n.items=Gr.mergeEvaluated.items(o,t.items,n.items,r)))}mergeValidEvaluated(t,r){let{it:n,gen:o}=this;if(n.opts.unevaluated&&(n.props!==!0||n.items!==!0))return o.if(r,()=>this.mergeEvaluated(t,se.Name)),!0}};dn.KeywordCxt=Mi;function ek(e,t,r,n){let o=new Mi(e,r,t);"code"in r?r.code(o,n):o.$data&&r.validate?(0,Ts.funcKeywordCode)(o,r):"macro"in r?(0,Ts.macroKeywordCode)(o,r):(r.compile||r.validate)&&(0,Ts.funcKeywordCode)(o,r)}var dE=/^\/(?:[^~]|~0|~1)*$/,pE=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function tk(e,{dataLevel:t,dataNames:r,dataPathArr:n}){let o,s;if(e==="")return de.default.rootData;if(e[0]==="/"){if(!dE.test(e))throw new Error(`Invalid JSON-pointer: ${e}`);o=e,s=de.default.rootData}else{let c=pE.exec(e);if(!c)throw new Error(`Invalid JSON-pointer: ${e}`);let u=+c[1];if(o=c[2],o==="#"){if(u>=t)throw new Error(l("property/index",u));return n[t-u]}if(u>t)throw new Error(l("data",u));if(s=r[t-u],!o)return s}let a=s,i=o.split("/");for(let c of i)c&&(s=(0,se._)`${s}${(0,se.getProperty)((0,Gr.unescapeJsonPointer)(c))}`,a=(0,se._)`${a} && ${s}`);return a;function l(c,u){return`Cannot access ${c} ${u} levels up, current level is ${t}`}}dn.getData=tk});var Di=U(Ku=>{"use strict";Object.defineProperty(Ku,"__esModule",{value:!0});var qu=class extends Error{constructor(t){super("validation failed"),this.errors=t,this.ajv=this.validation=!0}};Ku.default=qu});var Ns=U(Ju=>{"use strict";Object.defineProperty(Ju,"__esModule",{value:!0});var Hu=Os(),Wu=class extends Error{constructor(t,r,n,o){super(o||`can't resolve reference ${n} from id ${r}`),this.missingRef=(0,Hu.resolveUrl)(t,r,n),this.missingSchema=(0,Hu.normalizeId)((0,Hu.getFullPath)(t,this.missingRef))}};Ju.default=Wu});var Vi=U(nr=>{"use strict";Object.defineProperty(nr,"__esModule",{value:!0});nr.resolveSchema=nr.getCompilingSchema=nr.resolveRef=nr.compileSchema=nr.SchemaEnv=void 0;var fr=be(),fE=Di(),An=Br(),mr=Os(),rk=Ce(),mE=Cs(),mo=class{constructor(t){var r;this.refs={},this.dynamicAnchors={};let n;typeof t.schema=="object"&&(n=t.schema),this.schema=t.schema,this.schemaId=t.schemaId,this.root=t.root||this,this.baseId=(r=t.baseId)!==null&&r!==void 0?r:(0,mr.normalizeId)(n?.[t.schemaId||"$id"]),this.schemaPath=t.schemaPath,this.localRefs=t.localRefs,this.meta=t.meta,this.$async=n?.$async,this.refs={}}};nr.SchemaEnv=mo;function Xu(e){let t=nk.call(this,e);if(t)return t;let r=(0,mr.getFullPath)(this.opts.uriResolver,e.root.baseId),{es5:n,lines:o}=this.opts.code,{ownProperties:s}=this.opts,a=new fr.CodeGen(this.scope,{es5:n,lines:o,ownProperties:s}),i;e.$async&&(i=a.scopeValue("Error",{ref:fE.default,code:(0,fr._)`require("ajv/dist/runtime/validation_error").default`}));let l=a.scopeName("validate");e.validateName=l;let c={gen:a,allErrors:this.opts.allErrors,data:An.default.data,parentData:An.default.parentData,parentDataProperty:An.default.parentDataProperty,dataNames:[An.default.data],dataPathArr:[fr.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:a.scopeValue("schema",this.opts.code.source===!0?{ref:e.schema,code:(0,fr.stringify)(e.schema)}:{ref:e.schema}),validateName:l,ValidationError:i,schema:e.schema,schemaEnv:e,rootId:r,baseId:e.baseId||r,schemaPath:fr.nil,errSchemaPath:e.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,fr._)`""`,opts:this.opts,self:this},u;try{this._compilations.add(e),(0,mE.validateFunctionCode)(c),a.optimize(this.opts.code.optimize);let d=a.toString();u=`${a.scopeRefs(An.default.scope)}return ${d}`,this.opts.code.process&&(u=this.opts.code.process(u,e));let m=new Function(`${An.default.self}`,`${An.default.scope}`,u)(this,this.scope.get());if(this.scope.value(l,{ref:m}),m.errors=null,m.schema=e.schema,m.schemaEnv=e,e.$async&&(m.$async=!0),this.opts.code.source===!0&&(m.source={validateName:l,validateCode:d,scopeValues:a._values}),this.opts.unevaluated){let{props:b,items:f}=c;m.evaluated={props:b instanceof fr.Name?void 0:b,items:f instanceof fr.Name?void 0:f,dynamicProps:b instanceof fr.Name,dynamicItems:f instanceof fr.Name},m.source&&(m.source.evaluated=(0,fr.stringify)(m.evaluated))}return e.validate=m,e}catch(d){throw delete e.validate,delete e.validateName,u&&this.logger.error("Error compiling schema, function code:",u),d}finally{this._compilations.delete(e)}}nr.compileSchema=Xu;function hE(e,t,r){var n;r=(0,mr.resolveUrl)(this.opts.uriResolver,t,r);let o=e.refs[r];if(o)return o;let s=yE.call(this,e,r);if(s===void 0){let a=(n=e.localRefs)===null||n===void 0?void 0:n[r],{schemaId:i}=this.opts;a&&(s=new mo({schema:a,schemaId:i,root:e,baseId:t}))}if(s!==void 0)return e.refs[r]=gE.call(this,s)}nr.resolveRef=hE;function gE(e){return(0,mr.inlineRef)(e.schema,this.opts.inlineRefs)?e.schema:e.validate?e:Xu.call(this,e)}function nk(e){for(let t of this._compilations)if(bE(t,e))return t}nr.getCompilingSchema=nk;function bE(e,t){return e.schema===t.schema&&e.root===t.root&&e.baseId===t.baseId}function yE(e,t){let r;for(;typeof(r=this.refs[t])=="string";)t=r;return r||this.schemas[t]||Li.call(this,e,t)}function Li(e,t){let r=this.opts.uriResolver.parse(t),n=(0,mr._getFullPath)(this.opts.uriResolver,r),o=(0,mr.getFullPath)(this.opts.uriResolver,e.baseId,void 0);if(Object.keys(e.schema).length>0&&n===o)return Yu.call(this,r,e);let s=(0,mr.normalizeId)(n),a=this.refs[s]||this.schemas[s];if(typeof a=="string"){let i=Li.call(this,e,a);return typeof i?.schema!="object"?void 0:Yu.call(this,r,i)}if(typeof a?.schema=="object"){if(a.validate||Xu.call(this,a),s===(0,mr.normalizeId)(t)){let{schema:i}=a,{schemaId:l}=this.opts,c=i[l];return c&&(o=(0,mr.resolveUrl)(this.opts.uriResolver,o,c)),new mo({schema:i,schemaId:l,root:e,baseId:o})}return Yu.call(this,r,a)}}nr.resolveSchema=Li;var kE=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function Yu(e,{baseId:t,schema:r,root:n}){var o;if(((o=e.fragment)===null||o===void 0?void 0:o[0])!=="/")return;for(let i of e.fragment.slice(1).split("/")){if(typeof r=="boolean")return;let l=r[(0,rk.unescapeFragment)(i)];if(l===void 0)return;r=l;let c=typeof r=="object"&&r[this.opts.schemaId];!kE.has(i)&&c&&(t=(0,mr.resolveUrl)(this.opts.uriResolver,t,c))}let s;if(typeof r!="boolean"&&r.$ref&&!(0,rk.schemaHasRulesButRef)(r,this.RULES)){let i=(0,mr.resolveUrl)(this.opts.uriResolver,t,r.$ref);s=Li.call(this,n,i)}let{schemaId:a}=this.opts;if(s=s||new mo({schema:r,schemaId:a,root:n,baseId:t}),s.schema!==s.root.schema)return s}});var ok=U((B3,vE)=>{vE.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var od=U((G3,pk)=>{"use strict";var zE=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),ed=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u),_E=RegExp.prototype.test.bind(/^\d*$/u),On=RegExp.prototype.test.bind(/^[\da-f]{2}$/iu),td=RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu),ak=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/]$/u),rd=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/?]$/u),wE=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:]$/u),Zt=new Array(256);{let e="0123456789ABCDEF";for(let t=0;t<256;t++)Zt[t]="%"+e[t>>4]+e[t&15]}function Ot(e){return e<2048?Zt[192|e>>6]+Zt[128|e&63]:e<65536?Zt[224|e>>12]+Zt[128|e>>6&63]+Zt[128|e&63]:Zt[240|e>>18]+Zt[128|e>>12&63]+Zt[128|e>>6&63]+Zt[128|e&63]}function xE(e){let t="",r=0,n=0;for(n=0;n<e.length;n++)if(r=e[n].charCodeAt(0),r!==48){if(!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";t+=e[n];break}for(n+=1;n<e.length;n++){if(r=e[n].charCodeAt(0),!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";t+=e[n]}return t}var SE=RegExp.prototype.test.bind(/^[\dA-Fa-f]{1,4}$/),PE=RegExp.prototype.test.bind(/^[vV][\dA-Fa-f]+\.[A-Za-z\d\-._~!$&'()*+,;=:]+$/),$E=RegExp.prototype.test.bind(/^[A-Za-z\d\-._~]$/),EE=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function AE(e){if(e.length===0)return!1;for(let t=0;t<e.length;t++)if(!$E(e[t])){if(e[t]==="%"&&t+2<e.length&&On(e.slice(t+1,t+3))){t+=2;continue}return!1}return!0}function sk(e){let t=-1,r=0,n=-1,o=0;for(let i=0;i<e.length;i++)e[i]==="0"?(n===-1&&(n=i),o++,o>r&&(r=o,t=n)):(n=-1,o=0);if(r<2)return e.join(":");let s=e.slice(0,t).join(":"),a=e.slice(t+r).join(":");return s+"::"+a}function OE(e){let t=e.indexOf("::");if(t!==-1&&e.indexOf("::",t+1)!==-1)return;let r=t===-1?e.split(":"):e.slice(0,t).split(":"),n=t===-1?[]:e.slice(t+2).split(":");t!==-1&&(r.length===1&&r[0]===""&&(r.length=0),n.length===1&&n[0]===""&&(n.length=0));let o=r.concat(n),s=0;for(let i=0;i<o.length;i++){let l=o[i];if(l==="")return;if(l.indexOf(".")!==-1){if(i!==o.length-1||t!==-1&&n.length===0||!ed(l))return;s+=2;continue}if(!SE(l))return;o[i]=parseInt(l,16).toString(16),s++}if(t===-1)return s!==8?void 0:sk(o);if(s>=8)return;let a=o.slice(0,r.length);for(let i=s;i<8;i++)a.push("0");for(let i=r.length;i<o.length;i++)a.push(o[i]);return sk(a)}function Qu(e){let t=e[0]==="["&&e[e.length-1]==="]";if((e[0]==="["||e[e.length-1]==="]")&&!t)return{host:e,isIPV6:!1,error:!0};let n=t?e.slice(1,-1):e;if(t&&PE(n))return n=n.toLowerCase(),{host:`[${n}]`,escapedHost:n,isIPV6:!1,isIPVFuture:!0};if(IE(n,":")<2)return{host:e,isIPV6:!1,error:t};let o="",s=n.indexOf("%");if(s!==-1){let i=n.slice(s,s+3).toLowerCase()==="%25"?3:1;if(o=n.slice(s+i),!AE(o))return{host:e,isIPV6:!1,error:!0};n=n.slice(0,s)}let a=OE(n);return a===void 0?{host:e,isIPV6:!1,error:!0}:{host:a+(o?"%"+o:""),escapedHost:a+(o?"%25"+o:""),isIPV6:!0}}function IE(e,t){let r=0;for(let n=0;n<e.length;n++)e[n]===t&&r++;return r}function ik(e){let t=e,r=[],n=-1,o=0;for(;o=t.length;){if(o===1){if(t===".")break;if(t==="/"){r.push("/");break}else{r.push(t);break}}else if(o===2){if(t[0]==="."){if(t[1]===".")break;if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"&&(t[1]==="."||t[1]==="/")){r.push("/");break}}else if(o===3&&t==="/.."){r.length!==0&&r.pop(),r.push("/");break}if(t[0]==="."){if(t[1]==="."){if(t[2]==="/"){t=t.slice(3);continue}}else if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"&&t[1]==="."){if(t[2]==="/"){t=t.slice(2);continue}else if(t[2]==="."&&t[3]==="/"){t=t.slice(3),r.length!==0&&r.pop();continue}}if((n=t.indexOf("/",1))===-1){r.push(t);break}else r.push(t.slice(0,n)),t=t.slice(n)}return r.join("")}function TE(e){if(e===""||e[0]==="/")return ik(e);let t=e.split("/"),r=t.length-1,n=[],o=!1;for(let s=0;s<=r;s++){let a=t[s];a==="."||a===".."?(a===".."&&(n.length!==0&&n[n.length-1]!==".."?n.pop():n.push("..")),o=s===r):n.push(a)}return o&&n[n.length-1]!==".."&&n.push(""),(n.length===0||n[0]===""||n[0].includes(":"))&&n.unshift("."),n.join("/")}var CE={"@":"%40","/":"%2F","?":"%3F","#":"%23",":":"%3A"},NE=/[@/?#:]/g,RE=/[@/?#]/g;function lk(e,t){let r=t?RE:NE;return r.lastIndex=0,e.replace(r,n=>CE[n])}function ck(e,t=!1){if(e.indexOf("%")===-1)return e;let r="";for(let n=0;n<e.length;n++){if(e[n]==="%"&&n+2<e.length){let o=e.slice(n+1,n+3);if(On(o)){let s=o.toUpperCase(),a=String.fromCharCode(parseInt(s,16));t&&td(a)?r+=a:r+="%"+s,n+=2;continue}}r+=e[n]}return r}function jE(e){let t="";for(let r=0;r<e.length;r++){let n=e[r];if(n==="%"&&r+2<e.length){let o=e.slice(r+1,r+3);if(On(o)){let s=o.toUpperCase(),a=String.fromCharCode(parseInt(s,16));a!=="."&&td(a)?t+=a:t+="%"+s,r+=2;continue}}if(ak(n))t+=n;else{let o=e.charCodeAt(r);if(o<128)t+=dk(o)?n:Zt[o];else if(o<55296||o>57343)t+=Ot(o);else if(o<=56319&&r+1<e.length){let s=e.charCodeAt(r+1);s>=56320&&s<=57343?(t+=Ot(65536+(o-55296<<10)+(s-56320)),r++):t+=Ot(65533)}else t+=Ot(65533)}}return t}function ME(e,t=!1){let r="",n=t&&e[0]!=="/";for(let o=0;o<e.length;o++){let s=e[o];if(s==="%"&&o+2<e.length){let a=e.slice(o+1,o+3);if(On(a)){r+="%"+a.toUpperCase(),o+=2;continue}}if(s==="/"&&(n=!1),ak(s)&&(s!==":"||!n))r+=s;else{let a=e.charCodeAt(o);if(a<128)r+=Zt[a];else if(a<55296||a>57343)r+=Ot(a);else if(a<=56319&&o+1<e.length){let i=e.charCodeAt(o+1);i>=56320&&i<=57343?(r+=Ot(65536+(a-55296<<10)+(i-56320)),o++):r+=Ot(65533)}else r+=Ot(65533)}}return r}function nd(e,t){let r="";for(let n=0;n<e.length;n++){let o=e[n];if(o==="%"&&n+2<e.length){let s=e.slice(n+1,n+3);if(On(s)){r+="%"+s.toUpperCase(),n+=2;continue}}if(t(o))r+=o;else{let s=e.charCodeAt(n);if(s<128)r+=Zt[s];else if(s<55296||s>57343)r+=Ot(s);else if(s<=56319&&n+1<e.length){let a=e.charCodeAt(n+1);a>=56320&&a<=57343?(r+=Ot(65536+(s-55296<<10)+(a-56320)),n++):r+=Ot(65533)}else r+=Ot(65533)}}return r}function uk(e){return nd(e,wE)}function DE(e){return nd(e,rd)}function LE(e){return nd(e,rd)}function dk(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===42||e===43||e===45||e===46||e===47||e===64||e===95}function VE(e){let t="";for(let r=0;r<e.length;r++){let n=e[r];if(n==="%"&&r+2<e.length){let o=e.slice(r+1,r+3);if(On(o)){let s=o.toUpperCase(),a=String.fromCharCode(parseInt(s,16));td(a)?t+=a:t+="%"+s,r+=2;continue}}if(rd(n))t+=n;else{let o=e.charCodeAt(r);if(o<128)t+=dk(o)?n:Zt[o];else if(o<55296||o>57343)t+=Ot(o);else if(o<=56319&&r+1<e.length){let s=e.charCodeAt(r+1);s>=56320&&s<=57343?(t+=Ot(65536+(o-55296<<10)+(s-56320)),r++):t+=Ot(65533)}else t+=Ot(65533)}}return t}function FE(e){let t="";for(let r=0;r<e.length;r++){if(e[r]==="%"&&r+2<e.length){let n=e.slice(r+1,r+3);if(On(n)){t+="%"+n.toUpperCase(),r+=2;continue}}t+=escape(e[r])}return t}function ZE(e){let t=[];if(e.userinfo!==void 0&&(t.push(uk(e.userinfo)),t.push("@")),e.host!==void 0){let r=e.host;if(!ed(r)){let n=Qu(r);n.isIPV6!==!0&&n.isIPVFuture!==!0&&(r=ck(r,!0),n=Qu(r)),n.isIPV6===!0||n.isIPVFuture===!0?r=`[${n.escapedHost}]`:r=lk(r,!1)}t.push(r)}if(typeof e.port=="number"||typeof e.port=="string"){let r=String(e.port);if(!_E(r))throw new TypeError("URI port is malformed.");t.push(":"),t.push(r)}return t.length?t.join(""):void 0}pk.exports={nonSimpleDomain:EE,recomposeAuthority:ZE,reescapeHostDelimiters:lk,normalizePercentEncoding:ck,normalizePathEncoding:jE,serializePathEncoding:ME,normalizeQueryFragmentEncoding:VE,encodeUserinfo:uk,encodeQuery:DE,encodeFragment:LE,escapePreservingEscapes:FE,removeDotSegments:ik,removeDotSegmentsRelative:TE,isIPv4:ed,isUUID:zE,normalizeIPv6:Qu,stringArrayToHexStripped:xE}});var bk=U((U3,gk)=>{"use strict";var{isUUID:BE}=od(),GE=/^([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-./:;=@]|%[\da-f]{2})+)$/iu,UE=["http","https","ws","wss","urn","urn:uuid"];function qE(e){return UE.indexOf(e)!==-1}function sd(e){return e.secure===!0?!0:e.secure===!1?!1:e.scheme?e.scheme.length===3&&(e.scheme[0]==="w"||e.scheme[0]==="W")&&(e.scheme[1]==="s"||e.scheme[1]==="S")&&(e.scheme[2]==="s"||e.scheme[2]==="S"):!1}function fk(e){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e}function mk(e){let t=String(e.scheme).toLowerCase()==="https";return(e.port===(t?443:80)||e.port==="")&&(e.port=void 0),e.path||(e.path="/"),e}function KE(e){return e.secure=sd(e),e.resourceName=(e.path||"/")+(e.query?"?"+e.query:""),e.path=void 0,e.query=void 0,e}function HE(e){if((e.port===(sd(e)?443:80)||e.port==="")&&(e.port=void 0),typeof e.secure=="boolean"&&(e.scheme=e.secure?"wss":"ws",e.secure=void 0),e.resourceName){let t=e.resourceName.indexOf("?"),r=t===-1?e.resourceName:e.resourceName.slice(0,t);e.path=r&&r!=="/"?r:void 0,e.query=t===-1?void 0:e.resourceName.slice(t+1),e.resourceName=void 0}return e.fragment=void 0,e}function WE(e,t){if(!e.path)return e.error="URN can not be parsed",e;let r=e.path.match(GE);if(r&&r[0]===e.path){let n=t.scheme||e.scheme||"urn";e.nid=r[1].toLowerCase(),e.nss=r[2];let o=`${n}:${t.nid||e.nid}`,s=ad(o);e.path=void 0,s&&(e=s.parse(e,t))}else e.error=e.error||"URN can not be parsed.";return e}function JE(e,t){if(e.nid===void 0)throw new Error("URN without nid cannot be serialized");let r=t.scheme||e.scheme||"urn",n=e.nid.toLowerCase(),o=`${r}:${t.nid||n}`,s=ad(o);s&&(e=s.serialize(e,t));let a=e,i=e.nss;return a.path=`${n||t.nid}:${i}`,t.skipEscape=!0,a}function YE(e,t){let r=e;return r.uuid=r.nss,r.nss=void 0,!t.tolerant&&(!r.uuid||!BE(r.uuid))&&(r.error=r.error||"UUID is not valid."),r}function XE(e){let t=e;return t.nss=(e.uuid||"").toLowerCase(),t}var hk={scheme:"http",domainHost:!0,parse:fk,serialize:mk},QE={scheme:"https",domainHost:hk.domainHost,parse:fk,serialize:mk},Fi={scheme:"ws",domainHost:!0,parse:KE,serialize:HE},eA={scheme:"wss",domainHost:Fi.domainHost,parse:Fi.parse,serialize:Fi.serialize},tA={scheme:"urn",parse:WE,serialize:JE,skipNormalize:!0},rA={scheme:"urn:uuid",parse:YE,serialize:XE,skipNormalize:!0},Zi={http:hk,https:QE,ws:Fi,wss:eA,urn:tA,"urn:uuid":rA};Object.setPrototypeOf(Zi,null);function ad(e){return e&&(Zi[e]||Zi[e.toLowerCase()])||void 0}gk.exports={wsIsSecure:sd,SCHEMES:Zi,isValidSchemeName:qE,getSchemeHandler:ad}});var Tk=U((q3,Ki)=>{"use strict";var{normalizeIPv6:_k,removeDotSegments:js,removeDotSegmentsRelative:wk,recomposeAuthority:nA,normalizePercentEncoding:id,normalizePathEncoding:oA,serializePathEncoding:yk,normalizeQueryFragmentEncoding:kk,encodeQuery:sA,encodeFragment:aA,reescapeHostDelimiters:iA,isIPv4:xk,nonSimpleDomain:lA}=od(),{SCHEMES:Sk,getSchemeHandler:ld}=bk(),Pk=/^[A-Za-z][A-Za-z0-9+.-]*$/u,$k="URI scheme is malformed.",Bi="URI host is malformed.",cA=/[\0-\x20"#/:<>?@[\\\]^`{|}\x7F]/u;function vk(e){let t=String(e);if(!Pk.test(t))throw new TypeError($k);return t}function uA(e,t){return typeof e=="string"?e=kA(e,t):typeof e=="object"&&(e=Ui(In(e,t),t)),e}function dA(e,t,r){let n=r?Object.assign({scheme:"null"},r):{scheme:"null"},{parsed:o,malformedAuthorityOrPort:s,malformedPercentEncoding:a,malformedSchemeSpecific:i,malformedHost:l,malformedScheme:c}=Gi(e,n),{parsed:u,malformedAuthorityOrPort:d,malformedPercentEncoding:p,malformedSchemeSpecific:m,malformedHost:b,malformedScheme:f}=Gi(t,n);if(s||d||a||p||i||m||l||b||c||f)throw new Error(o.error||u.error||"URI is malformed.");let h=Ek(o,u,n,!0),g=ld(r&&r.scheme||h.scheme),v=h.host,_=v!==void 0&&v!==""&&(xk(v)||_k(v).isIPV6);if(Ok(h,r||{},g,_))throw new Error(Bi);Ak(h,r||{},g,_);let w=v&&v.indexOf("%")!==-1&&!new RegExp("\\P{ASCII}","u").test(v);if(h.error&&!w)throw new Error(h.error);return n.skipEscape=!0,In(h,n)}function Ek(e,t,r,n){let o={};if(n||(e=Ui(In(e,r),r),t=Ui(In(t,r),r)),r=r||{},!r.tolerant&&t.scheme)o.scheme=t.scheme,o.userinfo=t.userinfo,o.host=t.host,o.port=t.port,o.path=js(t.path||""),o.query=t.query;else{if(t.userinfo!==void 0||t.host!==void 0||t.port!==void 0)o.userinfo=t.userinfo,o.host=t.host,o.port=t.port,o.path=js(t.path||""),o.query=t.query;else{if(!t.path)o.path=e.path,t.query!==void 0?o.query=t.query:o.query=e.query;else{if(t.path[0]==="/")o.path=js(t.path);else{let s=e.userinfo!==void 0||e.host!==void 0||e.port!==void 0;s&&!e.path?o.path="/"+t.path:e.path?o.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path:o.path=t.path,o.path=e.scheme===void 0&&!s&&o.path[0]!=="/"?wk(o.path):js(o.path)}o.query=t.query}o.userinfo=e.userinfo,o.host=e.host,o.port=e.port}o.scheme=e.scheme}return o.fragment=t.fragment,o}function pA(e,t,r){let n=zk(e,r),o=zk(t,r);return n!==void 0&&o!==void 0&&n===o}function In(e,t){let r={host:e.host,scheme:e.scheme,userinfo:e.userinfo,port:e.port,path:e.path,query:e.query,nid:e.nid,nss:e.nss,uuid:e.uuid,fragment:e.fragment,reference:e.reference,resourceName:e.resourceName,secure:e.secure,error:""},n=Object.assign({},t),o=[];r.scheme&&(r.scheme=vk(r.scheme));let s=ld(n.scheme||r.scheme);s&&s.serialize&&s.serialize(r,n);let a=r.userinfo!==void 0||r.host!==void 0||r.port!==void 0,i=(r.scheme===void 0||n.reference==="suffix")&&!a,l=!n.skipEscape&&i;r.path!==void 0&&(n.skipEscape?r.path=id(r.path):r.path=yk(r.path,l)),n.reference!=="suffix"&&r.scheme&&(r.scheme=vk(r.scheme),o.push(r.scheme,":"));let c=nA(r);if(c!==void 0&&(n.reference!=="suffix"&&o.push("//"),o.push(c),r.path&&r.path[0]!=="/"&&o.push("/")),r.path!==void 0){let u=r.path;!n.absolutePath&&(!s||!s.absolutePath)&&(u=i&&u[0]!=="/"?wk(u):js(u)),i&&(u=yk(u,!0)),c===void 0&&u[0]==="/"&&u[1]==="/"&&(u="/%2F"+u.slice(2)),o.push(u)}return r.query!==void 0&&o.push("?",sA(r.query)),r.fragment!==void 0&&o.push("#",aA(r.fragment)),o.join("")}var fA=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u,mA=/^(?:[^#/:?]+:)?\/\/([^/?#]*)/,hA=/^(?:[^#/:?]+:)?([/\\\t\n\r]*)/;function gA(e,t){if(t[2]!==void 0&&e.path&&e.path[0]!=="/")return'URI path must start with "/" when authority is present.';if(typeof e.port=="number"&&(e.port<0||e.port>65535))return"URI port is malformed."}function Rs(e){if(e===void 0)return!1;let t=e.indexOf("%");for(;t!==-1;){if(t+2>=e.length||!/^[\da-f]{2}$/iu.test(e.slice(t+1,t+3)))return!0;t=e.indexOf("%",t+3)}return!1}function qi(e){return e[0]==="["&&e[e.length-1]==="]"}function bA(e){let t=e[4];return Rs(e[3])||t!==void 0&&!qi(t)&&Rs(t)||Rs(e[6])||Rs(e[7])||Rs(e[8])}function Ak(e,t,r,n){if(Ok(e,t,r,n))return e.error=e.error||Bi,!0;if(!t.unicodeSupport&&(!r||!r.unicodeSupport)&&e.host&&!qi(e.host)&&(t.domainHost||r&&r.domainHost)&&n===!1&&lA(e.host)){let o;try{o=new URL("http://"+e.host)}catch(s){return e.error=e.error||"Host's domain name can not be converted to ASCII: "+s,!0}if(!yA(o))return e.error=e.error||Bi,!0;e.host=o.hostname}return!1}function Ok(e,t,r,n){return!!(e.host&&n===!1&&!qi(e.host)&&(t.domainHost||r&&r.domainHost)&&cA.test(e.host))}function yA(e){return e.username===""&&e.password===""&&e.port===""&&e.pathname==="/"&&e.search===""&&e.hash===""&&e.hostname!==""}function Gi(e,t){let r=Object.assign({},t),n={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},o=!1,s=!1,a=!1,i=!1,l=!1,c=!1,u=!1;r.reference==="suffix"&&(r.scheme?e=r.scheme+":"+e:e="//"+e);let d=e.match(mA);d!==null&&d[1].indexOf("\\")!==-1&&(n.error="URI authority must not contain a literal backslash.",o=!0);let p=e.match(hA);if(p!==null){let b=p[1],f=b.replace(/[\t\n\r]/g,"");f.length>=2&&(f.slice(0,2)!=="//"?(n.error=n.error||"URI authority must not contain a literal backslash.",o=!0):b.length!==f.length&&(n.error=n.error||"URI authority introducer must not contain whitespace.",o=!0))}let m=e.match(fA);if(m){n.scheme=m[1],n.userinfo=m[3],n.host=m[4],n.port=parseInt(m[5],10),n.path=m[6]||"",n.query=m[7],n.fragment=m[8],n.scheme!==void 0&&(Pk.test(n.scheme)?n.scheme=n.scheme.toLowerCase():(n.error=n.error||$k,c=!0)),s=bA(m),s&&(n.error=n.error||"URI contains malformed percent-encoding."),isNaN(n.port)&&(n.port=m[5]);let b=gA(n,m);if(b!==void 0&&(n.error=n.error||b,o=!0),n.host)if(xk(n.host)===!1){let g=qi(n.host),v=n.host.indexOf("[")!==-1||n.host.indexOf("]")!==-1,_=_k(n.host);u=_.isIPV6||_.isIPVFuture===!0,l=v&&(!g||_.error===!0),n.host=u?_.host:_.host.toLowerCase(),l&&(n.error=n.error||Bi,o=!0)}else u=!0;n.scheme===void 0&&n.userinfo===void 0&&n.host===void 0&&n.port===void 0&&n.query===void 0&&!n.path?n.reference="same-document":n.scheme===void 0?n.reference="relative":n.fragment===void 0?n.reference="absolute":n.reference="uri",r.reference&&r.reference!=="suffix"&&r.reference!==n.reference&&(n.error=n.error||"URI is not a "+r.reference+" reference.");let f=ld(r.scheme||n.scheme);if(l||(i=Ak(n,r,f,u)),e.indexOf("%")!==-1&&n.host!==void 0&&!l){let h=u?n.host:id(n.host,!0);u||(h=id(h.toLowerCase())),n.host=u||r.scheme!=="null"?iA(h,u):h}(!f||f&&!f.skipNormalize)&&(n.path&&(n.path=oA(n.path)),n.query&&(n.query=kk(n.query)),n.fragment&&(n.fragment=kk(n.fragment))),f&&f.parse&&(f.parse(n,r),f===Sk.urn&&n.nid===void 0&&(a=!0))}else n.error=n.error||"URI can not be parsed.";return{parsed:n,malformedAuthorityOrPort:o,malformedPercentEncoding:s,malformedSchemeSpecific:a,malformedHost:i,malformedScheme:c}}function Ui(e,t){return Gi(e,t).parsed}function kA(e,t){return Ik(e,t).normalized}function Ik(e,t){let{parsed:r,malformedAuthorityOrPort:n,malformedPercentEncoding:o,malformedSchemeSpecific:s,malformedHost:a,malformedScheme:i}=Gi(e,t);return{normalized:n||o||s||a||i?e:In(r,t),malformedAuthorityOrPort:n,malformedPercentEncoding:o,malformedSchemeSpecific:s,malformedHost:a,malformedScheme:i}}function zk(e,t){if(typeof e!="string"&&typeof e!="object")return;let r;try{r=typeof e=="string"?e:In(e,t)}catch{return}let{normalized:n,malformedAuthorityOrPort:o,malformedPercentEncoding:s,malformedSchemeSpecific:a,malformedHost:i,malformedScheme:l}=Ik(r,t);return o||s||a||i||l?void 0:n}var cd={SCHEMES:Sk,normalize:uA,resolve:dA,resolveComponent:Ek,equal:pA,serialize:In,parse:Ui};Ki.exports=cd;Ki.exports.default=cd;Ki.exports.fastUri=cd});var Nk=U(ud=>{"use strict";Object.defineProperty(ud,"__esModule",{value:!0});var Ck=Tk();Ck.code='require("ajv/dist/runtime/uri").default';ud.default=Ck});var Zk=U(St=>{"use strict";Object.defineProperty(St,"__esModule",{value:!0});St.CodeGen=St.Name=St.nil=St.stringify=St.str=St._=St.KeywordCxt=void 0;var vA=Cs();Object.defineProperty(St,"KeywordCxt",{enumerable:!0,get:function(){return vA.KeywordCxt}});var ho=be();Object.defineProperty(St,"_",{enumerable:!0,get:function(){return ho._}});Object.defineProperty(St,"str",{enumerable:!0,get:function(){return ho.str}});Object.defineProperty(St,"stringify",{enumerable:!0,get:function(){return ho.stringify}});Object.defineProperty(St,"nil",{enumerable:!0,get:function(){return ho.nil}});Object.defineProperty(St,"Name",{enumerable:!0,get:function(){return ho.Name}});Object.defineProperty(St,"CodeGen",{enumerable:!0,get:function(){return ho.CodeGen}});var zA=Di(),Lk=Ns(),_A=Cu(),Ms=Vi(),wA=be(),Ds=Os(),Hi=As(),pd=Ce(),Rk=ok(),xA=Nk(),Vk=(e,t)=>new RegExp(e,t);Vk.code="new RegExp";var SA=["removeAdditional","useDefaults","coerceTypes"],PA=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),$A={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},EA={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},jk=200;function AA(e){var t,r,n,o,s,a,i,l,c,u,d,p,m,b,f,h,g,v,_,w,k,P,A,Z,D;let B=e.strict,K=(t=e.code)===null||t===void 0?void 0:t.optimize,x=K===!0||K===void 0?1:K||0,$=(n=(r=e.code)===null||r===void 0?void 0:r.regExp)!==null&&n!==void 0?n:Vk,F=(o=e.uriResolver)!==null&&o!==void 0?o:xA.default;return{strictSchema:(a=(s=e.strictSchema)!==null&&s!==void 0?s:B)!==null&&a!==void 0?a:!0,strictNumbers:(l=(i=e.strictNumbers)!==null&&i!==void 0?i:B)!==null&&l!==void 0?l:!0,strictTypes:(u=(c=e.strictTypes)!==null&&c!==void 0?c:B)!==null&&u!==void 0?u:"log",strictTuples:(p=(d=e.strictTuples)!==null&&d!==void 0?d:B)!==null&&p!==void 0?p:"log",strictRequired:(b=(m=e.strictRequired)!==null&&m!==void 0?m:B)!==null&&b!==void 0?b:!1,code:e.code?{...e.code,optimize:x,regExp:$}:{optimize:x,regExp:$},loopRequired:(f=e.loopRequired)!==null&&f!==void 0?f:jk,loopEnum:(h=e.loopEnum)!==null&&h!==void 0?h:jk,meta:(g=e.meta)!==null&&g!==void 0?g:!0,messages:(v=e.messages)!==null&&v!==void 0?v:!0,inlineRefs:(_=e.inlineRefs)!==null&&_!==void 0?_:!0,schemaId:(w=e.schemaId)!==null&&w!==void 0?w:"$id",addUsedSchema:(k=e.addUsedSchema)!==null&&k!==void 0?k:!0,validateSchema:(P=e.validateSchema)!==null&&P!==void 0?P:!0,validateFormats:(A=e.validateFormats)!==null&&A!==void 0?A:!0,unicodeRegExp:(Z=e.unicodeRegExp)!==null&&Z!==void 0?Z:!0,int32range:(D=e.int32range)!==null&&D!==void 0?D:!0,uriResolver:F}}var Ls=class{constructor(t={}){this.schemas={},this.refs={},this.formats=Object.create(null),this._compilations=new Set,this._loading={},this._cache=new Map,t=this.opts={...t,...AA(t)};let{es5:r,lines:n}=this.opts.code;this.scope=new wA.ValueScope({scope:{},prefixes:PA,es5:r,lines:n}),this.logger=RA(t.logger);let o=t.validateFormats;t.validateFormats=!1,this.RULES=(0,_A.getRules)(),Mk.call(this,$A,t,"NOT SUPPORTED"),Mk.call(this,EA,t,"DEPRECATED","warn"),this._metaOpts=CA.call(this),t.formats&&IA.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),t.keywords&&TA.call(this,t.keywords),typeof t.meta=="object"&&this.addMetaSchema(t.meta),OA.call(this),t.validateFormats=o}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:t,meta:r,schemaId:n}=this.opts,o=Rk;n==="id"&&(o={...Rk},o.id=o.$id,delete o.$id),r&&t&&this.addMetaSchema(o,o[n],!1)}defaultMeta(){let{meta:t,schemaId:r}=this.opts;return this.opts.defaultMeta=typeof t=="object"?t[r]||t:void 0}validate(t,r){let n;if(typeof t=="string"){if(n=this.getSchema(t),!n)throw new Error(`no schema with key or ref "${t}"`)}else n=this.compile(t);let o=n(r);return"$async"in n||(this.errors=n.errors),o}compile(t,r){let n=this._addSchema(t,r);return n.validate||this._compileSchemaEnv(n)}compileAsync(t,r){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");let{loadSchema:n}=this.opts;return o.call(this,t,r);async function o(u,d){await s.call(this,u.$schema);let p=this._addSchema(u,d);return p.validate||a.call(this,p)}async function s(u){u&&!this.getSchema(u)&&await o.call(this,{$ref:u},!0)}async function a(u){try{return this._compileSchemaEnv(u)}catch(d){if(!(d instanceof Lk.default))throw d;return i.call(this,d),await l.call(this,d.missingSchema),a.call(this,u)}}function i({missingSchema:u,missingRef:d}){if(this.refs[u])throw new Error(`AnySchema ${u} is loaded but ${d} cannot be resolved`)}async function l(u){let d=await c.call(this,u);this.refs[u]||await s.call(this,d.$schema),this.refs[u]||this.addSchema(d,u,r)}async function c(u){let d=this._loading[u];if(d)return d;try{return await(this._loading[u]=n(u))}finally{delete this._loading[u]}}}addSchema(t,r,n,o=this.opts.validateSchema){if(Array.isArray(t)){for(let a of t)this.addSchema(a,void 0,n,o);return this}let s;if(typeof t=="object"){let{schemaId:a}=this.opts;if(s=t[a],s!==void 0&&typeof s!="string")throw new Error(`schema ${a} must be string`)}return r=(0,Ds.normalizeId)(r||s),this._checkUnique(r),this.schemas[r]=this._addSchema(t,n,r,o,!0),this}addMetaSchema(t,r,n=this.opts.validateSchema){return this.addSchema(t,r,!0,n),this}validateSchema(t,r){if(typeof t=="boolean")return!0;let n;if(n=t.$schema,n!==void 0&&typeof n!="string")throw new Error("$schema must be a string");if(n=n||this.opts.defaultMeta||this.defaultMeta(),!n)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let o=this.validate(n,t);if(!o&&r){let s="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(s);else throw new Error(s)}return o}getSchema(t){let r;for(;typeof(r=Dk.call(this,t))=="string";)t=r;if(r===void 0){let{schemaId:n}=this.opts,o=new Ms.SchemaEnv({schema:{},schemaId:n});if(r=Ms.resolveSchema.call(this,o,t),!r)return;this.refs[t]=r}return r.validate||this._compileSchemaEnv(r)}removeSchema(t){if(t instanceof RegExp)return this._removeAllSchemas(this.schemas,t),this._removeAllSchemas(this.refs,t),this;switch(typeof t){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let r=Dk.call(this,t);return typeof r=="object"&&this._cache.delete(r.schema),delete this.schemas[t],delete this.refs[t],this}case"object":{let r=t;this._cache.delete(r);let n=t[this.opts.schemaId];return n&&(n=(0,Ds.normalizeId)(n),delete this.schemas[n],delete this.refs[n]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(t){for(let r of t)this.addKeyword(r);return this}addKeyword(t,r){let n;if(typeof t=="string")n=t,typeof r=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),r.keyword=n);else if(typeof t=="object"&&r===void 0){if(r=t,n=r.keyword,Array.isArray(n)&&!n.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(MA.call(this,n,r),!r)return(0,pd.eachItem)(n,s=>dd.call(this,s)),this;LA.call(this,r);let o={...r,type:(0,Hi.getJSONTypes)(r.type),schemaType:(0,Hi.getJSONTypes)(r.schemaType)};return(0,pd.eachItem)(n,o.type.length===0?s=>dd.call(this,s,o):s=>o.type.forEach(a=>dd.call(this,s,o,a))),this}getKeyword(t){let r=this.RULES.all[t];return typeof r=="object"?r.definition:!!r}removeKeyword(t){let{RULES:r}=this;delete r.keywords[t],delete r.all[t];for(let n of r.rules){let o=n.rules.findIndex(s=>s.keyword===t);o>=0&&n.rules.splice(o,1)}return this}addFormat(t,r){return typeof r=="string"&&(r=new RegExp(r)),this.formats[t]=r,this}errorsText(t=this.errors,{separator:r=", ",dataVar:n="data"}={}){return!t||t.length===0?"No errors":t.map(o=>`${n}${o.instancePath} ${o.message}`).reduce((o,s)=>o+r+s)}$dataMetaSchema(t,r){let n=this.RULES.all;t=JSON.parse(JSON.stringify(t));for(let o of r){let s=o.split("/").slice(1),a=t;for(let i of s)a=a[i];for(let i in n){let l=n[i];if(typeof l!="object")continue;let{$data:c}=l.definition,u=a[i];c&&u&&(a[i]=Fk(u))}}return t}_removeAllSchemas(t,r){for(let n in t){let o=t[n];(!r||r.test(n))&&(typeof o=="string"?delete t[n]:o&&!o.meta&&(this._cache.delete(o.schema),delete t[n]))}}_addSchema(t,r,n,o=this.opts.validateSchema,s=this.opts.addUsedSchema){let a,{schemaId:i}=this.opts;if(typeof t=="object")a=t[i];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof t!="boolean")throw new Error("schema must be object or boolean")}let l=this._cache.get(t);if(l!==void 0)return l;n=(0,Ds.normalizeId)(a||n);let c=Ds.getSchemaRefs.call(this,t,n);return l=new Ms.SchemaEnv({schema:t,schemaId:i,meta:r,baseId:n,localRefs:c}),this._cache.set(l.schema,l),s&&!n.startsWith("#")&&(n&&this._checkUnique(n),this.refs[n]=l),o&&this.validateSchema(t,!0),l}_checkUnique(t){if(this.schemas[t]||this.refs[t])throw new Error(`schema with key or id "${t}" already exists`)}_compileSchemaEnv(t){if(t.meta?this._compileMetaSchema(t):Ms.compileSchema.call(this,t),!t.validate)throw new Error("ajv implementation error");return t.validate}_compileMetaSchema(t){let r=this.opts;this.opts=this._metaOpts;try{Ms.compileSchema.call(this,t)}finally{this.opts=r}}};Ls.ValidationError=zA.default;Ls.MissingRefError=Lk.default;St.default=Ls;function Mk(e,t,r,n="error"){for(let o in e){let s=o;s in t&&this.logger[n](`${r}: option ${o}. ${e[s]}`)}}function Dk(e){return e=(0,Ds.normalizeId)(e),this.schemas[e]||this.refs[e]}function OA(){let e=this.opts.schemas;if(e)if(Array.isArray(e))this.addSchema(e);else for(let t in e)this.addSchema(e[t],t)}function IA(){for(let e in this.opts.formats){let t=this.opts.formats[e];t&&this.addFormat(e,t)}}function TA(e){if(Array.isArray(e)){this.addVocabulary(e);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let t in e){let r=e[t];r.keyword||(r.keyword=t),this.addKeyword(r)}}function CA(){let e={...this.opts};for(let t of SA)delete e[t];return e}var NA={log(){},warn(){},error(){}};function RA(e){if(e===!1)return NA;if(e===void 0)return console;if(e.log&&e.warn&&e.error)return e;throw new Error("logger must implement log, warn and error methods")}var jA=/^[a-z_$][a-z0-9_$:-]*$/i;function MA(e,t){let{RULES:r}=this;if((0,pd.eachItem)(e,n=>{if(r.keywords[n])throw new Error(`Keyword ${n} is already defined`);if(!jA.test(n))throw new Error(`Keyword ${n} has invalid name`)}),!!t&&t.$data&&!("code"in t||"validate"in t))throw new Error('$data keyword must have "code" or "validate" function')}function dd(e,t,r){var n;let o=t?.post;if(r&&o)throw new Error('keyword with "post" flag cannot have "type"');let{RULES:s}=this,a=o?s.post:s.rules.find(({type:l})=>l===r);if(a||(a={type:r,rules:[]},s.rules.push(a)),s.keywords[e]=!0,!t)return;let i={keyword:e,definition:{...t,type:(0,Hi.getJSONTypes)(t.type),schemaType:(0,Hi.getJSONTypes)(t.schemaType)}};t.before?DA.call(this,a,i,t.before):a.rules.push(i),s.all[e]=i,(n=t.implements)===null||n===void 0||n.forEach(l=>this.addKeyword(l))}function DA(e,t,r){let n=e.rules.findIndex(o=>o.keyword===r);n>=0?e.rules.splice(n,0,t):(e.rules.push(t),this.logger.warn(`rule ${r} is not defined`))}function LA(e){let{metaSchema:t}=e;t!==void 0&&(e.$data&&this.opts.$data&&(t=Fk(t)),e.validateSchema=this.compile(t,!0))}var VA={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function Fk(e){return{anyOf:[e,VA]}}});var Bk=U(fd=>{"use strict";Object.defineProperty(fd,"__esModule",{value:!0});var FA={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};fd.default=FA});var Kk=U(Tn=>{"use strict";Object.defineProperty(Tn,"__esModule",{value:!0});Tn.callRef=Tn.getValidate=void 0;var ZA=Ns(),Gk=rr(),Bt=be(),go=Br(),Uk=Vi(),Wi=Ce(),BA={keyword:"$ref",schemaType:"string",code(e){let{gen:t,schema:r,it:n}=e,{baseId:o,schemaEnv:s,validateName:a,opts:i,self:l}=n,{root:c}=s;if((r==="#"||r==="#/")&&o===c.baseId)return d();let u=Uk.resolveRef.call(l,c,o,r);if(u===void 0)throw new ZA.default(n.opts.uriResolver,o,r);if(u instanceof Uk.SchemaEnv)return p(u);return m(u);function d(){if(s===c)return Ji(e,a,s,s.$async);let b=t.scopeValue("root",{ref:c});return Ji(e,(0,Bt._)`${b}.validate`,c,c.$async)}function p(b){let f=qk(e,b);Ji(e,f,b,b.$async)}function m(b){let f=t.scopeValue("schema",i.code.source===!0?{ref:b,code:(0,Bt.stringify)(b)}:{ref:b}),h=t.name("valid"),g=e.subschema({schema:b,dataTypes:[],schemaPath:Bt.nil,topSchemaRef:f,errSchemaPath:r},h);e.mergeEvaluated(g),e.ok(h)}}};function qk(e,t){let{gen:r}=e;return t.validate?r.scopeValue("validate",{ref:t.validate}):(0,Bt._)`${r.scopeValue("wrapper",{ref:t})}.validate`}Tn.getValidate=qk;function Ji(e,t,r,n){let{gen:o,it:s}=e,{allErrors:a,schemaEnv:i,opts:l}=s,c=l.passContext?go.default.this:Bt.nil;n?u():d();function u(){if(!i.$async)throw new Error("async schema referenced by sync schema");let b=o.let("valid");o.try(()=>{o.code((0,Bt._)`await ${(0,Gk.callValidateCode)(e,t,c)}`),m(t),a||o.assign(b,!0)},f=>{o.if((0,Bt._)`!(${f} instanceof ${s.ValidationError})`,()=>o.throw(f)),p(f),a||o.assign(b,!1)}),e.ok(b)}function d(){e.result((0,Gk.callValidateCode)(e,t,c),()=>m(t),()=>p(t))}function p(b){let f=(0,Bt._)`${b}.errors`;o.assign(go.default.vErrors,(0,Bt._)`${go.default.vErrors} === null ? ${f} : ${go.default.vErrors}.concat(${f})`),o.assign(go.default.errors,(0,Bt._)`${go.default.vErrors}.length`)}function m(b){var f;if(!s.opts.unevaluated)return;let h=(f=r?.validate)===null||f===void 0?void 0:f.evaluated;if(s.props!==!0)if(h&&!h.dynamicProps)h.props!==void 0&&(s.props=Wi.mergeEvaluated.props(o,h.props,s.props));else{let g=o.var("props",(0,Bt._)`${b}.evaluated.props`);s.props=Wi.mergeEvaluated.props(o,g,s.props,Bt.Name)}if(s.items!==!0)if(h&&!h.dynamicItems)h.items!==void 0&&(s.items=Wi.mergeEvaluated.items(o,h.items,s.items));else{let g=o.var("items",(0,Bt._)`${b}.evaluated.items`);s.items=Wi.mergeEvaluated.items(o,g,s.items,Bt.Name)}}}Tn.callRef=Ji;Tn.default=BA});var Hk=U(md=>{"use strict";Object.defineProperty(md,"__esModule",{value:!0});var GA=Bk(),UA=Kk(),qA=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",GA.default,UA.default];md.default=qA});var Wk=U(hd=>{"use strict";Object.defineProperty(hd,"__esModule",{value:!0});var Yi=be(),pn=Yi.operators,Xi={maximum:{okStr:"<=",ok:pn.LTE,fail:pn.GT},minimum:{okStr:">=",ok:pn.GTE,fail:pn.LT},exclusiveMaximum:{okStr:"<",ok:pn.LT,fail:pn.GTE},exclusiveMinimum:{okStr:">",ok:pn.GT,fail:pn.LTE}},KA={message:({keyword:e,schemaCode:t})=>(0,Yi.str)`must be ${Xi[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>(0,Yi._)`{comparison: ${Xi[e].okStr}, limit: ${t}}`},HA={keyword:Object.keys(Xi),type:"number",schemaType:"number",$data:!0,error:KA,code(e){let{keyword:t,data:r,schemaCode:n}=e;e.fail$data((0,Yi._)`${r} ${Xi[t].fail} ${n} || isNaN(${r})`)}};hd.default=HA});var Jk=U(gd=>{"use strict";Object.defineProperty(gd,"__esModule",{value:!0});var Vs=be(),WA={message:({schemaCode:e})=>(0,Vs.str)`must be multiple of ${e}`,params:({schemaCode:e})=>(0,Vs._)`{multipleOf: ${e}}`},JA={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:WA,code(e){let{gen:t,data:r,schemaCode:n,it:o}=e,s=o.opts.multipleOfPrecision,a=t.let("res"),i=s?(0,Vs._)`Math.abs(Math.round(${a}) - ${a}) > 1e-${s}`:(0,Vs._)`${a} !== parseInt(${a})`;e.fail$data((0,Vs._)`(${n} === 0 || (${a} = ${r}/${n}, ${i}))`)}};gd.default=JA});var Xk=U(bd=>{"use strict";Object.defineProperty(bd,"__esModule",{value:!0});function Yk(e){let t=e.length,r=0,n=0,o;for(;n<t;)r++,o=e.charCodeAt(n++),o>=55296&&o<=56319&&n<t&&(o=e.charCodeAt(n),(o&64512)===56320&&n++);return r}bd.default=Yk;Yk.code='require("ajv/dist/runtime/ucs2length").default'});var Qk=U(yd=>{"use strict";Object.defineProperty(yd,"__esModule",{value:!0});var Cn=be(),YA=Ce(),XA=Xk(),QA={message({keyword:e,schemaCode:t}){let r=e==="maxLength"?"more":"fewer";return(0,Cn.str)`must NOT have ${r} than ${t} characters`},params:({schemaCode:e})=>(0,Cn._)`{limit: ${e}}`},eO={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:QA,code(e){let{keyword:t,data:r,schemaCode:n,it:o}=e,s=t==="maxLength"?Cn.operators.GT:Cn.operators.LT,a=o.opts.unicode===!1?(0,Cn._)`${r}.length`:(0,Cn._)`${(0,YA.useFunc)(e.gen,XA.default)}(${r})`;e.fail$data((0,Cn._)`${a} ${s} ${n}`)}};yd.default=eO});var e0=U(kd=>{"use strict";Object.defineProperty(kd,"__esModule",{value:!0});var tO=rr(),rO=Ce(),bo=be(),nO={message:({schemaCode:e})=>(0,bo.str)`must match pattern "${e}"`,params:({schemaCode:e})=>(0,bo._)`{pattern: ${e}}`},oO={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:nO,code(e){let{gen:t,data:r,$data:n,schema:o,schemaCode:s,it:a}=e,i=a.opts.unicodeRegExp?"u":"";if(n){let{regExp:l}=a.opts.code,c=l.code==="new RegExp"?(0,bo._)`new RegExp`:(0,rO.useFunc)(t,l),u=t.let("valid");t.try(()=>t.assign(u,(0,bo._)`${c}(${s}, ${i}).test(${r})`),()=>t.assign(u,!1)),e.fail$data((0,bo._)`!${u}`)}else{let l=(0,tO.usePattern)(e,o);e.fail$data((0,bo._)`!${l}.test(${r})`)}}};kd.default=oO});var t0=U(vd=>{"use strict";Object.defineProperty(vd,"__esModule",{value:!0});var Fs=be(),sO={message({keyword:e,schemaCode:t}){let r=e==="maxProperties"?"more":"fewer";return(0,Fs.str)`must NOT have ${r} than ${t} properties`},params:({schemaCode:e})=>(0,Fs._)`{limit: ${e}}`},aO={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:sO,code(e){let{keyword:t,data:r,schemaCode:n}=e,o=t==="maxProperties"?Fs.operators.GT:Fs.operators.LT;e.fail$data((0,Fs._)`Object.keys(${r}).length ${o} ${n}`)}};vd.default=aO});var r0=U(zd=>{"use strict";Object.defineProperty(zd,"__esModule",{value:!0});var Zs=rr(),Bs=be(),iO=Ce(),lO={message:({params:{missingProperty:e}})=>(0,Bs.str)`must have required property '${e}'`,params:({params:{missingProperty:e}})=>(0,Bs._)`{missingProperty: ${e}}`},cO={keyword:"required",type:"object",schemaType:"array",$data:!0,error:lO,code(e){let{gen:t,schema:r,schemaCode:n,data:o,$data:s,it:a}=e,{opts:i}=a;if(!s&&r.length===0)return;let l=r.length>=i.loopRequired;if(a.allErrors?c():u(),i.strictRequired){let m=e.parentSchema.properties,{definedProperties:b}=e.it;for(let f of r)if(m?.[f]===void 0&&!b.has(f)){let h=a.schemaEnv.baseId+a.errSchemaPath,g=`required property "${f}" is not defined at "${h}" (strictRequired)`;(0,iO.checkStrictMode)(a,g,a.opts.strictRequired)}}function c(){if(l||s)e.block$data(Bs.nil,d);else for(let m of r)(0,Zs.checkReportMissingProp)(e,m)}function u(){let m=t.let("missing");if(l||s){let b=t.let("valid",!0);e.block$data(b,()=>p(m,b)),e.ok(b)}else t.if((0,Zs.checkMissingProp)(e,r,m)),(0,Zs.reportMissingProp)(e,m),t.else()}function d(){t.forOf("prop",n,m=>{e.setParams({missingProperty:m}),t.if((0,Zs.noPropertyInData)(t,o,m,i.ownProperties),()=>e.error())})}function p(m,b){e.setParams({missingProperty:m}),t.forOf(m,n,()=>{t.assign(b,(0,Zs.propertyInData)(t,o,m,i.ownProperties)),t.if((0,Bs.not)(b),()=>{e.error(),t.break()})},Bs.nil)}}};zd.default=cO});var n0=U(_d=>{"use strict";Object.defineProperty(_d,"__esModule",{value:!0});var Gs=be(),uO={message({keyword:e,schemaCode:t}){let r=e==="maxItems"?"more":"fewer";return(0,Gs.str)`must NOT have ${r} than ${t} items`},params:({schemaCode:e})=>(0,Gs._)`{limit: ${e}}`},dO={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:uO,code(e){let{keyword:t,data:r,schemaCode:n}=e,o=t==="maxItems"?Gs.operators.GT:Gs.operators.LT;e.fail$data((0,Gs._)`${r}.length ${o} ${n}`)}};_d.default=dO});var Qi=U(wd=>{"use strict";Object.defineProperty(wd,"__esModule",{value:!0});var o0=Fu();o0.code='require("ajv/dist/runtime/equal").default';wd.default=o0});var s0=U(Sd=>{"use strict";Object.defineProperty(Sd,"__esModule",{value:!0});var xd=As(),Pt=be(),pO=Ce(),fO=Qi(),mO={message:({params:{i:e,j:t}})=>(0,Pt.str)`must NOT have duplicate items (items ## ${t} and ${e} are identical)`,params:({params:{i:e,j:t}})=>(0,Pt._)`{i: ${e}, j: ${t}}`},hO={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:mO,code(e){let{gen:t,data:r,$data:n,schema:o,parentSchema:s,schemaCode:a,it:i}=e;if(!n&&!o)return;let l=t.let("valid"),c=s.items?(0,xd.getSchemaTypes)(s.items):[];e.block$data(l,u,(0,Pt._)`${a} === false`),e.ok(l);function u(){let b=t.let("i",(0,Pt._)`${r}.length`),f=t.let("j");e.setParams({i:b,j:f}),t.assign(l,!0),t.if((0,Pt._)`${b} > 1`,()=>(d()?p:m)(b,f))}function d(){return c.length>0&&!c.some(b=>b==="object"||b==="array")}function p(b,f){let h=t.name("item"),g=(0,xd.checkDataTypes)(c,h,i.opts.strictNumbers,xd.DataType.Wrong),v=t.const("indices",(0,Pt._)`{}`);t.for((0,Pt._)`;${b}--;`,()=>{t.let(h,(0,Pt._)`${r}[${b}]`),t.if(g,(0,Pt._)`continue`),c.length>1&&t.if((0,Pt._)`typeof ${h} == "string"`,(0,Pt._)`${h} += "_"`),t.if((0,Pt._)`typeof ${v}[${h}] == "number"`,()=>{t.assign(f,(0,Pt._)`${v}[${h}]`),e.error(),t.assign(l,!1).break()}).code((0,Pt._)`${v}[${h}] = ${b}`)})}function m(b,f){let h=(0,pO.useFunc)(t,fO.default),g=t.name("outer");t.label(g).for((0,Pt._)`;${b}--;`,()=>t.for((0,Pt._)`${f} = ${b}; ${f}--;`,()=>t.if((0,Pt._)`${h}(${r}[${b}], ${r}[${f}])`,()=>{e.error(),t.assign(l,!1).break(g)})))}}};Sd.default=hO});var a0=U($d=>{"use strict";Object.defineProperty($d,"__esModule",{value:!0});var Pd=be(),gO=Ce(),bO=Qi(),yO={message:"must be equal to constant",params:({schemaCode:e})=>(0,Pd._)`{allowedValue: ${e}}`},kO={keyword:"const",$data:!0,error:yO,code(e){let{gen:t,data:r,$data:n,schemaCode:o,schema:s}=e;n||s&&typeof s=="object"?e.fail$data((0,Pd._)`!${(0,gO.useFunc)(t,bO.default)}(${r}, ${o})`):e.fail((0,Pd._)`${s} !== ${r}`)}};$d.default=kO});var i0=U(Ed=>{"use strict";Object.defineProperty(Ed,"__esModule",{value:!0});var Us=be(),vO=Ce(),zO=Qi(),_O={message:"must be equal to one of the allowed values",params:({schemaCode:e})=>(0,Us._)`{allowedValues: ${e}}`},wO={keyword:"enum",schemaType:"array",$data:!0,error:_O,code(e){let{gen:t,data:r,$data:n,schema:o,schemaCode:s,it:a}=e;if(!n&&o.length===0)throw new Error("enum must have non-empty array");let i=o.length>=a.opts.loopEnum,l,c=()=>l??(l=(0,vO.useFunc)(t,zO.default)),u;if(i||n)u=t.let("valid"),e.block$data(u,d);else{if(!Array.isArray(o))throw new Error("ajv implementation error");let m=t.const("vSchema",s);u=(0,Us.or)(...o.map((b,f)=>p(m,f)))}e.pass(u);function d(){t.assign(u,!1),t.forOf("v",s,m=>t.if((0,Us._)`${c()}(${r}, ${m})`,()=>t.assign(u,!0).break()))}function p(m,b){let f=o[b];return typeof f=="object"&&f!==null?(0,Us._)`${c()}(${r}, ${m}[${b}])`:(0,Us._)`${r} === ${f}`}}};Ed.default=wO});var l0=U(Ad=>{"use strict";Object.defineProperty(Ad,"__esModule",{value:!0});var xO=Wk(),SO=Jk(),PO=Qk(),$O=e0(),EO=t0(),AO=r0(),OO=n0(),IO=s0(),TO=a0(),CO=i0(),NO=[xO.default,SO.default,PO.default,$O.default,EO.default,AO.default,OO.default,IO.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},TO.default,CO.default];Ad.default=NO});var Id=U(qs=>{"use strict";Object.defineProperty(qs,"__esModule",{value:!0});qs.validateAdditionalItems=void 0;var Nn=be(),Od=Ce(),RO={message:({params:{len:e}})=>(0,Nn.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,Nn._)`{limit: ${e}}`},jO={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:RO,code(e){let{parentSchema:t,it:r}=e,{items:n}=t;if(!Array.isArray(n)){(0,Od.checkStrictMode)(r,'"additionalItems" is ignored when "items" is not an array of schemas');return}c0(e,n)}};function c0(e,t){let{gen:r,schema:n,data:o,keyword:s,it:a}=e;a.items=!0;let i=r.const("len",(0,Nn._)`${o}.length`);if(n===!1)e.setParams({len:t.length}),e.pass((0,Nn._)`${i} <= ${t.length}`);else if(typeof n=="object"&&!(0,Od.alwaysValidSchema)(a,n)){let c=r.var("valid",(0,Nn._)`${i} <= ${t.length}`);r.if((0,Nn.not)(c),()=>l(c)),e.ok(c)}function l(c){r.forRange("i",t.length,i,u=>{e.subschema({keyword:s,dataProp:u,dataPropType:Od.Type.Num},c),a.allErrors||r.if((0,Nn.not)(c),()=>r.break())})}}qs.validateAdditionalItems=c0;qs.default=jO});var Td=U(Ks=>{"use strict";Object.defineProperty(Ks,"__esModule",{value:!0});Ks.validateTuple=void 0;var u0=be(),el=Ce(),MO=rr(),DO={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(e){let{schema:t,it:r}=e;if(Array.isArray(t))return d0(e,"additionalItems",t);r.items=!0,!(0,el.alwaysValidSchema)(r,t)&&e.ok((0,MO.validateArray)(e))}};function d0(e,t,r=e.schema){let{gen:n,parentSchema:o,data:s,keyword:a,it:i}=e;u(o),i.opts.unevaluated&&r.length&&i.items!==!0&&(i.items=el.mergeEvaluated.items(n,r.length,i.items));let l=n.name("valid"),c=n.const("len",(0,u0._)`${s}.length`);r.forEach((d,p)=>{(0,el.alwaysValidSchema)(i,d)||(n.if((0,u0._)`${c} > ${p}`,()=>e.subschema({keyword:a,schemaProp:p,dataProp:p},l)),e.ok(l))});function u(d){let{opts:p,errSchemaPath:m}=i,b=r.length,f=b===d.minItems&&(b===d.maxItems||d[t]===!1);if(p.strictTuples&&!f){let h=`"${a}" is ${b}-tuple, but minItems or maxItems/${t} are not specified or different at path "${m}"`;(0,el.checkStrictMode)(i,h,p.strictTuples)}}}Ks.validateTuple=d0;Ks.default=DO});var p0=U(Cd=>{"use strict";Object.defineProperty(Cd,"__esModule",{value:!0});var LO=Td(),VO={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:e=>(0,LO.validateTuple)(e,"items")};Cd.default=VO});var m0=U(Nd=>{"use strict";Object.defineProperty(Nd,"__esModule",{value:!0});var f0=be(),FO=Ce(),ZO=rr(),BO=Id(),GO={message:({params:{len:e}})=>(0,f0.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,f0._)`{limit: ${e}}`},UO={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:GO,code(e){let{schema:t,parentSchema:r,it:n}=e,{prefixItems:o}=r;n.items=!0,!(0,FO.alwaysValidSchema)(n,t)&&(o?(0,BO.validateAdditionalItems)(e,o):e.ok((0,ZO.validateArray)(e)))}};Nd.default=UO});var h0=U(Rd=>{"use strict";Object.defineProperty(Rd,"__esModule",{value:!0});var or=be(),tl=Ce(),qO={message:({params:{min:e,max:t}})=>t===void 0?(0,or.str)`must contain at least ${e} valid item(s)`:(0,or.str)`must contain at least ${e} and no more than ${t} valid item(s)`,params:({params:{min:e,max:t}})=>t===void 0?(0,or._)`{minContains: ${e}}`:(0,or._)`{minContains: ${e}, maxContains: ${t}}`},KO={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:qO,code(e){let{gen:t,schema:r,parentSchema:n,data:o,it:s}=e,a,i,{minContains:l,maxContains:c}=n;s.opts.next?(a=l===void 0?1:l,i=c):a=1;let u=t.const("len",(0,or._)`${o}.length`);if(e.setParams({min:a,max:i}),i===void 0&&a===0){(0,tl.checkStrictMode)(s,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(i!==void 0&&a>i){(0,tl.checkStrictMode)(s,'"minContains" > "maxContains" is always invalid'),e.fail();return}if((0,tl.alwaysValidSchema)(s,r)){let f=(0,or._)`${u} >= ${a}`;i!==void 0&&(f=(0,or._)`${f} && ${u} <= ${i}`),e.pass(f);return}s.items=!0;let d=t.name("valid");i===void 0&&a===1?m(d,()=>t.if(d,()=>t.break())):a===0?(t.let(d,!0),i!==void 0&&t.if((0,or._)`${o}.length > 0`,p)):(t.let(d,!1),p()),e.result(d,()=>e.reset());function p(){let f=t.name("_valid"),h=t.let("count",0);m(f,()=>t.if(f,()=>b(h)))}function m(f,h){t.forRange("i",0,u,g=>{e.subschema({keyword:"contains",dataProp:g,dataPropType:tl.Type.Num,compositeRule:!0},f),h()})}function b(f){t.code((0,or._)`${f}++`),i===void 0?t.if((0,or._)`${f} >= ${a}`,()=>t.assign(d,!0).break()):(t.if((0,or._)`${f} > ${i}`,()=>t.assign(d,!1).break()),a===1?t.assign(d,!0):t.if((0,or._)`${f} >= ${a}`,()=>t.assign(d,!0)))}}};Rd.default=KO});var y0=U(Pr=>{"use strict";Object.defineProperty(Pr,"__esModule",{value:!0});Pr.validateSchemaDeps=Pr.validatePropertyDeps=Pr.error=void 0;var jd=be(),HO=Ce(),Hs=rr();Pr.error={message:({params:{property:e,depsCount:t,deps:r}})=>{let n=t===1?"property":"properties";return(0,jd.str)`must have ${n} ${r} when property ${e} is present`},params:({params:{property:e,depsCount:t,deps:r,missingProperty:n}})=>(0,jd._)`{property: ${e},
7
+ || ${a} === "boolean" || ${o} === null`).assign(i,(0,ge._)`[${o}]`)}}}function v$({gen:e,parentData:t,parentDataProperty:r},n){e.if((0,ge._)`${t} !== undefined`,()=>e.assign((0,ge._)`${t}[${r}]`,n))}function Bu(e,t,r,n=fo.Correct){let o=n===fo.Correct?ge.operators.EQ:ge.operators.NEQ,s;switch(e){case"null":return(0,ge._)`${t} ${o} null`;case"array":s=(0,ge._)`Array.isArray(${t})`;break;case"object":s=(0,ge._)`${t} && typeof ${t} == "object" && !Array.isArray(${t})`;break;case"integer":s=a((0,ge._)`!(${t} % 1) && !isNaN(${t})`);break;case"number":s=a();break;default:return(0,ge._)`typeof ${t} ${o} ${e}`}return n===fo.Correct?s:(0,ge.not)(s);function a(i=ge.nil){return(0,ge.and)((0,ge._)`typeof ${t} == "number"`,i,r?(0,ge._)`isFinite(${t})`:ge.nil)}}Ot.checkDataType=Bu;function Zu(e,t,r,n){if(e.length===1)return Bu(e[0],t,r,n);let o,s=(0,Ty.toHash)(e);if(s.array&&s.object){let a=(0,ge._)`typeof ${t} != "object"`;o=s.null?a:(0,ge._)`!${t} || ${a}`,delete s.null,delete s.array,delete s.object}else o=ge.nil;s.number&&delete s.integer;for(let a in s)o=(0,ge.and)(o,Bu(a,t,r,n));return o}Ot.checkDataTypes=Zu;var z$={message:({schema:e})=>`must be ${e}`,params:({schema:e,schemaValue:t})=>typeof e=="string"?(0,ge._)`{type: ${e}}`:(0,ge._)`{type: ${t}}`};function Gu(e){let t=_$(e);(0,h$.reportError)(t,z$)}Ot.reportTypeError=Gu;function _$(e){let{gen:t,data:r,schema:n}=e,o=(0,Ty.schemaRefOrVal)(e,n,"type");return{gen:t,keyword:"type",data:r,schema:n.type,schemaCode:o,schemaValue:o,parentSchema:n,params:{},it:e}}});var jy=q(Di=>{"use strict";Object.defineProperty(Di,"__esModule",{value:!0});Di.assignDefaults=void 0;var mo=be(),w$=Ce();function x$(e,t){let{properties:r,items:n}=e.schema;if(t==="object"&&r)for(let o in r)Ry(e,o,r[o].default);else t==="array"&&Array.isArray(n)&&n.forEach((o,s)=>Ry(e,s,o.default))}Di.assignDefaults=x$;function Ry(e,t,r){let{gen:n,compositeRule:o,data:s,opts:a}=e;if(r===void 0)return;let i=(0,mo._)`${s}${(0,mo.getProperty)(t)}`;if(o){(0,w$.checkStrictMode)(e,`default is ignored for: ${i}`);return}let c=(0,mo._)`${i} === undefined`;a.useDefaults==="empty"&&(c=(0,mo._)`${c} || ${i} === null || ${i} === ""`),n.if(c,(0,mo._)`${i} = ${(0,mo.stringify)(r)}`)}});var nr=q(Le=>{"use strict";Object.defineProperty(Le,"__esModule",{value:!0});Le.validateUnion=Le.validateArray=Le.usePattern=Le.callValidateCode=Le.schemaProperties=Le.allSchemaProperties=Le.noPropertyInData=Le.propertyInData=Le.isOwnProperty=Le.hasPropFunc=Le.reportMissingProp=Le.checkMissingProp=Le.checkReportMissingProp=void 0;var Je=be(),Uu=Ce(),cn=Gr(),S$=Ce();function P$(e,t){let{gen:r,data:n,it:o}=e;r.if(Ku(r,n,t,o.opts.ownProperties),()=>{e.setParams({missingProperty:(0,Je._)`${t}`},!0),e.error()})}Le.checkReportMissingProp=P$;function $$({gen:e,data:t,it:{opts:r}},n,o){return(0,Je.or)(...n.map(s=>(0,Je.and)(Ku(e,t,s,r.ownProperties),(0,Je._)`${o} = ${s}`)))}Le.checkMissingProp=$$;function E$(e,t){e.setParams({missingProperty:t},!0),e.error()}Le.reportMissingProp=E$;function My(e){return e.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,Je._)`Object.prototype.hasOwnProperty`})}Le.hasPropFunc=My;function qu(e,t,r){return(0,Je._)`${My(e)}.call(${t}, ${r})`}Le.isOwnProperty=qu;function A$(e,t,r,n){let o=(0,Je._)`${t}${(0,Je.getProperty)(r)} !== undefined`;return n?(0,Je._)`${o} && ${qu(e,t,r)}`:o}Le.propertyInData=A$;function Ku(e,t,r,n){let o=(0,Je._)`${t}${(0,Je.getProperty)(r)} === undefined`;return n?(0,Je.or)(o,(0,Je.not)(qu(e,t,r))):o}Le.noPropertyInData=Ku;function Dy(e){return e?Object.keys(e).filter(t=>t!=="__proto__"):[]}Le.allSchemaProperties=Dy;function O$(e,t){return Dy(t).filter(r=>!(0,Uu.alwaysValidSchema)(e,t[r]))}Le.schemaProperties=O$;function I$({schemaCode:e,data:t,it:{gen:r,topSchemaRef:n,schemaPath:o,errorPath:s},it:a},i,c,l){let u=l?(0,Je._)`${e}, ${t}, ${n}${o}`:t,d=[[cn.default.instancePath,(0,Je.strConcat)(cn.default.instancePath,s)],[cn.default.parentData,a.parentData],[cn.default.parentDataProperty,a.parentDataProperty],[cn.default.rootData,cn.default.rootData]];a.opts.dynamicRef&&d.push([cn.default.dynamicAnchors,cn.default.dynamicAnchors]);let f=(0,Je._)`${u}, ${r.object(...d)}`;return c!==Je.nil?(0,Je._)`${i}.call(${c}, ${f})`:(0,Je._)`${i}(${f})`}Le.callValidateCode=I$;var T$=(0,Je._)`new RegExp`;function C$({gen:e,it:{opts:t}},r){let n=t.unicodeRegExp?"u":"",{regExp:o}=t.code,s=o(r,n);return e.scopeValue("pattern",{key:s.toString(),ref:s,code:(0,Je._)`${o.code==="new RegExp"?T$:(0,S$.useFunc)(e,o)}(${r}, ${n})`})}Le.usePattern=C$;function N$(e){let{gen:t,data:r,keyword:n,it:o}=e,s=t.name("valid");if(o.allErrors){let i=t.let("valid",!0);return a(()=>t.assign(i,!1)),i}return t.var(s,!0),a(()=>t.break()),s;function a(i){let c=t.const("len",(0,Je._)`${r}.length`);t.forRange("i",0,c,l=>{e.subschema({keyword:n,dataProp:l,dataPropType:Uu.Type.Num},s),t.if((0,Je.not)(s),i)})}}Le.validateArray=N$;function R$(e){let{gen:t,schema:r,keyword:n,it:o}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");if(r.some(c=>(0,Uu.alwaysValidSchema)(o,c))&&!o.opts.unevaluated)return;let a=t.let("valid",!1),i=t.name("_valid");t.block(()=>r.forEach((c,l)=>{let u=e.subschema({keyword:n,schemaProp:l,compositeRule:!0},i);t.assign(a,(0,Je._)`${a} || ${i}`),e.mergeValidEvaluated(u,i)||t.if((0,Je.not)(a))})),e.result(a,()=>e.reset(),()=>e.error(!0))}Le.validateUnion=R$});var Fy=q(Pr=>{"use strict";Object.defineProperty(Pr,"__esModule",{value:!0});Pr.validateKeywordUsage=Pr.validSchemaType=Pr.funcKeywordCode=Pr.macroKeywordCode=void 0;var Mt=be(),On=Gr(),j$=nr(),M$=Ts();function D$(e,t){let{gen:r,keyword:n,schema:o,parentSchema:s,it:a}=e,i=t.macro.call(a.self,o,s,a),c=Vy(r,n,i);a.opts.validateSchema!==!1&&a.self.validateSchema(i,!0);let l=r.name("valid");e.subschema({schema:i,schemaPath:Mt.nil,errSchemaPath:`${a.errSchemaPath}/${n}`,topSchemaRef:c,compositeRule:!0},l),e.pass(l,()=>e.error(!0))}Pr.macroKeywordCode=D$;function L$(e,t){var r;let{gen:n,keyword:o,schema:s,parentSchema:a,$data:i,it:c}=e;F$(c,t);let l=!i&&t.compile?t.compile.call(c.self,s,a,c):t.validate,u=Vy(n,o,l),d=n.let("valid");e.block$data(d,f),e.ok((r=t.valid)!==null&&r!==void 0?r:d);function f(){if(t.errors===!1)p(),t.modifying&&Ly(e),m(()=>e.error());else{let b=t.async?g():h();t.modifying&&Ly(e),m(()=>V$(e,b))}}function g(){let b=n.let("ruleErrs",null);return n.try(()=>p((0,Mt._)`await `),v=>n.assign(d,!1).if((0,Mt._)`${v} instanceof ${c.ValidationError}`,()=>n.assign(b,(0,Mt._)`${v}.errors`),()=>n.throw(v))),b}function h(){let b=(0,Mt._)`${u}.errors`;return n.assign(b,null),p(Mt.nil),b}function p(b=t.async?(0,Mt._)`await `:Mt.nil){let v=c.opts.passContext?On.default.this:On.default.self,_=!("compile"in t&&!i||t.schema===!1);n.assign(d,(0,Mt._)`${b}${(0,j$.callValidateCode)(e,u,v,_)}`,t.modifying)}function m(b){var v;n.if((0,Mt.not)((v=t.valid)!==null&&v!==void 0?v:d),b)}}Pr.funcKeywordCode=L$;function Ly(e){let{gen:t,data:r,it:n}=e;t.if(n.parentData,()=>t.assign(r,(0,Mt._)`${n.parentData}[${n.parentDataProperty}]`))}function V$(e,t){let{gen:r}=e;r.if((0,Mt._)`Array.isArray(${t})`,()=>{r.assign(On.default.vErrors,(0,Mt._)`${On.default.vErrors} === null ? ${t} : ${On.default.vErrors}.concat(${t})`).assign(On.default.errors,(0,Mt._)`${On.default.vErrors}.length`),(0,M$.extendErrors)(e)},()=>e.error())}function F$({schemaEnv:e},t){if(t.async&&!e.$async)throw new Error("async keyword in sync schema")}function Vy(e,t,r){if(r===void 0)throw new Error(`keyword "${t}" failed to compile`);return e.scopeValue("keyword",typeof r=="function"?{ref:r}:{ref:r,code:(0,Mt.stringify)(r)})}function B$(e,t,r=!1){return!t.length||t.some(n=>n==="array"?Array.isArray(e):n==="object"?e&&typeof e=="object"&&!Array.isArray(e):typeof e==n||r&&typeof e>"u")}Pr.validSchemaType=B$;function Z$({schema:e,opts:t,self:r,errSchemaPath:n},o,s){if(Array.isArray(o.keyword)?!o.keyword.includes(s):o.keyword!==s)throw new Error("ajv implementation error");let a=o.dependencies;if(a?.some(i=>!Object.prototype.hasOwnProperty.call(e,i)))throw new Error(`parent schema must have dependencies of ${s}: ${a.join(",")}`);if(o.validateSchema&&!o.validateSchema(e[s])){let c=`keyword "${s}" value is invalid at path "${n}": `+r.errorsText(o.validateSchema.errors);if(t.validateSchema==="log")r.logger.error(c);else throw new Error(c)}}Pr.validateKeywordUsage=Z$});var Zy=q(un=>{"use strict";Object.defineProperty(un,"__esModule",{value:!0});un.extendSubschemaMode=un.extendSubschemaData=un.getSubschema=void 0;var $r=be(),By=Ce();function G$(e,{keyword:t,schemaProp:r,schema:n,schemaPath:o,errSchemaPath:s,topSchemaRef:a}){if(t!==void 0&&n!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(t!==void 0){let i=e.schema[t];return r===void 0?{schema:i,schemaPath:(0,$r._)`${e.schemaPath}${(0,$r.getProperty)(t)}`,errSchemaPath:`${e.errSchemaPath}/${t}`}:{schema:i[r],schemaPath:(0,$r._)`${e.schemaPath}${(0,$r.getProperty)(t)}${(0,$r.getProperty)(r)}`,errSchemaPath:`${e.errSchemaPath}/${t}/${(0,By.escapeFragment)(r)}`}}if(n!==void 0){if(o===void 0||s===void 0||a===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:n,schemaPath:o,topSchemaRef:a,errSchemaPath:s}}throw new Error('either "keyword" or "schema" must be passed')}un.getSubschema=G$;function U$(e,t,{dataProp:r,dataPropType:n,data:o,dataTypes:s,propertyName:a}){if(o!==void 0&&r!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');let{gen:i}=t;if(r!==void 0){let{errorPath:l,dataPathArr:u,opts:d}=t,f=i.let("data",(0,$r._)`${t.data}${(0,$r.getProperty)(r)}`,!0);c(f),e.errorPath=(0,$r.str)`${l}${(0,By.getErrorPath)(r,n,d.jsPropertySyntax)}`,e.parentDataProperty=(0,$r._)`${r}`,e.dataPathArr=[...u,e.parentDataProperty]}if(o!==void 0){let l=o instanceof $r.Name?o:i.let("data",o,!0);c(l),a!==void 0&&(e.propertyName=a)}s&&(e.dataTypes=s);function c(l){e.data=l,e.dataLevel=t.dataLevel+1,e.dataTypes=[],t.definedProperties=new Set,e.parentData=t.data,e.dataNames=[...t.dataNames,l]}}un.extendSubschemaData=U$;function q$(e,{jtdDiscriminator:t,jtdMetadata:r,compositeRule:n,createErrors:o,allErrors:s}){n!==void 0&&(e.compositeRule=n),o!==void 0&&(e.createErrors=o),s!==void 0&&(e.allErrors=s),e.jtdDiscriminator=t,e.jtdMetadata=r}un.extendSubschemaMode=q$});var Hu=q((X3,Gy)=>{"use strict";Gy.exports=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var n,o,s;if(Array.isArray(t)){if(n=t.length,n!=r.length)return!1;for(o=n;o--!==0;)if(!e(t[o],r[o]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(s=Object.keys(t),n=s.length,n!==Object.keys(r).length)return!1;for(o=n;o--!==0;)if(!Object.prototype.hasOwnProperty.call(r,s[o]))return!1;for(o=n;o--!==0;){var a=s[o];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r}});var qy=q((Q3,Uy)=>{"use strict";var dn=Uy.exports=function(e,t,r){typeof t=="function"&&(r=t,t={}),r=t.cb||r;var n=typeof r=="function"?r:r.pre||function(){},o=r.post||function(){};Li(t,n,o,e,"",e)};dn.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};dn.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};dn.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};dn.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function Li(e,t,r,n,o,s,a,i,c,l){if(n&&typeof n=="object"&&!Array.isArray(n)){t(n,o,s,a,i,c,l);for(var u in n){var d=n[u];if(Array.isArray(d)){if(u in dn.arrayKeywords)for(var f=0;f<d.length;f++)Li(e,t,r,d[f],o+"/"+u+"/"+f,s,o,u,n,f)}else if(u in dn.propsKeywords){if(d&&typeof d=="object")for(var g in d)Li(e,t,r,d[g],o+"/"+u+"/"+K$(g),s,o,u,n,g)}else(u in dn.keywords||e.allKeys&&!(u in dn.skipKeywords))&&Li(e,t,r,d,o+"/"+u,s,o,u,n)}r(n,o,s,a,i,c,l)}}function K$(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}});var Ns=q(Bt=>{"use strict";Object.defineProperty(Bt,"__esModule",{value:!0});Bt.getSchemaRefs=Bt.resolveUrl=Bt.normalizeId=Bt._getFullPath=Bt.getFullPath=Bt.inlineRef=void 0;var H$=Ce(),W$=Hu(),J$=qy(),Y$=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function X$(e,t=!0){return typeof e=="boolean"?!0:t===!0?!Wu(e):t?Ky(e)<=t:!1}Bt.inlineRef=X$;var Q$=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function Wu(e){for(let t in e){if(Q$.has(t))return!0;let r=e[t];if(Array.isArray(r)&&r.some(Wu)||typeof r=="object"&&Wu(r))return!0}return!1}function Ky(e){let t=0;for(let r in e){if(r==="$ref")return 1/0;if(t++,!Y$.has(r)&&(typeof e[r]=="object"&&(0,H$.eachItem)(e[r],n=>t+=Ky(n)),t===1/0))return 1/0}return t}function Hy(e,t="",r){r!==!1&&(t=ho(t));let n=e.parse(t);return Wy(e,n)}Bt.getFullPath=Hy;function Wy(e,t){return e.serialize(t).split("#")[0]+"#"}Bt._getFullPath=Wy;var eE=/#\/?$/;function ho(e){return e?e.replace(eE,""):""}Bt.normalizeId=ho;function tE(e,t,r){return r=ho(r),e.resolve(t,r)}Bt.resolveUrl=tE;var rE=/^[a-z_][-a-z0-9._]*$/i;function nE(e,t){if(typeof e=="boolean")return{};let{schemaId:r,uriResolver:n}=this.opts,o=ho(e[r]||t),s={"":o},a=Hy(n,o,!1),i={},c=new Set;return J$(e,{allKeys:!0},(d,f,g,h)=>{if(h===void 0)return;let p=a+f,m=s[h];typeof d[r]=="string"&&(m=b.call(this,d[r])),v.call(this,d.$anchor),v.call(this,d.$dynamicAnchor),s[f]=m;function b(_){let z=this.opts.uriResolver.resolve;if(_=ho(m?z(m,_):_),c.has(_))throw u(_);c.add(_);let k=this.refs[_];return typeof k=="string"&&(k=this.refs[k]),typeof k=="object"?l(d,k.schema,_):_!==ho(p)&&(_[0]==="#"?(l(d,i[_],_),i[_]=d):this.refs[_]=p),_}function v(_){if(typeof _=="string"){if(!rE.test(_))throw new Error(`invalid anchor "${_}"`);b.call(this,`#${_}`)}}}),i;function l(d,f,g){if(f!==void 0&&!W$(d,f))throw u(g)}function u(d){return new Error(`reference "${d}" resolves to more than one schema`)}}Bt.getSchemaRefs=nE});var Ms=q(pn=>{"use strict";Object.defineProperty(pn,"__esModule",{value:!0});pn.getData=pn.KeywordCxt=pn.validateFunctionCode=void 0;var ek=Ay(),Jy=Cs(),Yu=Fu(),Vi=Cs(),oE=jy(),js=Fy(),Ju=Zy(),se=be(),de=Gr(),sE=Ns(),Ur=Ce(),Rs=Ts();function aE(e){if(nk(e)&&(ok(e),rk(e))){cE(e);return}tk(e,()=>(0,ek.topBoolOrEmptySchema)(e))}pn.validateFunctionCode=aE;function tk({gen:e,validateName:t,schema:r,schemaEnv:n,opts:o},s){o.code.es5?e.func(t,(0,se._)`${de.default.data}, ${de.default.valCxt}`,n.$async,()=>{e.code((0,se._)`"use strict"; ${Yy(r,o)}`),lE(e,o),e.code(s)}):e.func(t,(0,se._)`${de.default.data}, ${iE(o)}`,n.$async,()=>e.code(Yy(r,o)).code(s))}function iE(e){return(0,se._)`{${de.default.instancePath}="", ${de.default.parentData}, ${de.default.parentDataProperty}, ${de.default.rootData}=${de.default.data}${e.dynamicRef?(0,se._)`, ${de.default.dynamicAnchors}={}`:se.nil}}={}`}function lE(e,t){e.if(de.default.valCxt,()=>{e.var(de.default.instancePath,(0,se._)`${de.default.valCxt}.${de.default.instancePath}`),e.var(de.default.parentData,(0,se._)`${de.default.valCxt}.${de.default.parentData}`),e.var(de.default.parentDataProperty,(0,se._)`${de.default.valCxt}.${de.default.parentDataProperty}`),e.var(de.default.rootData,(0,se._)`${de.default.valCxt}.${de.default.rootData}`),t.dynamicRef&&e.var(de.default.dynamicAnchors,(0,se._)`${de.default.valCxt}.${de.default.dynamicAnchors}`)},()=>{e.var(de.default.instancePath,(0,se._)`""`),e.var(de.default.parentData,(0,se._)`undefined`),e.var(de.default.parentDataProperty,(0,se._)`undefined`),e.var(de.default.rootData,de.default.data),t.dynamicRef&&e.var(de.default.dynamicAnchors,(0,se._)`{}`)})}function cE(e){let{schema:t,opts:r,gen:n}=e;tk(e,()=>{r.$comment&&t.$comment&&ak(e),mE(e),n.let(de.default.vErrors,null),n.let(de.default.errors,0),r.unevaluated&&uE(e),sk(e),bE(e)})}function uE(e){let{gen:t,validateName:r}=e;e.evaluated=t.const("evaluated",(0,se._)`${r}.evaluated`),t.if((0,se._)`${e.evaluated}.dynamicProps`,()=>t.assign((0,se._)`${e.evaluated}.props`,(0,se._)`undefined`)),t.if((0,se._)`${e.evaluated}.dynamicItems`,()=>t.assign((0,se._)`${e.evaluated}.items`,(0,se._)`undefined`))}function Yy(e,t){let r=typeof e=="object"&&e[t.schemaId];return r&&(t.code.source||t.code.process)?(0,se._)`/*# sourceURL=${r} */`:se.nil}function dE(e,t){if(nk(e)&&(ok(e),rk(e))){pE(e,t);return}(0,ek.boolOrEmptySchema)(e,t)}function rk({schema:e,self:t}){if(typeof e=="boolean")return!e;for(let r in e)if(t.RULES.all[r])return!0;return!1}function nk(e){return typeof e.schema!="boolean"}function pE(e,t){let{schema:r,gen:n,opts:o}=e;o.$comment&&r.$comment&&ak(e),hE(e),gE(e);let s=n.const("_errs",de.default.errors);sk(e,s),n.var(t,(0,se._)`${s} === ${de.default.errors}`)}function ok(e){(0,Ur.checkUnknownRules)(e),fE(e)}function sk(e,t){if(e.opts.jtd)return Xy(e,[],!1,t);let r=(0,Jy.getSchemaTypes)(e.schema),n=(0,Jy.coerceAndCheckDataType)(e,r);Xy(e,r,!n,t)}function fE(e){let{schema:t,errSchemaPath:r,opts:n,self:o}=e;t.$ref&&n.ignoreKeywordsWithRef&&(0,Ur.schemaHasRulesButRef)(t,o.RULES)&&o.logger.warn(`$ref: keywords ignored in schema at path "${r}"`)}function mE(e){let{schema:t,opts:r}=e;t.default!==void 0&&r.useDefaults&&r.strictSchema&&(0,Ur.checkStrictMode)(e,"default is ignored in the schema root")}function hE(e){let t=e.schema[e.opts.schemaId];t&&(e.baseId=(0,sE.resolveUrl)(e.opts.uriResolver,e.baseId,t))}function gE(e){if(e.schema.$async&&!e.schemaEnv.$async)throw new Error("async schema in sync schema")}function ak({gen:e,schemaEnv:t,schema:r,errSchemaPath:n,opts:o}){let s=r.$comment;if(o.$comment===!0)e.code((0,se._)`${de.default.self}.logger.log(${s})`);else if(typeof o.$comment=="function"){let a=(0,se.str)`${n}/$comment`,i=e.scopeValue("root",{ref:t.root});e.code((0,se._)`${de.default.self}.opts.$comment(${s}, ${a}, ${i}.schema)`)}}function bE(e){let{gen:t,schemaEnv:r,validateName:n,ValidationError:o,opts:s}=e;r.$async?t.if((0,se._)`${de.default.errors} === 0`,()=>t.return(de.default.data),()=>t.throw((0,se._)`new ${o}(${de.default.vErrors})`)):(t.assign((0,se._)`${n}.errors`,de.default.vErrors),s.unevaluated&&yE(e),t.return((0,se._)`${de.default.errors} === 0`))}function yE({gen:e,evaluated:t,props:r,items:n}){r instanceof se.Name&&e.assign((0,se._)`${t}.props`,r),n instanceof se.Name&&e.assign((0,se._)`${t}.items`,n)}function Xy(e,t,r,n){let{gen:o,schema:s,data:a,allErrors:i,opts:c,self:l}=e,{RULES:u}=l;if(s.$ref&&(c.ignoreKeywordsWithRef||!(0,Ur.schemaHasRulesButRef)(s,u))){o.block(()=>lk(e,"$ref",u.all.$ref.definition));return}c.jtd||kE(e,t),o.block(()=>{for(let f of u.rules)d(f);d(u.post)});function d(f){(0,Yu.shouldUseGroup)(s,f)&&(f.type?(o.if((0,Vi.checkDataType)(f.type,a,c.strictNumbers)),Qy(e,f),t.length===1&&t[0]===f.type&&r&&(o.else(),(0,Vi.reportTypeError)(e)),o.endIf()):Qy(e,f),i||o.if((0,se._)`${de.default.errors} === ${n||0}`))}}function Qy(e,t){let{gen:r,schema:n,opts:{useDefaults:o}}=e;o&&(0,oE.assignDefaults)(e,t.type),r.block(()=>{for(let s of t.rules)(0,Yu.shouldUseRule)(n,s)&&lk(e,s.keyword,s.definition,t.type)})}function kE(e,t){e.schemaEnv.meta||!e.opts.strictTypes||(vE(e,t),e.opts.allowUnionTypes||zE(e,t),_E(e,e.dataTypes))}function vE(e,t){if(t.length){if(!e.dataTypes.length){e.dataTypes=t;return}t.forEach(r=>{ik(e.dataTypes,r)||Xu(e,`type "${r}" not allowed by context "${e.dataTypes.join(",")}"`)}),xE(e,t)}}function zE(e,t){t.length>1&&!(t.length===2&&t.includes("null"))&&Xu(e,"use allowUnionTypes to allow union type keyword")}function _E(e,t){let r=e.self.RULES.all;for(let n in r){let o=r[n];if(typeof o=="object"&&(0,Yu.shouldUseRule)(e.schema,o)){let{type:s}=o.definition;s.length&&!s.some(a=>wE(t,a))&&Xu(e,`missing type "${s.join(",")}" for keyword "${n}"`)}}}function wE(e,t){return e.includes(t)||t==="number"&&e.includes("integer")}function ik(e,t){return e.includes(t)||t==="integer"&&e.includes("number")}function xE(e,t){let r=[];for(let n of e.dataTypes)ik(t,n)?r.push(n):t.includes("integer")&&n==="number"&&r.push("integer");e.dataTypes=r}function Xu(e,t){let r=e.schemaEnv.baseId+e.errSchemaPath;t+=` at "${r}" (strictTypes)`,(0,Ur.checkStrictMode)(e,t,e.opts.strictTypes)}var Fi=class{constructor(t,r,n){if((0,js.validateKeywordUsage)(t,r,n),this.gen=t.gen,this.allErrors=t.allErrors,this.keyword=n,this.data=t.data,this.schema=t.schema[n],this.$data=r.$data&&t.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,Ur.schemaRefOrVal)(t,this.schema,n,this.$data),this.schemaType=r.schemaType,this.parentSchema=t.schema,this.params={},this.it=t,this.def=r,this.$data)this.schemaCode=t.gen.const("vSchema",ck(this.$data,t));else if(this.schemaCode=this.schemaValue,!(0,js.validSchemaType)(this.schema,r.schemaType,r.allowUndefined))throw new Error(`${n} value must be ${JSON.stringify(r.schemaType)}`);("code"in r?r.trackErrors:r.errors!==!1)&&(this.errsCount=t.gen.const("_errs",de.default.errors))}result(t,r,n){this.failResult((0,se.not)(t),r,n)}failResult(t,r,n){this.gen.if(t),n?n():this.error(),r?(this.gen.else(),r(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(t,r){this.failResult((0,se.not)(t),void 0,r)}fail(t){if(t===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(t),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(t){if(!this.$data)return this.fail(t);let{schemaCode:r}=this;this.fail((0,se._)`${r} !== undefined && (${(0,se.or)(this.invalid$data(),t)})`)}error(t,r,n){if(r){this.setParams(r),this._error(t,n),this.setParams({});return}this._error(t,n)}_error(t,r){(t?Rs.reportExtraError:Rs.reportError)(this,this.def.error,r)}$dataError(){(0,Rs.reportError)(this,this.def.$dataError||Rs.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,Rs.resetErrorsCount)(this.gen,this.errsCount)}ok(t){this.allErrors||this.gen.if(t)}setParams(t,r){r?Object.assign(this.params,t):this.params=t}block$data(t,r,n=se.nil){this.gen.block(()=>{this.check$data(t,n),r()})}check$data(t=se.nil,r=se.nil){if(!this.$data)return;let{gen:n,schemaCode:o,schemaType:s,def:a}=this;n.if((0,se.or)((0,se._)`${o} === undefined`,r)),t!==se.nil&&n.assign(t,!0),(s.length||a.validateSchema)&&(n.elseIf(this.invalid$data()),this.$dataError(),t!==se.nil&&n.assign(t,!1)),n.else()}invalid$data(){let{gen:t,schemaCode:r,schemaType:n,def:o,it:s}=this;return(0,se.or)(a(),i());function a(){if(n.length){if(!(r instanceof se.Name))throw new Error("ajv implementation error");let c=Array.isArray(n)?n:[n];return(0,se._)`${(0,Vi.checkDataTypes)(c,r,s.opts.strictNumbers,Vi.DataType.Wrong)}`}return se.nil}function i(){if(o.validateSchema){let c=t.scopeValue("validate$data",{ref:o.validateSchema});return(0,se._)`!${c}(${r})`}return se.nil}}subschema(t,r){let n=(0,Ju.getSubschema)(this.it,t);(0,Ju.extendSubschemaData)(n,this.it,t),(0,Ju.extendSubschemaMode)(n,t);let o={...this.it,...n,items:void 0,props:void 0};return dE(o,r),o}mergeEvaluated(t,r){let{it:n,gen:o}=this;n.opts.unevaluated&&(n.props!==!0&&t.props!==void 0&&(n.props=Ur.mergeEvaluated.props(o,t.props,n.props,r)),n.items!==!0&&t.items!==void 0&&(n.items=Ur.mergeEvaluated.items(o,t.items,n.items,r)))}mergeValidEvaluated(t,r){let{it:n,gen:o}=this;if(n.opts.unevaluated&&(n.props!==!0||n.items!==!0))return o.if(r,()=>this.mergeEvaluated(t,se.Name)),!0}};pn.KeywordCxt=Fi;function lk(e,t,r,n){let o=new Fi(e,r,t);"code"in r?r.code(o,n):o.$data&&r.validate?(0,js.funcKeywordCode)(o,r):"macro"in r?(0,js.macroKeywordCode)(o,r):(r.compile||r.validate)&&(0,js.funcKeywordCode)(o,r)}var SE=/^\/(?:[^~]|~0|~1)*$/,PE=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function ck(e,{dataLevel:t,dataNames:r,dataPathArr:n}){let o,s;if(e==="")return de.default.rootData;if(e[0]==="/"){if(!SE.test(e))throw new Error(`Invalid JSON-pointer: ${e}`);o=e,s=de.default.rootData}else{let l=PE.exec(e);if(!l)throw new Error(`Invalid JSON-pointer: ${e}`);let u=+l[1];if(o=l[2],o==="#"){if(u>=t)throw new Error(c("property/index",u));return n[t-u]}if(u>t)throw new Error(c("data",u));if(s=r[t-u],!o)return s}let a=s,i=o.split("/");for(let l of i)l&&(s=(0,se._)`${s}${(0,se.getProperty)((0,Ur.unescapeJsonPointer)(l))}`,a=(0,se._)`${a} && ${s}`);return a;function c(l,u){return`Cannot access ${l} ${u} levels up, current level is ${t}`}}pn.getData=ck});var Bi=q(ed=>{"use strict";Object.defineProperty(ed,"__esModule",{value:!0});var Qu=class extends Error{constructor(t){super("validation failed"),this.errors=t,this.ajv=this.validation=!0}};ed.default=Qu});var Ds=q(nd=>{"use strict";Object.defineProperty(nd,"__esModule",{value:!0});var td=Ns(),rd=class extends Error{constructor(t,r,n,o){super(o||`can't resolve reference ${n} from id ${r}`),this.missingRef=(0,td.resolveUrl)(t,r,n),this.missingSchema=(0,td.normalizeId)((0,td.getFullPath)(t,this.missingRef))}};nd.default=rd});var Gi=q(or=>{"use strict";Object.defineProperty(or,"__esModule",{value:!0});or.resolveSchema=or.getCompilingSchema=or.resolveRef=or.compileSchema=or.SchemaEnv=void 0;var gr=be(),$E=Bi(),In=Gr(),br=Ns(),uk=Ce(),EE=Ms(),go=class{constructor(t){var r;this.refs={},this.dynamicAnchors={};let n;typeof t.schema=="object"&&(n=t.schema),this.schema=t.schema,this.schemaId=t.schemaId,this.root=t.root||this,this.baseId=(r=t.baseId)!==null&&r!==void 0?r:(0,br.normalizeId)(n?.[t.schemaId||"$id"]),this.schemaPath=t.schemaPath,this.localRefs=t.localRefs,this.meta=t.meta,this.$async=n?.$async,this.refs={}}};or.SchemaEnv=go;function sd(e){let t=dk.call(this,e);if(t)return t;let r=(0,br.getFullPath)(this.opts.uriResolver,e.root.baseId),{es5:n,lines:o}=this.opts.code,{ownProperties:s}=this.opts,a=new gr.CodeGen(this.scope,{es5:n,lines:o,ownProperties:s}),i;e.$async&&(i=a.scopeValue("Error",{ref:$E.default,code:(0,gr._)`require("ajv/dist/runtime/validation_error").default`}));let c=a.scopeName("validate");e.validateName=c;let l={gen:a,allErrors:this.opts.allErrors,data:In.default.data,parentData:In.default.parentData,parentDataProperty:In.default.parentDataProperty,dataNames:[In.default.data],dataPathArr:[gr.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:a.scopeValue("schema",this.opts.code.source===!0?{ref:e.schema,code:(0,gr.stringify)(e.schema)}:{ref:e.schema}),validateName:c,ValidationError:i,schema:e.schema,schemaEnv:e,rootId:r,baseId:e.baseId||r,schemaPath:gr.nil,errSchemaPath:e.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,gr._)`""`,opts:this.opts,self:this},u;try{this._compilations.add(e),(0,EE.validateFunctionCode)(l),a.optimize(this.opts.code.optimize);let d=a.toString();u=`${a.scopeRefs(In.default.scope)}return ${d}`,this.opts.code.process&&(u=this.opts.code.process(u,e));let g=new Function(`${In.default.self}`,`${In.default.scope}`,u)(this,this.scope.get());if(this.scope.value(c,{ref:g}),g.errors=null,g.schema=e.schema,g.schemaEnv=e,e.$async&&(g.$async=!0),this.opts.code.source===!0&&(g.source={validateName:c,validateCode:d,scopeValues:a._values}),this.opts.unevaluated){let{props:h,items:p}=l;g.evaluated={props:h instanceof gr.Name?void 0:h,items:p instanceof gr.Name?void 0:p,dynamicProps:h instanceof gr.Name,dynamicItems:p instanceof gr.Name},g.source&&(g.source.evaluated=(0,gr.stringify)(g.evaluated))}return e.validate=g,e}catch(d){throw delete e.validate,delete e.validateName,u&&this.logger.error("Error compiling schema, function code:",u),d}finally{this._compilations.delete(e)}}or.compileSchema=sd;function AE(e,t,r){var n;r=(0,br.resolveUrl)(this.opts.uriResolver,t,r);let o=e.refs[r];if(o)return o;let s=TE.call(this,e,r);if(s===void 0){let a=(n=e.localRefs)===null||n===void 0?void 0:n[r],{schemaId:i}=this.opts;a&&(s=new go({schema:a,schemaId:i,root:e,baseId:t}))}if(s!==void 0)return e.refs[r]=OE.call(this,s)}or.resolveRef=AE;function OE(e){return(0,br.inlineRef)(e.schema,this.opts.inlineRefs)?e.schema:e.validate?e:sd.call(this,e)}function dk(e){for(let t of this._compilations)if(IE(t,e))return t}or.getCompilingSchema=dk;function IE(e,t){return e.schema===t.schema&&e.root===t.root&&e.baseId===t.baseId}function TE(e,t){let r;for(;typeof(r=this.refs[t])=="string";)t=r;return r||this.schemas[t]||Zi.call(this,e,t)}function Zi(e,t){let r=this.opts.uriResolver.parse(t),n=(0,br._getFullPath)(this.opts.uriResolver,r),o=(0,br.getFullPath)(this.opts.uriResolver,e.baseId,void 0);if(Object.keys(e.schema).length>0&&n===o)return od.call(this,r,e);let s=(0,br.normalizeId)(n),a=this.refs[s]||this.schemas[s];if(typeof a=="string"){let i=Zi.call(this,e,a);return typeof i?.schema!="object"?void 0:od.call(this,r,i)}if(typeof a?.schema=="object"){if(a.validate||sd.call(this,a),s===(0,br.normalizeId)(t)){let{schema:i}=a,{schemaId:c}=this.opts,l=i[c];return l&&(o=(0,br.resolveUrl)(this.opts.uriResolver,o,l)),new go({schema:i,schemaId:c,root:e,baseId:o})}return od.call(this,r,a)}}or.resolveSchema=Zi;var CE=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function od(e,{baseId:t,schema:r,root:n}){var o;if(((o=e.fragment)===null||o===void 0?void 0:o[0])!=="/")return;for(let i of e.fragment.slice(1).split("/")){if(typeof r=="boolean")return;let c=r[(0,uk.unescapeFragment)(i)];if(c===void 0)return;r=c;let l=typeof r=="object"&&r[this.opts.schemaId];!CE.has(i)&&l&&(t=(0,br.resolveUrl)(this.opts.uriResolver,t,l))}let s;if(typeof r!="boolean"&&r.$ref&&!(0,uk.schemaHasRulesButRef)(r,this.RULES)){let i=(0,br.resolveUrl)(this.opts.uriResolver,t,r.$ref);s=Zi.call(this,n,i)}let{schemaId:a}=this.opts;if(s=s||new go({schema:r,schemaId:a,root:n,baseId:t}),s.schema!==s.root.schema)return s}});var pk=q((s4,NE)=>{NE.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var dd=q((a4,vk)=>{"use strict";var RE=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),id=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u),jE=RegExp.prototype.test.bind(/^\d*$/u),Tn=RegExp.prototype.test.bind(/^[\da-f]{2}$/iu),ld=RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu),mk=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/]$/u),cd=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/?]$/u),ME=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:]$/u),Zt=new Array(256);{let e="0123456789ABCDEF";for(let t=0;t<256;t++)Zt[t]="%"+e[t>>4]+e[t&15]}function It(e){return e<2048?Zt[192|e>>6]+Zt[128|e&63]:e<65536?Zt[224|e>>12]+Zt[128|e>>6&63]+Zt[128|e&63]:Zt[240|e>>18]+Zt[128|e>>12&63]+Zt[128|e>>6&63]+Zt[128|e&63]}function DE(e){let t="",r=0,n=0;for(n=0;n<e.length;n++)if(r=e[n].charCodeAt(0),r!==48){if(!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";t+=e[n];break}for(n+=1;n<e.length;n++){if(r=e[n].charCodeAt(0),!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";t+=e[n]}return t}var LE=RegExp.prototype.test.bind(/^[\dA-Fa-f]{1,4}$/),VE=RegExp.prototype.test.bind(/^[vV][\dA-Fa-f]+\.[A-Za-z\d\-._~!$&'()*+,;=:]+$/),FE=RegExp.prototype.test.bind(/^[A-Za-z\d\-._~]$/),BE=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function ZE(e){if(e.length===0)return!1;for(let t=0;t<e.length;t++)if(!FE(e[t])){if(e[t]==="%"&&t+2<e.length&&Tn(e.slice(t+1,t+3))){t+=2;continue}return!1}return!0}function fk(e){let t=-1,r=0,n=-1,o=0;for(let i=0;i<e.length;i++)e[i]==="0"?(n===-1&&(n=i),o++,o>r&&(r=o,t=n)):(n=-1,o=0);if(r<2)return e.join(":");let s=e.slice(0,t).join(":"),a=e.slice(t+r).join(":");return s+"::"+a}function GE(e){let t=e.indexOf("::");if(t!==-1&&e.indexOf("::",t+1)!==-1)return;let r=t===-1?e.split(":"):e.slice(0,t).split(":"),n=t===-1?[]:e.slice(t+2).split(":");t!==-1&&(r.length===1&&r[0]===""&&(r.length=0),n.length===1&&n[0]===""&&(n.length=0));let o=r.concat(n),s=0;for(let i=0;i<o.length;i++){let c=o[i];if(c==="")return;if(c.indexOf(".")!==-1){if(i!==o.length-1||t!==-1&&n.length===0||!id(c))return;s+=2;continue}if(!LE(c))return;o[i]=parseInt(c,16).toString(16),s++}if(t===-1)return s!==8?void 0:fk(o);if(s>=8)return;let a=o.slice(0,r.length);for(let i=s;i<8;i++)a.push("0");for(let i=r.length;i<o.length;i++)a.push(o[i]);return fk(a)}function ad(e){let t=e[0]==="["&&e[e.length-1]==="]";if((e[0]==="["||e[e.length-1]==="]")&&!t)return{host:e,isIPV6:!1,error:!0};let n=t?e.slice(1,-1):e;if(t&&VE(n))return n=n.toLowerCase(),{host:`[${n}]`,escapedHost:n,isIPV6:!1,isIPVFuture:!0};if(UE(n,":")<2)return{host:e,isIPV6:!1,error:t};let o="",s=n.indexOf("%");if(s!==-1){let i=n.slice(s,s+3).toLowerCase()==="%25"?3:1;if(o=n.slice(s+i),!ZE(o))return{host:e,isIPV6:!1,error:!0};n=n.slice(0,s)}let a=GE(n);return a===void 0?{host:e,isIPV6:!1,error:!0}:{host:a+(o?"%"+o:""),escapedHost:a+(o?"%25"+o:""),isIPV6:!0}}function UE(e,t){let r=0;for(let n=0;n<e.length;n++)e[n]===t&&r++;return r}function hk(e){let t=e,r=[],n=-1,o=0;for(;o=t.length;){if(o===1){if(t===".")break;if(t==="/"){r.push("/");break}else{r.push(t);break}}else if(o===2){if(t[0]==="."){if(t[1]===".")break;if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"&&(t[1]==="."||t[1]==="/")){r.push("/");break}}else if(o===3&&t==="/.."){r.length!==0&&r.pop(),r.push("/");break}if(t[0]==="."){if(t[1]==="."){if(t[2]==="/"){t=t.slice(3);continue}}else if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"&&t[1]==="."){if(t[2]==="/"){t=t.slice(2);continue}else if(t[2]==="."&&t[3]==="/"){t=t.slice(3),r.length!==0&&r.pop();continue}}if((n=t.indexOf("/",1))===-1){r.push(t);break}else r.push(t.slice(0,n)),t=t.slice(n)}return r.join("")}function qE(e){if(e===""||e[0]==="/")return hk(e);let t=e.split("/"),r=t.length-1,n=[],o=!1;for(let s=0;s<=r;s++){let a=t[s];a==="."||a===".."?(a===".."&&(n.length!==0&&n[n.length-1]!==".."?n.pop():n.push("..")),o=s===r):n.push(a)}return o&&n[n.length-1]!==".."&&n.push(""),(n.length===0||n[0]===""||n[0].includes(":"))&&n.unshift("."),n.join("/")}var KE={"@":"%40","/":"%2F","?":"%3F","#":"%23",":":"%3A"},HE=/[@/?#:]/g,WE=/[@/?#]/g;function gk(e,t){let r=t?WE:HE;return r.lastIndex=0,e.replace(r,n=>KE[n])}function bk(e,t=!1){if(e.indexOf("%")===-1)return e;let r="";for(let n=0;n<e.length;n++){if(e[n]==="%"&&n+2<e.length){let o=e.slice(n+1,n+3);if(Tn(o)){let s=o.toUpperCase(),a=String.fromCharCode(parseInt(s,16));t&&ld(a)?r+=a:r+="%"+s,n+=2;continue}}r+=e[n]}return r}function JE(e){let t="";for(let r=0;r<e.length;r++){let n=e[r];if(n==="%"&&r+2<e.length){let o=e.slice(r+1,r+3);if(Tn(o)){let s=o.toUpperCase(),a=String.fromCharCode(parseInt(s,16));a!=="."&&ld(a)?t+=a:t+="%"+s,r+=2;continue}}if(mk(n))t+=n;else{let o=e.charCodeAt(r);if(o<128)t+=kk(o)?n:Zt[o];else if(o<55296||o>57343)t+=It(o);else if(o<=56319&&r+1<e.length){let s=e.charCodeAt(r+1);s>=56320&&s<=57343?(t+=It(65536+(o-55296<<10)+(s-56320)),r++):t+=It(65533)}else t+=It(65533)}}return t}function YE(e,t=!1){let r="",n=t&&e[0]!=="/";for(let o=0;o<e.length;o++){let s=e[o];if(s==="%"&&o+2<e.length){let a=e.slice(o+1,o+3);if(Tn(a)){r+="%"+a.toUpperCase(),o+=2;continue}}if(s==="/"&&(n=!1),mk(s)&&(s!==":"||!n))r+=s;else{let a=e.charCodeAt(o);if(a<128)r+=Zt[a];else if(a<55296||a>57343)r+=It(a);else if(a<=56319&&o+1<e.length){let i=e.charCodeAt(o+1);i>=56320&&i<=57343?(r+=It(65536+(a-55296<<10)+(i-56320)),o++):r+=It(65533)}else r+=It(65533)}}return r}function ud(e,t){let r="";for(let n=0;n<e.length;n++){let o=e[n];if(o==="%"&&n+2<e.length){let s=e.slice(n+1,n+3);if(Tn(s)){r+="%"+s.toUpperCase(),n+=2;continue}}if(t(o))r+=o;else{let s=e.charCodeAt(n);if(s<128)r+=Zt[s];else if(s<55296||s>57343)r+=It(s);else if(s<=56319&&n+1<e.length){let a=e.charCodeAt(n+1);a>=56320&&a<=57343?(r+=It(65536+(s-55296<<10)+(a-56320)),n++):r+=It(65533)}else r+=It(65533)}}return r}function yk(e){return ud(e,ME)}function XE(e){return ud(e,cd)}function QE(e){return ud(e,cd)}function kk(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===42||e===43||e===45||e===46||e===47||e===64||e===95}function eA(e){let t="";for(let r=0;r<e.length;r++){let n=e[r];if(n==="%"&&r+2<e.length){let o=e.slice(r+1,r+3);if(Tn(o)){let s=o.toUpperCase(),a=String.fromCharCode(parseInt(s,16));ld(a)?t+=a:t+="%"+s,r+=2;continue}}if(cd(n))t+=n;else{let o=e.charCodeAt(r);if(o<128)t+=kk(o)?n:Zt[o];else if(o<55296||o>57343)t+=It(o);else if(o<=56319&&r+1<e.length){let s=e.charCodeAt(r+1);s>=56320&&s<=57343?(t+=It(65536+(o-55296<<10)+(s-56320)),r++):t+=It(65533)}else t+=It(65533)}}return t}function tA(e){let t="";for(let r=0;r<e.length;r++){if(e[r]==="%"&&r+2<e.length){let n=e.slice(r+1,r+3);if(Tn(n)){t+="%"+n.toUpperCase(),r+=2;continue}}t+=escape(e[r])}return t}function rA(e){let t=[];if(e.userinfo!==void 0&&(t.push(yk(e.userinfo)),t.push("@")),e.host!==void 0){let r=e.host;if(!id(r)){let n=ad(r);n.isIPV6!==!0&&n.isIPVFuture!==!0&&(r=bk(r,!0),n=ad(r)),n.isIPV6===!0||n.isIPVFuture===!0?r=`[${n.escapedHost}]`:r=gk(r,!1)}t.push(r)}if(typeof e.port=="number"||typeof e.port=="string"){let r=String(e.port);if(!jE(r))throw new TypeError("URI port is malformed.");t.push(":"),t.push(r)}return t.length?t.join(""):void 0}vk.exports={nonSimpleDomain:BE,recomposeAuthority:rA,reescapeHostDelimiters:gk,normalizePercentEncoding:bk,normalizePathEncoding:JE,serializePathEncoding:YE,normalizeQueryFragmentEncoding:eA,encodeUserinfo:yk,encodeQuery:XE,encodeFragment:QE,escapePreservingEscapes:tA,removeDotSegments:hk,removeDotSegmentsRelative:qE,isIPv4:id,isUUID:RE,normalizeIPv6:ad,stringArrayToHexStripped:DE}});var Sk=q((i4,xk)=>{"use strict";var{isUUID:nA}=dd(),oA=/^([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-./:;=@]|%[\da-f]{2})+)$/iu,sA=["http","https","ws","wss","urn","urn:uuid"];function aA(e){return sA.indexOf(e)!==-1}function pd(e){return e.secure===!0?!0:e.secure===!1?!1:e.scheme?e.scheme.length===3&&(e.scheme[0]==="w"||e.scheme[0]==="W")&&(e.scheme[1]==="s"||e.scheme[1]==="S")&&(e.scheme[2]==="s"||e.scheme[2]==="S"):!1}function zk(e){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e}function _k(e){let t=String(e.scheme).toLowerCase()==="https";return(e.port===(t?443:80)||e.port==="")&&(e.port=void 0),e.path||(e.path="/"),e}function iA(e){return e.secure=pd(e),e.resourceName=(e.path||"/")+(e.query?"?"+e.query:""),e.path=void 0,e.query=void 0,e}function lA(e){if((e.port===(pd(e)?443:80)||e.port==="")&&(e.port=void 0),typeof e.secure=="boolean"&&(e.scheme=e.secure?"wss":"ws",e.secure=void 0),e.resourceName){let t=e.resourceName.indexOf("?"),r=t===-1?e.resourceName:e.resourceName.slice(0,t);e.path=r&&r!=="/"?r:void 0,e.query=t===-1?void 0:e.resourceName.slice(t+1),e.resourceName=void 0}return e.fragment=void 0,e}function cA(e,t){if(!e.path)return e.error="URN can not be parsed",e;let r=e.path.match(oA);if(r&&r[0]===e.path){let n=t.scheme||e.scheme||"urn";e.nid=r[1].toLowerCase(),e.nss=r[2];let o=`${n}:${t.nid||e.nid}`,s=fd(o);e.path=void 0,s&&(e=s.parse(e,t))}else e.error=e.error||"URN can not be parsed.";return e}function uA(e,t){if(e.nid===void 0)throw new Error("URN without nid cannot be serialized");let r=t.scheme||e.scheme||"urn",n=e.nid.toLowerCase(),o=`${r}:${t.nid||n}`,s=fd(o);s&&(e=s.serialize(e,t));let a=e,i=e.nss;return a.path=`${n||t.nid}:${i}`,t.skipEscape=!0,a}function dA(e,t){let r=e;return r.uuid=r.nss,r.nss=void 0,!t.tolerant&&(!r.uuid||!nA(r.uuid))&&(r.error=r.error||"UUID is not valid."),r}function pA(e){let t=e;return t.nss=(e.uuid||"").toLowerCase(),t}var wk={scheme:"http",domainHost:!0,parse:zk,serialize:_k},fA={scheme:"https",domainHost:wk.domainHost,parse:zk,serialize:_k},Ui={scheme:"ws",domainHost:!0,parse:iA,serialize:lA},mA={scheme:"wss",domainHost:Ui.domainHost,parse:Ui.parse,serialize:Ui.serialize},hA={scheme:"urn",parse:cA,serialize:uA,skipNormalize:!0},gA={scheme:"urn:uuid",parse:dA,serialize:pA,skipNormalize:!0},qi={http:wk,https:fA,ws:Ui,wss:mA,urn:hA,"urn:uuid":gA};Object.setPrototypeOf(qi,null);function fd(e){return e&&(qi[e]||qi[e.toLowerCase()])||void 0}xk.exports={wsIsSecure:pd,SCHEMES:qi,isValidSchemeName:aA,getSchemeHandler:fd}});var Vk=q((l4,Yi)=>{"use strict";var{normalizeIPv6:Ok,removeDotSegments:Vs,removeDotSegmentsRelative:Ik,recomposeAuthority:bA,normalizePercentEncoding:md,normalizePathEncoding:yA,serializePathEncoding:Pk,normalizeQueryFragmentEncoding:$k,encodeQuery:kA,encodeFragment:vA,reescapeHostDelimiters:zA,isIPv4:Tk,nonSimpleDomain:_A}=dd(),{SCHEMES:Ck,getSchemeHandler:hd}=Sk(),Nk=/^[A-Za-z][A-Za-z0-9+.-]*$/u,Rk="URI scheme is malformed.",Ki="URI host is malformed.",wA=/[\0-\x20"#/:<>?@[\\\]^`{|}\x7F]/u;function Ek(e){let t=String(e);if(!Nk.test(t))throw new TypeError(Rk);return t}function xA(e,t){return typeof e=="string"?e=CA(e,t):typeof e=="object"&&(e=Wi(Cn(e,t),t)),e}function SA(e,t,r){let n=r?Object.assign({scheme:"null"},r):{scheme:"null"},{parsed:o,malformedAuthorityOrPort:s,malformedPercentEncoding:a,malformedSchemeSpecific:i,malformedHost:c,malformedScheme:l}=Hi(e,n),{parsed:u,malformedAuthorityOrPort:d,malformedPercentEncoding:f,malformedSchemeSpecific:g,malformedHost:h,malformedScheme:p}=Hi(t,n);if(s||d||a||f||i||g||c||h||l||p)throw new Error(o.error||u.error||"URI is malformed.");let m=jk(o,u,n,!0),b=hd(r&&r.scheme||m.scheme),v=m.host,_=v!==void 0&&v!==""&&(Tk(v)||Ok(v).isIPV6);if(Dk(m,r||{},b,_))throw new Error(Ki);Mk(m,r||{},b,_);let z=v&&v.indexOf("%")!==-1&&!new RegExp("\\P{ASCII}","u").test(v);if(m.error&&!z)throw new Error(m.error);return n.skipEscape=!0,Cn(m,n)}function jk(e,t,r,n){let o={};if(n||(e=Wi(Cn(e,r),r),t=Wi(Cn(t,r),r)),r=r||{},!r.tolerant&&t.scheme)o.scheme=t.scheme,o.userinfo=t.userinfo,o.host=t.host,o.port=t.port,o.path=Vs(t.path||""),o.query=t.query;else{if(t.userinfo!==void 0||t.host!==void 0||t.port!==void 0)o.userinfo=t.userinfo,o.host=t.host,o.port=t.port,o.path=Vs(t.path||""),o.query=t.query;else{if(!t.path)o.path=e.path,t.query!==void 0?o.query=t.query:o.query=e.query;else{if(t.path[0]==="/")o.path=Vs(t.path);else{let s=e.userinfo!==void 0||e.host!==void 0||e.port!==void 0;s&&!e.path?o.path="/"+t.path:e.path?o.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path:o.path=t.path,o.path=e.scheme===void 0&&!s&&o.path[0]!=="/"?Ik(o.path):Vs(o.path)}o.query=t.query}o.userinfo=e.userinfo,o.host=e.host,o.port=e.port}o.scheme=e.scheme}return o.fragment=t.fragment,o}function PA(e,t,r){let n=Ak(e,r),o=Ak(t,r);return n!==void 0&&o!==void 0&&n===o}function Cn(e,t){let r={host:e.host,scheme:e.scheme,userinfo:e.userinfo,port:e.port,path:e.path,query:e.query,nid:e.nid,nss:e.nss,uuid:e.uuid,fragment:e.fragment,reference:e.reference,resourceName:e.resourceName,secure:e.secure,error:""},n=Object.assign({},t),o=[];r.scheme&&(r.scheme=Ek(r.scheme));let s=hd(n.scheme||r.scheme);s&&s.serialize&&s.serialize(r,n);let a=r.userinfo!==void 0||r.host!==void 0||r.port!==void 0,i=(r.scheme===void 0||n.reference==="suffix")&&!a,c=!n.skipEscape&&i;r.path!==void 0&&(n.skipEscape?r.path=md(r.path):r.path=Pk(r.path,c)),n.reference!=="suffix"&&r.scheme&&(r.scheme=Ek(r.scheme),o.push(r.scheme,":"));let l=bA(r);if(l!==void 0&&(n.reference!=="suffix"&&o.push("//"),o.push(l),r.path&&r.path[0]!=="/"&&o.push("/")),r.path!==void 0){let u=r.path;!n.absolutePath&&(!s||!s.absolutePath)&&(u=i&&u[0]!=="/"?Ik(u):Vs(u)),i&&(u=Pk(u,!0)),l===void 0&&u[0]==="/"&&u[1]==="/"&&(u="/%2F"+u.slice(2)),o.push(u)}return r.query!==void 0&&o.push("?",kA(r.query)),r.fragment!==void 0&&o.push("#",vA(r.fragment)),o.join("")}var $A=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u,EA=/^(?:[^#/:?]+:)?\/\/([^/?#]*)/,AA=/^(?:[^#/:?]+:)?([/\\\t\n\r]*)/;function OA(e,t){if(t[2]!==void 0&&e.path&&e.path[0]!=="/")return'URI path must start with "/" when authority is present.';if(typeof e.port=="number"&&(e.port<0||e.port>65535))return"URI port is malformed."}function Ls(e){if(e===void 0)return!1;let t=e.indexOf("%");for(;t!==-1;){if(t+2>=e.length||!/^[\da-f]{2}$/iu.test(e.slice(t+1,t+3)))return!0;t=e.indexOf("%",t+3)}return!1}function Ji(e){return e[0]==="["&&e[e.length-1]==="]"}function IA(e){let t=e[4];return Ls(e[3])||t!==void 0&&!Ji(t)&&Ls(t)||Ls(e[6])||Ls(e[7])||Ls(e[8])}function Mk(e,t,r,n){if(Dk(e,t,r,n))return e.error=e.error||Ki,!0;if(!t.unicodeSupport&&(!r||!r.unicodeSupport)&&e.host&&!Ji(e.host)&&(t.domainHost||r&&r.domainHost)&&n===!1&&_A(e.host)){let o;try{o=new URL("http://"+e.host)}catch(s){return e.error=e.error||"Host's domain name can not be converted to ASCII: "+s,!0}if(!TA(o))return e.error=e.error||Ki,!0;e.host=o.hostname}return!1}function Dk(e,t,r,n){return!!(e.host&&n===!1&&!Ji(e.host)&&(t.domainHost||r&&r.domainHost)&&wA.test(e.host))}function TA(e){return e.username===""&&e.password===""&&e.port===""&&e.pathname==="/"&&e.search===""&&e.hash===""&&e.hostname!==""}function Hi(e,t){let r=Object.assign({},t),n={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},o=!1,s=!1,a=!1,i=!1,c=!1,l=!1,u=!1;r.reference==="suffix"&&(r.scheme?e=r.scheme+":"+e:e="//"+e);let d=e.match(EA);d!==null&&d[1].indexOf("\\")!==-1&&(n.error="URI authority must not contain a literal backslash.",o=!0);let f=e.match(AA);if(f!==null){let h=f[1],p=h.replace(/[\t\n\r]/g,"");p.length>=2&&(p.slice(0,2)!=="//"?(n.error=n.error||"URI authority must not contain a literal backslash.",o=!0):h.length!==p.length&&(n.error=n.error||"URI authority introducer must not contain whitespace.",o=!0))}let g=e.match($A);if(g){n.scheme=g[1],n.userinfo=g[3],n.host=g[4],n.port=parseInt(g[5],10),n.path=g[6]||"",n.query=g[7],n.fragment=g[8],n.scheme!==void 0&&(Nk.test(n.scheme)?n.scheme=n.scheme.toLowerCase():(n.error=n.error||Rk,l=!0)),s=IA(g),s&&(n.error=n.error||"URI contains malformed percent-encoding."),isNaN(n.port)&&(n.port=g[5]);let h=OA(n,g);if(h!==void 0&&(n.error=n.error||h,o=!0),n.host)if(Tk(n.host)===!1){let b=Ji(n.host),v=n.host.indexOf("[")!==-1||n.host.indexOf("]")!==-1,_=Ok(n.host);u=_.isIPV6||_.isIPVFuture===!0,c=v&&(!b||_.error===!0),n.host=u?_.host:_.host.toLowerCase(),c&&(n.error=n.error||Ki,o=!0)}else u=!0;n.scheme===void 0&&n.userinfo===void 0&&n.host===void 0&&n.port===void 0&&n.query===void 0&&!n.path?n.reference="same-document":n.scheme===void 0?n.reference="relative":n.fragment===void 0?n.reference="absolute":n.reference="uri",r.reference&&r.reference!=="suffix"&&r.reference!==n.reference&&(n.error=n.error||"URI is not a "+r.reference+" reference.");let p=hd(r.scheme||n.scheme);if(c||(i=Mk(n,r,p,u)),e.indexOf("%")!==-1&&n.host!==void 0&&!c){let m=u?n.host:md(n.host,!0);u||(m=md(m.toLowerCase())),n.host=u||r.scheme!=="null"?zA(m,u):m}(!p||p&&!p.skipNormalize)&&(n.path&&(n.path=yA(n.path)),n.query&&(n.query=$k(n.query)),n.fragment&&(n.fragment=$k(n.fragment))),p&&p.parse&&(p.parse(n,r),p===Ck.urn&&n.nid===void 0&&(a=!0))}else n.error=n.error||"URI can not be parsed.";return{parsed:n,malformedAuthorityOrPort:o,malformedPercentEncoding:s,malformedSchemeSpecific:a,malformedHost:i,malformedScheme:l}}function Wi(e,t){return Hi(e,t).parsed}function CA(e,t){return Lk(e,t).normalized}function Lk(e,t){let{parsed:r,malformedAuthorityOrPort:n,malformedPercentEncoding:o,malformedSchemeSpecific:s,malformedHost:a,malformedScheme:i}=Hi(e,t);return{normalized:n||o||s||a||i?e:Cn(r,t),malformedAuthorityOrPort:n,malformedPercentEncoding:o,malformedSchemeSpecific:s,malformedHost:a,malformedScheme:i}}function Ak(e,t){if(typeof e!="string"&&typeof e!="object")return;let r;try{r=typeof e=="string"?e:Cn(e,t)}catch{return}let{normalized:n,malformedAuthorityOrPort:o,malformedPercentEncoding:s,malformedSchemeSpecific:a,malformedHost:i,malformedScheme:c}=Lk(r,t);return o||s||a||i||c?void 0:n}var gd={SCHEMES:Ck,normalize:xA,resolve:SA,resolveComponent:jk,equal:PA,serialize:Cn,parse:Wi};Yi.exports=gd;Yi.exports.default=gd;Yi.exports.fastUri=gd});var Bk=q(bd=>{"use strict";Object.defineProperty(bd,"__esModule",{value:!0});var Fk=Vk();Fk.code='require("ajv/dist/runtime/uri").default';bd.default=Fk});var Jk=q(Pt=>{"use strict";Object.defineProperty(Pt,"__esModule",{value:!0});Pt.CodeGen=Pt.Name=Pt.nil=Pt.stringify=Pt.str=Pt._=Pt.KeywordCxt=void 0;var NA=Ms();Object.defineProperty(Pt,"KeywordCxt",{enumerable:!0,get:function(){return NA.KeywordCxt}});var bo=be();Object.defineProperty(Pt,"_",{enumerable:!0,get:function(){return bo._}});Object.defineProperty(Pt,"str",{enumerable:!0,get:function(){return bo.str}});Object.defineProperty(Pt,"stringify",{enumerable:!0,get:function(){return bo.stringify}});Object.defineProperty(Pt,"nil",{enumerable:!0,get:function(){return bo.nil}});Object.defineProperty(Pt,"Name",{enumerable:!0,get:function(){return bo.Name}});Object.defineProperty(Pt,"CodeGen",{enumerable:!0,get:function(){return bo.CodeGen}});var RA=Bi(),Kk=Ds(),jA=Vu(),Fs=Gi(),MA=be(),Bs=Ns(),Xi=Cs(),kd=Ce(),Zk=pk(),DA=Bk(),Hk=(e,t)=>new RegExp(e,t);Hk.code="new RegExp";var LA=["removeAdditional","useDefaults","coerceTypes"],VA=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),FA={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},BA={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},Gk=200;function ZA(e){var t,r,n,o,s,a,i,c,l,u,d,f,g,h,p,m,b,v,_,z,k,x,A,G,L;let M=e.strict,B=(t=e.code)===null||t===void 0?void 0:t.optimize,S=B===!0||B===void 0?1:B||0,$=(n=(r=e.code)===null||r===void 0?void 0:r.regExp)!==null&&n!==void 0?n:Hk,Z=(o=e.uriResolver)!==null&&o!==void 0?o:DA.default;return{strictSchema:(a=(s=e.strictSchema)!==null&&s!==void 0?s:M)!==null&&a!==void 0?a:!0,strictNumbers:(c=(i=e.strictNumbers)!==null&&i!==void 0?i:M)!==null&&c!==void 0?c:!0,strictTypes:(u=(l=e.strictTypes)!==null&&l!==void 0?l:M)!==null&&u!==void 0?u:"log",strictTuples:(f=(d=e.strictTuples)!==null&&d!==void 0?d:M)!==null&&f!==void 0?f:"log",strictRequired:(h=(g=e.strictRequired)!==null&&g!==void 0?g:M)!==null&&h!==void 0?h:!1,code:e.code?{...e.code,optimize:S,regExp:$}:{optimize:S,regExp:$},loopRequired:(p=e.loopRequired)!==null&&p!==void 0?p:Gk,loopEnum:(m=e.loopEnum)!==null&&m!==void 0?m:Gk,meta:(b=e.meta)!==null&&b!==void 0?b:!0,messages:(v=e.messages)!==null&&v!==void 0?v:!0,inlineRefs:(_=e.inlineRefs)!==null&&_!==void 0?_:!0,schemaId:(z=e.schemaId)!==null&&z!==void 0?z:"$id",addUsedSchema:(k=e.addUsedSchema)!==null&&k!==void 0?k:!0,validateSchema:(x=e.validateSchema)!==null&&x!==void 0?x:!0,validateFormats:(A=e.validateFormats)!==null&&A!==void 0?A:!0,unicodeRegExp:(G=e.unicodeRegExp)!==null&&G!==void 0?G:!0,int32range:(L=e.int32range)!==null&&L!==void 0?L:!0,uriResolver:Z}}var Zs=class{constructor(t={}){this.schemas={},this.refs={},this.formats=Object.create(null),this._compilations=new Set,this._loading={},this._cache=new Map,t=this.opts={...t,...ZA(t)};let{es5:r,lines:n}=this.opts.code;this.scope=new MA.ValueScope({scope:{},prefixes:VA,es5:r,lines:n}),this.logger=WA(t.logger);let o=t.validateFormats;t.validateFormats=!1,this.RULES=(0,jA.getRules)(),Uk.call(this,FA,t,"NOT SUPPORTED"),Uk.call(this,BA,t,"DEPRECATED","warn"),this._metaOpts=KA.call(this),t.formats&&UA.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),t.keywords&&qA.call(this,t.keywords),typeof t.meta=="object"&&this.addMetaSchema(t.meta),GA.call(this),t.validateFormats=o}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:t,meta:r,schemaId:n}=this.opts,o=Zk;n==="id"&&(o={...Zk},o.id=o.$id,delete o.$id),r&&t&&this.addMetaSchema(o,o[n],!1)}defaultMeta(){let{meta:t,schemaId:r}=this.opts;return this.opts.defaultMeta=typeof t=="object"?t[r]||t:void 0}validate(t,r){let n;if(typeof t=="string"){if(n=this.getSchema(t),!n)throw new Error(`no schema with key or ref "${t}"`)}else n=this.compile(t);let o=n(r);return"$async"in n||(this.errors=n.errors),o}compile(t,r){let n=this._addSchema(t,r);return n.validate||this._compileSchemaEnv(n)}compileAsync(t,r){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");let{loadSchema:n}=this.opts;return o.call(this,t,r);async function o(u,d){await s.call(this,u.$schema);let f=this._addSchema(u,d);return f.validate||a.call(this,f)}async function s(u){u&&!this.getSchema(u)&&await o.call(this,{$ref:u},!0)}async function a(u){try{return this._compileSchemaEnv(u)}catch(d){if(!(d instanceof Kk.default))throw d;return i.call(this,d),await c.call(this,d.missingSchema),a.call(this,u)}}function i({missingSchema:u,missingRef:d}){if(this.refs[u])throw new Error(`AnySchema ${u} is loaded but ${d} cannot be resolved`)}async function c(u){let d=await l.call(this,u);this.refs[u]||await s.call(this,d.$schema),this.refs[u]||this.addSchema(d,u,r)}async function l(u){let d=this._loading[u];if(d)return d;try{return await(this._loading[u]=n(u))}finally{delete this._loading[u]}}}addSchema(t,r,n,o=this.opts.validateSchema){if(Array.isArray(t)){for(let a of t)this.addSchema(a,void 0,n,o);return this}let s;if(typeof t=="object"){let{schemaId:a}=this.opts;if(s=t[a],s!==void 0&&typeof s!="string")throw new Error(`schema ${a} must be string`)}return r=(0,Bs.normalizeId)(r||s),this._checkUnique(r),this.schemas[r]=this._addSchema(t,n,r,o,!0),this}addMetaSchema(t,r,n=this.opts.validateSchema){return this.addSchema(t,r,!0,n),this}validateSchema(t,r){if(typeof t=="boolean")return!0;let n;if(n=t.$schema,n!==void 0&&typeof n!="string")throw new Error("$schema must be a string");if(n=n||this.opts.defaultMeta||this.defaultMeta(),!n)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let o=this.validate(n,t);if(!o&&r){let s="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(s);else throw new Error(s)}return o}getSchema(t){let r;for(;typeof(r=qk.call(this,t))=="string";)t=r;if(r===void 0){let{schemaId:n}=this.opts,o=new Fs.SchemaEnv({schema:{},schemaId:n});if(r=Fs.resolveSchema.call(this,o,t),!r)return;this.refs[t]=r}return r.validate||this._compileSchemaEnv(r)}removeSchema(t){if(t instanceof RegExp)return this._removeAllSchemas(this.schemas,t),this._removeAllSchemas(this.refs,t),this;switch(typeof t){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let r=qk.call(this,t);return typeof r=="object"&&this._cache.delete(r.schema),delete this.schemas[t],delete this.refs[t],this}case"object":{let r=t;this._cache.delete(r);let n=t[this.opts.schemaId];return n&&(n=(0,Bs.normalizeId)(n),delete this.schemas[n],delete this.refs[n]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(t){for(let r of t)this.addKeyword(r);return this}addKeyword(t,r){let n;if(typeof t=="string")n=t,typeof r=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),r.keyword=n);else if(typeof t=="object"&&r===void 0){if(r=t,n=r.keyword,Array.isArray(n)&&!n.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(YA.call(this,n,r),!r)return(0,kd.eachItem)(n,s=>yd.call(this,s)),this;QA.call(this,r);let o={...r,type:(0,Xi.getJSONTypes)(r.type),schemaType:(0,Xi.getJSONTypes)(r.schemaType)};return(0,kd.eachItem)(n,o.type.length===0?s=>yd.call(this,s,o):s=>o.type.forEach(a=>yd.call(this,s,o,a))),this}getKeyword(t){let r=this.RULES.all[t];return typeof r=="object"?r.definition:!!r}removeKeyword(t){let{RULES:r}=this;delete r.keywords[t],delete r.all[t];for(let n of r.rules){let o=n.rules.findIndex(s=>s.keyword===t);o>=0&&n.rules.splice(o,1)}return this}addFormat(t,r){return typeof r=="string"&&(r=new RegExp(r)),this.formats[t]=r,this}errorsText(t=this.errors,{separator:r=", ",dataVar:n="data"}={}){return!t||t.length===0?"No errors":t.map(o=>`${n}${o.instancePath} ${o.message}`).reduce((o,s)=>o+r+s)}$dataMetaSchema(t,r){let n=this.RULES.all;t=JSON.parse(JSON.stringify(t));for(let o of r){let s=o.split("/").slice(1),a=t;for(let i of s)a=a[i];for(let i in n){let c=n[i];if(typeof c!="object")continue;let{$data:l}=c.definition,u=a[i];l&&u&&(a[i]=Wk(u))}}return t}_removeAllSchemas(t,r){for(let n in t){let o=t[n];(!r||r.test(n))&&(typeof o=="string"?delete t[n]:o&&!o.meta&&(this._cache.delete(o.schema),delete t[n]))}}_addSchema(t,r,n,o=this.opts.validateSchema,s=this.opts.addUsedSchema){let a,{schemaId:i}=this.opts;if(typeof t=="object")a=t[i];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof t!="boolean")throw new Error("schema must be object or boolean")}let c=this._cache.get(t);if(c!==void 0)return c;n=(0,Bs.normalizeId)(a||n);let l=Bs.getSchemaRefs.call(this,t,n);return c=new Fs.SchemaEnv({schema:t,schemaId:i,meta:r,baseId:n,localRefs:l}),this._cache.set(c.schema,c),s&&!n.startsWith("#")&&(n&&this._checkUnique(n),this.refs[n]=c),o&&this.validateSchema(t,!0),c}_checkUnique(t){if(this.schemas[t]||this.refs[t])throw new Error(`schema with key or id "${t}" already exists`)}_compileSchemaEnv(t){if(t.meta?this._compileMetaSchema(t):Fs.compileSchema.call(this,t),!t.validate)throw new Error("ajv implementation error");return t.validate}_compileMetaSchema(t){let r=this.opts;this.opts=this._metaOpts;try{Fs.compileSchema.call(this,t)}finally{this.opts=r}}};Zs.ValidationError=RA.default;Zs.MissingRefError=Kk.default;Pt.default=Zs;function Uk(e,t,r,n="error"){for(let o in e){let s=o;s in t&&this.logger[n](`${r}: option ${o}. ${e[s]}`)}}function qk(e){return e=(0,Bs.normalizeId)(e),this.schemas[e]||this.refs[e]}function GA(){let e=this.opts.schemas;if(e)if(Array.isArray(e))this.addSchema(e);else for(let t in e)this.addSchema(e[t],t)}function UA(){for(let e in this.opts.formats){let t=this.opts.formats[e];t&&this.addFormat(e,t)}}function qA(e){if(Array.isArray(e)){this.addVocabulary(e);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let t in e){let r=e[t];r.keyword||(r.keyword=t),this.addKeyword(r)}}function KA(){let e={...this.opts};for(let t of LA)delete e[t];return e}var HA={log(){},warn(){},error(){}};function WA(e){if(e===!1)return HA;if(e===void 0)return console;if(e.log&&e.warn&&e.error)return e;throw new Error("logger must implement log, warn and error methods")}var JA=/^[a-z_$][a-z0-9_$:-]*$/i;function YA(e,t){let{RULES:r}=this;if((0,kd.eachItem)(e,n=>{if(r.keywords[n])throw new Error(`Keyword ${n} is already defined`);if(!JA.test(n))throw new Error(`Keyword ${n} has invalid name`)}),!!t&&t.$data&&!("code"in t||"validate"in t))throw new Error('$data keyword must have "code" or "validate" function')}function yd(e,t,r){var n;let o=t?.post;if(r&&o)throw new Error('keyword with "post" flag cannot have "type"');let{RULES:s}=this,a=o?s.post:s.rules.find(({type:c})=>c===r);if(a||(a={type:r,rules:[]},s.rules.push(a)),s.keywords[e]=!0,!t)return;let i={keyword:e,definition:{...t,type:(0,Xi.getJSONTypes)(t.type),schemaType:(0,Xi.getJSONTypes)(t.schemaType)}};t.before?XA.call(this,a,i,t.before):a.rules.push(i),s.all[e]=i,(n=t.implements)===null||n===void 0||n.forEach(c=>this.addKeyword(c))}function XA(e,t,r){let n=e.rules.findIndex(o=>o.keyword===r);n>=0?e.rules.splice(n,0,t):(e.rules.push(t),this.logger.warn(`rule ${r} is not defined`))}function QA(e){let{metaSchema:t}=e;t!==void 0&&(e.$data&&this.opts.$data&&(t=Wk(t)),e.validateSchema=this.compile(t,!0))}var eO={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function Wk(e){return{anyOf:[e,eO]}}});var Yk=q(vd=>{"use strict";Object.defineProperty(vd,"__esModule",{value:!0});var tO={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};vd.default=tO});var t0=q(Nn=>{"use strict";Object.defineProperty(Nn,"__esModule",{value:!0});Nn.callRef=Nn.getValidate=void 0;var rO=Ds(),Xk=nr(),Gt=be(),yo=Gr(),Qk=Gi(),Qi=Ce(),nO={keyword:"$ref",schemaType:"string",code(e){let{gen:t,schema:r,it:n}=e,{baseId:o,schemaEnv:s,validateName:a,opts:i,self:c}=n,{root:l}=s;if((r==="#"||r==="#/")&&o===l.baseId)return d();let u=Qk.resolveRef.call(c,l,o,r);if(u===void 0)throw new rO.default(n.opts.uriResolver,o,r);if(u instanceof Qk.SchemaEnv)return f(u);return g(u);function d(){if(s===l)return el(e,a,s,s.$async);let h=t.scopeValue("root",{ref:l});return el(e,(0,Gt._)`${h}.validate`,l,l.$async)}function f(h){let p=e0(e,h);el(e,p,h,h.$async)}function g(h){let p=t.scopeValue("schema",i.code.source===!0?{ref:h,code:(0,Gt.stringify)(h)}:{ref:h}),m=t.name("valid"),b=e.subschema({schema:h,dataTypes:[],schemaPath:Gt.nil,topSchemaRef:p,errSchemaPath:r},m);e.mergeEvaluated(b),e.ok(m)}}};function e0(e,t){let{gen:r}=e;return t.validate?r.scopeValue("validate",{ref:t.validate}):(0,Gt._)`${r.scopeValue("wrapper",{ref:t})}.validate`}Nn.getValidate=e0;function el(e,t,r,n){let{gen:o,it:s}=e,{allErrors:a,schemaEnv:i,opts:c}=s,l=c.passContext?yo.default.this:Gt.nil;n?u():d();function u(){if(!i.$async)throw new Error("async schema referenced by sync schema");let h=o.let("valid");o.try(()=>{o.code((0,Gt._)`await ${(0,Xk.callValidateCode)(e,t,l)}`),g(t),a||o.assign(h,!0)},p=>{o.if((0,Gt._)`!(${p} instanceof ${s.ValidationError})`,()=>o.throw(p)),f(p),a||o.assign(h,!1)}),e.ok(h)}function d(){e.result((0,Xk.callValidateCode)(e,t,l),()=>g(t),()=>f(t))}function f(h){let p=(0,Gt._)`${h}.errors`;o.assign(yo.default.vErrors,(0,Gt._)`${yo.default.vErrors} === null ? ${p} : ${yo.default.vErrors}.concat(${p})`),o.assign(yo.default.errors,(0,Gt._)`${yo.default.vErrors}.length`)}function g(h){var p;if(!s.opts.unevaluated)return;let m=(p=r?.validate)===null||p===void 0?void 0:p.evaluated;if(s.props!==!0)if(m&&!m.dynamicProps)m.props!==void 0&&(s.props=Qi.mergeEvaluated.props(o,m.props,s.props));else{let b=o.var("props",(0,Gt._)`${h}.evaluated.props`);s.props=Qi.mergeEvaluated.props(o,b,s.props,Gt.Name)}if(s.items!==!0)if(m&&!m.dynamicItems)m.items!==void 0&&(s.items=Qi.mergeEvaluated.items(o,m.items,s.items));else{let b=o.var("items",(0,Gt._)`${h}.evaluated.items`);s.items=Qi.mergeEvaluated.items(o,b,s.items,Gt.Name)}}}Nn.callRef=el;Nn.default=nO});var r0=q(zd=>{"use strict";Object.defineProperty(zd,"__esModule",{value:!0});var oO=Yk(),sO=t0(),aO=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",oO.default,sO.default];zd.default=aO});var n0=q(_d=>{"use strict";Object.defineProperty(_d,"__esModule",{value:!0});var tl=be(),fn=tl.operators,rl={maximum:{okStr:"<=",ok:fn.LTE,fail:fn.GT},minimum:{okStr:">=",ok:fn.GTE,fail:fn.LT},exclusiveMaximum:{okStr:"<",ok:fn.LT,fail:fn.GTE},exclusiveMinimum:{okStr:">",ok:fn.GT,fail:fn.LTE}},iO={message:({keyword:e,schemaCode:t})=>(0,tl.str)`must be ${rl[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>(0,tl._)`{comparison: ${rl[e].okStr}, limit: ${t}}`},lO={keyword:Object.keys(rl),type:"number",schemaType:"number",$data:!0,error:iO,code(e){let{keyword:t,data:r,schemaCode:n}=e;e.fail$data((0,tl._)`${r} ${rl[t].fail} ${n} || isNaN(${r})`)}};_d.default=lO});var o0=q(wd=>{"use strict";Object.defineProperty(wd,"__esModule",{value:!0});var Gs=be(),cO={message:({schemaCode:e})=>(0,Gs.str)`must be multiple of ${e}`,params:({schemaCode:e})=>(0,Gs._)`{multipleOf: ${e}}`},uO={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:cO,code(e){let{gen:t,data:r,schemaCode:n,it:o}=e,s=o.opts.multipleOfPrecision,a=t.let("res"),i=s?(0,Gs._)`Math.abs(Math.round(${a}) - ${a}) > 1e-${s}`:(0,Gs._)`${a} !== parseInt(${a})`;e.fail$data((0,Gs._)`(${n} === 0 || (${a} = ${r}/${n}, ${i}))`)}};wd.default=uO});var a0=q(xd=>{"use strict";Object.defineProperty(xd,"__esModule",{value:!0});function s0(e){let t=e.length,r=0,n=0,o;for(;n<t;)r++,o=e.charCodeAt(n++),o>=55296&&o<=56319&&n<t&&(o=e.charCodeAt(n),(o&64512)===56320&&n++);return r}xd.default=s0;s0.code='require("ajv/dist/runtime/ucs2length").default'});var i0=q(Sd=>{"use strict";Object.defineProperty(Sd,"__esModule",{value:!0});var Rn=be(),dO=Ce(),pO=a0(),fO={message({keyword:e,schemaCode:t}){let r=e==="maxLength"?"more":"fewer";return(0,Rn.str)`must NOT have ${r} than ${t} characters`},params:({schemaCode:e})=>(0,Rn._)`{limit: ${e}}`},mO={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:fO,code(e){let{keyword:t,data:r,schemaCode:n,it:o}=e,s=t==="maxLength"?Rn.operators.GT:Rn.operators.LT,a=o.opts.unicode===!1?(0,Rn._)`${r}.length`:(0,Rn._)`${(0,dO.useFunc)(e.gen,pO.default)}(${r})`;e.fail$data((0,Rn._)`${a} ${s} ${n}`)}};Sd.default=mO});var l0=q(Pd=>{"use strict";Object.defineProperty(Pd,"__esModule",{value:!0});var hO=nr(),gO=Ce(),ko=be(),bO={message:({schemaCode:e})=>(0,ko.str)`must match pattern "${e}"`,params:({schemaCode:e})=>(0,ko._)`{pattern: ${e}}`},yO={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:bO,code(e){let{gen:t,data:r,$data:n,schema:o,schemaCode:s,it:a}=e,i=a.opts.unicodeRegExp?"u":"";if(n){let{regExp:c}=a.opts.code,l=c.code==="new RegExp"?(0,ko._)`new RegExp`:(0,gO.useFunc)(t,c),u=t.let("valid");t.try(()=>t.assign(u,(0,ko._)`${l}(${s}, ${i}).test(${r})`),()=>t.assign(u,!1)),e.fail$data((0,ko._)`!${u}`)}else{let c=(0,hO.usePattern)(e,o);e.fail$data((0,ko._)`!${c}.test(${r})`)}}};Pd.default=yO});var c0=q($d=>{"use strict";Object.defineProperty($d,"__esModule",{value:!0});var Us=be(),kO={message({keyword:e,schemaCode:t}){let r=e==="maxProperties"?"more":"fewer";return(0,Us.str)`must NOT have ${r} than ${t} properties`},params:({schemaCode:e})=>(0,Us._)`{limit: ${e}}`},vO={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:kO,code(e){let{keyword:t,data:r,schemaCode:n}=e,o=t==="maxProperties"?Us.operators.GT:Us.operators.LT;e.fail$data((0,Us._)`Object.keys(${r}).length ${o} ${n}`)}};$d.default=vO});var u0=q(Ed=>{"use strict";Object.defineProperty(Ed,"__esModule",{value:!0});var qs=nr(),Ks=be(),zO=Ce(),_O={message:({params:{missingProperty:e}})=>(0,Ks.str)`must have required property '${e}'`,params:({params:{missingProperty:e}})=>(0,Ks._)`{missingProperty: ${e}}`},wO={keyword:"required",type:"object",schemaType:"array",$data:!0,error:_O,code(e){let{gen:t,schema:r,schemaCode:n,data:o,$data:s,it:a}=e,{opts:i}=a;if(!s&&r.length===0)return;let c=r.length>=i.loopRequired;if(a.allErrors?l():u(),i.strictRequired){let g=e.parentSchema.properties,{definedProperties:h}=e.it;for(let p of r)if(g?.[p]===void 0&&!h.has(p)){let m=a.schemaEnv.baseId+a.errSchemaPath,b=`required property "${p}" is not defined at "${m}" (strictRequired)`;(0,zO.checkStrictMode)(a,b,a.opts.strictRequired)}}function l(){if(c||s)e.block$data(Ks.nil,d);else for(let g of r)(0,qs.checkReportMissingProp)(e,g)}function u(){let g=t.let("missing");if(c||s){let h=t.let("valid",!0);e.block$data(h,()=>f(g,h)),e.ok(h)}else t.if((0,qs.checkMissingProp)(e,r,g)),(0,qs.reportMissingProp)(e,g),t.else()}function d(){t.forOf("prop",n,g=>{e.setParams({missingProperty:g}),t.if((0,qs.noPropertyInData)(t,o,g,i.ownProperties),()=>e.error())})}function f(g,h){e.setParams({missingProperty:g}),t.forOf(g,n,()=>{t.assign(h,(0,qs.propertyInData)(t,o,g,i.ownProperties)),t.if((0,Ks.not)(h),()=>{e.error(),t.break()})},Ks.nil)}}};Ed.default=wO});var d0=q(Ad=>{"use strict";Object.defineProperty(Ad,"__esModule",{value:!0});var Hs=be(),xO={message({keyword:e,schemaCode:t}){let r=e==="maxItems"?"more":"fewer";return(0,Hs.str)`must NOT have ${r} than ${t} items`},params:({schemaCode:e})=>(0,Hs._)`{limit: ${e}}`},SO={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:xO,code(e){let{keyword:t,data:r,schemaCode:n}=e,o=t==="maxItems"?Hs.operators.GT:Hs.operators.LT;e.fail$data((0,Hs._)`${r}.length ${o} ${n}`)}};Ad.default=SO});var nl=q(Od=>{"use strict";Object.defineProperty(Od,"__esModule",{value:!0});var p0=Hu();p0.code='require("ajv/dist/runtime/equal").default';Od.default=p0});var f0=q(Td=>{"use strict";Object.defineProperty(Td,"__esModule",{value:!0});var Id=Cs(),$t=be(),PO=Ce(),$O=nl(),EO={message:({params:{i:e,j:t}})=>(0,$t.str)`must NOT have duplicate items (items ## ${t} and ${e} are identical)`,params:({params:{i:e,j:t}})=>(0,$t._)`{i: ${e}, j: ${t}}`},AO={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:EO,code(e){let{gen:t,data:r,$data:n,schema:o,parentSchema:s,schemaCode:a,it:i}=e;if(!n&&!o)return;let c=t.let("valid"),l=s.items?(0,Id.getSchemaTypes)(s.items):[];e.block$data(c,u,(0,$t._)`${a} === false`),e.ok(c);function u(){let h=t.let("i",(0,$t._)`${r}.length`),p=t.let("j");e.setParams({i:h,j:p}),t.assign(c,!0),t.if((0,$t._)`${h} > 1`,()=>(d()?f:g)(h,p))}function d(){return l.length>0&&!l.some(h=>h==="object"||h==="array")}function f(h,p){let m=t.name("item"),b=(0,Id.checkDataTypes)(l,m,i.opts.strictNumbers,Id.DataType.Wrong),v=t.const("indices",(0,$t._)`{}`);t.for((0,$t._)`;${h}--;`,()=>{t.let(m,(0,$t._)`${r}[${h}]`),t.if(b,(0,$t._)`continue`),l.length>1&&t.if((0,$t._)`typeof ${m} == "string"`,(0,$t._)`${m} += "_"`),t.if((0,$t._)`typeof ${v}[${m}] == "number"`,()=>{t.assign(p,(0,$t._)`${v}[${m}]`),e.error(),t.assign(c,!1).break()}).code((0,$t._)`${v}[${m}] = ${h}`)})}function g(h,p){let m=(0,PO.useFunc)(t,$O.default),b=t.name("outer");t.label(b).for((0,$t._)`;${h}--;`,()=>t.for((0,$t._)`${p} = ${h}; ${p}--;`,()=>t.if((0,$t._)`${m}(${r}[${h}], ${r}[${p}])`,()=>{e.error(),t.assign(c,!1).break(b)})))}}};Td.default=AO});var m0=q(Nd=>{"use strict";Object.defineProperty(Nd,"__esModule",{value:!0});var Cd=be(),OO=Ce(),IO=nl(),TO={message:"must be equal to constant",params:({schemaCode:e})=>(0,Cd._)`{allowedValue: ${e}}`},CO={keyword:"const",$data:!0,error:TO,code(e){let{gen:t,data:r,$data:n,schemaCode:o,schema:s}=e;n||s&&typeof s=="object"?e.fail$data((0,Cd._)`!${(0,OO.useFunc)(t,IO.default)}(${r}, ${o})`):e.fail((0,Cd._)`${s} !== ${r}`)}};Nd.default=CO});var h0=q(Rd=>{"use strict";Object.defineProperty(Rd,"__esModule",{value:!0});var Ws=be(),NO=Ce(),RO=nl(),jO={message:"must be equal to one of the allowed values",params:({schemaCode:e})=>(0,Ws._)`{allowedValues: ${e}}`},MO={keyword:"enum",schemaType:"array",$data:!0,error:jO,code(e){let{gen:t,data:r,$data:n,schema:o,schemaCode:s,it:a}=e;if(!n&&o.length===0)throw new Error("enum must have non-empty array");let i=o.length>=a.opts.loopEnum,c,l=()=>c??(c=(0,NO.useFunc)(t,RO.default)),u;if(i||n)u=t.let("valid"),e.block$data(u,d);else{if(!Array.isArray(o))throw new Error("ajv implementation error");let g=t.const("vSchema",s);u=(0,Ws.or)(...o.map((h,p)=>f(g,p)))}e.pass(u);function d(){t.assign(u,!1),t.forOf("v",s,g=>t.if((0,Ws._)`${l()}(${r}, ${g})`,()=>t.assign(u,!0).break()))}function f(g,h){let p=o[h];return typeof p=="object"&&p!==null?(0,Ws._)`${l()}(${r}, ${g}[${h}])`:(0,Ws._)`${r} === ${p}`}}};Rd.default=MO});var g0=q(jd=>{"use strict";Object.defineProperty(jd,"__esModule",{value:!0});var DO=n0(),LO=o0(),VO=i0(),FO=l0(),BO=c0(),ZO=u0(),GO=d0(),UO=f0(),qO=m0(),KO=h0(),HO=[DO.default,LO.default,VO.default,FO.default,BO.default,ZO.default,GO.default,UO.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},qO.default,KO.default];jd.default=HO});var Dd=q(Js=>{"use strict";Object.defineProperty(Js,"__esModule",{value:!0});Js.validateAdditionalItems=void 0;var jn=be(),Md=Ce(),WO={message:({params:{len:e}})=>(0,jn.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,jn._)`{limit: ${e}}`},JO={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:WO,code(e){let{parentSchema:t,it:r}=e,{items:n}=t;if(!Array.isArray(n)){(0,Md.checkStrictMode)(r,'"additionalItems" is ignored when "items" is not an array of schemas');return}b0(e,n)}};function b0(e,t){let{gen:r,schema:n,data:o,keyword:s,it:a}=e;a.items=!0;let i=r.const("len",(0,jn._)`${o}.length`);if(n===!1)e.setParams({len:t.length}),e.pass((0,jn._)`${i} <= ${t.length}`);else if(typeof n=="object"&&!(0,Md.alwaysValidSchema)(a,n)){let l=r.var("valid",(0,jn._)`${i} <= ${t.length}`);r.if((0,jn.not)(l),()=>c(l)),e.ok(l)}function c(l){r.forRange("i",t.length,i,u=>{e.subschema({keyword:s,dataProp:u,dataPropType:Md.Type.Num},l),a.allErrors||r.if((0,jn.not)(l),()=>r.break())})}}Js.validateAdditionalItems=b0;Js.default=JO});var Ld=q(Ys=>{"use strict";Object.defineProperty(Ys,"__esModule",{value:!0});Ys.validateTuple=void 0;var y0=be(),ol=Ce(),YO=nr(),XO={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(e){let{schema:t,it:r}=e;if(Array.isArray(t))return k0(e,"additionalItems",t);r.items=!0,!(0,ol.alwaysValidSchema)(r,t)&&e.ok((0,YO.validateArray)(e))}};function k0(e,t,r=e.schema){let{gen:n,parentSchema:o,data:s,keyword:a,it:i}=e;u(o),i.opts.unevaluated&&r.length&&i.items!==!0&&(i.items=ol.mergeEvaluated.items(n,r.length,i.items));let c=n.name("valid"),l=n.const("len",(0,y0._)`${s}.length`);r.forEach((d,f)=>{(0,ol.alwaysValidSchema)(i,d)||(n.if((0,y0._)`${l} > ${f}`,()=>e.subschema({keyword:a,schemaProp:f,dataProp:f},c)),e.ok(c))});function u(d){let{opts:f,errSchemaPath:g}=i,h=r.length,p=h===d.minItems&&(h===d.maxItems||d[t]===!1);if(f.strictTuples&&!p){let m=`"${a}" is ${h}-tuple, but minItems or maxItems/${t} are not specified or different at path "${g}"`;(0,ol.checkStrictMode)(i,m,f.strictTuples)}}}Ys.validateTuple=k0;Ys.default=XO});var v0=q(Vd=>{"use strict";Object.defineProperty(Vd,"__esModule",{value:!0});var QO=Ld(),eI={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:e=>(0,QO.validateTuple)(e,"items")};Vd.default=eI});var _0=q(Fd=>{"use strict";Object.defineProperty(Fd,"__esModule",{value:!0});var z0=be(),tI=Ce(),rI=nr(),nI=Dd(),oI={message:({params:{len:e}})=>(0,z0.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,z0._)`{limit: ${e}}`},sI={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:oI,code(e){let{schema:t,parentSchema:r,it:n}=e,{prefixItems:o}=r;n.items=!0,!(0,tI.alwaysValidSchema)(n,t)&&(o?(0,nI.validateAdditionalItems)(e,o):e.ok((0,rI.validateArray)(e)))}};Fd.default=sI});var w0=q(Bd=>{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});var sr=be(),sl=Ce(),aI={message:({params:{min:e,max:t}})=>t===void 0?(0,sr.str)`must contain at least ${e} valid item(s)`:(0,sr.str)`must contain at least ${e} and no more than ${t} valid item(s)`,params:({params:{min:e,max:t}})=>t===void 0?(0,sr._)`{minContains: ${e}}`:(0,sr._)`{minContains: ${e}, maxContains: ${t}}`},iI={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:aI,code(e){let{gen:t,schema:r,parentSchema:n,data:o,it:s}=e,a,i,{minContains:c,maxContains:l}=n;s.opts.next?(a=c===void 0?1:c,i=l):a=1;let u=t.const("len",(0,sr._)`${o}.length`);if(e.setParams({min:a,max:i}),i===void 0&&a===0){(0,sl.checkStrictMode)(s,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(i!==void 0&&a>i){(0,sl.checkStrictMode)(s,'"minContains" > "maxContains" is always invalid'),e.fail();return}if((0,sl.alwaysValidSchema)(s,r)){let p=(0,sr._)`${u} >= ${a}`;i!==void 0&&(p=(0,sr._)`${p} && ${u} <= ${i}`),e.pass(p);return}s.items=!0;let d=t.name("valid");i===void 0&&a===1?g(d,()=>t.if(d,()=>t.break())):a===0?(t.let(d,!0),i!==void 0&&t.if((0,sr._)`${o}.length > 0`,f)):(t.let(d,!1),f()),e.result(d,()=>e.reset());function f(){let p=t.name("_valid"),m=t.let("count",0);g(p,()=>t.if(p,()=>h(m)))}function g(p,m){t.forRange("i",0,u,b=>{e.subschema({keyword:"contains",dataProp:b,dataPropType:sl.Type.Num,compositeRule:!0},p),m()})}function h(p){t.code((0,sr._)`${p}++`),i===void 0?t.if((0,sr._)`${p} >= ${a}`,()=>t.assign(d,!0).break()):(t.if((0,sr._)`${p} > ${i}`,()=>t.assign(d,!1).break()),a===1?t.assign(d,!0):t.if((0,sr._)`${p} >= ${a}`,()=>t.assign(d,!0)))}}};Bd.default=iI});var P0=q(Er=>{"use strict";Object.defineProperty(Er,"__esModule",{value:!0});Er.validateSchemaDeps=Er.validatePropertyDeps=Er.error=void 0;var Zd=be(),lI=Ce(),Xs=nr();Er.error={message:({params:{property:e,depsCount:t,deps:r}})=>{let n=t===1?"property":"properties";return(0,Zd.str)`must have ${n} ${r} when property ${e} is present`},params:({params:{property:e,depsCount:t,deps:r,missingProperty:n}})=>(0,Zd._)`{property: ${e},
8
8
  missingProperty: ${n},
9
9
  depsCount: ${t},
10
- deps: ${r}}`};var WO={keyword:"dependencies",type:"object",schemaType:"object",error:Pr.error,code(e){let[t,r]=JO(e);g0(e,t),b0(e,r)}};function JO({schema:e}){let t={},r={};for(let n in e){if(n==="__proto__")continue;let o=Array.isArray(e[n])?t:r;o[n]=e[n]}return[t,r]}function g0(e,t=e.schema){let{gen:r,data:n,it:o}=e;if(Object.keys(t).length===0)return;let s=r.let("missing");for(let a in t){let i=t[a];if(i.length===0)continue;let l=(0,Hs.propertyInData)(r,n,a,o.opts.ownProperties);e.setParams({property:a,depsCount:i.length,deps:i.join(", ")}),o.allErrors?r.if(l,()=>{for(let c of i)(0,Hs.checkReportMissingProp)(e,c)}):(r.if((0,jd._)`${l} && (${(0,Hs.checkMissingProp)(e,i,s)})`),(0,Hs.reportMissingProp)(e,s),r.else())}}Pr.validatePropertyDeps=g0;function b0(e,t=e.schema){let{gen:r,data:n,keyword:o,it:s}=e,a=r.name("valid");for(let i in t)(0,HO.alwaysValidSchema)(s,t[i])||(r.if((0,Hs.propertyInData)(r,n,i,s.opts.ownProperties),()=>{let l=e.subschema({keyword:o,schemaProp:i},a);e.mergeValidEvaluated(l,a)},()=>r.var(a,!0)),e.ok(a))}Pr.validateSchemaDeps=b0;Pr.default=WO});var v0=U(Md=>{"use strict";Object.defineProperty(Md,"__esModule",{value:!0});var k0=be(),YO=Ce(),XO={message:"property name must be valid",params:({params:e})=>(0,k0._)`{propertyName: ${e.propertyName}}`},QO={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:XO,code(e){let{gen:t,schema:r,data:n,it:o}=e;if((0,YO.alwaysValidSchema)(o,r))return;let s=t.name("valid");t.forIn("key",n,a=>{e.setParams({propertyName:a}),e.subschema({keyword:"propertyNames",data:a,dataTypes:["string"],propertyName:a,compositeRule:!0},s),t.if((0,k0.not)(s),()=>{e.error(!0),o.allErrors||t.break()})}),e.ok(s)}};Md.default=QO});var Ld=U(Dd=>{"use strict";Object.defineProperty(Dd,"__esModule",{value:!0});var rl=rr(),hr=be(),eI=Br(),nl=Ce(),tI={message:"must NOT have additional properties",params:({params:e})=>(0,hr._)`{additionalProperty: ${e.additionalProperty}}`},rI={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:tI,code(e){let{gen:t,schema:r,parentSchema:n,data:o,errsCount:s,it:a}=e;if(!s)throw new Error("ajv implementation error");let{allErrors:i,opts:l}=a;if(a.props=!0,l.removeAdditional!=="all"&&(0,nl.alwaysValidSchema)(a,r))return;let c=(0,rl.allSchemaProperties)(n.properties),u=(0,rl.allSchemaProperties)(n.patternProperties);d(),e.ok((0,hr._)`${s} === ${eI.default.errors}`);function d(){t.forIn("key",o,h=>{!c.length&&!u.length?b(h):t.if(p(h),()=>b(h))})}function p(h){let g;if(c.length>8){let v=(0,nl.schemaRefOrVal)(a,n.properties,"properties");g=(0,rl.isOwnProperty)(t,v,h)}else c.length?g=(0,hr.or)(...c.map(v=>(0,hr._)`${h} === ${v}`)):g=hr.nil;return u.length&&(g=(0,hr.or)(g,...u.map(v=>(0,hr._)`${(0,rl.usePattern)(e,v)}.test(${h})`))),(0,hr.not)(g)}function m(h){t.code((0,hr._)`delete ${o}[${h}]`)}function b(h){if(l.removeAdditional==="all"||l.removeAdditional&&r===!1){m(h);return}if(r===!1){e.setParams({additionalProperty:h}),e.error(),i||t.break();return}if(typeof r=="object"&&!(0,nl.alwaysValidSchema)(a,r)){let g=t.name("valid");l.removeAdditional==="failing"?(f(h,g,!1),t.if((0,hr.not)(g),()=>{e.reset(),m(h)})):(f(h,g),i||t.if((0,hr.not)(g),()=>t.break()))}}function f(h,g,v){let _={keyword:"additionalProperties",dataProp:h,dataPropType:nl.Type.Str};v===!1&&Object.assign(_,{compositeRule:!0,createErrors:!1,allErrors:!1}),e.subschema(_,g)}}};Dd.default=rI});var w0=U(Fd=>{"use strict";Object.defineProperty(Fd,"__esModule",{value:!0});var nI=Cs(),z0=rr(),Vd=Ce(),_0=Ld(),oI={keyword:"properties",type:"object",schemaType:"object",code(e){let{gen:t,schema:r,parentSchema:n,data:o,it:s}=e;s.opts.removeAdditional==="all"&&n.additionalProperties===void 0&&_0.default.code(new nI.KeywordCxt(s,_0.default,"additionalProperties"));let a=(0,z0.allSchemaProperties)(r);for(let d of a)s.definedProperties.add(d);s.opts.unevaluated&&a.length&&s.props!==!0&&(s.props=Vd.mergeEvaluated.props(t,(0,Vd.toHash)(a),s.props));let i=a.filter(d=>!(0,Vd.alwaysValidSchema)(s,r[d]));if(i.length===0)return;let l=t.name("valid");for(let d of i)c(d)?u(d):(t.if((0,z0.propertyInData)(t,o,d,s.opts.ownProperties)),u(d),s.allErrors||t.else().var(l,!0),t.endIf()),e.it.definedProperties.add(d),e.ok(l);function c(d){return s.opts.useDefaults&&!s.compositeRule&&r[d].default!==void 0}function u(d){e.subschema({keyword:"properties",schemaProp:d,dataProp:d},l)}}};Fd.default=oI});var $0=U(Zd=>{"use strict";Object.defineProperty(Zd,"__esModule",{value:!0});var x0=rr(),ol=be(),S0=Ce(),P0=Ce(),sI={keyword:"patternProperties",type:"object",schemaType:"object",code(e){let{gen:t,schema:r,data:n,parentSchema:o,it:s}=e,{opts:a}=s,i=(0,x0.allSchemaProperties)(r),l=i.filter(f=>(0,S0.alwaysValidSchema)(s,r[f]));if(i.length===0||l.length===i.length&&(!s.opts.unevaluated||s.props===!0))return;let c=a.strictSchema&&!a.allowMatchingProperties&&o.properties,u=t.name("valid");s.props!==!0&&!(s.props instanceof ol.Name)&&(s.props=(0,P0.evaluatedPropsToName)(t,s.props));let{props:d}=s;p();function p(){for(let f of i)c&&m(f),s.allErrors?b(f):(t.var(u,!0),b(f),t.if(u))}function m(f){for(let h in c)new RegExp(f).test(h)&&(0,S0.checkStrictMode)(s,`property ${h} matches pattern ${f} (use allowMatchingProperties)`)}function b(f){t.forIn("key",n,h=>{t.if((0,ol._)`${(0,x0.usePattern)(e,f)}.test(${h})`,()=>{let g=l.includes(f);g||e.subschema({keyword:"patternProperties",schemaProp:f,dataProp:h,dataPropType:P0.Type.Str},u),s.opts.unevaluated&&d!==!0?t.assign((0,ol._)`${d}[${h}]`,!0):!g&&!s.allErrors&&t.if((0,ol.not)(u),()=>t.break())})})}}};Zd.default=sI});var E0=U(Bd=>{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});var aI=Ce(),iI={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){let{gen:t,schema:r,it:n}=e;if((0,aI.alwaysValidSchema)(n,r)){e.fail();return}let o=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),e.failResult(o,()=>e.reset(),()=>e.error())},error:{message:"must NOT be valid"}};Bd.default=iI});var A0=U(Gd=>{"use strict";Object.defineProperty(Gd,"__esModule",{value:!0});var lI=rr(),cI={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:lI.validateUnion,error:{message:"must match a schema in anyOf"}};Gd.default=cI});var O0=U(Ud=>{"use strict";Object.defineProperty(Ud,"__esModule",{value:!0});var sl=be(),uI=Ce(),dI={message:"must match exactly one schema in oneOf",params:({params:e})=>(0,sl._)`{passingSchemas: ${e.passing}}`},pI={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:dI,code(e){let{gen:t,schema:r,parentSchema:n,it:o}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");if(o.opts.discriminator&&n.discriminator)return;let s=r,a=t.let("valid",!1),i=t.let("passing",null),l=t.name("_valid");e.setParams({passing:i}),t.block(c),e.result(a,()=>e.reset(),()=>e.error(!0));function c(){s.forEach((u,d)=>{let p;(0,uI.alwaysValidSchema)(o,u)?t.var(l,!0):p=e.subschema({keyword:"oneOf",schemaProp:d,compositeRule:!0},l),d>0&&t.if((0,sl._)`${l} && ${a}`).assign(a,!1).assign(i,(0,sl._)`[${i}, ${d}]`).else(),t.if(l,()=>{t.assign(a,!0),t.assign(i,d),p&&e.mergeEvaluated(p,sl.Name)})})}}};Ud.default=pI});var I0=U(qd=>{"use strict";Object.defineProperty(qd,"__esModule",{value:!0});var fI=Ce(),mI={keyword:"allOf",schemaType:"array",code(e){let{gen:t,schema:r,it:n}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");let o=t.name("valid");r.forEach((s,a)=>{if((0,fI.alwaysValidSchema)(n,s))return;let i=e.subschema({keyword:"allOf",schemaProp:a},o);e.ok(o),e.mergeEvaluated(i)})}};qd.default=mI});var N0=U(Kd=>{"use strict";Object.defineProperty(Kd,"__esModule",{value:!0});var al=be(),C0=Ce(),hI={message:({params:e})=>(0,al.str)`must match "${e.ifClause}" schema`,params:({params:e})=>(0,al._)`{failingKeyword: ${e.ifClause}}`},gI={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:hI,code(e){let{gen:t,parentSchema:r,it:n}=e;r.then===void 0&&r.else===void 0&&(0,C0.checkStrictMode)(n,'"if" without "then" and "else" is ignored');let o=T0(n,"then"),s=T0(n,"else");if(!o&&!s)return;let a=t.let("valid",!0),i=t.name("_valid");if(l(),e.reset(),o&&s){let u=t.let("ifClause");e.setParams({ifClause:u}),t.if(i,c("then",u),c("else",u))}else o?t.if(i,c("then")):t.if((0,al.not)(i),c("else"));e.pass(a,()=>e.error(!0));function l(){let u=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},i);e.mergeEvaluated(u)}function c(u,d){return()=>{let p=e.subschema({keyword:u},i);t.assign(a,i),e.mergeValidEvaluated(p,a),d?t.assign(d,(0,al._)`${u}`):e.setParams({ifClause:u})}}}};function T0(e,t){let r=e.schema[t];return r!==void 0&&!(0,C0.alwaysValidSchema)(e,r)}Kd.default=gI});var R0=U(Hd=>{"use strict";Object.defineProperty(Hd,"__esModule",{value:!0});var bI=Ce(),yI={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:r}){t.if===void 0&&(0,bI.checkStrictMode)(r,`"${e}" without "if" is ignored`)}};Hd.default=yI});var j0=U(Wd=>{"use strict";Object.defineProperty(Wd,"__esModule",{value:!0});var kI=Id(),vI=p0(),zI=Td(),_I=m0(),wI=h0(),xI=y0(),SI=v0(),PI=Ld(),$I=w0(),EI=$0(),AI=E0(),OI=A0(),II=O0(),TI=I0(),CI=N0(),NI=R0();function RI(e=!1){let t=[AI.default,OI.default,II.default,TI.default,CI.default,NI.default,SI.default,PI.default,xI.default,$I.default,EI.default];return e?t.push(vI.default,_I.default):t.push(kI.default,zI.default),t.push(wI.default),t}Wd.default=RI});var M0=U(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});var at=be(),jI={message:({schemaCode:e})=>(0,at.str)`must match format "${e}"`,params:({schemaCode:e})=>(0,at._)`{format: ${e}}`},MI={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:jI,code(e,t){let{gen:r,data:n,$data:o,schema:s,schemaCode:a,it:i}=e,{opts:l,errSchemaPath:c,schemaEnv:u,self:d}=i;if(!l.validateFormats)return;o?p():m();function p(){let b=r.scopeValue("formats",{ref:d.formats,code:l.code.formats}),f=r.const("fDef",(0,at._)`${b}[${a}]`),h=r.let("fType"),g=r.let("format");r.if((0,at._)`typeof ${f} == "object" && !(${f} instanceof RegExp)`,()=>r.assign(h,(0,at._)`${f}.type || "string"`).assign(g,(0,at._)`${f}.validate`),()=>r.assign(h,(0,at._)`"string"`).assign(g,f)),e.fail$data((0,at.or)(v(),_()));function v(){return l.strictSchema===!1?at.nil:(0,at._)`${a} && !${g}`}function _(){let w=u.$async?(0,at._)`(${f}.async ? await ${g}(${n}) : ${g}(${n}))`:(0,at._)`${g}(${n})`,k=(0,at._)`(typeof ${g} == "function" ? ${w} : ${g}.test(${n}))`;return(0,at._)`${g} && ${g} !== true && ${h} === ${t} && !${k}`}}function m(){let b=d.formats[s];if(!b){v();return}if(b===!0)return;let[f,h,g]=_(b);f===t&&e.pass(w());function v(){if(l.strictSchema===!1){d.logger.warn(k());return}throw new Error(k());function k(){return`unknown format "${s}" ignored in schema at path "${c}"`}}function _(k){let P=k instanceof RegExp?(0,at.regexpCode)(k):l.code.formats?(0,at._)`${l.code.formats}${(0,at.getProperty)(s)}`:void 0,A=r.scopeValue("formats",{key:s,ref:k,code:P});return typeof k=="object"&&!(k instanceof RegExp)?[k.type||"string",k.validate,(0,at._)`${A}.validate`]:["string",k,A]}function w(){if(typeof b=="object"&&!(b instanceof RegExp)&&b.async){if(!u.$async)throw new Error("async format in sync schema");return(0,at._)`await ${g}(${n})`}return typeof h=="function"?(0,at._)`${g}(${n})`:(0,at._)`${g}.test(${n})`}}}};Jd.default=MI});var D0=U(Yd=>{"use strict";Object.defineProperty(Yd,"__esModule",{value:!0});var DI=M0(),LI=[DI.default];Yd.default=LI});var L0=U(yo=>{"use strict";Object.defineProperty(yo,"__esModule",{value:!0});yo.contentVocabulary=yo.metadataVocabulary=void 0;yo.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];yo.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var F0=U(Xd=>{"use strict";Object.defineProperty(Xd,"__esModule",{value:!0});var VI=Hk(),FI=l0(),ZI=j0(),BI=D0(),V0=L0(),GI=[VI.default,FI.default,(0,ZI.default)(),BI.default,V0.metadataVocabulary,V0.contentVocabulary];Xd.default=GI});var B0=U(il=>{"use strict";Object.defineProperty(il,"__esModule",{value:!0});il.DiscrError=void 0;var Z0;(function(e){e.Tag="tag",e.Mapping="mapping"})(Z0||(il.DiscrError=Z0={}))});var U0=U(ep=>{"use strict";Object.defineProperty(ep,"__esModule",{value:!0});var ko=be(),Qd=B0(),G0=Vi(),UI=Ns(),qI=Ce(),KI={message:({params:{discrError:e,tagName:t}})=>e===Qd.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:t,tagName:r}})=>(0,ko._)`{error: ${e}, tag: ${r}, tagValue: ${t}}`},HI={keyword:"discriminator",type:"object",schemaType:"object",error:KI,code(e){let{gen:t,data:r,schema:n,parentSchema:o,it:s}=e,{oneOf:a}=o;if(!s.opts.discriminator)throw new Error("discriminator: requires discriminator option");let i=n.propertyName;if(typeof i!="string")throw new Error("discriminator: requires propertyName");if(n.mapping)throw new Error("discriminator: mapping is not supported");if(!a)throw new Error("discriminator: requires oneOf keyword");let l=t.let("valid",!1),c=t.const("tag",(0,ko._)`${r}${(0,ko.getProperty)(i)}`);t.if((0,ko._)`typeof ${c} == "string"`,()=>u(),()=>e.error(!1,{discrError:Qd.DiscrError.Tag,tag:c,tagName:i})),e.ok(l);function u(){let m=p();t.if(!1);for(let b in m)t.elseIf((0,ko._)`${c} === ${b}`),t.assign(l,d(m[b]));t.else(),e.error(!1,{discrError:Qd.DiscrError.Mapping,tag:c,tagName:i}),t.endIf()}function d(m){let b=t.name("valid"),f=e.subschema({keyword:"oneOf",schemaProp:m},b);return e.mergeEvaluated(f,ko.Name),b}function p(){var m;let b={},f=g(o),h=!0;for(let w=0;w<a.length;w++){let k=a[w];if(k?.$ref&&!(0,qI.schemaHasRulesButRef)(k,s.self.RULES)){let A=k.$ref;if(k=G0.resolveRef.call(s.self,s.schemaEnv.root,s.baseId,A),k instanceof G0.SchemaEnv&&(k=k.schema),k===void 0)throw new UI.default(s.opts.uriResolver,s.baseId,A)}let P=(m=k?.properties)===null||m===void 0?void 0:m[i];if(typeof P!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${i}"`);h=h&&(f||g(k)),v(P,w)}if(!h)throw new Error(`discriminator: "${i}" must be required`);return b;function g({required:w}){return Array.isArray(w)&&w.includes(i)}function v(w,k){if(w.const)_(w.const,k);else if(w.enum)for(let P of w.enum)_(P,k);else throw new Error(`discriminator: "properties/${i}" must have "const" or "enum"`)}function _(w,k){if(typeof w!="string"||w in b)throw new Error(`discriminator: "${i}" values must be unique strings`);b[w]=k}}}};ep.default=HI});var q0=U((N4,WI)=>{WI.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var rp=U((Ye,tp)=>{"use strict";Object.defineProperty(Ye,"__esModule",{value:!0});Ye.MissingRefError=Ye.ValidationError=Ye.CodeGen=Ye.Name=Ye.nil=Ye.stringify=Ye.str=Ye._=Ye.KeywordCxt=Ye.Ajv=void 0;var JI=Zk(),YI=F0(),XI=U0(),K0=q0(),QI=["/properties"],ll="http://json-schema.org/draft-07/schema",vo=class extends JI.default{_addVocabularies(){super._addVocabularies(),YI.default.forEach(t=>this.addVocabulary(t)),this.opts.discriminator&&this.addKeyword(XI.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let t=this.opts.$data?this.$dataMetaSchema(K0,QI):K0;this.addMetaSchema(t,ll,!1),this.refs["http://json-schema.org/schema"]=ll}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(ll)?ll:void 0)}};Ye.Ajv=vo;tp.exports=Ye=vo;tp.exports.Ajv=vo;Object.defineProperty(Ye,"__esModule",{value:!0});Ye.default=vo;var eT=Cs();Object.defineProperty(Ye,"KeywordCxt",{enumerable:!0,get:function(){return eT.KeywordCxt}});var zo=be();Object.defineProperty(Ye,"_",{enumerable:!0,get:function(){return zo._}});Object.defineProperty(Ye,"str",{enumerable:!0,get:function(){return zo.str}});Object.defineProperty(Ye,"stringify",{enumerable:!0,get:function(){return zo.stringify}});Object.defineProperty(Ye,"nil",{enumerable:!0,get:function(){return zo.nil}});Object.defineProperty(Ye,"Name",{enumerable:!0,get:function(){return zo.Name}});Object.defineProperty(Ye,"CodeGen",{enumerable:!0,get:function(){return zo.CodeGen}});var tT=Di();Object.defineProperty(Ye,"ValidationError",{enumerable:!0,get:function(){return tT.default}});var rT=Ns();Object.defineProperty(Ye,"MissingRefError",{enumerable:!0,get:function(){return rT.default}})});var tv=U(Er=>{"use strict";Object.defineProperty(Er,"__esModule",{value:!0});Er.formatNames=Er.fastFormats=Er.fullFormats=void 0;function $r(e,t){return{validate:e,compare:t}}Er.fullFormats={date:$r(Y0,ap),time:$r(op(!0),ip),"date-time":$r(H0(!0),Q0),"iso-time":$r(op(),X0),"iso-date-time":$r(H0(),ev),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:lT,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex:hT,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte:cT,int32:{type:"number",validate:pT},int64:{type:"number",validate:fT},float:{type:"number",validate:J0},double:{type:"number",validate:J0},password:!0,binary:!0};Er.fastFormats={...Er.fullFormats,date:$r(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,ap),time:$r(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,ip),"date-time":$r(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,Q0),"iso-time":$r(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,X0),"iso-date-time":$r(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,ev),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i};Er.formatNames=Object.keys(Er.fullFormats);function nT(e){return e%4===0&&(e%100!==0||e%400===0)}var oT=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,sT=[0,31,28,31,30,31,30,31,31,30,31,30,31];function Y0(e){let t=oT.exec(e);if(!t)return!1;let r=+t[1],n=+t[2],o=+t[3];return n>=1&&n<=12&&o>=1&&o<=(n===2&&nT(r)?29:sT[n])}function ap(e,t){if(e&&t)return e>t?1:e<t?-1:0}var np=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function op(e){return function(r){let n=np.exec(r);if(!n)return!1;let o=+n[1],s=+n[2],a=+n[3],i=n[4],l=n[5]==="-"?-1:1,c=+(n[6]||0),u=+(n[7]||0);if(c>23||u>59||e&&!i)return!1;if(o<=23&&s<=59&&a<60)return!0;let d=s-u*l,p=o-c*l-(d<0?1:0);return(p===23||p===-1)&&(d===59||d===-1)&&a<61}}function ip(e,t){if(!(e&&t))return;let r=new Date("2020-01-01T"+e).valueOf(),n=new Date("2020-01-01T"+t).valueOf();if(r&&n)return r-n}function X0(e,t){if(!(e&&t))return;let r=np.exec(e),n=np.exec(t);if(r&&n)return e=r[1]+r[2]+r[3],t=n[1]+n[2]+n[3],e>t?1:e<t?-1:0}var sp=/t|\s/i;function H0(e){let t=op(e);return function(n){let o=n.split(sp);return o.length===2&&Y0(o[0])&&t(o[1])}}function Q0(e,t){if(!(e&&t))return;let r=new Date(e).valueOf(),n=new Date(t).valueOf();if(r&&n)return r-n}function ev(e,t){if(!(e&&t))return;let[r,n]=e.split(sp),[o,s]=t.split(sp),a=ap(r,o);if(a!==void 0)return a||ip(n,s)}var aT=/\/|:/,iT=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function lT(e){return aT.test(e)&&iT.test(e)}var W0=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function cT(e){return W0.lastIndex=0,W0.test(e)}var uT=-(2**31),dT=2**31-1;function pT(e){return Number.isInteger(e)&&e<=dT&&e>=uT}function fT(e){return Number.isInteger(e)}function J0(){return!0}var mT=/[^\\]\\Z/;function hT(e){if(mT.test(e))return!1;try{return new RegExp(e),!0}catch{return!1}}});var rv=U(_o=>{"use strict";Object.defineProperty(_o,"__esModule",{value:!0});_o.formatLimitDefinition=void 0;var gT=rp(),gr=be(),fn=gr.operators,cl={formatMaximum:{okStr:"<=",ok:fn.LTE,fail:fn.GT},formatMinimum:{okStr:">=",ok:fn.GTE,fail:fn.LT},formatExclusiveMaximum:{okStr:"<",ok:fn.LT,fail:fn.GTE},formatExclusiveMinimum:{okStr:">",ok:fn.GT,fail:fn.LTE}},bT={message:({keyword:e,schemaCode:t})=>(0,gr.str)`should be ${cl[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>(0,gr._)`{comparison: ${cl[e].okStr}, limit: ${t}}`};_o.formatLimitDefinition={keyword:Object.keys(cl),type:"string",schemaType:"string",$data:!0,error:bT,code(e){let{gen:t,data:r,schemaCode:n,keyword:o,it:s}=e,{opts:a,self:i}=s;if(!a.validateFormats)return;let l=new gT.KeywordCxt(s,i.RULES.all.format.definition,"format");l.$data?c():u();function c(){let p=t.scopeValue("formats",{ref:i.formats,code:a.code.formats}),m=t.const("fmt",(0,gr._)`${p}[${l.schemaCode}]`);e.fail$data((0,gr.or)((0,gr._)`typeof ${m} != "object"`,(0,gr._)`${m} instanceof RegExp`,(0,gr._)`typeof ${m}.compare != "function"`,d(m)))}function u(){let p=l.schema,m=i.formats[p];if(!m||m===!0)return;if(typeof m!="object"||m instanceof RegExp||typeof m.compare!="function")throw new Error(`"${o}": format "${p}" does not define "compare" function`);let b=t.scopeValue("formats",{key:p,ref:m,code:a.code.formats?(0,gr._)`${a.code.formats}${(0,gr.getProperty)(p)}`:void 0});e.fail$data(d(b))}function d(p){return(0,gr._)`${p}.compare(${r}, ${n}) ${cl[o].fail} 0`}},dependencies:["format"]};var yT=e=>(e.addKeyword(_o.formatLimitDefinition),e);_o.default=yT});var av=U((Ws,sv)=>{"use strict";Object.defineProperty(Ws,"__esModule",{value:!0});var wo=tv(),kT=rv(),lp=be(),nv=new lp.Name("fullFormats"),vT=new lp.Name("fastFormats"),cp=(e,t={keywords:!0})=>{if(Array.isArray(t))return ov(e,t,wo.fullFormats,nv),e;let[r,n]=t.mode==="fast"?[wo.fastFormats,vT]:[wo.fullFormats,nv],o=t.formats||wo.formatNames;return ov(e,o,r,n),t.keywords&&(0,kT.default)(e),e};cp.get=(e,t="full")=>{let n=(t==="fast"?wo.fastFormats:wo.fullFormats)[e];if(!n)throw new Error(`Unknown format "${e}"`);return n};function ov(e,t,r,n){var o,s;(o=(s=e.opts.code).formats)!==null&&o!==void 0||(s.formats=(0,lp._)`require("ajv-formats/dist/formats").${n}`);for(let a of t)e.addFormat(a,r[a])}sv.exports=Ws=cp;Object.defineProperty(Ws,"__esModule",{value:!0});Ws.default=cp});var Ur=U((H4,fv)=>{"use strict";var dv=["nodebuffer","arraybuffer","fragments"],pv=typeof Blob<"u";pv&&dv.push("blob");fv.exports={BINARY_TYPES:dv,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:pv,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var Js=U((W4,fl)=>{"use strict";var{EMPTY_BUFFER:_T}=Ur(),up=Buffer[Symbol.species];function wT(e,t){if(e.length===0)return _T;if(e.length===1)return e[0];let r=Buffer.allocUnsafe(t),n=0;for(let o=0;o<e.length;o++){let s=e[o];r.set(s,n),n+=s.length}return n<t?new up(r.buffer,r.byteOffset,n):r}function mv(e,t,r,n,o){for(let s=0;s<o;s++)r[n+s]=e[s]^t[s&3]}function hv(e,t){for(let r=0;r<e.length;r++)e[r]^=t[r&3]}function xT(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function dp(e){if(dp.readOnly=!0,Buffer.isBuffer(e))return e;let t;return e instanceof ArrayBuffer?t=new up(e):ArrayBuffer.isView(e)?t=new up(e.buffer,e.byteOffset,e.byteLength):(t=Buffer.from(e),dp.readOnly=!1),t}fl.exports={concat:wT,mask:mv,toArrayBuffer:xT,toBuffer:dp,unmask:hv};if(!process.env.WS_NO_BUFFER_UTIL)try{let e=ut("bufferutil");fl.exports.mask=function(t,r,n,o,s){s<48?mv(t,r,n,o,s):e.mask(t,r,n,o,s)},fl.exports.unmask=function(t,r){t.length<32?hv(t,r):e.unmask(t,r)}}catch{}});var yv=U((J4,bv)=>{"use strict";var gv=Symbol("kDone"),pp=Symbol("kRun"),fp=class{constructor(t){this[gv]=()=>{this.pending--,this[pp]()},this.concurrency=t||1/0,this.jobs=[],this.pending=0}add(t){this.jobs.push(t),this[pp]()}[pp](){if(this.pending!==this.concurrency&&this.jobs.length){let t=this.jobs.shift();this.pending++,t(this[gv])}}};bv.exports=fp});var Xs=U((Y4,_v)=>{"use strict";var Ys=ut("zlib"),kv=Js(),ST=yv(),{kStatusCode:vv}=Ur(),PT=Buffer[Symbol.species],$T=Buffer.from([0,0,255,255]),hl=Symbol("permessage-deflate"),qr=Symbol("total-length"),xo=Symbol("callback"),mn=Symbol("buffers"),So=Symbol("error"),ml,mp=class{constructor(t,r,n){if(this._maxPayload=n|0,this._options=t||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!r,this._deflate=null,this._inflate=null,this.params=null,!ml){let o=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;ml=new ST(o)}}static get extensionName(){return"permessage-deflate"}offer(){let t={};return this._options.serverNoContextTakeover&&(t.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(t.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(t.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?t.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(t.client_max_window_bits=!0),t}accept(t){return t=this.normalizeParams(t),this.params=this._isServer?this.acceptAsServer(t):this.acceptAsClient(t),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let t=this._deflate[xo];this._deflate.close(),this._deflate=null,t&&t(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(t){let r=this._options,n=t.find(o=>!(r.serverNoContextTakeover===!1&&o.server_no_context_takeover||o.server_max_window_bits&&(r.serverMaxWindowBits===!1||typeof r.serverMaxWindowBits=="number"&&r.serverMaxWindowBits>o.server_max_window_bits)||typeof r.clientMaxWindowBits=="number"&&!o.client_max_window_bits));if(!n)throw new Error("None of the extension offers can be accepted");return r.serverNoContextTakeover&&(n.server_no_context_takeover=!0),r.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof r.serverMaxWindowBits=="number"&&(n.server_max_window_bits=r.serverMaxWindowBits),typeof r.clientMaxWindowBits=="number"?n.client_max_window_bits=r.clientMaxWindowBits:(n.client_max_window_bits===!0||r.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(t){let r=t[0];if(this._options.clientNoContextTakeover===!1&&r.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!r.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(r.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&r.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return r}normalizeParams(t){return t.forEach(r=>{Object.keys(r).forEach(n=>{let o=r[n];if(o.length>1)throw new Error(`Parameter "${n}" must have only a single value`);if(o=o[0],n==="client_max_window_bits"){if(o!==!0){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${n}": ${o}`);o=s}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${n}": ${o}`)}else if(n==="server_max_window_bits"){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${n}": ${o}`);o=s}else if(n==="client_no_context_takeover"||n==="server_no_context_takeover"){if(o!==!0)throw new TypeError(`Invalid value for parameter "${n}": ${o}`)}else throw new Error(`Unknown parameter "${n}"`);r[n]=o})}),t}decompress(t,r,n){ml.add(o=>{this._decompress(t,r,(s,a)=>{o(),n(s,a)})})}compress(t,r,n){ml.add(o=>{this._compress(t,r,(s,a)=>{o(),n(s,a)})})}_decompress(t,r,n){let o=this._isServer?"client":"server";if(!this._inflate){let s=`${o}_max_window_bits`,a=typeof this.params[s]!="number"?Ys.Z_DEFAULT_WINDOWBITS:this.params[s];this._inflate=Ys.createInflateRaw({...this._options.zlibInflateOptions,windowBits:a}),this._inflate[hl]=this,this._inflate[qr]=0,this._inflate[mn]=[],this._inflate.on("error",AT),this._inflate.on("data",zv)}this._inflate[xo]=n,this._inflate.write(t),r&&this._inflate.write($T),this._inflate.flush(()=>{let s=this._inflate[So];if(s){this._inflate.close(),this._inflate=null,n(s);return}let a=kv.concat(this._inflate[mn],this._inflate[qr]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[qr]=0,this._inflate[mn]=[],r&&this.params[`${o}_no_context_takeover`]&&this._inflate.reset()),n(null,a)})}_compress(t,r,n){let o=this._isServer?"server":"client";if(!this._deflate){let s=`${o}_max_window_bits`,a=typeof this.params[s]!="number"?Ys.Z_DEFAULT_WINDOWBITS:this.params[s];this._deflate=Ys.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:a}),this._deflate[qr]=0,this._deflate[mn]=[],this._deflate.on("data",ET)}this._deflate[xo]=n,this._deflate.write(t),this._deflate.flush(Ys.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let s=kv.concat(this._deflate[mn],this._deflate[qr]);r&&(s=new PT(s.buffer,s.byteOffset,s.length-4)),this._deflate[xo]=null,this._deflate[qr]=0,this._deflate[mn]=[],r&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),n(null,s)})}};_v.exports=mp;function ET(e){this[mn].push(e),this[qr]+=e.length}function zv(e){if(this[qr]+=e.length,this[hl]._maxPayload<1||this[qr]<=this[hl]._maxPayload){this[mn].push(e);return}this[So]=new RangeError("Max payload size exceeded"),this[So].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[So][vv]=1009,this.removeListener("data",zv),this.reset()}function AT(e){if(this[hl]._inflate=null,this[So]){this[xo](this[So]);return}e[vv]=1007,this[xo](e)}});var Po=U((X4,gl)=>{"use strict";var{isUtf8:wv}=ut("buffer"),{hasBlob:OT}=Ur(),IT=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function TT(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function hp(e){let t=e.length,r=0;for(;r<t;)if((e[r]&128)===0)r++;else if((e[r]&224)===192){if(r+1===t||(e[r+1]&192)!==128||(e[r]&254)===192)return!1;r+=2}else if((e[r]&240)===224){if(r+2>=t||(e[r+1]&192)!==128||(e[r+2]&192)!==128||e[r]===224&&(e[r+1]&224)===128||e[r]===237&&(e[r+1]&224)===160)return!1;r+=3}else if((e[r]&248)===240){if(r+3>=t||(e[r+1]&192)!==128||(e[r+2]&192)!==128||(e[r+3]&192)!==128||e[r]===240&&(e[r+1]&240)===128||e[r]===244&&e[r+1]>143||e[r]>244)return!1;r+=4}else return!1;return!0}function CT(e){return OT&&typeof e=="object"&&typeof e.arrayBuffer=="function"&&typeof e.type=="string"&&typeof e.stream=="function"&&(e[Symbol.toStringTag]==="Blob"||e[Symbol.toStringTag]==="File")}gl.exports={isBlob:CT,isValidStatusCode:TT,isValidUTF8:hp,tokenChars:IT};if(wv)gl.exports.isValidUTF8=function(e){return e.length<24?hp(e):wv(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let e=ut("utf-8-validate");gl.exports.isValidUTF8=function(t){return t.length<32?hp(t):e(t)}}catch{}});var vp=U((Q4,Ov)=>{"use strict";var{Writable:NT}=ut("stream"),xv=Xs(),{BINARY_TYPES:RT,EMPTY_BUFFER:Sv,kStatusCode:jT,kWebSocket:MT}=Ur(),{concat:gp,toArrayBuffer:DT,unmask:LT}=Js(),{isValidStatusCode:VT,isValidUTF8:Pv}=Po(),bl=Buffer[Symbol.species],sr=0,$v=1,Ev=2,Av=3,bp=4,yp=5,yl=6,kp=class extends NT{constructor(t={}){super(),this._allowSynchronousEvents=t.allowSynchronousEvents!==void 0?t.allowSynchronousEvents:!0,this._binaryType=t.binaryType||RT[0],this._extensions=t.extensions||{},this._isServer=!!t.isServer,this._maxPayload=t.maxPayload|0,this._skipUTF8Validation=!!t.skipUTF8Validation,this[MT]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=sr}_write(t,r,n){if(this._opcode===8&&this._state==sr)return n();this._bufferedBytes+=t.length,this._buffers.push(t),this.startLoop(n)}consume(t){if(this._bufferedBytes-=t,t===this._buffers[0].length)return this._buffers.shift();if(t<this._buffers[0].length){let n=this._buffers[0];return this._buffers[0]=new bl(n.buffer,n.byteOffset+t,n.length-t),new bl(n.buffer,n.byteOffset,t)}let r=Buffer.allocUnsafe(t);do{let n=this._buffers[0],o=r.length-t;t>=n.length?r.set(this._buffers.shift(),o):(r.set(new Uint8Array(n.buffer,n.byteOffset,t),o),this._buffers[0]=new bl(n.buffer,n.byteOffset+t,n.length-t)),t-=n.length}while(t>0);return r}startLoop(t){this._loop=!0;do switch(this._state){case sr:this.getInfo(t);break;case $v:this.getPayloadLength16(t);break;case Ev:this.getPayloadLength64(t);break;case Av:this.getMask();break;case bp:this.getData(t);break;case yp:case yl:this._loop=!1;return}while(this._loop);this._errored||t()}getInfo(t){if(this._bufferedBytes<2){this._loop=!1;return}let r=this.consume(2);if((r[0]&48)!==0){let o=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");t(o);return}let n=(r[0]&64)===64;if(n&&!this._extensions[xv.extensionName]){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");t(o);return}if(this._fin=(r[0]&128)===128,this._opcode=r[0]&15,this._payloadLength=r[1]&127,this._opcode===0){if(n){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");t(o);return}if(!this._fragmented){let o=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");t(o);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");t(o);return}this._compressed=n}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let o=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");t(o);return}if(n){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");t(o);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let o=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");t(o);return}}else{let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");t(o);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(r[1]&128)===128,this._isServer){if(!this._masked){let o=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");t(o);return}}else if(this._masked){let o=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");t(o);return}this._payloadLength===126?this._state=$v:this._payloadLength===127?this._state=Ev:this.haveLength(t)}getPayloadLength16(t){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(t)}getPayloadLength64(t){if(this._bufferedBytes<8){this._loop=!1;return}let r=this.consume(8),n=r.readUInt32BE(0);if(n>Math.pow(2,21)-1){let o=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");t(o);return}this._payloadLength=n*Math.pow(2,32)+r.readUInt32BE(4),this.haveLength(t)}haveLength(t){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let r=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");t(r);return}this._masked?this._state=Av:this._state=bp}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=bp}getData(t){let r=Sv;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}r=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&LT(r,this._mask)}if(this._opcode>7){this.controlMessage(r,t);return}if(this._compressed){this._state=yp,this.decompress(r,t);return}r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage(t)}decompress(t,r){this._extensions[xv.extensionName].decompress(t,this._fin,(o,s)=>{if(o)return r(o);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let a=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");r(a);return}this._fragments.push(s)}this.dataMessage(r),this._state===sr&&this.startLoop(r)})}dataMessage(t){if(!this._fin){this._state=sr;return}let r=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let o;this._binaryType==="nodebuffer"?o=gp(n,r):this._binaryType==="arraybuffer"?o=DT(gp(n,r)):this._binaryType==="blob"?o=new Blob(n):o=n,this._allowSynchronousEvents?(this.emit("message",o,!0),this._state=sr):(this._state=yl,setImmediate(()=>{this.emit("message",o,!0),this._state=sr,this.startLoop(t)}))}else{let o=gp(n,r);if(!this._skipUTF8Validation&&!Pv(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");t(s);return}this._state===yp||this._allowSynchronousEvents?(this.emit("message",o,!1),this._state=sr):(this._state=yl,setImmediate(()=>{this.emit("message",o,!1),this._state=sr,this.startLoop(t)}))}}controlMessage(t,r){if(this._opcode===8){if(t.length===0)this._loop=!1,this.emit("conclude",1005,Sv),this.end();else{let n=t.readUInt16BE(0);if(!VT(n)){let s=this.createError(RangeError,`invalid status code ${n}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(s);return}let o=new bl(t.buffer,t.byteOffset+2,t.length-2);if(!this._skipUTF8Validation&&!Pv(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");r(s);return}this._loop=!1,this.emit("conclude",n,o),this.end()}this._state=sr;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",t),this._state=sr):(this._state=yl,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",t),this._state=sr,this.startLoop(r)}))}createError(t,r,n,o,s){this._loop=!1,this._errored=!0;let a=new t(n?`Invalid WebSocket frame: ${r}`:r);return Error.captureStackTrace(a,this.createError),a.code=s,a[jT]=o,a}};Ov.exports=kp});var wp=U((t5,Cv)=>{"use strict";var{Duplex:e5}=ut("stream"),{randomFillSync:FT}=ut("crypto"),Iv=Xs(),{EMPTY_BUFFER:ZT,kWebSocket:BT,NOOP:GT}=Ur(),{isBlob:$o,isValidStatusCode:UT}=Po(),{mask:Tv,toBuffer:Rn}=Js(),ar=Symbol("kByteLength"),qT=Buffer.alloc(4),kl=8*1024,jn,Eo=kl,br=0,KT=1,HT=2,zp=class e{constructor(t,r,n){this._extensions=r||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=t,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=br,this.onerror=GT,this[BT]=void 0}static frame(t,r){let n,o=!1,s=2,a=!1;r.mask&&(n=r.maskBuffer||qT,r.generateMask?r.generateMask(n):(Eo===kl&&(jn===void 0&&(jn=Buffer.alloc(kl)),FT(jn,0,kl),Eo=0),n[0]=jn[Eo++],n[1]=jn[Eo++],n[2]=jn[Eo++],n[3]=jn[Eo++]),a=(n[0]|n[1]|n[2]|n[3])===0,s=6);let i;typeof t=="string"?(!r.mask||a)&&r[ar]!==void 0?i=r[ar]:(t=Buffer.from(t),i=t.length):(i=t.length,o=r.mask&&r.readOnly&&!a);let l=i;i>=65536?(s+=8,l=127):i>125&&(s+=2,l=126);let c=Buffer.allocUnsafe(o?i+s:s);return c[0]=r.fin?r.opcode|128:r.opcode,r.rsv1&&(c[0]|=64),c[1]=l,l===126?c.writeUInt16BE(i,2):l===127&&(c[2]=c[3]=0,c.writeUIntBE(i,4,6)),r.mask?(c[1]|=128,c[s-4]=n[0],c[s-3]=n[1],c[s-2]=n[2],c[s-1]=n[3],a?[c,t]:o?(Tv(t,n,c,s,i),[c]):(Tv(t,n,t,0,i),[c,t])):[c,t]}close(t,r,n,o){let s;if(t===void 0)s=ZT;else{if(typeof t!="number"||!UT(t))throw new TypeError("First argument must be a valid error code number");if(r===void 0||!r.length)s=Buffer.allocUnsafe(2),s.writeUInt16BE(t,0);else{let i=Buffer.byteLength(r);if(i>123)throw new RangeError("The message must not be greater than 123 bytes");s=Buffer.allocUnsafe(2+i),s.writeUInt16BE(t,0),typeof r=="string"?s.write(r,2):s.set(r,2)}}let a={[ar]:s.length,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==br?this.enqueue([this.dispatch,s,!1,a,o]):this.sendFrame(e.frame(s,a),o)}ping(t,r,n){let o,s;if(typeof t=="string"?(o=Buffer.byteLength(t),s=!1):$o(t)?(o=t.size,s=!1):(t=Rn(t),o=t.length,s=Rn.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let a={[ar]:o,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:9,readOnly:s,rsv1:!1};$o(t)?this._state!==br?this.enqueue([this.getBlobData,t,!1,a,n]):this.getBlobData(t,!1,a,n):this._state!==br?this.enqueue([this.dispatch,t,!1,a,n]):this.sendFrame(e.frame(t,a),n)}pong(t,r,n){let o,s;if(typeof t=="string"?(o=Buffer.byteLength(t),s=!1):$o(t)?(o=t.size,s=!1):(t=Rn(t),o=t.length,s=Rn.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let a={[ar]:o,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:10,readOnly:s,rsv1:!1};$o(t)?this._state!==br?this.enqueue([this.getBlobData,t,!1,a,n]):this.getBlobData(t,!1,a,n):this._state!==br?this.enqueue([this.dispatch,t,!1,a,n]):this.sendFrame(e.frame(t,a),n)}send(t,r,n){let o=this._extensions[Iv.extensionName],s=r.binary?2:1,a=r.compress,i,l;typeof t=="string"?(i=Buffer.byteLength(t),l=!1):$o(t)?(i=t.size,l=!1):(t=Rn(t),i=t.length,l=Rn.readOnly),this._firstFragment?(this._firstFragment=!1,a&&o&&o.params[o._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(a=i>=o._threshold),this._compress=a):(a=!1,s=0),r.fin&&(this._firstFragment=!0);let c={[ar]:i,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:s,readOnly:l,rsv1:a};$o(t)?this._state!==br?this.enqueue([this.getBlobData,t,this._compress,c,n]):this.getBlobData(t,this._compress,c,n):this._state!==br?this.enqueue([this.dispatch,t,this._compress,c,n]):this.dispatch(t,this._compress,c,n)}getBlobData(t,r,n,o){this._bufferedBytes+=n[ar],this._state=HT,t.arrayBuffer().then(s=>{if(this._socket.destroyed){let i=new Error("The socket was closed while the blob was being read");process.nextTick(_p,this,i,o);return}this._bufferedBytes-=n[ar];let a=Rn(s);r?this.dispatch(a,r,n,o):(this._state=br,this.sendFrame(e.frame(a,n),o),this.dequeue())}).catch(s=>{process.nextTick(WT,this,s,o)})}dispatch(t,r,n,o){if(!r){this.sendFrame(e.frame(t,n),o);return}let s=this._extensions[Iv.extensionName];this._bufferedBytes+=n[ar],this._state=KT,s.compress(t,n.fin,(a,i)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");_p(this,l,o);return}this._bufferedBytes-=n[ar],this._state=br,n.readOnly=!1,this.sendFrame(e.frame(i,n),o),this.dequeue()})}dequeue(){for(;this._state===br&&this._queue.length;){let t=this._queue.shift();this._bufferedBytes-=t[3][ar],Reflect.apply(t[0],this,t.slice(1))}}enqueue(t){this._bufferedBytes+=t[3][ar],this._queue.push(t)}sendFrame(t,r){t.length===2?(this._socket.cork(),this._socket.write(t[0]),this._socket.write(t[1],r),this._socket.uncork()):this._socket.write(t[0],r)}};Cv.exports=zp;function _p(e,t,r){typeof r=="function"&&r(t);for(let n=0;n<e._queue.length;n++){let o=e._queue[n],s=o[o.length-1];typeof s=="function"&&s(t)}}function WT(e,t,r){_p(e,t,r),e.onerror(t)}});var Zv=U((r5,Fv)=>{"use strict";var{kForOnEventAttribute:Qs,kListener:xp}=Ur(),Nv=Symbol("kCode"),Rv=Symbol("kData"),jv=Symbol("kError"),Mv=Symbol("kMessage"),Dv=Symbol("kReason"),Ao=Symbol("kTarget"),Lv=Symbol("kType"),Vv=Symbol("kWasClean"),Kr=class{constructor(t){this[Ao]=null,this[Lv]=t}get target(){return this[Ao]}get type(){return this[Lv]}};Object.defineProperty(Kr.prototype,"target",{enumerable:!0});Object.defineProperty(Kr.prototype,"type",{enumerable:!0});var Mn=class extends Kr{constructor(t,r={}){super(t),this[Nv]=r.code===void 0?0:r.code,this[Dv]=r.reason===void 0?"":r.reason,this[Vv]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[Nv]}get reason(){return this[Dv]}get wasClean(){return this[Vv]}};Object.defineProperty(Mn.prototype,"code",{enumerable:!0});Object.defineProperty(Mn.prototype,"reason",{enumerable:!0});Object.defineProperty(Mn.prototype,"wasClean",{enumerable:!0});var Oo=class extends Kr{constructor(t,r={}){super(t),this[jv]=r.error===void 0?null:r.error,this[Mv]=r.message===void 0?"":r.message}get error(){return this[jv]}get message(){return this[Mv]}};Object.defineProperty(Oo.prototype,"error",{enumerable:!0});Object.defineProperty(Oo.prototype,"message",{enumerable:!0});var ea=class extends Kr{constructor(t,r={}){super(t),this[Rv]=r.data===void 0?null:r.data}get data(){return this[Rv]}};Object.defineProperty(ea.prototype,"data",{enumerable:!0});var JT={addEventListener(e,t,r={}){for(let o of this.listeners(e))if(!r[Qs]&&o[xp]===t&&!o[Qs])return;let n;if(e==="message")n=function(s,a){let i=new ea("message",{data:a?s:s.toString()});i[Ao]=this,vl(t,this,i)};else if(e==="close")n=function(s,a){let i=new Mn("close",{code:s,reason:a.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});i[Ao]=this,vl(t,this,i)};else if(e==="error")n=function(s){let a=new Oo("error",{error:s,message:s.message});a[Ao]=this,vl(t,this,a)};else if(e==="open")n=function(){let s=new Kr("open");s[Ao]=this,vl(t,this,s)};else return;n[Qs]=!!r[Qs],n[xp]=t,r.once?this.once(e,n):this.on(e,n)},removeEventListener(e,t){for(let r of this.listeners(e))if(r[xp]===t&&!r[Qs]){this.removeListener(e,r);break}}};Fv.exports={CloseEvent:Mn,ErrorEvent:Oo,Event:Kr,EventTarget:JT,MessageEvent:ea};function vl(e,t,r){typeof e=="object"&&e.handleEvent?e.handleEvent.call(e,r):e.call(t,r)}});var Sp=U((n5,Bv)=>{"use strict";var{tokenChars:ta}=Po();function Ar(e,t,r){e[t]===void 0?e[t]=[r]:e[t].push(r)}function YT(e){let t=Object.create(null),r=Object.create(null),n=!1,o=!1,s=!1,a,i,l=-1,c=-1,u=-1,d=0;for(;d<e.length;d++)if(c=e.charCodeAt(d),a===void 0)if(u===-1&&ta[c]===1)l===-1&&(l=d);else if(d!==0&&(c===32||c===9))u===-1&&l!==-1&&(u=d);else if(c===59||c===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d);let m=e.slice(l,u);c===44?(Ar(t,m,r),r=Object.create(null)):a=m,l=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);else if(i===void 0)if(u===-1&&ta[c]===1)l===-1&&(l=d);else if(c===32||c===9)u===-1&&l!==-1&&(u=d);else if(c===59||c===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d),Ar(r,e.slice(l,u),!0),c===44&&(Ar(t,a,r),r=Object.create(null),a=void 0),l=u=-1}else if(c===61&&l!==-1&&u===-1)i=e.slice(l,d),l=u=-1;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(o){if(ta[c]!==1)throw new SyntaxError(`Unexpected character at index ${d}`);l===-1?l=d:n||(n=!0),o=!1}else if(s)if(ta[c]===1)l===-1&&(l=d);else if(c===34&&l!==-1)s=!1,u=d;else if(c===92)o=!0;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(c===34&&e.charCodeAt(d-1)===61)s=!0;else if(u===-1&&ta[c]===1)l===-1&&(l=d);else if(l!==-1&&(c===32||c===9))u===-1&&(u=d);else if(c===59||c===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d);let m=e.slice(l,u);n&&(m=m.replace(/\\/g,""),n=!1),Ar(r,i,m),c===44&&(Ar(t,a,r),r=Object.create(null),a=void 0),i=void 0,l=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);if(l===-1||s||c===32||c===9)throw new SyntaxError("Unexpected end of input");u===-1&&(u=d);let p=e.slice(l,u);return a===void 0?Ar(t,p,r):(i===void 0?Ar(r,p,!0):n?Ar(r,i,p.replace(/\\/g,"")):Ar(r,i,p),Ar(t,a,r)),t}function XT(e){return Object.keys(e).map(t=>{let r=e[t];return Array.isArray(r)||(r=[r]),r.map(n=>[t].concat(Object.keys(n).map(o=>{let s=n[o];return Array.isArray(s)||(s=[s]),s.map(a=>a===!0?o:`${o}=${a}`).join("; ")})).join("; ")).join(", ")}).join(", ")}Bv.exports={format:XT,parse:YT}});var xl=U((a5,tz)=>{"use strict";var QT=ut("events"),eC=ut("https"),tC=ut("http"),qv=ut("net"),rC=ut("tls"),{randomBytes:nC,createHash:oC}=ut("crypto"),{Duplex:o5,Readable:s5}=ut("stream"),{URL:Pp}=ut("url"),hn=Xs(),sC=vp(),aC=wp(),{isBlob:iC}=Po(),{BINARY_TYPES:Gv,EMPTY_BUFFER:zl,GUID:lC,kForOnEventAttribute:$p,kListener:cC,kStatusCode:uC,kWebSocket:gt,NOOP:Kv}=Ur(),{EventTarget:{addEventListener:dC,removeEventListener:pC}}=Zv(),{format:fC,parse:mC}=Sp(),{toBuffer:hC}=Js(),gC=30*1e3,Hv=Symbol("kAborted"),Ep=[8,13],Hr=["CONNECTING","OPEN","CLOSING","CLOSED"],bC=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,tt=class e extends QT{constructor(t,r,n){super(),this._binaryType=Gv[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=zl,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,t!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,r===void 0?r=[]:Array.isArray(r)||(typeof r=="object"&&r!==null?(n=r,r=[]):r=[r]),Wv(this,t,r,n)):(this._autoPong=n.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(t){Gv.includes(t)&&(this._binaryType=t,this._receiver&&(this._receiver._binaryType=t))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(t,r,n){let o=new sC({allowSynchronousEvents:n.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation}),s=new aC(t,this._extensions,n.generateMask);this._receiver=o,this._sender=s,this._socket=t,o[gt]=this,s[gt]=this,t[gt]=this,o.on("conclude",vC),o.on("drain",zC),o.on("error",_C),o.on("message",wC),o.on("ping",xC),o.on("pong",SC),s.onerror=PC,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),r.length>0&&t.unshift(r),t.on("close",Xv),t.on("data",wl),t.on("end",Qv),t.on("error",ez),this._readyState=e.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[hn.extensionName]&&this._extensions[hn.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(t,r){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){Jt(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(t,r,!this._isServer,n=>{n||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Yv(this)}}pause(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!0,this._socket.pause())}ping(t,r,n){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"?(n=t,t=r=void 0):typeof r=="function"&&(n=r,r=void 0),typeof t=="number"&&(t=t.toString()),this.readyState!==e.OPEN){Ap(this,t,n);return}r===void 0&&(r=!this._isServer),this._sender.ping(t||zl,r,n)}pong(t,r,n){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"?(n=t,t=r=void 0):typeof r=="function"&&(n=r,r=void 0),typeof t=="number"&&(t=t.toString()),this.readyState!==e.OPEN){Ap(this,t,n);return}r===void 0&&(r=!this._isServer),this._sender.pong(t||zl,r,n)}resume(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(t,r,n){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof r=="function"&&(n=r,r={}),typeof t=="number"&&(t=t.toString()),this.readyState!==e.OPEN){Ap(this,t,n);return}let o={binary:typeof t!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[hn.extensionName]||(o.compress=!1),this._sender.send(t||zl,o,n)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){Jt(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(tt,"CONNECTING",{enumerable:!0,value:Hr.indexOf("CONNECTING")});Object.defineProperty(tt.prototype,"CONNECTING",{enumerable:!0,value:Hr.indexOf("CONNECTING")});Object.defineProperty(tt,"OPEN",{enumerable:!0,value:Hr.indexOf("OPEN")});Object.defineProperty(tt.prototype,"OPEN",{enumerable:!0,value:Hr.indexOf("OPEN")});Object.defineProperty(tt,"CLOSING",{enumerable:!0,value:Hr.indexOf("CLOSING")});Object.defineProperty(tt.prototype,"CLOSING",{enumerable:!0,value:Hr.indexOf("CLOSING")});Object.defineProperty(tt,"CLOSED",{enumerable:!0,value:Hr.indexOf("CLOSED")});Object.defineProperty(tt.prototype,"CLOSED",{enumerable:!0,value:Hr.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(e=>{Object.defineProperty(tt.prototype,e,{enumerable:!0})});["open","error","close","message"].forEach(e=>{Object.defineProperty(tt.prototype,`on${e}`,{enumerable:!0,get(){for(let t of this.listeners(e))if(t[$p])return t[cC];return null},set(t){for(let r of this.listeners(e))if(r[$p]){this.removeListener(e,r);break}typeof t=="function"&&this.addEventListener(e,t,{[$p]:!0})}})});tt.prototype.addEventListener=dC;tt.prototype.removeEventListener=pC;tz.exports=tt;function Wv(e,t,r,n){let o={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:Ep[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...n,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(e._autoPong=o.autoPong,!Ep.includes(o.protocolVersion))throw new RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${Ep.join(", ")})`);let s;if(t instanceof Pp)s=t;else try{s=new Pp(t)}catch{throw new SyntaxError(`Invalid URL: ${t}`)}s.protocol==="http:"?s.protocol="ws:":s.protocol==="https:"&&(s.protocol="wss:"),e._url=s.href;let a=s.protocol==="wss:",i=s.protocol==="ws+unix:",l;if(s.protocol!=="ws:"&&!a&&!i?l=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:i&&!s.pathname?l="The URL's pathname is empty":s.hash&&(l="The URL contains a fragment identifier"),l){let f=new SyntaxError(l);if(e._redirects===0)throw f;_l(e,f);return}let c=a?443:80,u=nC(16).toString("base64"),d=a?eC.request:tC.request,p=new Set,m;if(o.createConnection=o.createConnection||(a?kC:yC),o.defaultPort=o.defaultPort||c,o.port=s.port||c,o.host=s.hostname.startsWith("[")?s.hostname.slice(1,-1):s.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":u,Connection:"Upgrade",Upgrade:"websocket"},o.path=s.pathname+s.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(m=new hn(o.perMessageDeflate!==!0?o.perMessageDeflate:{},!1,o.maxPayload),o.headers["Sec-WebSocket-Extensions"]=fC({[hn.extensionName]:m.offer()})),r.length){for(let f of r){if(typeof f!="string"||!bC.test(f)||p.has(f))throw new SyntaxError("An invalid or duplicated subprotocol was specified");p.add(f)}o.headers["Sec-WebSocket-Protocol"]=r.join(",")}if(o.origin&&(o.protocolVersion<13?o.headers["Sec-WebSocket-Origin"]=o.origin:o.headers.Origin=o.origin),(s.username||s.password)&&(o.auth=`${s.username}:${s.password}`),i){let f=o.path.split(":");o.socketPath=f[0],o.path=f[1]}let b;if(o.followRedirects){if(e._redirects===0){e._originalIpc=i,e._originalSecure=a,e._originalHostOrSocketPath=i?o.socketPath:s.host;let f=n&&n.headers;if(n={...n,headers:{}},f)for(let[h,g]of Object.entries(f))n.headers[h.toLowerCase()]=g}else if(e.listenerCount("redirect")===0){let f=i?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:s.host===e._originalHostOrSocketPath;(!f||e._originalSecure&&!a)&&(delete o.headers.authorization,delete o.headers.cookie,f||delete o.headers.host,o.auth=void 0)}o.auth&&!n.headers.authorization&&(n.headers.authorization="Basic "+Buffer.from(o.auth).toString("base64")),b=e._req=d(o),e._redirects&&e.emit("redirect",e.url,b)}else b=e._req=d(o);o.timeout&&b.on("timeout",()=>{Jt(e,b,"Opening handshake has timed out")}),b.on("error",f=>{b===null||b[Hv]||(b=e._req=null,_l(e,f))}),b.on("response",f=>{let h=f.headers.location,g=f.statusCode;if(h&&o.followRedirects&&g>=300&&g<400){if(++e._redirects>o.maxRedirects){Jt(e,b,"Maximum redirects exceeded");return}b.abort();let v;try{v=new Pp(h,t)}catch{let w=new SyntaxError(`Invalid URL: ${h}`);_l(e,w);return}Wv(e,v,r,n)}else e.emit("unexpected-response",b,f)||Jt(e,b,`Unexpected server response: ${f.statusCode}`)}),b.on("upgrade",(f,h,g)=>{if(e.emit("upgrade",f),e.readyState!==tt.CONNECTING)return;b=e._req=null;let v=f.headers.upgrade;if(v===void 0||v.toLowerCase()!=="websocket"){Jt(e,h,"Invalid Upgrade header");return}let _=oC("sha1").update(u+lC).digest("base64");if(f.headers["sec-websocket-accept"]!==_){Jt(e,h,"Invalid Sec-WebSocket-Accept header");return}let w=f.headers["sec-websocket-protocol"],k;if(w!==void 0?p.size?p.has(w)||(k="Server sent an invalid subprotocol"):k="Server sent a subprotocol but none was requested":p.size&&(k="Server sent no subprotocol"),k){Jt(e,h,k);return}w&&(e._protocol=w);let P=f.headers["sec-websocket-extensions"];if(P!==void 0){if(!m){Jt(e,h,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let A;try{A=mC(P)}catch{Jt(e,h,"Invalid Sec-WebSocket-Extensions header");return}let Z=Object.keys(A);if(Z.length!==1||Z[0]!==hn.extensionName){Jt(e,h,"Server indicated an extension that was not requested");return}try{m.accept(A[hn.extensionName])}catch{Jt(e,h,"Invalid Sec-WebSocket-Extensions header");return}e._extensions[hn.extensionName]=m}e.setSocket(h,g,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(b,e):b.end()}function _l(e,t){e._readyState=tt.CLOSING,e._errorEmitted=!0,e.emit("error",t),e.emitClose()}function yC(e){return e.path=e.socketPath,qv.connect(e)}function kC(e){return e.path=void 0,!e.servername&&e.servername!==""&&(e.servername=qv.isIP(e.host)?"":e.host),rC.connect(e)}function Jt(e,t,r){e._readyState=tt.CLOSING;let n=new Error(r);Error.captureStackTrace(n,Jt),t.setHeader?(t[Hv]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(_l,e,n)):(t.destroy(n),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function Ap(e,t,r){if(t){let n=iC(t)?t.size:hC(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(r){let n=new Error(`WebSocket is not open: readyState ${e.readyState} (${Hr[e.readyState]})`);process.nextTick(r,n)}}function vC(e,t){let r=this[gt];r._closeFrameReceived=!0,r._closeMessage=t,r._closeCode=e,r._socket[gt]!==void 0&&(r._socket.removeListener("data",wl),process.nextTick(Jv,r._socket),e===1005?r.close():r.close(e,t))}function zC(){let e=this[gt];e.isPaused||e._socket.resume()}function _C(e){let t=this[gt];t._socket[gt]!==void 0&&(t._socket.removeListener("data",wl),process.nextTick(Jv,t._socket),t.close(e[uC])),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e))}function Uv(){this[gt].emitClose()}function wC(e,t){this[gt].emit("message",e,t)}function xC(e){let t=this[gt];t._autoPong&&t.pong(e,!this._isServer,Kv),t.emit("ping",e)}function SC(e){this[gt].emit("pong",e)}function Jv(e){e.resume()}function PC(e){let t=this[gt];t.readyState!==tt.CLOSED&&(t.readyState===tt.OPEN&&(t._readyState=tt.CLOSING,Yv(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e)))}function Yv(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),gC)}function Xv(){let e=this[gt];this.removeListener("close",Xv),this.removeListener("data",wl),this.removeListener("end",Qv),e._readyState=tt.CLOSING;let t;!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&(t=e._socket.read())!==null&&e._receiver.write(t),e._receiver.end(),this[gt]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",Uv),e._receiver.on("finish",Uv))}function wl(e){this[gt]._receiver.write(e)||this.pause()}function Qv(){let e=this[gt];e._readyState=tt.CLOSING,e._receiver.end(),this.end()}function ez(){let e=this[gt];this.removeListener("error",ez),this.on("error",Kv),e&&(e._readyState=tt.CLOSING,this.destroy())}});var sz=U((l5,oz)=>{"use strict";var i5=xl(),{Duplex:$C}=ut("stream");function rz(e){e.emit("close")}function EC(){!this.destroyed&&this._writableState.finished&&this.destroy()}function nz(e){this.removeListener("error",nz),this.destroy(),this.listenerCount("error")===0&&this.emit("error",e)}function AC(e,t){let r=!0,n=new $C({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",function(s,a){let i=!a&&n._readableState.objectMode?s.toString():s;n.push(i)||e.pause()}),e.once("error",function(s){n.destroyed||(r=!1,n.destroy(s))}),e.once("close",function(){n.destroyed||n.push(null)}),n._destroy=function(o,s){if(e.readyState===e.CLOSED){s(o),process.nextTick(rz,n);return}let a=!1;e.once("error",function(l){a=!0,s(l)}),e.once("close",function(){a||s(o),process.nextTick(rz,n)}),r&&e.terminate()},n._final=function(o){if(e.readyState===e.CONNECTING){e.once("open",function(){n._final(o)});return}e._socket!==null&&(e._socket._writableState.finished?(o(),n._readableState.endEmitted&&n.destroy()):(e._socket.once("finish",function(){o()}),e.close()))},n._read=function(){e.isPaused&&e.resume()},n._write=function(o,s,a){if(e.readyState===e.CONNECTING){e.once("open",function(){n._write(o,s,a)});return}e.send(o,a)},n.on("end",EC),n.on("error",nz),n}oz.exports=AC});var iz=U((c5,az)=>{"use strict";var{tokenChars:OC}=Po();function IC(e){let t=new Set,r=-1,n=-1,o=0;for(o;o<e.length;o++){let a=e.charCodeAt(o);if(n===-1&&OC[a]===1)r===-1&&(r=o);else if(o!==0&&(a===32||a===9))n===-1&&r!==-1&&(n=o);else if(a===44){if(r===-1)throw new SyntaxError(`Unexpected character at index ${o}`);n===-1&&(n=o);let i=e.slice(r,n);if(t.has(i))throw new SyntaxError(`The "${i}" subprotocol is duplicated`);t.add(i),r=n=-1}else throw new SyntaxError(`Unexpected character at index ${o}`)}if(r===-1||n!==-1)throw new SyntaxError("Unexpected end of input");let s=e.slice(r,o);if(t.has(s))throw new SyntaxError(`The "${s}" subprotocol is duplicated`);return t.add(s),t}az.exports={parse:IC}});var mz=U((d5,fz)=>{"use strict";var TC=ut("events"),Sl=ut("http"),{Duplex:u5}=ut("stream"),{createHash:CC}=ut("crypto"),lz=Sp(),Dn=Xs(),NC=iz(),RC=xl(),{GUID:jC,kWebSocket:MC}=Ur(),DC=/^[+/0-9A-Za-z]{22}==$/,cz=0,uz=1,pz=2,Op=class extends TC{constructor(t,r){if(super(),t={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:RC,...t},t.port==null&&!t.server&&!t.noServer||t.port!=null&&(t.server||t.noServer)||t.server&&t.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(t.port!=null?(this._server=Sl.createServer((n,o)=>{let s=Sl.STATUS_CODES[426];o.writeHead(426,{"Content-Length":s.length,"Content-Type":"text/plain"}),o.end(s)}),this._server.listen(t.port,t.host,t.backlog,r)):t.server&&(this._server=t.server),this._server){let n=this.emit.bind(this,"connection");this._removeListeners=LC(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(o,s,a)=>{this.handleUpgrade(o,s,a,n)}})}t.perMessageDeflate===!0&&(t.perMessageDeflate={}),t.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=t,this._state=cz}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(t){if(this._state===pz){t&&this.once("close",()=>{t(new Error("The server is not running"))}),process.nextTick(ra,this);return}if(t&&this.once("close",t),this._state!==uz)if(this._state=uz,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(ra,this):process.nextTick(ra,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{ra(this)})}}shouldHandle(t){if(this.options.path){let r=t.url.indexOf("?");if((r!==-1?t.url.slice(0,r):t.url)!==this.options.path)return!1}return!0}handleUpgrade(t,r,n,o){r.on("error",dz);let s=t.headers["sec-websocket-key"],a=t.headers.upgrade,i=+t.headers["sec-websocket-version"];if(t.method!=="GET"){Ln(this,t,r,405,"Invalid HTTP method");return}if(a===void 0||a.toLowerCase()!=="websocket"){Ln(this,t,r,400,"Invalid Upgrade header");return}if(s===void 0||!DC.test(s)){Ln(this,t,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(i!==13&&i!==8){Ln(this,t,r,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(t)){na(r,400);return}let l=t.headers["sec-websocket-protocol"],c=new Set;if(l!==void 0)try{c=NC.parse(l)}catch{Ln(this,t,r,400,"Invalid Sec-WebSocket-Protocol header");return}let u=t.headers["sec-websocket-extensions"],d={};if(this.options.perMessageDeflate&&u!==void 0){let p=new Dn(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let m=lz.parse(u);m[Dn.extensionName]&&(p.accept(m[Dn.extensionName]),d[Dn.extensionName]=p)}catch{Ln(this,t,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let p={origin:t.headers[`${i===8?"sec-websocket-origin":"origin"}`],secure:!!(t.socket.authorized||t.socket.encrypted),req:t};if(this.options.verifyClient.length===2){this.options.verifyClient(p,(m,b,f,h)=>{if(!m)return na(r,b||401,f,h);this.completeUpgrade(d,s,c,t,r,n,o)});return}if(!this.options.verifyClient(p))return na(r,401)}this.completeUpgrade(d,s,c,t,r,n,o)}completeUpgrade(t,r,n,o,s,a,i){if(!s.readable||!s.writable)return s.destroy();if(s[MC])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>cz)return na(s,503);let c=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${CC("sha1").update(r+jC).digest("base64")}`],u=new this.options.WebSocket(null,void 0,this.options);if(n.size){let d=this.options.handleProtocols?this.options.handleProtocols(n,o):n.values().next().value;d&&(c.push(`Sec-WebSocket-Protocol: ${d}`),u._protocol=d)}if(t[Dn.extensionName]){let d=t[Dn.extensionName].params,p=lz.format({[Dn.extensionName]:[d]});c.push(`Sec-WebSocket-Extensions: ${p}`),u._extensions=t}this.emit("headers",c,o),s.write(c.concat(`\r
10
+ deps: ${r}}`};var cI={keyword:"dependencies",type:"object",schemaType:"object",error:Er.error,code(e){let[t,r]=uI(e);x0(e,t),S0(e,r)}};function uI({schema:e}){let t={},r={};for(let n in e){if(n==="__proto__")continue;let o=Array.isArray(e[n])?t:r;o[n]=e[n]}return[t,r]}function x0(e,t=e.schema){let{gen:r,data:n,it:o}=e;if(Object.keys(t).length===0)return;let s=r.let("missing");for(let a in t){let i=t[a];if(i.length===0)continue;let c=(0,Xs.propertyInData)(r,n,a,o.opts.ownProperties);e.setParams({property:a,depsCount:i.length,deps:i.join(", ")}),o.allErrors?r.if(c,()=>{for(let l of i)(0,Xs.checkReportMissingProp)(e,l)}):(r.if((0,Zd._)`${c} && (${(0,Xs.checkMissingProp)(e,i,s)})`),(0,Xs.reportMissingProp)(e,s),r.else())}}Er.validatePropertyDeps=x0;function S0(e,t=e.schema){let{gen:r,data:n,keyword:o,it:s}=e,a=r.name("valid");for(let i in t)(0,lI.alwaysValidSchema)(s,t[i])||(r.if((0,Xs.propertyInData)(r,n,i,s.opts.ownProperties),()=>{let c=e.subschema({keyword:o,schemaProp:i},a);e.mergeValidEvaluated(c,a)},()=>r.var(a,!0)),e.ok(a))}Er.validateSchemaDeps=S0;Er.default=cI});var E0=q(Gd=>{"use strict";Object.defineProperty(Gd,"__esModule",{value:!0});var $0=be(),dI=Ce(),pI={message:"property name must be valid",params:({params:e})=>(0,$0._)`{propertyName: ${e.propertyName}}`},fI={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:pI,code(e){let{gen:t,schema:r,data:n,it:o}=e;if((0,dI.alwaysValidSchema)(o,r))return;let s=t.name("valid");t.forIn("key",n,a=>{e.setParams({propertyName:a}),e.subschema({keyword:"propertyNames",data:a,dataTypes:["string"],propertyName:a,compositeRule:!0},s),t.if((0,$0.not)(s),()=>{e.error(!0),o.allErrors||t.break()})}),e.ok(s)}};Gd.default=fI});var qd=q(Ud=>{"use strict";Object.defineProperty(Ud,"__esModule",{value:!0});var al=nr(),yr=be(),mI=Gr(),il=Ce(),hI={message:"must NOT have additional properties",params:({params:e})=>(0,yr._)`{additionalProperty: ${e.additionalProperty}}`},gI={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:hI,code(e){let{gen:t,schema:r,parentSchema:n,data:o,errsCount:s,it:a}=e;if(!s)throw new Error("ajv implementation error");let{allErrors:i,opts:c}=a;if(a.props=!0,c.removeAdditional!=="all"&&(0,il.alwaysValidSchema)(a,r))return;let l=(0,al.allSchemaProperties)(n.properties),u=(0,al.allSchemaProperties)(n.patternProperties);d(),e.ok((0,yr._)`${s} === ${mI.default.errors}`);function d(){t.forIn("key",o,m=>{!l.length&&!u.length?h(m):t.if(f(m),()=>h(m))})}function f(m){let b;if(l.length>8){let v=(0,il.schemaRefOrVal)(a,n.properties,"properties");b=(0,al.isOwnProperty)(t,v,m)}else l.length?b=(0,yr.or)(...l.map(v=>(0,yr._)`${m} === ${v}`)):b=yr.nil;return u.length&&(b=(0,yr.or)(b,...u.map(v=>(0,yr._)`${(0,al.usePattern)(e,v)}.test(${m})`))),(0,yr.not)(b)}function g(m){t.code((0,yr._)`delete ${o}[${m}]`)}function h(m){if(c.removeAdditional==="all"||c.removeAdditional&&r===!1){g(m);return}if(r===!1){e.setParams({additionalProperty:m}),e.error(),i||t.break();return}if(typeof r=="object"&&!(0,il.alwaysValidSchema)(a,r)){let b=t.name("valid");c.removeAdditional==="failing"?(p(m,b,!1),t.if((0,yr.not)(b),()=>{e.reset(),g(m)})):(p(m,b),i||t.if((0,yr.not)(b),()=>t.break()))}}function p(m,b,v){let _={keyword:"additionalProperties",dataProp:m,dataPropType:il.Type.Str};v===!1&&Object.assign(_,{compositeRule:!0,createErrors:!1,allErrors:!1}),e.subschema(_,b)}}};Ud.default=gI});var I0=q(Hd=>{"use strict";Object.defineProperty(Hd,"__esModule",{value:!0});var bI=Ms(),A0=nr(),Kd=Ce(),O0=qd(),yI={keyword:"properties",type:"object",schemaType:"object",code(e){let{gen:t,schema:r,parentSchema:n,data:o,it:s}=e;s.opts.removeAdditional==="all"&&n.additionalProperties===void 0&&O0.default.code(new bI.KeywordCxt(s,O0.default,"additionalProperties"));let a=(0,A0.allSchemaProperties)(r);for(let d of a)s.definedProperties.add(d);s.opts.unevaluated&&a.length&&s.props!==!0&&(s.props=Kd.mergeEvaluated.props(t,(0,Kd.toHash)(a),s.props));let i=a.filter(d=>!(0,Kd.alwaysValidSchema)(s,r[d]));if(i.length===0)return;let c=t.name("valid");for(let d of i)l(d)?u(d):(t.if((0,A0.propertyInData)(t,o,d,s.opts.ownProperties)),u(d),s.allErrors||t.else().var(c,!0),t.endIf()),e.it.definedProperties.add(d),e.ok(c);function l(d){return s.opts.useDefaults&&!s.compositeRule&&r[d].default!==void 0}function u(d){e.subschema({keyword:"properties",schemaProp:d,dataProp:d},c)}}};Hd.default=yI});var R0=q(Wd=>{"use strict";Object.defineProperty(Wd,"__esModule",{value:!0});var T0=nr(),ll=be(),C0=Ce(),N0=Ce(),kI={keyword:"patternProperties",type:"object",schemaType:"object",code(e){let{gen:t,schema:r,data:n,parentSchema:o,it:s}=e,{opts:a}=s,i=(0,T0.allSchemaProperties)(r),c=i.filter(p=>(0,C0.alwaysValidSchema)(s,r[p]));if(i.length===0||c.length===i.length&&(!s.opts.unevaluated||s.props===!0))return;let l=a.strictSchema&&!a.allowMatchingProperties&&o.properties,u=t.name("valid");s.props!==!0&&!(s.props instanceof ll.Name)&&(s.props=(0,N0.evaluatedPropsToName)(t,s.props));let{props:d}=s;f();function f(){for(let p of i)l&&g(p),s.allErrors?h(p):(t.var(u,!0),h(p),t.if(u))}function g(p){for(let m in l)new RegExp(p).test(m)&&(0,C0.checkStrictMode)(s,`property ${m} matches pattern ${p} (use allowMatchingProperties)`)}function h(p){t.forIn("key",n,m=>{t.if((0,ll._)`${(0,T0.usePattern)(e,p)}.test(${m})`,()=>{let b=c.includes(p);b||e.subschema({keyword:"patternProperties",schemaProp:p,dataProp:m,dataPropType:N0.Type.Str},u),s.opts.unevaluated&&d!==!0?t.assign((0,ll._)`${d}[${m}]`,!0):!b&&!s.allErrors&&t.if((0,ll.not)(u),()=>t.break())})})}}};Wd.default=kI});var j0=q(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});var vI=Ce(),zI={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){let{gen:t,schema:r,it:n}=e;if((0,vI.alwaysValidSchema)(n,r)){e.fail();return}let o=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),e.failResult(o,()=>e.reset(),()=>e.error())},error:{message:"must NOT be valid"}};Jd.default=zI});var M0=q(Yd=>{"use strict";Object.defineProperty(Yd,"__esModule",{value:!0});var _I=nr(),wI={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:_I.validateUnion,error:{message:"must match a schema in anyOf"}};Yd.default=wI});var D0=q(Xd=>{"use strict";Object.defineProperty(Xd,"__esModule",{value:!0});var cl=be(),xI=Ce(),SI={message:"must match exactly one schema in oneOf",params:({params:e})=>(0,cl._)`{passingSchemas: ${e.passing}}`},PI={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:SI,code(e){let{gen:t,schema:r,parentSchema:n,it:o}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");if(o.opts.discriminator&&n.discriminator)return;let s=r,a=t.let("valid",!1),i=t.let("passing",null),c=t.name("_valid");e.setParams({passing:i}),t.block(l),e.result(a,()=>e.reset(),()=>e.error(!0));function l(){s.forEach((u,d)=>{let f;(0,xI.alwaysValidSchema)(o,u)?t.var(c,!0):f=e.subschema({keyword:"oneOf",schemaProp:d,compositeRule:!0},c),d>0&&t.if((0,cl._)`${c} && ${a}`).assign(a,!1).assign(i,(0,cl._)`[${i}, ${d}]`).else(),t.if(c,()=>{t.assign(a,!0),t.assign(i,d),f&&e.mergeEvaluated(f,cl.Name)})})}}};Xd.default=PI});var L0=q(Qd=>{"use strict";Object.defineProperty(Qd,"__esModule",{value:!0});var $I=Ce(),EI={keyword:"allOf",schemaType:"array",code(e){let{gen:t,schema:r,it:n}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");let o=t.name("valid");r.forEach((s,a)=>{if((0,$I.alwaysValidSchema)(n,s))return;let i=e.subschema({keyword:"allOf",schemaProp:a},o);e.ok(o),e.mergeEvaluated(i)})}};Qd.default=EI});var B0=q(ep=>{"use strict";Object.defineProperty(ep,"__esModule",{value:!0});var ul=be(),F0=Ce(),AI={message:({params:e})=>(0,ul.str)`must match "${e.ifClause}" schema`,params:({params:e})=>(0,ul._)`{failingKeyword: ${e.ifClause}}`},OI={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:AI,code(e){let{gen:t,parentSchema:r,it:n}=e;r.then===void 0&&r.else===void 0&&(0,F0.checkStrictMode)(n,'"if" without "then" and "else" is ignored');let o=V0(n,"then"),s=V0(n,"else");if(!o&&!s)return;let a=t.let("valid",!0),i=t.name("_valid");if(c(),e.reset(),o&&s){let u=t.let("ifClause");e.setParams({ifClause:u}),t.if(i,l("then",u),l("else",u))}else o?t.if(i,l("then")):t.if((0,ul.not)(i),l("else"));e.pass(a,()=>e.error(!0));function c(){let u=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},i);e.mergeEvaluated(u)}function l(u,d){return()=>{let f=e.subschema({keyword:u},i);t.assign(a,i),e.mergeValidEvaluated(f,a),d?t.assign(d,(0,ul._)`${u}`):e.setParams({ifClause:u})}}}};function V0(e,t){let r=e.schema[t];return r!==void 0&&!(0,F0.alwaysValidSchema)(e,r)}ep.default=OI});var Z0=q(tp=>{"use strict";Object.defineProperty(tp,"__esModule",{value:!0});var II=Ce(),TI={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:r}){t.if===void 0&&(0,II.checkStrictMode)(r,`"${e}" without "if" is ignored`)}};tp.default=TI});var G0=q(rp=>{"use strict";Object.defineProperty(rp,"__esModule",{value:!0});var CI=Dd(),NI=v0(),RI=Ld(),jI=_0(),MI=w0(),DI=P0(),LI=E0(),VI=qd(),FI=I0(),BI=R0(),ZI=j0(),GI=M0(),UI=D0(),qI=L0(),KI=B0(),HI=Z0();function WI(e=!1){let t=[ZI.default,GI.default,UI.default,qI.default,KI.default,HI.default,LI.default,VI.default,DI.default,FI.default,BI.default];return e?t.push(NI.default,jI.default):t.push(CI.default,RI.default),t.push(MI.default),t}rp.default=WI});var U0=q(np=>{"use strict";Object.defineProperty(np,"__esModule",{value:!0});var lt=be(),JI={message:({schemaCode:e})=>(0,lt.str)`must match format "${e}"`,params:({schemaCode:e})=>(0,lt._)`{format: ${e}}`},YI={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:JI,code(e,t){let{gen:r,data:n,$data:o,schema:s,schemaCode:a,it:i}=e,{opts:c,errSchemaPath:l,schemaEnv:u,self:d}=i;if(!c.validateFormats)return;o?f():g();function f(){let h=r.scopeValue("formats",{ref:d.formats,code:c.code.formats}),p=r.const("fDef",(0,lt._)`${h}[${a}]`),m=r.let("fType"),b=r.let("format");r.if((0,lt._)`typeof ${p} == "object" && !(${p} instanceof RegExp)`,()=>r.assign(m,(0,lt._)`${p}.type || "string"`).assign(b,(0,lt._)`${p}.validate`),()=>r.assign(m,(0,lt._)`"string"`).assign(b,p)),e.fail$data((0,lt.or)(v(),_()));function v(){return c.strictSchema===!1?lt.nil:(0,lt._)`${a} && !${b}`}function _(){let z=u.$async?(0,lt._)`(${p}.async ? await ${b}(${n}) : ${b}(${n}))`:(0,lt._)`${b}(${n})`,k=(0,lt._)`(typeof ${b} == "function" ? ${z} : ${b}.test(${n}))`;return(0,lt._)`${b} && ${b} !== true && ${m} === ${t} && !${k}`}}function g(){let h=d.formats[s];if(!h){v();return}if(h===!0)return;let[p,m,b]=_(h);p===t&&e.pass(z());function v(){if(c.strictSchema===!1){d.logger.warn(k());return}throw new Error(k());function k(){return`unknown format "${s}" ignored in schema at path "${l}"`}}function _(k){let x=k instanceof RegExp?(0,lt.regexpCode)(k):c.code.formats?(0,lt._)`${c.code.formats}${(0,lt.getProperty)(s)}`:void 0,A=r.scopeValue("formats",{key:s,ref:k,code:x});return typeof k=="object"&&!(k instanceof RegExp)?[k.type||"string",k.validate,(0,lt._)`${A}.validate`]:["string",k,A]}function z(){if(typeof h=="object"&&!(h instanceof RegExp)&&h.async){if(!u.$async)throw new Error("async format in sync schema");return(0,lt._)`await ${b}(${n})`}return typeof m=="function"?(0,lt._)`${b}(${n})`:(0,lt._)`${b}.test(${n})`}}}};np.default=YI});var q0=q(op=>{"use strict";Object.defineProperty(op,"__esModule",{value:!0});var XI=U0(),QI=[XI.default];op.default=QI});var K0=q(vo=>{"use strict";Object.defineProperty(vo,"__esModule",{value:!0});vo.contentVocabulary=vo.metadataVocabulary=void 0;vo.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];vo.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var W0=q(sp=>{"use strict";Object.defineProperty(sp,"__esModule",{value:!0});var eT=r0(),tT=g0(),rT=G0(),nT=q0(),H0=K0(),oT=[eT.default,tT.default,(0,rT.default)(),nT.default,H0.metadataVocabulary,H0.contentVocabulary];sp.default=oT});var Y0=q(dl=>{"use strict";Object.defineProperty(dl,"__esModule",{value:!0});dl.DiscrError=void 0;var J0;(function(e){e.Tag="tag",e.Mapping="mapping"})(J0||(dl.DiscrError=J0={}))});var Q0=q(ip=>{"use strict";Object.defineProperty(ip,"__esModule",{value:!0});var zo=be(),ap=Y0(),X0=Gi(),sT=Ds(),aT=Ce(),iT={message:({params:{discrError:e,tagName:t}})=>e===ap.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:t,tagName:r}})=>(0,zo._)`{error: ${e}, tag: ${r}, tagValue: ${t}}`},lT={keyword:"discriminator",type:"object",schemaType:"object",error:iT,code(e){let{gen:t,data:r,schema:n,parentSchema:o,it:s}=e,{oneOf:a}=o;if(!s.opts.discriminator)throw new Error("discriminator: requires discriminator option");let i=n.propertyName;if(typeof i!="string")throw new Error("discriminator: requires propertyName");if(n.mapping)throw new Error("discriminator: mapping is not supported");if(!a)throw new Error("discriminator: requires oneOf keyword");let c=t.let("valid",!1),l=t.const("tag",(0,zo._)`${r}${(0,zo.getProperty)(i)}`);t.if((0,zo._)`typeof ${l} == "string"`,()=>u(),()=>e.error(!1,{discrError:ap.DiscrError.Tag,tag:l,tagName:i})),e.ok(c);function u(){let g=f();t.if(!1);for(let h in g)t.elseIf((0,zo._)`${l} === ${h}`),t.assign(c,d(g[h]));t.else(),e.error(!1,{discrError:ap.DiscrError.Mapping,tag:l,tagName:i}),t.endIf()}function d(g){let h=t.name("valid"),p=e.subschema({keyword:"oneOf",schemaProp:g},h);return e.mergeEvaluated(p,zo.Name),h}function f(){var g;let h={},p=b(o),m=!0;for(let z=0;z<a.length;z++){let k=a[z];if(k?.$ref&&!(0,aT.schemaHasRulesButRef)(k,s.self.RULES)){let A=k.$ref;if(k=X0.resolveRef.call(s.self,s.schemaEnv.root,s.baseId,A),k instanceof X0.SchemaEnv&&(k=k.schema),k===void 0)throw new sT.default(s.opts.uriResolver,s.baseId,A)}let x=(g=k?.properties)===null||g===void 0?void 0:g[i];if(typeof x!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${i}"`);m=m&&(p||b(k)),v(x,z)}if(!m)throw new Error(`discriminator: "${i}" must be required`);return h;function b({required:z}){return Array.isArray(z)&&z.includes(i)}function v(z,k){if(z.const)_(z.const,k);else if(z.enum)for(let x of z.enum)_(x,k);else throw new Error(`discriminator: "properties/${i}" must have "const" or "enum"`)}function _(z,k){if(typeof z!="string"||z in h)throw new Error(`discriminator: "${i}" values must be unique strings`);h[z]=k}}}};ip.default=lT});var ev=q((J4,cT)=>{cT.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var cp=q((Ye,lp)=>{"use strict";Object.defineProperty(Ye,"__esModule",{value:!0});Ye.MissingRefError=Ye.ValidationError=Ye.CodeGen=Ye.Name=Ye.nil=Ye.stringify=Ye.str=Ye._=Ye.KeywordCxt=Ye.Ajv=void 0;var uT=Jk(),dT=W0(),pT=Q0(),tv=ev(),fT=["/properties"],pl="http://json-schema.org/draft-07/schema",_o=class extends uT.default{_addVocabularies(){super._addVocabularies(),dT.default.forEach(t=>this.addVocabulary(t)),this.opts.discriminator&&this.addKeyword(pT.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let t=this.opts.$data?this.$dataMetaSchema(tv,fT):tv;this.addMetaSchema(t,pl,!1),this.refs["http://json-schema.org/schema"]=pl}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(pl)?pl:void 0)}};Ye.Ajv=_o;lp.exports=Ye=_o;lp.exports.Ajv=_o;Object.defineProperty(Ye,"__esModule",{value:!0});Ye.default=_o;var mT=Ms();Object.defineProperty(Ye,"KeywordCxt",{enumerable:!0,get:function(){return mT.KeywordCxt}});var wo=be();Object.defineProperty(Ye,"_",{enumerable:!0,get:function(){return wo._}});Object.defineProperty(Ye,"str",{enumerable:!0,get:function(){return wo.str}});Object.defineProperty(Ye,"stringify",{enumerable:!0,get:function(){return wo.stringify}});Object.defineProperty(Ye,"nil",{enumerable:!0,get:function(){return wo.nil}});Object.defineProperty(Ye,"Name",{enumerable:!0,get:function(){return wo.Name}});Object.defineProperty(Ye,"CodeGen",{enumerable:!0,get:function(){return wo.CodeGen}});var hT=Bi();Object.defineProperty(Ye,"ValidationError",{enumerable:!0,get:function(){return hT.default}});var gT=Ds();Object.defineProperty(Ye,"MissingRefError",{enumerable:!0,get:function(){return gT.default}})});var cv=q(Or=>{"use strict";Object.defineProperty(Or,"__esModule",{value:!0});Or.formatNames=Or.fastFormats=Or.fullFormats=void 0;function Ar(e,t){return{validate:e,compare:t}}Or.fullFormats={date:Ar(sv,fp),time:Ar(dp(!0),mp),"date-time":Ar(rv(!0),iv),"iso-time":Ar(dp(),av),"iso-date-time":Ar(rv(),lv),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:_T,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex:AT,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte:wT,int32:{type:"number",validate:PT},int64:{type:"number",validate:$T},float:{type:"number",validate:ov},double:{type:"number",validate:ov},password:!0,binary:!0};Or.fastFormats={...Or.fullFormats,date:Ar(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,fp),time:Ar(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,mp),"date-time":Ar(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,iv),"iso-time":Ar(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,av),"iso-date-time":Ar(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,lv),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i};Or.formatNames=Object.keys(Or.fullFormats);function bT(e){return e%4===0&&(e%100!==0||e%400===0)}var yT=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,kT=[0,31,28,31,30,31,30,31,31,30,31,30,31];function sv(e){let t=yT.exec(e);if(!t)return!1;let r=+t[1],n=+t[2],o=+t[3];return n>=1&&n<=12&&o>=1&&o<=(n===2&&bT(r)?29:kT[n])}function fp(e,t){if(e&&t)return e>t?1:e<t?-1:0}var up=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function dp(e){return function(r){let n=up.exec(r);if(!n)return!1;let o=+n[1],s=+n[2],a=+n[3],i=n[4],c=n[5]==="-"?-1:1,l=+(n[6]||0),u=+(n[7]||0);if(l>23||u>59||e&&!i)return!1;if(o<=23&&s<=59&&a<60)return!0;let d=s-u*c,f=o-l*c-(d<0?1:0);return(f===23||f===-1)&&(d===59||d===-1)&&a<61}}function mp(e,t){if(!(e&&t))return;let r=new Date("2020-01-01T"+e).valueOf(),n=new Date("2020-01-01T"+t).valueOf();if(r&&n)return r-n}function av(e,t){if(!(e&&t))return;let r=up.exec(e),n=up.exec(t);if(r&&n)return e=r[1]+r[2]+r[3],t=n[1]+n[2]+n[3],e>t?1:e<t?-1:0}var pp=/t|\s/i;function rv(e){let t=dp(e);return function(n){let o=n.split(pp);return o.length===2&&sv(o[0])&&t(o[1])}}function iv(e,t){if(!(e&&t))return;let r=new Date(e).valueOf(),n=new Date(t).valueOf();if(r&&n)return r-n}function lv(e,t){if(!(e&&t))return;let[r,n]=e.split(pp),[o,s]=t.split(pp),a=fp(r,o);if(a!==void 0)return a||mp(n,s)}var vT=/\/|:/,zT=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function _T(e){return vT.test(e)&&zT.test(e)}var nv=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function wT(e){return nv.lastIndex=0,nv.test(e)}var xT=-(2**31),ST=2**31-1;function PT(e){return Number.isInteger(e)&&e<=ST&&e>=xT}function $T(e){return Number.isInteger(e)}function ov(){return!0}var ET=/[^\\]\\Z/;function AT(e){if(ET.test(e))return!1;try{return new RegExp(e),!0}catch{return!1}}});var uv=q(xo=>{"use strict";Object.defineProperty(xo,"__esModule",{value:!0});xo.formatLimitDefinition=void 0;var OT=cp(),kr=be(),mn=kr.operators,fl={formatMaximum:{okStr:"<=",ok:mn.LTE,fail:mn.GT},formatMinimum:{okStr:">=",ok:mn.GTE,fail:mn.LT},formatExclusiveMaximum:{okStr:"<",ok:mn.LT,fail:mn.GTE},formatExclusiveMinimum:{okStr:">",ok:mn.GT,fail:mn.LTE}},IT={message:({keyword:e,schemaCode:t})=>(0,kr.str)`should be ${fl[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>(0,kr._)`{comparison: ${fl[e].okStr}, limit: ${t}}`};xo.formatLimitDefinition={keyword:Object.keys(fl),type:"string",schemaType:"string",$data:!0,error:IT,code(e){let{gen:t,data:r,schemaCode:n,keyword:o,it:s}=e,{opts:a,self:i}=s;if(!a.validateFormats)return;let c=new OT.KeywordCxt(s,i.RULES.all.format.definition,"format");c.$data?l():u();function l(){let f=t.scopeValue("formats",{ref:i.formats,code:a.code.formats}),g=t.const("fmt",(0,kr._)`${f}[${c.schemaCode}]`);e.fail$data((0,kr.or)((0,kr._)`typeof ${g} != "object"`,(0,kr._)`${g} instanceof RegExp`,(0,kr._)`typeof ${g}.compare != "function"`,d(g)))}function u(){let f=c.schema,g=i.formats[f];if(!g||g===!0)return;if(typeof g!="object"||g instanceof RegExp||typeof g.compare!="function")throw new Error(`"${o}": format "${f}" does not define "compare" function`);let h=t.scopeValue("formats",{key:f,ref:g,code:a.code.formats?(0,kr._)`${a.code.formats}${(0,kr.getProperty)(f)}`:void 0});e.fail$data(d(h))}function d(f){return(0,kr._)`${f}.compare(${r}, ${n}) ${fl[o].fail} 0`}},dependencies:["format"]};var TT=e=>(e.addKeyword(xo.formatLimitDefinition),e);xo.default=TT});var mv=q((Qs,fv)=>{"use strict";Object.defineProperty(Qs,"__esModule",{value:!0});var So=cv(),CT=uv(),hp=be(),dv=new hp.Name("fullFormats"),NT=new hp.Name("fastFormats"),gp=(e,t={keywords:!0})=>{if(Array.isArray(t))return pv(e,t,So.fullFormats,dv),e;let[r,n]=t.mode==="fast"?[So.fastFormats,NT]:[So.fullFormats,dv],o=t.formats||So.formatNames;return pv(e,o,r,n),t.keywords&&(0,CT.default)(e),e};gp.get=(e,t="full")=>{let n=(t==="fast"?So.fastFormats:So.fullFormats)[e];if(!n)throw new Error(`Unknown format "${e}"`);return n};function pv(e,t,r,n){var o,s;(o=(s=e.opts.code).formats)!==null&&o!==void 0||(s.formats=(0,hp._)`require("ajv-formats/dist/formats").${n}`);for(let a of t)e.addFormat(a,r[a])}fv.exports=Qs=gp;Object.defineProperty(Qs,"__esModule",{value:!0});Qs.default=gp});var qr=q((u5,zv)=>{"use strict";var kv=["nodebuffer","arraybuffer","fragments"],vv=typeof Blob<"u";vv&&kv.push("blob");zv.exports={BINARY_TYPES:kv,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:vv,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var ea=q((d5,bl)=>{"use strict";var{EMPTY_BUFFER:jT}=qr(),bp=Buffer[Symbol.species];function MT(e,t){if(e.length===0)return jT;if(e.length===1)return e[0];let r=Buffer.allocUnsafe(t),n=0;for(let o=0;o<e.length;o++){let s=e[o];r.set(s,n),n+=s.length}return n<t?new bp(r.buffer,r.byteOffset,n):r}function _v(e,t,r,n,o){for(let s=0;s<o;s++)r[n+s]=e[s]^t[s&3]}function wv(e,t){for(let r=0;r<e.length;r++)e[r]^=t[r&3]}function DT(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function yp(e){if(yp.readOnly=!0,Buffer.isBuffer(e))return e;let t;return e instanceof ArrayBuffer?t=new bp(e):ArrayBuffer.isView(e)?t=new bp(e.buffer,e.byteOffset,e.byteLength):(t=Buffer.from(e),yp.readOnly=!1),t}bl.exports={concat:MT,mask:_v,toArrayBuffer:DT,toBuffer:yp,unmask:wv};if(!process.env.WS_NO_BUFFER_UTIL)try{let e=dt("bufferutil");bl.exports.mask=function(t,r,n,o,s){s<48?_v(t,r,n,o,s):e.mask(t,r,n,o,s)},bl.exports.unmask=function(t,r){t.length<32?wv(t,r):e.unmask(t,r)}}catch{}});var Pv=q((p5,Sv)=>{"use strict";var xv=Symbol("kDone"),kp=Symbol("kRun"),vp=class{constructor(t){this[xv]=()=>{this.pending--,this[kp]()},this.concurrency=t||1/0,this.jobs=[],this.pending=0}add(t){this.jobs.push(t),this[kp]()}[kp](){if(this.pending!==this.concurrency&&this.jobs.length){let t=this.jobs.shift();this.pending++,t(this[xv])}}};Sv.exports=vp});var ra=q((f5,Ov)=>{"use strict";var ta=dt("zlib"),$v=ea(),LT=Pv(),{kStatusCode:Ev}=qr(),VT=Buffer[Symbol.species],FT=Buffer.from([0,0,255,255]),kl=Symbol("permessage-deflate"),Kr=Symbol("total-length"),Po=Symbol("callback"),hn=Symbol("buffers"),$o=Symbol("error"),yl,zp=class{constructor(t,r,n){if(this._maxPayload=n|0,this._options=t||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!r,this._deflate=null,this._inflate=null,this.params=null,!yl){let o=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;yl=new LT(o)}}static get extensionName(){return"permessage-deflate"}offer(){let t={};return this._options.serverNoContextTakeover&&(t.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(t.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(t.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?t.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(t.client_max_window_bits=!0),t}accept(t){return t=this.normalizeParams(t),this.params=this._isServer?this.acceptAsServer(t):this.acceptAsClient(t),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let t=this._deflate[Po];this._deflate.close(),this._deflate=null,t&&t(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(t){let r=this._options,n=t.find(o=>!(r.serverNoContextTakeover===!1&&o.server_no_context_takeover||o.server_max_window_bits&&(r.serverMaxWindowBits===!1||typeof r.serverMaxWindowBits=="number"&&r.serverMaxWindowBits>o.server_max_window_bits)||typeof r.clientMaxWindowBits=="number"&&!o.client_max_window_bits));if(!n)throw new Error("None of the extension offers can be accepted");return r.serverNoContextTakeover&&(n.server_no_context_takeover=!0),r.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof r.serverMaxWindowBits=="number"&&(n.server_max_window_bits=r.serverMaxWindowBits),typeof r.clientMaxWindowBits=="number"?n.client_max_window_bits=r.clientMaxWindowBits:(n.client_max_window_bits===!0||r.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(t){let r=t[0];if(this._options.clientNoContextTakeover===!1&&r.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!r.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(r.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&r.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return r}normalizeParams(t){return t.forEach(r=>{Object.keys(r).forEach(n=>{let o=r[n];if(o.length>1)throw new Error(`Parameter "${n}" must have only a single value`);if(o=o[0],n==="client_max_window_bits"){if(o!==!0){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${n}": ${o}`);o=s}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${n}": ${o}`)}else if(n==="server_max_window_bits"){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${n}": ${o}`);o=s}else if(n==="client_no_context_takeover"||n==="server_no_context_takeover"){if(o!==!0)throw new TypeError(`Invalid value for parameter "${n}": ${o}`)}else throw new Error(`Unknown parameter "${n}"`);r[n]=o})}),t}decompress(t,r,n){yl.add(o=>{this._decompress(t,r,(s,a)=>{o(),n(s,a)})})}compress(t,r,n){yl.add(o=>{this._compress(t,r,(s,a)=>{o(),n(s,a)})})}_decompress(t,r,n){let o=this._isServer?"client":"server";if(!this._inflate){let s=`${o}_max_window_bits`,a=typeof this.params[s]!="number"?ta.Z_DEFAULT_WINDOWBITS:this.params[s];this._inflate=ta.createInflateRaw({...this._options.zlibInflateOptions,windowBits:a}),this._inflate[kl]=this,this._inflate[Kr]=0,this._inflate[hn]=[],this._inflate.on("error",ZT),this._inflate.on("data",Av)}this._inflate[Po]=n,this._inflate.write(t),r&&this._inflate.write(FT),this._inflate.flush(()=>{let s=this._inflate[$o];if(s){this._inflate.close(),this._inflate=null,n(s);return}let a=$v.concat(this._inflate[hn],this._inflate[Kr]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[Kr]=0,this._inflate[hn]=[],r&&this.params[`${o}_no_context_takeover`]&&this._inflate.reset()),n(null,a)})}_compress(t,r,n){let o=this._isServer?"server":"client";if(!this._deflate){let s=`${o}_max_window_bits`,a=typeof this.params[s]!="number"?ta.Z_DEFAULT_WINDOWBITS:this.params[s];this._deflate=ta.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:a}),this._deflate[Kr]=0,this._deflate[hn]=[],this._deflate.on("data",BT)}this._deflate[Po]=n,this._deflate.write(t),this._deflate.flush(ta.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let s=$v.concat(this._deflate[hn],this._deflate[Kr]);r&&(s=new VT(s.buffer,s.byteOffset,s.length-4)),this._deflate[Po]=null,this._deflate[Kr]=0,this._deflate[hn]=[],r&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),n(null,s)})}};Ov.exports=zp;function BT(e){this[hn].push(e),this[Kr]+=e.length}function Av(e){if(this[Kr]+=e.length,this[kl]._maxPayload<1||this[Kr]<=this[kl]._maxPayload){this[hn].push(e);return}this[$o]=new RangeError("Max payload size exceeded"),this[$o].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[$o][Ev]=1009,this.removeListener("data",Av),this.reset()}function ZT(e){if(this[kl]._inflate=null,this[$o]){this[Po](this[$o]);return}e[Ev]=1007,this[Po](e)}});var Eo=q((m5,vl)=>{"use strict";var{isUtf8:Iv}=dt("buffer"),{hasBlob:GT}=qr(),UT=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function qT(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function _p(e){let t=e.length,r=0;for(;r<t;)if((e[r]&128)===0)r++;else if((e[r]&224)===192){if(r+1===t||(e[r+1]&192)!==128||(e[r]&254)===192)return!1;r+=2}else if((e[r]&240)===224){if(r+2>=t||(e[r+1]&192)!==128||(e[r+2]&192)!==128||e[r]===224&&(e[r+1]&224)===128||e[r]===237&&(e[r+1]&224)===160)return!1;r+=3}else if((e[r]&248)===240){if(r+3>=t||(e[r+1]&192)!==128||(e[r+2]&192)!==128||(e[r+3]&192)!==128||e[r]===240&&(e[r+1]&240)===128||e[r]===244&&e[r+1]>143||e[r]>244)return!1;r+=4}else return!1;return!0}function KT(e){return GT&&typeof e=="object"&&typeof e.arrayBuffer=="function"&&typeof e.type=="string"&&typeof e.stream=="function"&&(e[Symbol.toStringTag]==="Blob"||e[Symbol.toStringTag]==="File")}vl.exports={isBlob:KT,isValidStatusCode:qT,isValidUTF8:_p,tokenChars:UT};if(Iv)vl.exports.isValidUTF8=function(e){return e.length<24?_p(e):Iv(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let e=dt("utf-8-validate");vl.exports.isValidUTF8=function(t){return t.length<32?_p(t):e(t)}}catch{}});var $p=q((h5,Dv)=>{"use strict";var{Writable:HT}=dt("stream"),Tv=ra(),{BINARY_TYPES:WT,EMPTY_BUFFER:Cv,kStatusCode:JT,kWebSocket:YT}=qr(),{concat:wp,toArrayBuffer:XT,unmask:QT}=ea(),{isValidStatusCode:eC,isValidUTF8:Nv}=Eo(),zl=Buffer[Symbol.species],ar=0,Rv=1,jv=2,Mv=3,xp=4,Sp=5,_l=6,Pp=class extends HT{constructor(t={}){super(),this._allowSynchronousEvents=t.allowSynchronousEvents!==void 0?t.allowSynchronousEvents:!0,this._binaryType=t.binaryType||WT[0],this._extensions=t.extensions||{},this._isServer=!!t.isServer,this._maxPayload=t.maxPayload|0,this._skipUTF8Validation=!!t.skipUTF8Validation,this[YT]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=ar}_write(t,r,n){if(this._opcode===8&&this._state==ar)return n();this._bufferedBytes+=t.length,this._buffers.push(t),this.startLoop(n)}consume(t){if(this._bufferedBytes-=t,t===this._buffers[0].length)return this._buffers.shift();if(t<this._buffers[0].length){let n=this._buffers[0];return this._buffers[0]=new zl(n.buffer,n.byteOffset+t,n.length-t),new zl(n.buffer,n.byteOffset,t)}let r=Buffer.allocUnsafe(t);do{let n=this._buffers[0],o=r.length-t;t>=n.length?r.set(this._buffers.shift(),o):(r.set(new Uint8Array(n.buffer,n.byteOffset,t),o),this._buffers[0]=new zl(n.buffer,n.byteOffset+t,n.length-t)),t-=n.length}while(t>0);return r}startLoop(t){this._loop=!0;do switch(this._state){case ar:this.getInfo(t);break;case Rv:this.getPayloadLength16(t);break;case jv:this.getPayloadLength64(t);break;case Mv:this.getMask();break;case xp:this.getData(t);break;case Sp:case _l:this._loop=!1;return}while(this._loop);this._errored||t()}getInfo(t){if(this._bufferedBytes<2){this._loop=!1;return}let r=this.consume(2);if((r[0]&48)!==0){let o=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");t(o);return}let n=(r[0]&64)===64;if(n&&!this._extensions[Tv.extensionName]){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");t(o);return}if(this._fin=(r[0]&128)===128,this._opcode=r[0]&15,this._payloadLength=r[1]&127,this._opcode===0){if(n){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");t(o);return}if(!this._fragmented){let o=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");t(o);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");t(o);return}this._compressed=n}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let o=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");t(o);return}if(n){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");t(o);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let o=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");t(o);return}}else{let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");t(o);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(r[1]&128)===128,this._isServer){if(!this._masked){let o=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");t(o);return}}else if(this._masked){let o=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");t(o);return}this._payloadLength===126?this._state=Rv:this._payloadLength===127?this._state=jv:this.haveLength(t)}getPayloadLength16(t){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(t)}getPayloadLength64(t){if(this._bufferedBytes<8){this._loop=!1;return}let r=this.consume(8),n=r.readUInt32BE(0);if(n>Math.pow(2,21)-1){let o=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");t(o);return}this._payloadLength=n*Math.pow(2,32)+r.readUInt32BE(4),this.haveLength(t)}haveLength(t){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let r=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");t(r);return}this._masked?this._state=Mv:this._state=xp}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=xp}getData(t){let r=Cv;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}r=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&QT(r,this._mask)}if(this._opcode>7){this.controlMessage(r,t);return}if(this._compressed){this._state=Sp,this.decompress(r,t);return}r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage(t)}decompress(t,r){this._extensions[Tv.extensionName].decompress(t,this._fin,(o,s)=>{if(o)return r(o);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let a=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");r(a);return}this._fragments.push(s)}this.dataMessage(r),this._state===ar&&this.startLoop(r)})}dataMessage(t){if(!this._fin){this._state=ar;return}let r=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let o;this._binaryType==="nodebuffer"?o=wp(n,r):this._binaryType==="arraybuffer"?o=XT(wp(n,r)):this._binaryType==="blob"?o=new Blob(n):o=n,this._allowSynchronousEvents?(this.emit("message",o,!0),this._state=ar):(this._state=_l,setImmediate(()=>{this.emit("message",o,!0),this._state=ar,this.startLoop(t)}))}else{let o=wp(n,r);if(!this._skipUTF8Validation&&!Nv(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");t(s);return}this._state===Sp||this._allowSynchronousEvents?(this.emit("message",o,!1),this._state=ar):(this._state=_l,setImmediate(()=>{this.emit("message",o,!1),this._state=ar,this.startLoop(t)}))}}controlMessage(t,r){if(this._opcode===8){if(t.length===0)this._loop=!1,this.emit("conclude",1005,Cv),this.end();else{let n=t.readUInt16BE(0);if(!eC(n)){let s=this.createError(RangeError,`invalid status code ${n}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(s);return}let o=new zl(t.buffer,t.byteOffset+2,t.length-2);if(!this._skipUTF8Validation&&!Nv(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");r(s);return}this._loop=!1,this.emit("conclude",n,o),this.end()}this._state=ar;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",t),this._state=ar):(this._state=_l,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",t),this._state=ar,this.startLoop(r)}))}createError(t,r,n,o,s){this._loop=!1,this._errored=!0;let a=new t(n?`Invalid WebSocket frame: ${r}`:r);return Error.captureStackTrace(a,this.createError),a.code=s,a[JT]=o,a}};Dv.exports=Pp});var Op=q((b5,Fv)=>{"use strict";var{Duplex:g5}=dt("stream"),{randomFillSync:tC}=dt("crypto"),Lv=ra(),{EMPTY_BUFFER:rC,kWebSocket:nC,NOOP:oC}=qr(),{isBlob:Ao,isValidStatusCode:sC}=Eo(),{mask:Vv,toBuffer:Mn}=ea(),ir=Symbol("kByteLength"),aC=Buffer.alloc(4),wl=8*1024,Dn,Oo=wl,vr=0,iC=1,lC=2,Ep=class e{constructor(t,r,n){this._extensions=r||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=t,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=vr,this.onerror=oC,this[nC]=void 0}static frame(t,r){let n,o=!1,s=2,a=!1;r.mask&&(n=r.maskBuffer||aC,r.generateMask?r.generateMask(n):(Oo===wl&&(Dn===void 0&&(Dn=Buffer.alloc(wl)),tC(Dn,0,wl),Oo=0),n[0]=Dn[Oo++],n[1]=Dn[Oo++],n[2]=Dn[Oo++],n[3]=Dn[Oo++]),a=(n[0]|n[1]|n[2]|n[3])===0,s=6);let i;typeof t=="string"?(!r.mask||a)&&r[ir]!==void 0?i=r[ir]:(t=Buffer.from(t),i=t.length):(i=t.length,o=r.mask&&r.readOnly&&!a);let c=i;i>=65536?(s+=8,c=127):i>125&&(s+=2,c=126);let l=Buffer.allocUnsafe(o?i+s:s);return l[0]=r.fin?r.opcode|128:r.opcode,r.rsv1&&(l[0]|=64),l[1]=c,c===126?l.writeUInt16BE(i,2):c===127&&(l[2]=l[3]=0,l.writeUIntBE(i,4,6)),r.mask?(l[1]|=128,l[s-4]=n[0],l[s-3]=n[1],l[s-2]=n[2],l[s-1]=n[3],a?[l,t]:o?(Vv(t,n,l,s,i),[l]):(Vv(t,n,t,0,i),[l,t])):[l,t]}close(t,r,n,o){let s;if(t===void 0)s=rC;else{if(typeof t!="number"||!sC(t))throw new TypeError("First argument must be a valid error code number");if(r===void 0||!r.length)s=Buffer.allocUnsafe(2),s.writeUInt16BE(t,0);else{let i=Buffer.byteLength(r);if(i>123)throw new RangeError("The message must not be greater than 123 bytes");s=Buffer.allocUnsafe(2+i),s.writeUInt16BE(t,0),typeof r=="string"?s.write(r,2):s.set(r,2)}}let a={[ir]:s.length,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==vr?this.enqueue([this.dispatch,s,!1,a,o]):this.sendFrame(e.frame(s,a),o)}ping(t,r,n){let o,s;if(typeof t=="string"?(o=Buffer.byteLength(t),s=!1):Ao(t)?(o=t.size,s=!1):(t=Mn(t),o=t.length,s=Mn.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let a={[ir]:o,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:9,readOnly:s,rsv1:!1};Ao(t)?this._state!==vr?this.enqueue([this.getBlobData,t,!1,a,n]):this.getBlobData(t,!1,a,n):this._state!==vr?this.enqueue([this.dispatch,t,!1,a,n]):this.sendFrame(e.frame(t,a),n)}pong(t,r,n){let o,s;if(typeof t=="string"?(o=Buffer.byteLength(t),s=!1):Ao(t)?(o=t.size,s=!1):(t=Mn(t),o=t.length,s=Mn.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let a={[ir]:o,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:10,readOnly:s,rsv1:!1};Ao(t)?this._state!==vr?this.enqueue([this.getBlobData,t,!1,a,n]):this.getBlobData(t,!1,a,n):this._state!==vr?this.enqueue([this.dispatch,t,!1,a,n]):this.sendFrame(e.frame(t,a),n)}send(t,r,n){let o=this._extensions[Lv.extensionName],s=r.binary?2:1,a=r.compress,i,c;typeof t=="string"?(i=Buffer.byteLength(t),c=!1):Ao(t)?(i=t.size,c=!1):(t=Mn(t),i=t.length,c=Mn.readOnly),this._firstFragment?(this._firstFragment=!1,a&&o&&o.params[o._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(a=i>=o._threshold),this._compress=a):(a=!1,s=0),r.fin&&(this._firstFragment=!0);let l={[ir]:i,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:s,readOnly:c,rsv1:a};Ao(t)?this._state!==vr?this.enqueue([this.getBlobData,t,this._compress,l,n]):this.getBlobData(t,this._compress,l,n):this._state!==vr?this.enqueue([this.dispatch,t,this._compress,l,n]):this.dispatch(t,this._compress,l,n)}getBlobData(t,r,n,o){this._bufferedBytes+=n[ir],this._state=lC,t.arrayBuffer().then(s=>{if(this._socket.destroyed){let i=new Error("The socket was closed while the blob was being read");process.nextTick(Ap,this,i,o);return}this._bufferedBytes-=n[ir];let a=Mn(s);r?this.dispatch(a,r,n,o):(this._state=vr,this.sendFrame(e.frame(a,n),o),this.dequeue())}).catch(s=>{process.nextTick(cC,this,s,o)})}dispatch(t,r,n,o){if(!r){this.sendFrame(e.frame(t,n),o);return}let s=this._extensions[Lv.extensionName];this._bufferedBytes+=n[ir],this._state=iC,s.compress(t,n.fin,(a,i)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");Ap(this,c,o);return}this._bufferedBytes-=n[ir],this._state=vr,n.readOnly=!1,this.sendFrame(e.frame(i,n),o),this.dequeue()})}dequeue(){for(;this._state===vr&&this._queue.length;){let t=this._queue.shift();this._bufferedBytes-=t[3][ir],Reflect.apply(t[0],this,t.slice(1))}}enqueue(t){this._bufferedBytes+=t[3][ir],this._queue.push(t)}sendFrame(t,r){t.length===2?(this._socket.cork(),this._socket.write(t[0]),this._socket.write(t[1],r),this._socket.uncork()):this._socket.write(t[0],r)}};Fv.exports=Ep;function Ap(e,t,r){typeof r=="function"&&r(t);for(let n=0;n<e._queue.length;n++){let o=e._queue[n],s=o[o.length-1];typeof s=="function"&&s(t)}}function cC(e,t,r){Ap(e,t,r),e.onerror(t)}});var Jv=q((y5,Wv)=>{"use strict";var{kForOnEventAttribute:na,kListener:Ip}=qr(),Bv=Symbol("kCode"),Zv=Symbol("kData"),Gv=Symbol("kError"),Uv=Symbol("kMessage"),qv=Symbol("kReason"),Io=Symbol("kTarget"),Kv=Symbol("kType"),Hv=Symbol("kWasClean"),Hr=class{constructor(t){this[Io]=null,this[Kv]=t}get target(){return this[Io]}get type(){return this[Kv]}};Object.defineProperty(Hr.prototype,"target",{enumerable:!0});Object.defineProperty(Hr.prototype,"type",{enumerable:!0});var Ln=class extends Hr{constructor(t,r={}){super(t),this[Bv]=r.code===void 0?0:r.code,this[qv]=r.reason===void 0?"":r.reason,this[Hv]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[Bv]}get reason(){return this[qv]}get wasClean(){return this[Hv]}};Object.defineProperty(Ln.prototype,"code",{enumerable:!0});Object.defineProperty(Ln.prototype,"reason",{enumerable:!0});Object.defineProperty(Ln.prototype,"wasClean",{enumerable:!0});var To=class extends Hr{constructor(t,r={}){super(t),this[Gv]=r.error===void 0?null:r.error,this[Uv]=r.message===void 0?"":r.message}get error(){return this[Gv]}get message(){return this[Uv]}};Object.defineProperty(To.prototype,"error",{enumerable:!0});Object.defineProperty(To.prototype,"message",{enumerable:!0});var oa=class extends Hr{constructor(t,r={}){super(t),this[Zv]=r.data===void 0?null:r.data}get data(){return this[Zv]}};Object.defineProperty(oa.prototype,"data",{enumerable:!0});var uC={addEventListener(e,t,r={}){for(let o of this.listeners(e))if(!r[na]&&o[Ip]===t&&!o[na])return;let n;if(e==="message")n=function(s,a){let i=new oa("message",{data:a?s:s.toString()});i[Io]=this,xl(t,this,i)};else if(e==="close")n=function(s,a){let i=new Ln("close",{code:s,reason:a.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});i[Io]=this,xl(t,this,i)};else if(e==="error")n=function(s){let a=new To("error",{error:s,message:s.message});a[Io]=this,xl(t,this,a)};else if(e==="open")n=function(){let s=new Hr("open");s[Io]=this,xl(t,this,s)};else return;n[na]=!!r[na],n[Ip]=t,r.once?this.once(e,n):this.on(e,n)},removeEventListener(e,t){for(let r of this.listeners(e))if(r[Ip]===t&&!r[na]){this.removeListener(e,r);break}}};Wv.exports={CloseEvent:Ln,ErrorEvent:To,Event:Hr,EventTarget:uC,MessageEvent:oa};function xl(e,t,r){typeof e=="object"&&e.handleEvent?e.handleEvent.call(e,r):e.call(t,r)}});var Tp=q((k5,Yv)=>{"use strict";var{tokenChars:sa}=Eo();function Ir(e,t,r){e[t]===void 0?e[t]=[r]:e[t].push(r)}function dC(e){let t=Object.create(null),r=Object.create(null),n=!1,o=!1,s=!1,a,i,c=-1,l=-1,u=-1,d=0;for(;d<e.length;d++)if(l=e.charCodeAt(d),a===void 0)if(u===-1&&sa[l]===1)c===-1&&(c=d);else if(d!==0&&(l===32||l===9))u===-1&&c!==-1&&(u=d);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d);let g=e.slice(c,u);l===44?(Ir(t,g,r),r=Object.create(null)):a=g,c=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);else if(i===void 0)if(u===-1&&sa[l]===1)c===-1&&(c=d);else if(l===32||l===9)u===-1&&c!==-1&&(u=d);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d),Ir(r,e.slice(c,u),!0),l===44&&(Ir(t,a,r),r=Object.create(null),a=void 0),c=u=-1}else if(l===61&&c!==-1&&u===-1)i=e.slice(c,d),c=u=-1;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(o){if(sa[l]!==1)throw new SyntaxError(`Unexpected character at index ${d}`);c===-1?c=d:n||(n=!0),o=!1}else if(s)if(sa[l]===1)c===-1&&(c=d);else if(l===34&&c!==-1)s=!1,u=d;else if(l===92)o=!0;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(l===34&&e.charCodeAt(d-1)===61)s=!0;else if(u===-1&&sa[l]===1)c===-1&&(c=d);else if(c!==-1&&(l===32||l===9))u===-1&&(u=d);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d);let g=e.slice(c,u);n&&(g=g.replace(/\\/g,""),n=!1),Ir(r,i,g),l===44&&(Ir(t,a,r),r=Object.create(null),a=void 0),i=void 0,c=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);if(c===-1||s||l===32||l===9)throw new SyntaxError("Unexpected end of input");u===-1&&(u=d);let f=e.slice(c,u);return a===void 0?Ir(t,f,r):(i===void 0?Ir(r,f,!0):n?Ir(r,i,f.replace(/\\/g,"")):Ir(r,i,f),Ir(t,a,r)),t}function pC(e){return Object.keys(e).map(t=>{let r=e[t];return Array.isArray(r)||(r=[r]),r.map(n=>[t].concat(Object.keys(n).map(o=>{let s=n[o];return Array.isArray(s)||(s=[s]),s.map(a=>a===!0?o:`${o}=${a}`).join("; ")})).join("; ")).join(", ")}).join(", ")}Yv.exports={format:pC,parse:dC}});var El=q((_5,cz)=>{"use strict";var fC=dt("events"),mC=dt("https"),hC=dt("http"),ez=dt("net"),gC=dt("tls"),{randomBytes:bC,createHash:yC}=dt("crypto"),{Duplex:v5,Readable:z5}=dt("stream"),{URL:Cp}=dt("url"),gn=ra(),kC=$p(),vC=Op(),{isBlob:zC}=Eo(),{BINARY_TYPES:Xv,EMPTY_BUFFER:Sl,GUID:_C,kForOnEventAttribute:Np,kListener:wC,kStatusCode:xC,kWebSocket:bt,NOOP:tz}=qr(),{EventTarget:{addEventListener:SC,removeEventListener:PC}}=Jv(),{format:$C,parse:EC}=Tp(),{toBuffer:AC}=ea(),OC=30*1e3,rz=Symbol("kAborted"),Rp=[8,13],Wr=["CONNECTING","OPEN","CLOSING","CLOSED"],IC=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,tt=class e extends fC{constructor(t,r,n){super(),this._binaryType=Xv[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Sl,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,t!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,r===void 0?r=[]:Array.isArray(r)||(typeof r=="object"&&r!==null?(n=r,r=[]):r=[r]),nz(this,t,r,n)):(this._autoPong=n.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(t){Xv.includes(t)&&(this._binaryType=t,this._receiver&&(this._receiver._binaryType=t))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(t,r,n){let o=new kC({allowSynchronousEvents:n.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation}),s=new vC(t,this._extensions,n.generateMask);this._receiver=o,this._sender=s,this._socket=t,o[bt]=this,s[bt]=this,t[bt]=this,o.on("conclude",NC),o.on("drain",RC),o.on("error",jC),o.on("message",MC),o.on("ping",DC),o.on("pong",LC),s.onerror=VC,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),r.length>0&&t.unshift(r),t.on("close",az),t.on("data",$l),t.on("end",iz),t.on("error",lz),this._readyState=e.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[gn.extensionName]&&this._extensions[gn.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(t,r){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){Yt(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(t,r,!this._isServer,n=>{n||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),sz(this)}}pause(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!0,this._socket.pause())}ping(t,r,n){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"?(n=t,t=r=void 0):typeof r=="function"&&(n=r,r=void 0),typeof t=="number"&&(t=t.toString()),this.readyState!==e.OPEN){jp(this,t,n);return}r===void 0&&(r=!this._isServer),this._sender.ping(t||Sl,r,n)}pong(t,r,n){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"?(n=t,t=r=void 0):typeof r=="function"&&(n=r,r=void 0),typeof t=="number"&&(t=t.toString()),this.readyState!==e.OPEN){jp(this,t,n);return}r===void 0&&(r=!this._isServer),this._sender.pong(t||Sl,r,n)}resume(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(t,r,n){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof r=="function"&&(n=r,r={}),typeof t=="number"&&(t=t.toString()),this.readyState!==e.OPEN){jp(this,t,n);return}let o={binary:typeof t!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[gn.extensionName]||(o.compress=!1),this._sender.send(t||Sl,o,n)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){Yt(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(tt,"CONNECTING",{enumerable:!0,value:Wr.indexOf("CONNECTING")});Object.defineProperty(tt.prototype,"CONNECTING",{enumerable:!0,value:Wr.indexOf("CONNECTING")});Object.defineProperty(tt,"OPEN",{enumerable:!0,value:Wr.indexOf("OPEN")});Object.defineProperty(tt.prototype,"OPEN",{enumerable:!0,value:Wr.indexOf("OPEN")});Object.defineProperty(tt,"CLOSING",{enumerable:!0,value:Wr.indexOf("CLOSING")});Object.defineProperty(tt.prototype,"CLOSING",{enumerable:!0,value:Wr.indexOf("CLOSING")});Object.defineProperty(tt,"CLOSED",{enumerable:!0,value:Wr.indexOf("CLOSED")});Object.defineProperty(tt.prototype,"CLOSED",{enumerable:!0,value:Wr.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(e=>{Object.defineProperty(tt.prototype,e,{enumerable:!0})});["open","error","close","message"].forEach(e=>{Object.defineProperty(tt.prototype,`on${e}`,{enumerable:!0,get(){for(let t of this.listeners(e))if(t[Np])return t[wC];return null},set(t){for(let r of this.listeners(e))if(r[Np]){this.removeListener(e,r);break}typeof t=="function"&&this.addEventListener(e,t,{[Np]:!0})}})});tt.prototype.addEventListener=SC;tt.prototype.removeEventListener=PC;cz.exports=tt;function nz(e,t,r,n){let o={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:Rp[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...n,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(e._autoPong=o.autoPong,!Rp.includes(o.protocolVersion))throw new RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${Rp.join(", ")})`);let s;if(t instanceof Cp)s=t;else try{s=new Cp(t)}catch{throw new SyntaxError(`Invalid URL: ${t}`)}s.protocol==="http:"?s.protocol="ws:":s.protocol==="https:"&&(s.protocol="wss:"),e._url=s.href;let a=s.protocol==="wss:",i=s.protocol==="ws+unix:",c;if(s.protocol!=="ws:"&&!a&&!i?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:i&&!s.pathname?c="The URL's pathname is empty":s.hash&&(c="The URL contains a fragment identifier"),c){let p=new SyntaxError(c);if(e._redirects===0)throw p;Pl(e,p);return}let l=a?443:80,u=bC(16).toString("base64"),d=a?mC.request:hC.request,f=new Set,g;if(o.createConnection=o.createConnection||(a?CC:TC),o.defaultPort=o.defaultPort||l,o.port=s.port||l,o.host=s.hostname.startsWith("[")?s.hostname.slice(1,-1):s.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":u,Connection:"Upgrade",Upgrade:"websocket"},o.path=s.pathname+s.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(g=new gn(o.perMessageDeflate!==!0?o.perMessageDeflate:{},!1,o.maxPayload),o.headers["Sec-WebSocket-Extensions"]=$C({[gn.extensionName]:g.offer()})),r.length){for(let p of r){if(typeof p!="string"||!IC.test(p)||f.has(p))throw new SyntaxError("An invalid or duplicated subprotocol was specified");f.add(p)}o.headers["Sec-WebSocket-Protocol"]=r.join(",")}if(o.origin&&(o.protocolVersion<13?o.headers["Sec-WebSocket-Origin"]=o.origin:o.headers.Origin=o.origin),(s.username||s.password)&&(o.auth=`${s.username}:${s.password}`),i){let p=o.path.split(":");o.socketPath=p[0],o.path=p[1]}let h;if(o.followRedirects){if(e._redirects===0){e._originalIpc=i,e._originalSecure=a,e._originalHostOrSocketPath=i?o.socketPath:s.host;let p=n&&n.headers;if(n={...n,headers:{}},p)for(let[m,b]of Object.entries(p))n.headers[m.toLowerCase()]=b}else if(e.listenerCount("redirect")===0){let p=i?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:s.host===e._originalHostOrSocketPath;(!p||e._originalSecure&&!a)&&(delete o.headers.authorization,delete o.headers.cookie,p||delete o.headers.host,o.auth=void 0)}o.auth&&!n.headers.authorization&&(n.headers.authorization="Basic "+Buffer.from(o.auth).toString("base64")),h=e._req=d(o),e._redirects&&e.emit("redirect",e.url,h)}else h=e._req=d(o);o.timeout&&h.on("timeout",()=>{Yt(e,h,"Opening handshake has timed out")}),h.on("error",p=>{h===null||h[rz]||(h=e._req=null,Pl(e,p))}),h.on("response",p=>{let m=p.headers.location,b=p.statusCode;if(m&&o.followRedirects&&b>=300&&b<400){if(++e._redirects>o.maxRedirects){Yt(e,h,"Maximum redirects exceeded");return}h.abort();let v;try{v=new Cp(m,t)}catch{let z=new SyntaxError(`Invalid URL: ${m}`);Pl(e,z);return}nz(e,v,r,n)}else e.emit("unexpected-response",h,p)||Yt(e,h,`Unexpected server response: ${p.statusCode}`)}),h.on("upgrade",(p,m,b)=>{if(e.emit("upgrade",p),e.readyState!==tt.CONNECTING)return;h=e._req=null;let v=p.headers.upgrade;if(v===void 0||v.toLowerCase()!=="websocket"){Yt(e,m,"Invalid Upgrade header");return}let _=yC("sha1").update(u+_C).digest("base64");if(p.headers["sec-websocket-accept"]!==_){Yt(e,m,"Invalid Sec-WebSocket-Accept header");return}let z=p.headers["sec-websocket-protocol"],k;if(z!==void 0?f.size?f.has(z)||(k="Server sent an invalid subprotocol"):k="Server sent a subprotocol but none was requested":f.size&&(k="Server sent no subprotocol"),k){Yt(e,m,k);return}z&&(e._protocol=z);let x=p.headers["sec-websocket-extensions"];if(x!==void 0){if(!g){Yt(e,m,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let A;try{A=EC(x)}catch{Yt(e,m,"Invalid Sec-WebSocket-Extensions header");return}let G=Object.keys(A);if(G.length!==1||G[0]!==gn.extensionName){Yt(e,m,"Server indicated an extension that was not requested");return}try{g.accept(A[gn.extensionName])}catch{Yt(e,m,"Invalid Sec-WebSocket-Extensions header");return}e._extensions[gn.extensionName]=g}e.setSocket(m,b,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(h,e):h.end()}function Pl(e,t){e._readyState=tt.CLOSING,e._errorEmitted=!0,e.emit("error",t),e.emitClose()}function TC(e){return e.path=e.socketPath,ez.connect(e)}function CC(e){return e.path=void 0,!e.servername&&e.servername!==""&&(e.servername=ez.isIP(e.host)?"":e.host),gC.connect(e)}function Yt(e,t,r){e._readyState=tt.CLOSING;let n=new Error(r);Error.captureStackTrace(n,Yt),t.setHeader?(t[rz]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(Pl,e,n)):(t.destroy(n),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function jp(e,t,r){if(t){let n=zC(t)?t.size:AC(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(r){let n=new Error(`WebSocket is not open: readyState ${e.readyState} (${Wr[e.readyState]})`);process.nextTick(r,n)}}function NC(e,t){let r=this[bt];r._closeFrameReceived=!0,r._closeMessage=t,r._closeCode=e,r._socket[bt]!==void 0&&(r._socket.removeListener("data",$l),process.nextTick(oz,r._socket),e===1005?r.close():r.close(e,t))}function RC(){let e=this[bt];e.isPaused||e._socket.resume()}function jC(e){let t=this[bt];t._socket[bt]!==void 0&&(t._socket.removeListener("data",$l),process.nextTick(oz,t._socket),t.close(e[xC])),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e))}function Qv(){this[bt].emitClose()}function MC(e,t){this[bt].emit("message",e,t)}function DC(e){let t=this[bt];t._autoPong&&t.pong(e,!this._isServer,tz),t.emit("ping",e)}function LC(e){this[bt].emit("pong",e)}function oz(e){e.resume()}function VC(e){let t=this[bt];t.readyState!==tt.CLOSED&&(t.readyState===tt.OPEN&&(t._readyState=tt.CLOSING,sz(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e)))}function sz(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),OC)}function az(){let e=this[bt];this.removeListener("close",az),this.removeListener("data",$l),this.removeListener("end",iz),e._readyState=tt.CLOSING;let t;!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&(t=e._socket.read())!==null&&e._receiver.write(t),e._receiver.end(),this[bt]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",Qv),e._receiver.on("finish",Qv))}function $l(e){this[bt]._receiver.write(e)||this.pause()}function iz(){let e=this[bt];e._readyState=tt.CLOSING,e._receiver.end(),this.end()}function lz(){let e=this[bt];this.removeListener("error",lz),this.on("error",tz),e&&(e._readyState=tt.CLOSING,this.destroy())}});var fz=q((x5,pz)=>{"use strict";var w5=El(),{Duplex:FC}=dt("stream");function uz(e){e.emit("close")}function BC(){!this.destroyed&&this._writableState.finished&&this.destroy()}function dz(e){this.removeListener("error",dz),this.destroy(),this.listenerCount("error")===0&&this.emit("error",e)}function ZC(e,t){let r=!0,n=new FC({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",function(s,a){let i=!a&&n._readableState.objectMode?s.toString():s;n.push(i)||e.pause()}),e.once("error",function(s){n.destroyed||(r=!1,n.destroy(s))}),e.once("close",function(){n.destroyed||n.push(null)}),n._destroy=function(o,s){if(e.readyState===e.CLOSED){s(o),process.nextTick(uz,n);return}let a=!1;e.once("error",function(c){a=!0,s(c)}),e.once("close",function(){a||s(o),process.nextTick(uz,n)}),r&&e.terminate()},n._final=function(o){if(e.readyState===e.CONNECTING){e.once("open",function(){n._final(o)});return}e._socket!==null&&(e._socket._writableState.finished?(o(),n._readableState.endEmitted&&n.destroy()):(e._socket.once("finish",function(){o()}),e.close()))},n._read=function(){e.isPaused&&e.resume()},n._write=function(o,s,a){if(e.readyState===e.CONNECTING){e.once("open",function(){n._write(o,s,a)});return}e.send(o,a)},n.on("end",BC),n.on("error",dz),n}pz.exports=ZC});var hz=q((S5,mz)=>{"use strict";var{tokenChars:GC}=Eo();function UC(e){let t=new Set,r=-1,n=-1,o=0;for(o;o<e.length;o++){let a=e.charCodeAt(o);if(n===-1&&GC[a]===1)r===-1&&(r=o);else if(o!==0&&(a===32||a===9))n===-1&&r!==-1&&(n=o);else if(a===44){if(r===-1)throw new SyntaxError(`Unexpected character at index ${o}`);n===-1&&(n=o);let i=e.slice(r,n);if(t.has(i))throw new SyntaxError(`The "${i}" subprotocol is duplicated`);t.add(i),r=n=-1}else throw new SyntaxError(`Unexpected character at index ${o}`)}if(r===-1||n!==-1)throw new SyntaxError("Unexpected end of input");let s=e.slice(r,o);if(t.has(s))throw new SyntaxError(`The "${s}" subprotocol is duplicated`);return t.add(s),t}mz.exports={parse:UC}});var _z=q(($5,zz)=>{"use strict";var qC=dt("events"),Al=dt("http"),{Duplex:P5}=dt("stream"),{createHash:KC}=dt("crypto"),gz=Tp(),Vn=ra(),HC=hz(),WC=El(),{GUID:JC,kWebSocket:YC}=qr(),XC=/^[+/0-9A-Za-z]{22}==$/,bz=0,yz=1,vz=2,Mp=class extends qC{constructor(t,r){if(super(),t={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:WC,...t},t.port==null&&!t.server&&!t.noServer||t.port!=null&&(t.server||t.noServer)||t.server&&t.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(t.port!=null?(this._server=Al.createServer((n,o)=>{let s=Al.STATUS_CODES[426];o.writeHead(426,{"Content-Length":s.length,"Content-Type":"text/plain"}),o.end(s)}),this._server.listen(t.port,t.host,t.backlog,r)):t.server&&(this._server=t.server),this._server){let n=this.emit.bind(this,"connection");this._removeListeners=QC(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(o,s,a)=>{this.handleUpgrade(o,s,a,n)}})}t.perMessageDeflate===!0&&(t.perMessageDeflate={}),t.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=t,this._state=bz}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(t){if(this._state===vz){t&&this.once("close",()=>{t(new Error("The server is not running"))}),process.nextTick(aa,this);return}if(t&&this.once("close",t),this._state!==yz)if(this._state=yz,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(aa,this):process.nextTick(aa,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{aa(this)})}}shouldHandle(t){if(this.options.path){let r=t.url.indexOf("?");if((r!==-1?t.url.slice(0,r):t.url)!==this.options.path)return!1}return!0}handleUpgrade(t,r,n,o){r.on("error",kz);let s=t.headers["sec-websocket-key"],a=t.headers.upgrade,i=+t.headers["sec-websocket-version"];if(t.method!=="GET"){Fn(this,t,r,405,"Invalid HTTP method");return}if(a===void 0||a.toLowerCase()!=="websocket"){Fn(this,t,r,400,"Invalid Upgrade header");return}if(s===void 0||!XC.test(s)){Fn(this,t,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(i!==13&&i!==8){Fn(this,t,r,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(t)){ia(r,400);return}let c=t.headers["sec-websocket-protocol"],l=new Set;if(c!==void 0)try{l=HC.parse(c)}catch{Fn(this,t,r,400,"Invalid Sec-WebSocket-Protocol header");return}let u=t.headers["sec-websocket-extensions"],d={};if(this.options.perMessageDeflate&&u!==void 0){let f=new Vn(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let g=gz.parse(u);g[Vn.extensionName]&&(f.accept(g[Vn.extensionName]),d[Vn.extensionName]=f)}catch{Fn(this,t,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let f={origin:t.headers[`${i===8?"sec-websocket-origin":"origin"}`],secure:!!(t.socket.authorized||t.socket.encrypted),req:t};if(this.options.verifyClient.length===2){this.options.verifyClient(f,(g,h,p,m)=>{if(!g)return ia(r,h||401,p,m);this.completeUpgrade(d,s,l,t,r,n,o)});return}if(!this.options.verifyClient(f))return ia(r,401)}this.completeUpgrade(d,s,l,t,r,n,o)}completeUpgrade(t,r,n,o,s,a,i){if(!s.readable||!s.writable)return s.destroy();if(s[YC])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>bz)return ia(s,503);let l=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${KC("sha1").update(r+JC).digest("base64")}`],u=new this.options.WebSocket(null,void 0,this.options);if(n.size){let d=this.options.handleProtocols?this.options.handleProtocols(n,o):n.values().next().value;d&&(l.push(`Sec-WebSocket-Protocol: ${d}`),u._protocol=d)}if(t[Vn.extensionName]){let d=t[Vn.extensionName].params,f=gz.format({[Vn.extensionName]:[d]});l.push(`Sec-WebSocket-Extensions: ${f}`),u._extensions=t}this.emit("headers",l,o),s.write(l.concat(`\r
11
11
  `).join(`\r
12
- `)),s.removeListener("error",dz),u.setSocket(s,a,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(u),u.on("close",()=>{this.clients.delete(u),this._shouldEmitClose&&!this.clients.size&&process.nextTick(ra,this)})),i(u,o)}};fz.exports=Op;function LC(e,t){for(let r of Object.keys(t))e.on(r,t[r]);return function(){for(let n of Object.keys(t))e.removeListener(n,t[n])}}function ra(e){e._state=pz,e.emit("close")}function dz(){this.destroy()}function na(e,t,r,n){r=r||Sl.STATUS_CODES[t],n={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(r),...n},e.once("finish",e.destroy),e.end(`HTTP/1.1 ${t} ${Sl.STATUS_CODES[t]}\r
12
+ `)),s.removeListener("error",kz),u.setSocket(s,a,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(u),u.on("close",()=>{this.clients.delete(u),this._shouldEmitClose&&!this.clients.size&&process.nextTick(aa,this)})),i(u,o)}};zz.exports=Mp;function QC(e,t){for(let r of Object.keys(t))e.on(r,t[r]);return function(){for(let n of Object.keys(t))e.removeListener(n,t[n])}}function aa(e){e._state=vz,e.emit("close")}function kz(){this.destroy()}function ia(e,t,r,n){r=r||Al.STATUS_CODES[t],n={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(r),...n},e.once("finish",e.destroy),e.end(`HTTP/1.1 ${t} ${Al.STATUS_CODES[t]}\r
13
13
  `+Object.keys(n).map(o=>`${o}: ${n[o]}`).join(`\r
14
14
  `)+`\r
15
15
  \r
16
- `+r)}function Ln(e,t,r,n,o,s){if(e.listenerCount("wsClientError")){let a=new Error(o);Error.captureStackTrace(a,Ln),e.emit("wsClientError",a,r,t)}else na(r,n,o,s)}});import ey from"node:process";var le={};pf(le,{BIGINT_FORMAT_RANGES:()=>xa,CONSTANT_CATCH:()=>wf,Class:()=>ql,NUMBER_FORMAT_RANGES:()=>Bo,aborted:()=>cr,allowsEval:()=>Yl,assert:()=>ow,assertEqual:()=>Q_,assertIs:()=>rw,assertNever:()=>nw,assertNotEqual:()=>ew,assignProp:()=>qt,attachSchema:()=>Go,base64ToUint8Array:()=>zf,base64urlToUint8Array:()=>ww,cached:()=>Wn,captureStackTrace:()=>_a,cleanEnum:()=>_w,cleanRegex:()=>Zo,clone:()=>lr,cloneDef:()=>iw,codePointLength:()=>Uo,constantCatch:()=>xf,createTransparentProxy:()=>fw,defineLazy:()=>mf,defineLazyInternal:()=>Re,derived:()=>$w,esc:()=>Wl,escapeRegex:()=>Mr,explicitlyAborted:()=>ec,extend:()=>gw,finalizeIssue:()=>ur,floatSafeRemainder:()=>Hl,getElementAtPath:()=>lw,getEnumValues:()=>Kn,getLengthableOrigin:()=>qo,getParsedType:()=>pw,getSizableOrigin:()=>vf,hexToUint8Array:()=>Sw,hide:()=>$a,installLazyProp:()=>Iw,isObject:()=>zn,isPlainObject:()=>en,issue:()=>Yn,joinValues:()=>za,jsonStringifyReplacer:()=>Hn,members:()=>rc,merge:()=>yw,mergeDefs:()=>jr,normalizeParams:()=>ie,nullish:()=>Kl,numKeys:()=>dw,objectClone:()=>sw,omit:()=>hw,optionalKeys:()=>Ql,own:()=>Qr,parsedType:()=>tc,partial:()=>kw,pick:()=>mw,prefixIssues:()=>Dr,primitiveTypes:()=>yf,promiseAllObject:()=>cw,propertyKeyTypes:()=>Xl,randomString:()=>uw,rawShape:()=>Jn,required:()=>vw,safeExtend:()=>bw,shallowClone:()=>bf,sizeCaps:()=>Pa,slugify:()=>Jl,stringifyPrimitive:()=>wa,toZod:()=>tw,uint8ArrayToBase64:()=>_f,uint8ArrayToBase64url:()=>xw,uint8ArrayToHex:()=>Pw,unwrapMessage:()=>qn});function Q_(e){return e}function ew(e){return e}function tw(){return e=>e}function rw(e){}function nw(e){throw new Error("Unexpected value in exhaustive check")}function ow(e){}function Kn(e){let t=Object.values(e).filter(n=>typeof n=="number");return Object.entries(e).filter(([n,o])=>t.indexOf(+n)===-1).map(([n,o])=>o)}function za(e,t="|"){return e.map(r=>wa(r)).join(t)}function Hn(e,t){return typeof t=="bigint"?t.toString():t}var Ul=class{constructor(t){this._getter=t,this._value=void 0}get value(){let t=this._getter;return t!==void 0&&(this._value=t(),this._getter=void 0),this._value}};function Wn(e){return new Ul(e)}function Kl(e){return e==null}function Zo(e){let t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function Hl(e,t){let r=e/t,n=Math.round(r),o=4*Number.EPSILON*Math.max(Math.abs(r),1);return Math.abs(r-n)<o?0:r-n}var ff=Symbol("evaluating");function mf(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==ff)return n===void 0&&(n=ff,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function sw(e){return Object.create(Object.getPrototypeOf(e),Object.getOwnPropertyDescriptors(e))}function qt(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function Jn(e){let t=Object.getOwnPropertyDescriptor(e,"shape");return t?.get?t.get.raw:t?.value}function Rr(e){return Jn(e._zod.def)??e._zod.def.shape}function hf(e,t,r){Object.defineProperty(e,t,{get(){let n=r();return qt(this,t,n),n},enumerable:!0,configurable:!0})}function gf(e,t,r){t in e?qt(e,t,r):e[t]=r}function vn(e,t,r,n){let o=Rr(t);for(let s of r){let a=Object.getOwnPropertyDescriptor(o,s);a.enumerable&&(a.get?hf(e,s,()=>{let i=t._zod.def.shape[s];return n?n(i,s):i}):gf(e,s,n?n(a.value,s):a.value))}}function aw(e,t){for(let r of Reflect.ownKeys(t)){let n=Object.getOwnPropertyDescriptor(t,r);n.enumerable&&(n.get?hf(e,r,()=>t[r]):gf(e,r,n.value))}}function jr(...e){let t={};for(let r of e){let n=Object.getOwnPropertyDescriptors(r);Object.assign(t,n)}return Object.defineProperties({},t)}function iw(e){return jr(e._zod.def)}function lw(e,t){return t?t.reduce((r,n)=>r?.[n],e):e}function cw(e){let t=Object.keys(e),r=t.map(n=>e[n]);return Promise.all(r).then(n=>{let o={};for(let s=0;s<t.length;s++)o[t[s]]=n[s];return o})}function uw(e=10){let t="abcdefghijklmnopqrstuvwxyz",r="";for(let n=0;n<e;n++)r+=t[Math.floor(Math.random()*t.length)];return r}function Wl(e){return JSON.stringify(e)}function Jl(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var _a="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function zn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Yl=Wn(()=>{if(Mt.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let e=Function;return new e(""),!0}catch{return!1}});function en(e){if(zn(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!="function")return!0;let r=t.prototype;return!(zn(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function bf(e){return en(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}function dw(e){let t=0;for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t++;return t}var pw=e=>{let t=typeof e;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(e)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(e)?"array":e===null?"null":e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?"promise":typeof Map<"u"&&e instanceof Map?"map":typeof Set<"u"&&e instanceof Set?"set":typeof Date<"u"&&e instanceof Date?"date":typeof File<"u"&&e instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},Xl=new Set(["string","number","symbol"]),yf=new Set(["string","number","bigint","boolean","symbol","undefined"]);function Mr(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function lr(e,t,r){let n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function ie(e){let t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function fw(e){let t;return new Proxy({},{get(r,n,o){return t??(t=e()),Reflect.get(t,n,o)},set(r,n,o,s){return t??(t=e()),Reflect.set(t,n,o,s)},has(r,n){return t??(t=e()),Reflect.has(t,n)},deleteProperty(r,n){return t??(t=e()),Reflect.deleteProperty(t,n)},ownKeys(r){return t??(t=e()),Reflect.ownKeys(t)},getOwnPropertyDescriptor(r,n){return t??(t=e()),Reflect.getOwnPropertyDescriptor(t,n)},defineProperty(r,n,o){return t??(t=e()),Reflect.defineProperty(t,n,o)}})}function wa(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function Ql(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout==="optional")}var Bo={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},xa={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function mw(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let s={};return vn(s,e,Sa(e,t)),lr(e,jr(r,{shape:s,checks:[]}))}function Sa(e,t){let r=Rr(e),n=[];for(let o of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(r,o)?.enumerable)throw new Error(`Unrecognized key: "${String(o)}"`);t[o]&&n.push(o)}return n}function hw(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let s=new Set(Sa(e,t)),a={};return vn(a,e,Reflect.ownKeys(Rr(e)).filter(i=>!s.has(i))),lr(e,jr(r,{shape:a,checks:[]}))}function gw(e,t){if(!en(t))throw new Error("Invalid input to extend: expected a plain object");let r=e._zod.def.checks;if(r&&r.length>0){let o=Rr(e);for(let s of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(o,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return lr(e,jr(e._zod.def,{shape:kf(e,t)}))}function kf(e,t){let r={};return vn(r,e,Reflect.ownKeys(Rr(e))),aw(r,t),r}function bw(e,t){if(!en(t))throw new Error("Invalid input to safeExtend: expected a plain object");return lr(e,jr(e._zod.def,{shape:kf(e,t)}))}function yw(e,t){if(!t?._zod?.def)throw new Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let r={};vn(r,e,Reflect.ownKeys(Rr(e))),vn(r,t,Reflect.ownKeys(Rr(t)));let n=jr(e._zod.def,{shape:r,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]});return lr(e,n)}function kw(e,t,r,n="partial"){let s=t._zod.def.checks;if(s&&s.length>0)throw new Error(`.${n}() cannot be used on object schemas containing refinements`);let i=r?new Set(Sa(t,r)):void 0,l={};return vn(l,t,Reflect.ownKeys(Rr(t)),e&&((c,u)=>i&&!i.has(u)?c:new e({type:"optional",innerType:c}))),lr(t,jr(t._zod.def,{shape:l,checks:[]}))}function vw(e,t,r){let n=r?new Set(Sa(t,r)):void 0,o={};return vn(o,t,Reflect.ownKeys(Rr(t)),(s,a)=>n&&!n.has(a)?s:new e({type:"nonoptional",innerType:s})),lr(t,jr(t._zod.def,{shape:o}))}function cr(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function ec(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue===!1)return!0;return!1}function Dr(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function qn(e){return typeof e=="string"?e:e?.message}function Pa(e){let t=[];for(let r of e??[]){let n=r._zod.def;if(!/_(length|size)$|_equals$/.test(n.check))break;let o=n.maximum??n.length??n.size;o>=0&&t.push([o,r])}return t}function Go(e,t,r){var n;for(let o=t;o<e.length;o++)(n=e[o]).schema??(n.schema=r)}function ur(e,t,r){var n;let o=e.inst?._zod?.traits;o?.has("$ZodType")&&(o.has("$ZodCheck")?(n=e).schema??(n.schema=e.inst):e.schema=e.inst);let s=e.schema!==e.inst?e.schema?._zod.def?.error:void 0,a=e.message?e.message:qn(e.inst?._zod.def?.error?.(e))??qn(s?.(e))??qn(t?.error?.(e))??qn(r.customError?.(e))??qn(r.localeError?.(e))??"Invalid input",i={};for(let l of Object.keys(e))l==="inst"||l==="schema"||l==="continue"||l==="input"||l==="__proto__"||(i[l]=e[l]);return i.path??(i.path=[]),i.message=a,t?.reportInput&&(i.input=e.input),i}function vf(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}var zw=/[\uD800-\uDBFF]/;function Uo(e){let t=e.length;if(!zw.test(e))return t;let r=t;for(let n=0;n<t-1;n++)(e.charCodeAt(n)&64512)===55296&&(e.charCodeAt(n+1)&64512)===56320&&(r--,n++);return r}function qo(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function tc(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let r=e;if(r&&Object.getPrototypeOf(r)!==Object.prototype&&"constructor"in r&&r.constructor)return r.constructor.name}}return t}function Yn(...e){let[t,r,n]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:n}:{...t}}function _w(e){return Object.entries(e).filter(([t,r])=>Number.isNaN(Number.parseInt(t,10))).map(t=>t[1])}function zf(e){let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}function _f(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return btoa(t)}function ww(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),r="=".repeat((4-t.length%4)%4);return zf(t+r)}function xw(e){return _f(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Sw(e){let t=e.replace(/^0x/,"");if(t.length%2!==0)throw new Error("Invalid hex string length");let r=new Uint8Array(t.length/2);for(let n=0;n<t.length;n+=2)r[n/2]=Number.parseInt(t.slice(n,n+2),16);return r}function Pw(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}var ql=class{constructor(...t){}};function rc(e,t){for(let r in t){let n=Object.getOwnPropertyDescriptor(t,r);n.get?Object.defineProperty(e,r,{...n,enumerable:!1}):Ew(e,r,n.value)}}function Qr(e,t,r,n=!0){return Object.defineProperty(e,t,{configurable:!0,writable:!0,enumerable:n,value:r}),r}function $a(e,t,r){return Qr(e,t,r,!1)}function $w(e,t){for(let r in e){let n=e[r];Object.defineProperty(t,r,{configurable:!0,enumerable:!0,get(){return Qr(this,r,n(this))},set(o){Qr(this,r,o)}})}return t}function Ew(e,t,r){Object.defineProperty(e,t,{configurable:!0,get(){return this==null?r:Qr(this,t,r.bind(this))},set(n){Qr(this,t,n)}})}function Aw(e,t){let r=Object.getPrototypeOf(e);return t in r?void 0:r}var Gl,Xr=!1,Ow={configurable:!0,get(){Xr=!0}};function Re(e,t,r){let n=Object.getPrototypeOf(e._zod);if(t in n&&Gl!==e._zod){Gl=void 0;return}Gl=e._zod,Object.defineProperty(n,t,{configurable:!0,get(){Object.defineProperty(this,t,Ow);let o=Xr;Xr=!1;try{let s=r(this);return Xr?delete this[t]:Object.defineProperty(this,t,{configurable:!0,writable:!0,value:s}),Xr=Xr||o,s}catch(s){throw delete this[t],Xr=Xr||o,s}},set(o){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:o})}})}function Iw(e,t,r,n){let o=Aw(e,t);o&&Object.defineProperty(o,t,{configurable:!0,get(){let s={configurable:!0,writable:!0,enumerable:n,value:void 0};return Object.defineProperty(this,t,s),s.value=r(this),Object.defineProperty(this,t,s),s.value},set(s){Object.defineProperty(this,t,{configurable:!0,writable:!0,enumerable:n,value:s})}})}var wf="~constantCatch";function xf(e){let t=()=>e;return t[wf]=!0,t}var Sf;var nc={value:void 0,enumerable:!1},Pf="captureStackTrace"in Error?Error:null;function Tw(e){let t=Pf;if(t){let r=t.stackTraceLimit;if(typeof r=="number"){try{t.stackTraceLimit=0}catch{return Pf=null,new e}try{return new e}finally{t.stackTraceLimit=r}}}return new e}function C(e,t,r,n){let o={};function s(p){this.def=p,this.constr=d,this.traits=new Set}s.prototype=o;let a=r,i=a&&new WeakSet;function l(p,m){if(p._zod){if(p._zod.traits.has(e))return}else{nc.value=new s(m);try{Object.defineProperty(p,"_zod",nc)}finally{nc.value=void 0}}if(p._zod.traits.add(e),t(p,m),i){let f=Object.getPrototypeOf(p),h=p._zod.constr.prototype,g=f;for(;g&&g!==h;)g=Object.getPrototypeOf(g);let v=g??f;i.has(v)||(i.add(v),rc(v,a))}let b=d.prototype;for(let f in b)Object.prototype.hasOwnProperty.call(b,f)&&(f in p||(p[f]=b[f].bind(p)))}let c=n?.Parent??Object;class u extends c{}Object.defineProperty(u,"name",{value:e});function d(p){let m=n?.Parent?Tw(u):this;l(m,p);let b=m._zod.deferred;if(b){for(let h of b)h();m._zod.deferred=void 0}let f=globalThis.__zod_globalConfig?.postProcessor;return f&&f(m),m}return Object.defineProperty(d,"init",{value:l}),Object.defineProperty(d,Symbol.hasInstance,{value:p=>n?.Parent&&p instanceof n.Parent?!0:p?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var dr=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},Xn=class extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}};(Sf=globalThis).__zod_globalConfig??(Sf.__zod_globalConfig={});var Mt=globalThis.__zod_globalConfig;function Kt(e){return e&&Object.assign(Mt,e),Mt}function Cw(){let e=this._zod;return e.message??(e.message=JSON.stringify(e.def,Hn,2)),e.message}function Nw(e){this._zod.message=e}var Rw={get:Cw,set:Nw,enumerable:!0,configurable:!0},sc={value:void 0,enumerable:!1},$f=new WeakSet([Object.prototype,Error.prototype]),Ef=(e,t)=>{e.name="$ZodError",sc.value=t,Object.defineProperty(e,"issues",sc),sc.value=void 0,Object.defineProperty(e,"message",Rw);let r=Object.getPrototypeOf(e);$f.has(r)||($f.add(r),Object.defineProperty(r,"toString",{configurable:!0,enumerable:!1,get(){let n=()=>this.message;return Object.defineProperty(this,"toString",{value:n,configurable:!0,writable:!0}),n},set(n){Object.defineProperty(this,"toString",{value:n,configurable:!0,writable:!0})}}))},Af=C("$ZodError",Ef),Of=C("$ZodError",Ef,void 0,{Parent:Error});function jw(e,t,r){return Object.prototype.hasOwnProperty.call(e,t)||(t==="__proto__"?Object.defineProperty(e,t,{value:r(),writable:!0,enumerable:!0,configurable:!0}):e[t]=r()),e[t]}function If(e,t=r=>r.message){let r={},n=[];for(let o of e.issues)o.path.length>0?jw(r,o.path[0],()=>[]).push(t(o)):n.push(t(o));return{formErrors:n,fieldErrors:r}}function Tf(e,t=r=>r.message){let r={_errors:[]},n=(o,s=[])=>{for(let a of o.issues)if(a.code==="invalid_union"&&a.errors.length)a.errors.map(i=>n({issues:i},[...s,...a.path]));else if(a.code==="invalid_key")n({issues:a.issues},[...s,...a.path]);else if(a.code==="invalid_element")n({issues:a.issues},[...s,...a.path]);else{let i=[...s,...a.path];if(i.length===0)r._errors.push(t(a));else{let l=r,c=0;for(;c<i.length;){let u=i[c],d=c===i.length-1;if(u==="_errors"){d&&l._errors.push(t(a)),c++;continue}Object.prototype.hasOwnProperty.call(l,u)||Object.defineProperty(l,u,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});let p=l[u];d&&p._errors.push(t(a)),l=p,c++}}}};return n(e),r}function Ea(e,t){return{callee:t?.callee??e,Err:t?.Err}}var Aa=e=>{let t=(r,n,o,s)=>{let a=o?{...o,async:!1}:{async:!1},i=r._zod.run({value:n,issues:[]},a);if(i instanceof Promise)throw new dr;if(i.issues.length){let l=new(s?.Err??e)(i.issues.map(c=>ur(c,a,Kt())));throw _a(l,s?.callee??t),l}return i.value};return t};var Oa=e=>{let t=async(r,n,o,s)=>{let a=o?{...o,async:!0}:{async:!0},i=r._zod.run({value:n,issues:[]},a);if(i instanceof Promise&&(i=await i),i.issues.length){let l=new(s?.Err??e)(i.issues.map(c=>ur(c,a,Kt())));throw _a(l,s?.callee??t),l}return i.value};return t};var Ko=e=>(t,r,n)=>{let o=n?{...n,async:!1}:{async:!1},s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new dr;return s.issues.length?Cf(e,s.issues,o):{success:!0,data:s.value}},ac=Ko(Of);function Cf(e,t,r){let n;return{success:!1,get error(){return n||(n=new e(t.map(o=>ur(o,r,Kt()))),t=void 0,r=void 0),n},set error(o){n=o,t=void 0,r=void 0}}}var Ia=e=>async(t,r,n)=>{let o=n?{...n,async:!0}:{async:!0},s=t._zod.run({value:r,issues:[]},o);return s instanceof Promise&&(s=await s),s.issues.length?Cf(e,s.issues,o):{success:!0,data:s.value}};var Dw=Symbol.for("zod.compile.invalid"),Lw=Symbol.for("zod.compile.fallback"),Ta=((e,t,r)=>{let n=e._zod.bag.validator;if(n!==void 0){if(n(t)!==Dw)return!0;if(n.definite===!0&&r===void 0)return!1}return Vw(e,t,r)});function Vw(e,t,r){let n=r?{...r,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},o=e._zod.bag.fallbackRun,s;if(o?(n[Lw]=!0,s=o({value:t,issues:[]},n)):s=e._zod.run({value:t,issues:[]},n),s instanceof Promise)throw new dr;return s.issues.length===0}var Ca=async(e,t,r)=>{let n=r?{...r,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},o=e._zod.run({value:t,issues:[]},n);return o instanceof Promise&&(o=await o),o.issues.length===0},Nf=e=>{let t=Aa(e),r=(n,o,s,a)=>{let i=s?{...s,direction:"backward"}:{direction:"backward"};return t(n,o,i,Ea(r,a))};return r};var Rf=e=>{let t=Aa(e),r=(n,o,s,a)=>t(n,o,s,Ea(r,a));return r};var jf=e=>{let t=Oa(e),r=async(n,o,s,a)=>{let i=s?{...s,direction:"backward"}:{direction:"backward"};return await t(n,o,i,Ea(r,a))};return r};var Mf=e=>{let t=Oa(e),r=async(n,o,s,a)=>await t(n,o,s,Ea(r,a));return r};var Df=e=>(t,r,n)=>{let o=n?{...n,direction:"backward"}:{direction:"backward"};return Ko(e)(t,r,o)};var Lf=e=>(t,r,n)=>Ko(e)(t,r,n);var Vf=e=>async(t,r,n)=>{let o=n?{...n,direction:"backward"}:{direction:"backward"};return Ia(e)(t,r,o)};var Ff=e=>async(t,r,n)=>Ia(e)(t,r,n);var Zf=/^[cC][0-9a-z]{6,}$/,Bf=/^[0-9a-z]+$/,Gf=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,Uf=/^[0-9a-vA-V]{20}$/,qf=/^[A-Za-z0-9]{27}$/,Kf=/^[a-zA-Z0-9_-]{21}$/;function Hf(e){return new RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var Wf=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var Jf=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,lc=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;var Yf=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var Fw="^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$";function Xf(){return new RegExp(Fw,"u")}var Qf=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,em=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;var tm=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,rm=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,nm=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,om=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/;var sm=/^https?$/,am=/^\+[1-9]\d{6,14}$/;var im="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))";function Zw(e){return new RegExp(`^${e}$`)}var lm=Zw(im);function ic(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function cm(e){return new RegExp(`^${ic(e)}$`)}function um(e){let t=["Z"];e.offset&&t.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let r=`${ic({precision:e.precision,seconds:!0})}(?:${t.join("|")})`,n=e.local?`${r}|${ic({precision:e.precision})}`:r;return new RegExp(`^${im}T(?:${n})$`)}var dm=/^[\s\S]{0,}$/;var cc=/^-?\d+$/,Ho=/^-?\d+(?:\.\d+)?$/,pm=/^(?:true|false)$/i,fm=/^null$/i;var mm=/^[^A-Z]*$/,hm=/^[^a-z]*$/;var zt=C("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])});var uc=e=>{let t=e.value;return!Kl(t)&&t.length!==void 0},Na={number:"number",bigint:"bigint",object:"date"},dc=C("$ZodCheckLessThan",(e,t)=>{zt.init(e,t);let r=Na[typeof t.value];e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:Na[typeof n.value]??r,code:"too_big",maximum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),pc=C("$ZodCheckGreaterThan",(e,t)=>{zt.init(e,t);let r=Na[typeof t.value];e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:Na[typeof n.value]??r,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),gm=C("$ZodCheckMultipleOf",(e,t)=>{zt.init(e,t),e._zod.check=r=>{if(typeof r.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?t.value!==BigInt(0)&&r.value%t.value===BigInt(0):Hl(r.value,t.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),bm=C("$ZodCheckNumberFormat",(e,t)=>{zt.init(e,t),t.format=t.format||"float64";let r=t.format?.includes("int"),n=r?"int":"number",[o,s]=Bo[t.format];e._zod.check=a=>{let i=a.value;if(r){if(!Number.isInteger(i)){a.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:i,inst:e});return}if(!Number.isSafeInteger(i)){i>0?a.issues.push({input:i,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}):a.issues.push({input:i,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort});return}}i<o&&a.issues.push({origin:"number",input:i,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),i>s&&a.issues.push({origin:"number",input:i,code:"too_big",maximum:s,inclusive:!0,inst:e,continue:!t.abort})}});var ym=C("$ZodCheckMaxLength",(e,t)=>{var r;zt.init(e,t),(r=e._zod.def).when??(r.when=uc),e._zod.check=n=>{let o=n.value,s=o.length;if((typeof o=="string"&&s>t.maximum?Uo(o):s)<=t.maximum)return;let i=qo(o);n.issues.push({origin:i,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),km=C("$ZodCheckMinLength",(e,t)=>{var r;zt.init(e,t),(r=e._zod.def).when??(r.when=uc),e._zod.check=n=>{let o=n.value,s=o.length;if((typeof o=="string"&&s>=t.minimum&&s<t.minimum*2?Uo(o):s)>=t.minimum)return;let i=qo(o);n.issues.push({origin:i,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),vm=C("$ZodCheckLengthEquals",(e,t)=>{var r;zt.init(e,t),(r=e._zod.def).when??(r.when=uc),e._zod.check=n=>{let o=n.value,s=o.length,a=typeof o=="string"&&s>=t.length&&s<=t.length*2?Uo(o):s;if(a===t.length)return;let i=qo(o),l=a>t.length;n.issues.push({origin:i,...l?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Jo=C("$ZodCheckStringFormat",(e,t)=>{var r,n;zt.init(e,t),t.pattern?(r=e._zod).check??(r.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),zm=C("$ZodCheckRegex",(e,t)=>{Jo.init(e,t),e._zod.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),_m=C("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=mm),Jo.init(e,t)}),wm=C("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=hm),Jo.init(e,t)}),xm=C("$ZodCheckIncludes",(e,t)=>{zt.init(e,t);let r=Mr(t.includes),n=new RegExp(typeof t.position=="number"?`^.{${t.position},}${r}`:r);t.pattern=n,e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),Sm=C("$ZodCheckStartsWith",(e,t)=>{zt.init(e,t);let r=new RegExp(`^${Mr(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Pm=C("$ZodCheckEndsWith",(e,t)=>{zt.init(e,t);let r=new RegExp(`.*${Mr(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}});var $m=C("$ZodCheckOverwrite",(e,t)=>{zt.init(e,t),e._zod.check=r=>{r.value=t.tx(r.value)}});var Ra=class{constructor(t=[],r={}){this.content=[],this.indent=0,this.args=t,this.closed=r}indented(t){this.indent+=1;try{t(this)}finally{this.indent-=1}}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}let n=t.split(`
16
+ `+r)}function Fn(e,t,r,n,o,s){if(e.listenerCount("wsClientError")){let a=new Error(o);Error.captureStackTrace(a,Fn),e.emit("wsClientError",a,r,t)}else ia(r,n,o,s)}});import ly from"node:process";var le={};vf(le,{BIGINT_FORMAT_RANGES:()=>Ea,CONSTANT_CATCH:()=>If,Class:()=>Ql,NUMBER_FORMAT_RANGES:()=>Ko,aborted:()=>pr,allowsEval:()=>oc,assert:()=>yw,assertEqual:()=>fw,assertIs:()=>gw,assertNever:()=>bw,assertNotEqual:()=>mw,assignProp:()=>Kt,attachSchema:()=>Ho,base64ToUint8Array:()=>Af,base64urlToUint8Array:()=>Mw,cached:()=>Yn,captureStackTrace:()=>Pa,cleanEnum:()=>jw,cleanRegex:()=>qo,clone:()=>dr,cloneDef:()=>zw,codePointLength:()=>Wo,constantCatch:()=>Tf,createTransparentProxy:()=>$w,defineLazy:()=>_f,defineLazyInternal:()=>Re,derived:()=>Fw,esc:()=>rc,escapeRegex:()=>Dr,explicitlyAborted:()=>ic,extend:()=>Ow,finalizeIssue:()=>fr,floatSafeRemainder:()=>tc,getElementAtPath:()=>_w,getEnumValues:()=>Wn,getLengthableOrigin:()=>Jo,getParsedType:()=>Pw,getSizableOrigin:()=>Ef,hexToUint8Array:()=>Lw,hide:()=>Ia,installLazyProp:()=>Uw,isObject:()=>wn,isPlainObject:()=>tn,issue:()=>Qn,joinValues:()=>Sa,jsonStringifyReplacer:()=>Jn,members:()=>cc,merge:()=>Tw,mergeDefs:()=>Mr,normalizeParams:()=>ie,nullish:()=>ec,numKeys:()=>Sw,objectClone:()=>kw,omit:()=>Aw,optionalKeys:()=>ac,own:()=>en,parsedType:()=>lc,partial:()=>Cw,pick:()=>Ew,prefixIssues:()=>Lr,primitiveTypes:()=>Pf,promiseAllObject:()=>ww,propertyKeyTypes:()=>sc,randomString:()=>xw,rawShape:()=>Xn,required:()=>Nw,safeExtend:()=>Iw,shallowClone:()=>Sf,sizeCaps:()=>Oa,slugify:()=>nc,stringifyPrimitive:()=>$a,toZod:()=>hw,uint8ArrayToBase64:()=>Of,uint8ArrayToBase64url:()=>Dw,uint8ArrayToHex:()=>Vw,unwrapMessage:()=>Hn});function fw(e){return e}function mw(e){return e}function hw(){return e=>e}function gw(e){}function bw(e){throw new Error("Unexpected value in exhaustive check")}function yw(e){}function Wn(e){let t=Object.values(e).filter(n=>typeof n=="number");return Object.entries(e).filter(([n,o])=>t.indexOf(+n)===-1).map(([n,o])=>o)}function Sa(e,t="|"){return e.map(r=>$a(r)).join(t)}function Jn(e,t){return typeof t=="bigint"?t.toString():t}var Xl=class{constructor(t){this._getter=t,this._value=void 0}get value(){let t=this._getter;return t!==void 0&&(this._value=t(),this._getter=void 0),this._value}};function Yn(e){return new Xl(e)}function ec(e){return e==null}function qo(e){let t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function tc(e,t){let r=e/t,n=Math.round(r),o=4*Number.EPSILON*Math.max(Math.abs(r),1);return Math.abs(r-n)<o?0:r-n}var zf=Symbol("evaluating");function _f(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==zf)return n===void 0&&(n=zf,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function kw(e){return Object.create(Object.getPrototypeOf(e),Object.getOwnPropertyDescriptors(e))}function Kt(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function Xn(e){let t=Object.getOwnPropertyDescriptor(e,"shape");return t?.get?t.get.raw:t?.value}function jr(e){return Xn(e._zod.def)??e._zod.def.shape}function wf(e,t,r){Object.defineProperty(e,t,{get(){let n=r();return Kt(this,t,n),n},enumerable:!0,configurable:!0})}function xf(e,t,r){t in e?Kt(e,t,r):e[t]=r}function _n(e,t,r,n){let o=jr(t);for(let s of r){let a=Object.getOwnPropertyDescriptor(o,s);a.enumerable&&(a.get?wf(e,s,()=>{let i=t._zod.def.shape[s];return n?n(i,s):i}):xf(e,s,n?n(a.value,s):a.value))}}function vw(e,t){for(let r of Reflect.ownKeys(t)){let n=Object.getOwnPropertyDescriptor(t,r);n.enumerable&&(n.get?wf(e,r,()=>t[r]):xf(e,r,n.value))}}function Mr(...e){let t={};for(let r of e){let n=Object.getOwnPropertyDescriptors(r);Object.assign(t,n)}return Object.defineProperties({},t)}function zw(e){return Mr(e._zod.def)}function _w(e,t){return t?t.reduce((r,n)=>r?.[n],e):e}function ww(e){let t=Object.keys(e),r=t.map(n=>e[n]);return Promise.all(r).then(n=>{let o={};for(let s=0;s<t.length;s++)o[t[s]]=n[s];return o})}function xw(e=10){let t="abcdefghijklmnopqrstuvwxyz",r="";for(let n=0;n<e;n++)r+=t[Math.floor(Math.random()*t.length)];return r}function rc(e){return JSON.stringify(e)}function nc(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var Pa="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function wn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var oc=Yn(()=>{if(Dt.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let e=Function;return new e(""),!0}catch{return!1}});function tn(e){if(wn(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!="function")return!0;let r=t.prototype;return!(wn(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function Sf(e){return tn(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}function Sw(e){let t=0;for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t++;return t}var Pw=e=>{let t=typeof e;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(e)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(e)?"array":e===null?"null":e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?"promise":typeof Map<"u"&&e instanceof Map?"map":typeof Set<"u"&&e instanceof Set?"set":typeof Date<"u"&&e instanceof Date?"date":typeof File<"u"&&e instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},sc=new Set(["string","number","symbol"]),Pf=new Set(["string","number","bigint","boolean","symbol","undefined"]);function Dr(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function dr(e,t,r){let n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function ie(e){let t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function $w(e){let t;return new Proxy({},{get(r,n,o){return t??(t=e()),Reflect.get(t,n,o)},set(r,n,o,s){return t??(t=e()),Reflect.set(t,n,o,s)},has(r,n){return t??(t=e()),Reflect.has(t,n)},deleteProperty(r,n){return t??(t=e()),Reflect.deleteProperty(t,n)},ownKeys(r){return t??(t=e()),Reflect.ownKeys(t)},getOwnPropertyDescriptor(r,n){return t??(t=e()),Reflect.getOwnPropertyDescriptor(t,n)},defineProperty(r,n,o){return t??(t=e()),Reflect.defineProperty(t,n,o)}})}function $a(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function ac(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout==="optional")}var Ko={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},Ea={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function Ew(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let s={};return _n(s,e,Aa(e,t)),dr(e,Mr(r,{shape:s,checks:[]}))}function Aa(e,t){let r=jr(e),n=[];for(let o of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(r,o)?.enumerable)throw new Error(`Unrecognized key: "${String(o)}"`);t[o]&&n.push(o)}return n}function Aw(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let s=new Set(Aa(e,t)),a={};return _n(a,e,Reflect.ownKeys(jr(e)).filter(i=>!s.has(i))),dr(e,Mr(r,{shape:a,checks:[]}))}function Ow(e,t){if(!tn(t))throw new Error("Invalid input to extend: expected a plain object");let r=e._zod.def.checks;if(r&&r.length>0){let o=jr(e);for(let s of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(o,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return dr(e,Mr(e._zod.def,{shape:$f(e,t)}))}function $f(e,t){let r={};return _n(r,e,Reflect.ownKeys(jr(e))),vw(r,t),r}function Iw(e,t){if(!tn(t))throw new Error("Invalid input to safeExtend: expected a plain object");return dr(e,Mr(e._zod.def,{shape:$f(e,t)}))}function Tw(e,t){if(!t?._zod?.def)throw new Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let r={};_n(r,e,Reflect.ownKeys(jr(e))),_n(r,t,Reflect.ownKeys(jr(t)));let n=Mr(e._zod.def,{shape:r,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]});return dr(e,n)}function Cw(e,t,r,n="partial"){let s=t._zod.def.checks;if(s&&s.length>0)throw new Error(`.${n}() cannot be used on object schemas containing refinements`);let i=r?new Set(Aa(t,r)):void 0,c={};return _n(c,t,Reflect.ownKeys(jr(t)),e&&((l,u)=>i&&!i.has(u)?l:new e({type:"optional",innerType:l}))),dr(t,Mr(t._zod.def,{shape:c,checks:[]}))}function Nw(e,t,r){let n=r?new Set(Aa(t,r)):void 0,o={};return _n(o,t,Reflect.ownKeys(jr(t)),(s,a)=>n&&!n.has(a)?s:new e({type:"nonoptional",innerType:s})),dr(t,Mr(t._zod.def,{shape:o}))}function pr(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function ic(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue===!1)return!0;return!1}function Lr(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function Hn(e){return typeof e=="string"?e:e?.message}function Oa(e){let t=[];for(let r of e??[]){let n=r._zod.def;if(!/_(length|size)$|_equals$/.test(n.check))break;let o=n.maximum??n.length??n.size;o>=0&&t.push([o,r])}return t}function Ho(e,t,r){var n;for(let o=t;o<e.length;o++)(n=e[o]).schema??(n.schema=r)}function fr(e,t,r){var n;let o=e.inst?._zod?.traits;o?.has("$ZodType")&&(o.has("$ZodCheck")?(n=e).schema??(n.schema=e.inst):e.schema=e.inst);let s=e.schema!==e.inst?e.schema?._zod.def?.error:void 0,a=e.message?e.message:Hn(e.inst?._zod.def?.error?.(e))??Hn(s?.(e))??Hn(t?.error?.(e))??Hn(r.customError?.(e))??Hn(r.localeError?.(e))??"Invalid input",i={};for(let c of Object.keys(e))c==="inst"||c==="schema"||c==="continue"||c==="input"||c==="__proto__"||(i[c]=e[c]);return i.path??(i.path=[]),i.message=a,t?.reportInput&&(i.input=e.input),i}function Ef(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}var Rw=/[\uD800-\uDBFF]/;function Wo(e){let t=e.length;if(!Rw.test(e))return t;let r=t;for(let n=0;n<t-1;n++)(e.charCodeAt(n)&64512)===55296&&(e.charCodeAt(n+1)&64512)===56320&&(r--,n++);return r}function Jo(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function lc(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let r=e;if(r&&Object.getPrototypeOf(r)!==Object.prototype&&"constructor"in r&&r.constructor)return r.constructor.name}}return t}function Qn(...e){let[t,r,n]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:n}:{...t}}function jw(e){return Object.entries(e).filter(([t,r])=>Number.isNaN(Number.parseInt(t,10))).map(t=>t[1])}function Af(e){let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}function Of(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return btoa(t)}function Mw(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),r="=".repeat((4-t.length%4)%4);return Af(t+r)}function Dw(e){return Of(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Lw(e){let t=e.replace(/^0x/,"");if(t.length%2!==0)throw new Error("Invalid hex string length");let r=new Uint8Array(t.length/2);for(let n=0;n<t.length;n+=2)r[n/2]=Number.parseInt(t.slice(n,n+2),16);return r}function Vw(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}var Ql=class{constructor(...t){}};function cc(e,t){for(let r in t){let n=Object.getOwnPropertyDescriptor(t,r);n.get?Object.defineProperty(e,r,{...n,enumerable:!1}):Bw(e,r,n.value)}}function en(e,t,r,n=!0){return Object.defineProperty(e,t,{configurable:!0,writable:!0,enumerable:n,value:r}),r}function Ia(e,t,r){return en(e,t,r,!1)}function Fw(e,t){for(let r in e){let n=e[r];Object.defineProperty(t,r,{configurable:!0,enumerable:!0,get(){return en(this,r,n(this))},set(o){en(this,r,o)}})}return t}function Bw(e,t,r){Object.defineProperty(e,t,{configurable:!0,get(){return this==null?r:en(this,t,r.bind(this))},set(n){en(this,t,n)}})}function Zw(e,t){let r=Object.getPrototypeOf(e);return t in r?void 0:r}var Yl,Qr=!1,Gw={configurable:!0,get(){Qr=!0}};function Re(e,t,r){let n=Object.getPrototypeOf(e._zod);if(t in n&&Yl!==e._zod){Yl=void 0;return}Yl=e._zod,Object.defineProperty(n,t,{configurable:!0,get(){Object.defineProperty(this,t,Gw);let o=Qr;Qr=!1;try{let s=r(this);return Qr?delete this[t]:Object.defineProperty(this,t,{configurable:!0,writable:!0,value:s}),Qr=Qr||o,s}catch(s){throw delete this[t],Qr=Qr||o,s}},set(o){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:o})}})}function Uw(e,t,r,n){let o=Zw(e,t);o&&Object.defineProperty(o,t,{configurable:!0,get(){let s={configurable:!0,writable:!0,enumerable:n,value:void 0};return Object.defineProperty(this,t,s),s.value=r(this),Object.defineProperty(this,t,s),s.value},set(s){Object.defineProperty(this,t,{configurable:!0,writable:!0,enumerable:n,value:s})}})}var If="~constantCatch";function Tf(e){let t=()=>e;return t[If]=!0,t}var Cf;var uc={value:void 0,enumerable:!1},Nf="captureStackTrace"in Error?Error:null;function qw(e){let t=Nf;if(t){let r=t.stackTraceLimit;if(typeof r=="number"){try{t.stackTraceLimit=0}catch{return Nf=null,new e}try{return new e}finally{t.stackTraceLimit=r}}}return new e}function C(e,t,r,n){let o={};function s(f){this.def=f,this.constr=d,this.traits=new Set}s.prototype=o;let a=r,i=a&&new WeakSet;function c(f,g){if(f._zod){if(f._zod.traits.has(e))return}else{uc.value=new s(g);try{Object.defineProperty(f,"_zod",uc)}finally{uc.value=void 0}}if(f._zod.traits.add(e),t(f,g),i){let p=Object.getPrototypeOf(f),m=f._zod.constr.prototype,b=p;for(;b&&b!==m;)b=Object.getPrototypeOf(b);let v=b??p;i.has(v)||(i.add(v),cc(v,a))}let h=d.prototype;for(let p in h)Object.prototype.hasOwnProperty.call(h,p)&&(p in f||(f[p]=h[p].bind(f)))}let l=n?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(f){let g=n?.Parent?qw(u):this;c(g,f);let h=g._zod.deferred;if(h){for(let m of h)m();g._zod.deferred=void 0}let p=globalThis.__zod_globalConfig?.postProcessor;return p&&p(g),g}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:f=>n?.Parent&&f instanceof n.Parent?!0:f?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var mr=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},eo=class extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}};(Cf=globalThis).__zod_globalConfig??(Cf.__zod_globalConfig={});var Dt=globalThis.__zod_globalConfig;function Ht(e){return e&&Object.assign(Dt,e),Dt}function Kw(){let e=this._zod;return e.message??(e.message=JSON.stringify(e.def,Jn,2)),e.message}function Hw(e){this._zod.message=e}var Ww={get:Kw,set:Hw,enumerable:!0,configurable:!0},pc={value:void 0,enumerable:!1},Rf=new WeakSet([Object.prototype,Error.prototype]),jf=(e,t)=>{e.name="$ZodError",pc.value=t,Object.defineProperty(e,"issues",pc),pc.value=void 0,Object.defineProperty(e,"message",Ww);let r=Object.getPrototypeOf(e);Rf.has(r)||(Rf.add(r),Object.defineProperty(r,"toString",{configurable:!0,enumerable:!1,get(){let n=()=>this.message;return Object.defineProperty(this,"toString",{value:n,configurable:!0,writable:!0}),n},set(n){Object.defineProperty(this,"toString",{value:n,configurable:!0,writable:!0})}}))},Mf=C("$ZodError",jf),Df=C("$ZodError",jf,void 0,{Parent:Error});function Jw(e,t,r){return Object.prototype.hasOwnProperty.call(e,t)||(t==="__proto__"?Object.defineProperty(e,t,{value:r(),writable:!0,enumerable:!0,configurable:!0}):e[t]=r()),e[t]}function Lf(e,t=r=>r.message){let r={},n=[];for(let o of e.issues)o.path.length>0?Jw(r,o.path[0],()=>[]).push(t(o)):n.push(t(o));return{formErrors:n,fieldErrors:r}}function Vf(e,t=r=>r.message){let r={_errors:[]},n=(o,s=[])=>{for(let a of o.issues)if(a.code==="invalid_union"&&a.errors.length)a.errors.map(i=>n({issues:i},[...s,...a.path]));else if(a.code==="invalid_key")n({issues:a.issues},[...s,...a.path]);else if(a.code==="invalid_element")n({issues:a.issues},[...s,...a.path]);else{let i=[...s,...a.path];if(i.length===0)r._errors.push(t(a));else{let c=r,l=0;for(;l<i.length;){let u=i[l],d=l===i.length-1;if(u==="_errors"){d&&c._errors.push(t(a)),l++;continue}Object.prototype.hasOwnProperty.call(c,u)||Object.defineProperty(c,u,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});let f=c[u];d&&f._errors.push(t(a)),c=f,l++}}}};return n(e),r}function Ta(e,t){return{callee:t?.callee??e,Err:t?.Err}}var Ca=e=>{let t=(r,n,o,s)=>{let a=o?{...o,async:!1}:{async:!1},i=r._zod.run({value:n,issues:[]},a);if(i instanceof Promise)throw new mr;if(i.issues.length){let c=new(s?.Err??e)(i.issues.map(l=>fr(l,a,Ht())));throw Pa(c,s?.callee??t),c}return i.value};return t};var Na=e=>{let t=async(r,n,o,s)=>{let a=o?{...o,async:!0}:{async:!0},i=r._zod.run({value:n,issues:[]},a);if(i instanceof Promise&&(i=await i),i.issues.length){let c=new(s?.Err??e)(i.issues.map(l=>fr(l,a,Ht())));throw Pa(c,s?.callee??t),c}return i.value};return t};var Yo=e=>(t,r,n)=>{let o=n?{...n,async:!1}:{async:!1},s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new mr;return s.issues.length?Ff(e,s.issues,o):{success:!0,data:s.value}},fc=Yo(Df);function Ff(e,t,r){let n;return{success:!1,get error(){return n||(n=new e(t.map(o=>fr(o,r,Ht()))),t=void 0,r=void 0),n},set error(o){n=o,t=void 0,r=void 0}}}var Ra=e=>async(t,r,n)=>{let o=n?{...n,async:!0}:{async:!0},s=t._zod.run({value:r,issues:[]},o);return s instanceof Promise&&(s=await s),s.issues.length?Ff(e,s.issues,o):{success:!0,data:s.value}};var Xw=Symbol.for("zod.compile.invalid"),Qw=Symbol.for("zod.compile.fallback"),ja=((e,t,r)=>{let n=e._zod.bag.validator;if(n!==void 0){if(n(t)!==Xw)return!0;if(n.definite===!0&&r===void 0)return!1}return ex(e,t,r)});function ex(e,t,r){let n=r?{...r,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},o=e._zod.bag.fallbackRun,s;if(o?(n[Qw]=!0,s=o({value:t,issues:[]},n)):s=e._zod.run({value:t,issues:[]},n),s instanceof Promise)throw new mr;return s.issues.length===0}var Ma=async(e,t,r)=>{let n=r?{...r,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},o=e._zod.run({value:t,issues:[]},n);return o instanceof Promise&&(o=await o),o.issues.length===0},Bf=e=>{let t=Ca(e),r=(n,o,s,a)=>{let i=s?{...s,direction:"backward"}:{direction:"backward"};return t(n,o,i,Ta(r,a))};return r};var Zf=e=>{let t=Ca(e),r=(n,o,s,a)=>t(n,o,s,Ta(r,a));return r};var Gf=e=>{let t=Na(e),r=async(n,o,s,a)=>{let i=s?{...s,direction:"backward"}:{direction:"backward"};return await t(n,o,i,Ta(r,a))};return r};var Uf=e=>{let t=Na(e),r=async(n,o,s,a)=>await t(n,o,s,Ta(r,a));return r};var qf=e=>(t,r,n)=>{let o=n?{...n,direction:"backward"}:{direction:"backward"};return Yo(e)(t,r,o)};var Kf=e=>(t,r,n)=>Yo(e)(t,r,n);var Hf=e=>async(t,r,n)=>{let o=n?{...n,direction:"backward"}:{direction:"backward"};return Ra(e)(t,r,o)};var Wf=e=>async(t,r,n)=>Ra(e)(t,r,n);var Jf=/^[cC][0-9a-z]{6,}$/,Yf=/^[0-9a-z]+$/,Xf=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,Qf=/^[0-9a-vA-V]{20}$/,em=/^[A-Za-z0-9]{27}$/,tm=/^[a-zA-Z0-9_-]{21}$/;function rm(e){return new RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var nm=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var om=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,hc=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;var sm=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var tx="^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$";function am(){return new RegExp(tx,"u")}var im=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,lm=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;var cm=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,um=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,dm=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,pm=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/;var fm=/^https?$/,mm=/^\+[1-9]\d{6,14}$/;var hm="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))";function rx(e){return new RegExp(`^${e}$`)}var gm=rx(hm);function mc(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function bm(e){return new RegExp(`^${mc(e)}$`)}function ym(e){let t=["Z"];e.offset&&t.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let r=`${mc({precision:e.precision,seconds:!0})}(?:${t.join("|")})`,n=e.local?`${r}|${mc({precision:e.precision})}`:r;return new RegExp(`^${hm}T(?:${n})$`)}var km=/^[\s\S]{0,}$/;var gc=/^-?\d+$/,Xo=/^-?\d+(?:\.\d+)?$/,vm=/^(?:true|false)$/i,zm=/^null$/i;var _m=/^[^A-Z]*$/,wm=/^[^a-z]*$/;var _t=C("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])});var bc=e=>{let t=e.value;return!ec(t)&&t.length!==void 0},Da={number:"number",bigint:"bigint",object:"date"},yc=C("$ZodCheckLessThan",(e,t)=>{_t.init(e,t);let r=Da[typeof t.value];e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:Da[typeof n.value]??r,code:"too_big",maximum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),kc=C("$ZodCheckGreaterThan",(e,t)=>{_t.init(e,t);let r=Da[typeof t.value];e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:Da[typeof n.value]??r,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),xm=C("$ZodCheckMultipleOf",(e,t)=>{_t.init(e,t),e._zod.check=r=>{if(typeof r.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?t.value!==BigInt(0)&&r.value%t.value===BigInt(0):tc(r.value,t.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),Sm=C("$ZodCheckNumberFormat",(e,t)=>{_t.init(e,t),t.format=t.format||"float64";let r=t.format?.includes("int"),n=r?"int":"number",[o,s]=Ko[t.format];e._zod.check=a=>{let i=a.value;if(r){if(!Number.isInteger(i)){a.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:i,inst:e});return}if(!Number.isSafeInteger(i)){i>0?a.issues.push({input:i,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}):a.issues.push({input:i,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort});return}}i<o&&a.issues.push({origin:"number",input:i,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),i>s&&a.issues.push({origin:"number",input:i,code:"too_big",maximum:s,inclusive:!0,inst:e,continue:!t.abort})}});var Pm=C("$ZodCheckMaxLength",(e,t)=>{var r;_t.init(e,t),(r=e._zod.def).when??(r.when=bc),e._zod.check=n=>{let o=n.value,s=o.length;if((typeof o=="string"&&s>t.maximum?Wo(o):s)<=t.maximum)return;let i=Jo(o);n.issues.push({origin:i,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),$m=C("$ZodCheckMinLength",(e,t)=>{var r;_t.init(e,t),(r=e._zod.def).when??(r.when=bc),e._zod.check=n=>{let o=n.value,s=o.length;if((typeof o=="string"&&s>=t.minimum&&s<t.minimum*2?Wo(o):s)>=t.minimum)return;let i=Jo(o);n.issues.push({origin:i,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),Em=C("$ZodCheckLengthEquals",(e,t)=>{var r;_t.init(e,t),(r=e._zod.def).when??(r.when=bc),e._zod.check=n=>{let o=n.value,s=o.length,a=typeof o=="string"&&s>=t.length&&s<=t.length*2?Wo(o):s;if(a===t.length)return;let i=Jo(o),c=a>t.length;n.issues.push({origin:i,...c?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),es=C("$ZodCheckStringFormat",(e,t)=>{var r,n;_t.init(e,t),t.pattern?(r=e._zod).check??(r.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),Am=C("$ZodCheckRegex",(e,t)=>{es.init(e,t),e._zod.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Om=C("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=_m),es.init(e,t)}),Im=C("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=wm),es.init(e,t)}),Tm=C("$ZodCheckIncludes",(e,t)=>{_t.init(e,t);let r=Dr(t.includes),n=new RegExp(typeof t.position=="number"?`^.{${t.position},}${r}`:r);t.pattern=n,e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),Cm=C("$ZodCheckStartsWith",(e,t)=>{_t.init(e,t);let r=new RegExp(`^${Dr(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Nm=C("$ZodCheckEndsWith",(e,t)=>{_t.init(e,t);let r=new RegExp(`.*${Dr(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}});var Rm=C("$ZodCheckOverwrite",(e,t)=>{_t.init(e,t),e._zod.check=r=>{r.value=t.tx(r.value)}});var La=class{constructor(t=[],r={}){this.content=[],this.indent=0,this.args=t,this.closed=r}indented(t){this.indent+=1;try{t(this)}finally{this.indent-=1}}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}let n=t.split(`
17
17
  `).filter(a=>a),o=Math.min(...n.map(a=>a.length-a.trimStart().length)),s=n.map(a=>a.slice(o)).map(a=>" ".repeat(this.indent*2)+a);for(let a of s)this.content.push(a)}compile(){let t=Function,r=this?.content??[""];return new t(...Object.keys(this.closed),`return function (${this.args.join(", ")}) {
18
18
  ${r.join(`
19
19
  `)}
20
- };`)(...Object.values(this.closed))}};var Am={major:4,minor:6,patch:7};var Ke=C("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Am;let n=e._zod.def.checks,o=e._zod.traits.has("$ZodCheck")?[e,...n??[]]:n?.length?[...n]:[];for(let s of o)for(let a of s._zod.onattach)a(e);if(o.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let s=(i,l,c)=>{if(i.memo)return i;let u=cr(i),d;for(let p of l){if(p._zod.def.when){if(ec(i)||!p._zod.def.when(i))continue}else if(u)continue;let m=i.issues.length,b=p._zod.check(i);if(b instanceof Promise&&c?.async===!1)throw new dr;if(d||b instanceof Promise)d=(d??Promise.resolve()).then(async()=>{await b,i.issues.length!==m&&(Go(i.issues,m,e),u||(u=cr(i,m)))});else{if(i.issues.length===m)continue;Go(i.issues,m,e),u||(u=cr(i,m))}}return d?d.then(()=>i):i},a=(i,l,c)=>{if(cr(i))return i.aborted=!0,i;let u=s(l,o,c);if(u instanceof Promise){if(c.async===!1)throw new dr;return u.then(d=>e._zod.parse(d,c))}return e._zod.parse(u,c)};e._zod.run=(i,l)=>{if(l.skipChecks)return e._zod.parse(i,l);if(l.direction==="backward"){let u=e._zod.parse({value:i.value,issues:[]},{...l,skipChecks:!0});return u instanceof Promise?u.then(d=>a(d,i,l)):a(u,i,l)}let c=e._zod.parse(i,l);if(c instanceof Promise){if(l.async===!1)throw new dr;return c.then(u=>s(u,o,l))}return s(c,o,l)}}},{get"~standard"(){return $a(this,"~standard",mc(this))},set"~standard"(e){Qr(this,"~standard",e)}}),Vm=(e,t)=>e.issues.length?{issues:e.issues.map(r=>ur(r,t,Kt()))}:{value:e.value};async function Bw(e,t){let r={async:!0};return Vm(await e._zod.run({value:t,issues:[]},r),r)}function mc(e){return{validate:t=>{let r={async:!1};try{let n=e._zod.run({value:t,issues:[]},r);if(!(n instanceof Promise))return Vm(n,r)}catch{}return Bw(e,t)},vendor:"zod",version:1}}var La=C("$ZodString",(e,t)=>{Ke.init(e,t),e._zod.pattern=t.pattern??dm,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:e}),r}}),He=C("$ZodStringFormat",(e,t)=>{Jo.init(e,t),La.init(e,t)}),Fm=C("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Jf),He.init(e,t)}),Zm=C("$ZodUUID",(e,t)=>{if(t.version){let n={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(n===void 0)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=lc(n))}else t.pattern??(t.pattern=lc());He.init(e,t)}),Bm=C("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Yf),He.init(e,t)}),Gm=1,Ma=2;function Um(e){try{return typeof URL<"u"&&typeof URL.canParse=="function"?URL.canParse(e):(new URL(e),!0)}catch{return!1}}function Gw(e,t){return!("normalize"in t)&&!("hostname"in t)&&!("protocol"in t)?Um(e)||Ma:Uw(e,t)}function Uw(e,t){if(!t.normalize&&t.protocol?.source===sm.source&&!/^https?:\/\//i.test(e))return Gm;try{if(typeof URL<"u"){let r=URL;if(typeof r.parse=="function")return r.parse(e)??Ma}return new URL(e)}catch{return Ma}}var qw=/[\t\n\r]/g;function Om(e){return e.replace(qw,"")}function Kw(e,t){return t.lastIndex=0,t.test(e.hostname)}function Hw(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(":")?e.protocol.slice(0,-1):e.protocol)}var qm=C("$ZodURL",(e,t)=>{He.init(e,t),e._zod.check=r=>{try{let n=r.value.trim(),o=Gw(n,t);if(o===Gm){r.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:r.value,inst:e,continue:!t.abort});return}if(o===Ma){r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort});return}if(o===!0){r.value=Om(n);return}t.hostname&&!Kw(o,t.hostname)&&r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:r.value,inst:e,continue:!t.abort}),t.protocol&&!Hw(o,t.protocol)&&r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:r.value,inst:e,continue:!t.abort}),r.value=t.normalize?o.href:Om(n);return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort})}}}),Km=C("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=Xf()),He.init(e,t)}),Hm=C("$ZodNanoID",(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw new Error(`Invalid nanoid length: ${t.length}`);t.pattern??(t.pattern=t.length===void 0?Kf:Hf(t.length)),He.init(e,t)}),Wm=C("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=Zf),He.init(e,t)}),Jm=C("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Bf),He.init(e,t)}),Ym=C("$ZodULID",(e,t)=>{t.pattern??(t.pattern=Gf),He.init(e,t)}),Xm=C("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Uf),He.init(e,t)}),Qm=C("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=qf),He.init(e,t)}),eh=C("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=um(t)),He.init(e,t)}),th=C("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=lm),He.init(e,t)}),rh=C("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=cm(t)),He.init(e,t)}),nh=C("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Wf),He.init(e,t)}),oh=C("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=Qf),He.init(e,t)}),Ww=/^[0-9a-fA-F:.]+$/;function sh(e){return Ww.test(e)?Um(`http://[${e}]`):!1}var ah=C("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=em),He.init(e,t),e._zod.check=r=>{sh(r.value)||r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:e,continue:!t.abort})}});var ih=C("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=tm),He.init(e,t)});function Jw(e){let t=e.split("/");if(t.length!==2)return!1;let[r,n]=t;if(!n)return!1;let o=Number(n);return`${o}`!==n||o<0||o>128?!1:sh(r)}var lh=C("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=rm),He.init(e,t),e._zod.check=r=>{Jw(r.value)||r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:e,continue:!t.abort})}});function ch(e){if(e==="")return!0;if(/\s/.test(e)||e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var hc=/^[0-9a-zA-Z+/]*={0,2}$/,uh=C("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=hc),He.init(e,t),e._zod.check=r=>{ch(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:e,continue:!t.abort})}}),Va=/^[A-Za-z0-9_-]*$/;function Yw(e){if(!Va.test(e))return!1;let t=e.replace(/[-_]/g,n=>n==="-"?"+":"/"),r=t.padEnd(Math.ceil(t.length/4)*4,"=");return ch(r)}var dh=C("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=Va),He.init(e,t),e._zod.check=r=>{Yw(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:e,continue:!t.abort})}}),ph=C("$ZodE164",(e,t)=>{t.pattern??(t.pattern=am),He.init(e,t)});function Xw(e,t=null){try{let r=e.split(".");if(r.length!==3)return!1;let[n]=r;if(!n)return!1;let o=JSON.parse(atob(n));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||t&&(!("alg"in o)||o.alg!==t))}catch{return!1}}var fh=C("$ZodJWT",(e,t)=>{He.init(e,t),e._zod.check=r=>{Xw(r.value,t.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:e,continue:!t.abort})}});var gc=C("$ZodNumber",(e,t)=>{Ke.init(e,t),e._zod.pattern=Ho,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=Number(r.value)}catch{}let o=r.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return r;let s=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:String(o):void 0;return r.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...s?{received:s}:{}}),r}}),mh=C("$ZodNumberFormat",(e,t)=>{bm.init(e,t),gc.init(e,t)}),hh=C("$ZodBoolean",(e,t)=>{Ke.init(e,t),e._zod.pattern=pm,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=!!r.value}catch{}let o=r.value;return typeof o=="boolean"||r.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:e}),r}});var gh=C("$ZodNull",(e,t)=>{Ke.init(e,t),e._zod.pattern=fm,e._zod.values=new Set([null]),e._zod.parse=(r,n)=>{let o=r.value;return o===null||r.issues.push({expected:"null",code:"invalid_type",input:o,inst:e}),r}});var bh=C("$ZodUnknown",(e,t)=>{Ke.init(e,t),e._zod.parse=r=>r}),yh=C("$ZodNever",(e,t)=>{Ke.init(e,t),e._zod.parse=(r,n)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:e}),r)});function Qw(e,t){let r=Pa(e._zod.def.checks);if(!r.length)return;let n=Math.min(...r.map(s=>s[0])),o=e._zod.parse;e._zod.parse=(s,a)=>{let i=t(s.value);if(i>n&&!a?.skipChecks&&a?.direction!=="backward"){for(let[l,c]of Pa(e._zod.def.checks))if(i>l&&c._zod.def.when(s)){let u=s.issues.length;return c._zod.check(s),s.issues[u].continue=!1,Go(s.issues,u,e),s}}return o(s,a)}}var ex=e=>Array.isArray(e)?e.length:-1;function Im(e,t,r){e.issues.length&&t.issues.push(...Dr(r,e.issues)),t.value[r]=e.value}var kh=C("$ZodArray",(e,t)=>{Ke.init(e,t);let r=Mt.memoizer;r?.attach(e),e._zod.parse=(n,o)=>{let s=n.value;if(!Array.isArray(s))return n.issues.push({expected:"array",code:"invalid_type",input:s,inst:e}),n;n.value=r?r.alloc(e,n,Array(s.length),o):Array(s.length);let a=[],i=o?.abortEarly;for(let l=0;l<s.length;l++){let c=s[l],u=t.element._zod.run({value:c,issues:[]},o);if(u instanceof Promise)a.push(u.then(d=>Im(d,n,l)));else if(Im(u,n,l),i&&u.issues.length!==0&&cr(u))break}return a.length?Promise.all(a).then(()=>n):n},Qw(e,ex)});function Da(e,t,r,n,o,s){let a=r in n,i=s==="optional";if(!(!a&&i&&o==="optional")){if(e.issues.length){if(o!==void 0&&i&&!a)return;t.issues.push(...Dr(r,e.issues))}if(!a&&o===void 0){e.issues.length||t.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[r]});return}e.value===void 0?(a||o==="defaulted"&&!i)&&(t.value[r]=void 0):t.value[r]=e.value}}var tx=[];function vh(e){let t=Object.keys(e.shape),r=Object.getOwnPropertySymbols(e.shape),n=r.length?r:tx,o=n.length?[...t,...n]:t;for(let a of o)if(!e.shape?.[a]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${String(a)}": expected a Zod schema`);let s=Ql(e.shape);return{...e,allKeys:o,symbolKeys:n,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(s)}}function zh(e,t,r,n,o,s,a){let i=[],l=o.keySet,c=o.catchall._zod,u=c.def.type,d=c.optin,p=c.optout,m=0;for(let b in t){if(a&&r.issues.length!==m){if(cr(r,m))break;m=r.issues.length}if(l.has(b))continue;if(b==="__proto__"){u==="never"&&i.push(b);continue}if(u==="never"){i.push(b);continue}let f=c.run({value:t[b],issues:[]},n);f instanceof Promise?e.push(f.then(h=>Da(h,r,b,t,d,p))):Da(f,r,b,t,d,p)}return i.length&&r.issues.push({code:"unrecognized_keys",keys:i,input:t,inst:s,continue:!0}),e.length?Promise.all(e).then(()=>r):r}var rx=C("$ZodObject",(e,t)=>{Ke.init(e,t);let r=Object.getOwnPropertyDescriptor(t,"shape"),n=r?.get?r.get.raw:t.shape??{};if(n){let c=()=>{let u={...n};return Object.defineProperty(t,"shape",{value:u}),c.raw=u,u};c.raw=n,Object.defineProperty(t,"shape",{get:c})}let o=Wn(()=>vh(t));Re(e,"propValues",c=>{let u=c.def.shape,d={};for(let p in u){let m=u[p]._zod;if(m.values){Object.prototype.hasOwnProperty.call(d,p)||qt(d,p,new Set);for(let b of m.values)d[p].add(b);m.optin!==void 0&&d[p].add(void 0)}}return d});let s=zn,a=t.catchall,i,l=Mt.memoizer;l?.attach(e),e._zod.parse=(c,u)=>{i??(i=o.value);let d=c.value;if(!s(d))return c.issues.push({expected:"object",code:"invalid_type",input:d,inst:e}),c;c.value=l?l.alloc(e,c,{},u):{};let p=[],m=i.shape,b=u?.abortEarly,f=c.issues.length;for(let h of i.allKeys){if(b&&c.issues.length!==f){if(cr(c,f))break;f=c.issues.length}if(h==="__proto__")continue;let g=m[h],v=g._zod.optin,_=g._zod.optout,w=g._zod.run({value:d[h],issues:[]},u);w instanceof Promise?p.push(w.then(k=>Da(k,c,h,d,v,_))):Da(w,c,h,d,v,_)}return a?zh(p,d,c,u,o.value,e,b===!0):p.length?Promise.all(p).then(()=>c):c}}),_h=C("$ZodObjectJIT",(e,t)=>{rx.init(e,t);let r=e._zod.parse,n=Wn(()=>vh(t)),o=Mt.memoizer,s=m=>{let b=n.value,f=b.symbolKeys,h=new Ra(["payload","ctx"],{shape:m,inst:e,memo:o,syms:f}),g=k=>`shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`,v=(k,P)=>`
20
+ };`)(...Object.values(this.closed))}};var Mm={major:4,minor:6,patch:7};var Ke=C("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Mm;let n=e._zod.def.checks,o=e._zod.traits.has("$ZodCheck")?[e,...n??[]]:n?.length?[...n]:[];for(let s of o)for(let a of s._zod.onattach)a(e);if(o.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let s=(i,c,l)=>{if(i.memo)return i;let u=pr(i),d;for(let f of c){if(f._zod.def.when){if(ic(i)||!f._zod.def.when(i))continue}else if(u)continue;let g=i.issues.length,h=f._zod.check(i);if(h instanceof Promise&&l?.async===!1)throw new mr;if(d||h instanceof Promise)d=(d??Promise.resolve()).then(async()=>{await h,i.issues.length!==g&&(Ho(i.issues,g,e),u||(u=pr(i,g)))});else{if(i.issues.length===g)continue;Ho(i.issues,g,e),u||(u=pr(i,g))}}return d?d.then(()=>i):i},a=(i,c,l)=>{if(pr(i))return i.aborted=!0,i;let u=s(c,o,l);if(u instanceof Promise){if(l.async===!1)throw new mr;return u.then(d=>e._zod.parse(d,l))}return e._zod.parse(u,l)};e._zod.run=(i,c)=>{if(c.skipChecks)return e._zod.parse(i,c);if(c.direction==="backward"){let u=e._zod.parse({value:i.value,issues:[]},{...c,skipChecks:!0});return u instanceof Promise?u.then(d=>a(d,i,c)):a(u,i,c)}let l=e._zod.parse(i,c);if(l instanceof Promise){if(c.async===!1)throw new mr;return l.then(u=>s(u,o,c))}return s(l,o,c)}}},{get"~standard"(){return Ia(this,"~standard",zc(this))},set"~standard"(e){en(this,"~standard",e)}}),Hm=(e,t)=>e.issues.length?{issues:e.issues.map(r=>fr(r,t,Ht()))}:{value:e.value};async function nx(e,t){let r={async:!0};return Hm(await e._zod.run({value:t,issues:[]},r),r)}function zc(e){return{validate:t=>{let r={async:!1};try{let n=e._zod.run({value:t,issues:[]},r);if(!(n instanceof Promise))return Hm(n,r)}catch{}return nx(e,t)},vendor:"zod",version:1}}var Za=C("$ZodString",(e,t)=>{Ke.init(e,t),e._zod.pattern=t.pattern??km,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:e}),r}}),He=C("$ZodStringFormat",(e,t)=>{es.init(e,t),Za.init(e,t)}),Wm=C("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=om),He.init(e,t)}),Jm=C("$ZodUUID",(e,t)=>{if(t.version){let n={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(n===void 0)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=hc(n))}else t.pattern??(t.pattern=hc());He.init(e,t)}),Ym=C("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=sm),He.init(e,t)}),Xm=1,Fa=2;function Qm(e){try{return typeof URL<"u"&&typeof URL.canParse=="function"?URL.canParse(e):(new URL(e),!0)}catch{return!1}}function ox(e,t){return!("normalize"in t)&&!("hostname"in t)&&!("protocol"in t)?Qm(e)||Fa:sx(e,t)}function sx(e,t){if(!t.normalize&&t.protocol?.source===fm.source&&!/^https?:\/\//i.test(e))return Xm;try{if(typeof URL<"u"){let r=URL;if(typeof r.parse=="function")return r.parse(e)??Fa}return new URL(e)}catch{return Fa}}var ax=/[\t\n\r]/g;function Dm(e){return e.replace(ax,"")}function ix(e,t){return t.lastIndex=0,t.test(e.hostname)}function lx(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(":")?e.protocol.slice(0,-1):e.protocol)}var eh=C("$ZodURL",(e,t)=>{He.init(e,t),e._zod.check=r=>{try{let n=r.value.trim(),o=ox(n,t);if(o===Xm){r.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:r.value,inst:e,continue:!t.abort});return}if(o===Fa){r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort});return}if(o===!0){r.value=Dm(n);return}t.hostname&&!ix(o,t.hostname)&&r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:r.value,inst:e,continue:!t.abort}),t.protocol&&!lx(o,t.protocol)&&r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:r.value,inst:e,continue:!t.abort}),r.value=t.normalize?o.href:Dm(n);return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort})}}}),th=C("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=am()),He.init(e,t)}),rh=C("$ZodNanoID",(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw new Error(`Invalid nanoid length: ${t.length}`);t.pattern??(t.pattern=t.length===void 0?tm:rm(t.length)),He.init(e,t)}),nh=C("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=Jf),He.init(e,t)}),oh=C("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Yf),He.init(e,t)}),sh=C("$ZodULID",(e,t)=>{t.pattern??(t.pattern=Xf),He.init(e,t)}),ah=C("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Qf),He.init(e,t)}),ih=C("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=em),He.init(e,t)}),lh=C("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=ym(t)),He.init(e,t)}),ch=C("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=gm),He.init(e,t)}),uh=C("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=bm(t)),He.init(e,t)}),dh=C("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=nm),He.init(e,t)}),ph=C("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=im),He.init(e,t)}),cx=/^[0-9a-fA-F:.]+$/;function fh(e){return cx.test(e)?Qm(`http://[${e}]`):!1}var mh=C("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=lm),He.init(e,t),e._zod.check=r=>{fh(r.value)||r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:e,continue:!t.abort})}});var hh=C("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=cm),He.init(e,t)});function ux(e){let t=e.split("/");if(t.length!==2)return!1;let[r,n]=t;if(!n)return!1;let o=Number(n);return`${o}`!==n||o<0||o>128?!1:fh(r)}var gh=C("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=um),He.init(e,t),e._zod.check=r=>{ux(r.value)||r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:e,continue:!t.abort})}});function bh(e){if(e==="")return!0;if(/\s/.test(e)||e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var _c=/^[0-9a-zA-Z+/]*={0,2}$/,yh=C("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=_c),He.init(e,t),e._zod.check=r=>{bh(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:e,continue:!t.abort})}}),Ga=/^[A-Za-z0-9_-]*$/;function dx(e){if(!Ga.test(e))return!1;let t=e.replace(/[-_]/g,n=>n==="-"?"+":"/"),r=t.padEnd(Math.ceil(t.length/4)*4,"=");return bh(r)}var kh=C("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=Ga),He.init(e,t),e._zod.check=r=>{dx(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:e,continue:!t.abort})}}),vh=C("$ZodE164",(e,t)=>{t.pattern??(t.pattern=mm),He.init(e,t)});function px(e,t=null){try{let r=e.split(".");if(r.length!==3)return!1;let[n]=r;if(!n)return!1;let o=JSON.parse(atob(n));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||t&&(!("alg"in o)||o.alg!==t))}catch{return!1}}var zh=C("$ZodJWT",(e,t)=>{He.init(e,t),e._zod.check=r=>{px(r.value,t.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:e,continue:!t.abort})}});var wc=C("$ZodNumber",(e,t)=>{Ke.init(e,t),e._zod.pattern=Xo,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=Number(r.value)}catch{}let o=r.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return r;let s=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:String(o):void 0;return r.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...s?{received:s}:{}}),r}}),_h=C("$ZodNumberFormat",(e,t)=>{Sm.init(e,t),wc.init(e,t)}),wh=C("$ZodBoolean",(e,t)=>{Ke.init(e,t),e._zod.pattern=vm,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=!!r.value}catch{}let o=r.value;return typeof o=="boolean"||r.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:e}),r}});var xh=C("$ZodNull",(e,t)=>{Ke.init(e,t),e._zod.pattern=zm,e._zod.values=new Set([null]),e._zod.parse=(r,n)=>{let o=r.value;return o===null||r.issues.push({expected:"null",code:"invalid_type",input:o,inst:e}),r}});var Sh=C("$ZodUnknown",(e,t)=>{Ke.init(e,t),e._zod.parse=r=>r}),Ph=C("$ZodNever",(e,t)=>{Ke.init(e,t),e._zod.parse=(r,n)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:e}),r)});function fx(e,t){let r=Oa(e._zod.def.checks);if(!r.length)return;let n=Math.min(...r.map(s=>s[0])),o=e._zod.parse;e._zod.parse=(s,a)=>{let i=t(s.value);if(i>n&&!a?.skipChecks&&a?.direction!=="backward"){for(let[c,l]of Oa(e._zod.def.checks))if(i>c&&l._zod.def.when(s)){let u=s.issues.length;return l._zod.check(s),s.issues[u].continue=!1,Ho(s.issues,u,e),s}}return o(s,a)}}var mx=e=>Array.isArray(e)?e.length:-1;function Lm(e,t,r){e.issues.length&&t.issues.push(...Lr(r,e.issues)),t.value[r]=e.value}var $h=C("$ZodArray",(e,t)=>{Ke.init(e,t);let r=Dt.memoizer;r?.attach(e),e._zod.parse=(n,o)=>{let s=n.value;if(!Array.isArray(s))return n.issues.push({expected:"array",code:"invalid_type",input:s,inst:e}),n;n.value=r?r.alloc(e,n,Array(s.length),o):Array(s.length);let a=[],i=o?.abortEarly;for(let c=0;c<s.length;c++){let l=s[c],u=t.element._zod.run({value:l,issues:[]},o);if(u instanceof Promise)a.push(u.then(d=>Lm(d,n,c)));else if(Lm(u,n,c),i&&u.issues.length!==0&&pr(u))break}return a.length?Promise.all(a).then(()=>n):n},fx(e,mx)});function Ba(e,t,r,n,o,s){let a=r in n,i=s==="optional";if(!(!a&&i&&o==="optional")){if(e.issues.length){if(o!==void 0&&i&&!a)return;t.issues.push(...Lr(r,e.issues))}if(!a&&o===void 0){e.issues.length||t.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[r]});return}e.value===void 0?(a||o==="defaulted"&&!i)&&(t.value[r]=void 0):t.value[r]=e.value}}var hx=[];function Eh(e){let t=Object.keys(e.shape),r=Object.getOwnPropertySymbols(e.shape),n=r.length?r:hx,o=n.length?[...t,...n]:t;for(let a of o)if(!e.shape?.[a]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${String(a)}": expected a Zod schema`);let s=ac(e.shape);return{...e,allKeys:o,symbolKeys:n,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(s)}}function Ah(e,t,r,n,o,s,a){let i=[],c=o.keySet,l=o.catchall._zod,u=l.def.type,d=l.optin,f=l.optout,g=0;for(let h in t){if(a&&r.issues.length!==g){if(pr(r,g))break;g=r.issues.length}if(c.has(h))continue;if(h==="__proto__"){u==="never"&&i.push(h);continue}if(u==="never"){i.push(h);continue}let p=l.run({value:t[h],issues:[]},n);p instanceof Promise?e.push(p.then(m=>Ba(m,r,h,t,d,f))):Ba(p,r,h,t,d,f)}return i.length&&r.issues.push({code:"unrecognized_keys",keys:i,input:t,inst:s,continue:!0}),e.length?Promise.all(e).then(()=>r):r}var gx=C("$ZodObject",(e,t)=>{Ke.init(e,t);let r=Object.getOwnPropertyDescriptor(t,"shape"),n=r?.get?r.get.raw:t.shape??{};if(n){let l=()=>{let u={...n};return Object.defineProperty(t,"shape",{value:u}),l.raw=u,u};l.raw=n,Object.defineProperty(t,"shape",{get:l})}let o=Yn(()=>Eh(t));Re(e,"propValues",l=>{let u=l.def.shape,d={};for(let f in u){let g=u[f]._zod;if(g.values){Object.prototype.hasOwnProperty.call(d,f)||Kt(d,f,new Set);for(let h of g.values)d[f].add(h);g.optin!==void 0&&d[f].add(void 0)}}return d});let s=wn,a=t.catchall,i,c=Dt.memoizer;c?.attach(e),e._zod.parse=(l,u)=>{i??(i=o.value);let d=l.value;if(!s(d))return l.issues.push({expected:"object",code:"invalid_type",input:d,inst:e}),l;l.value=c?c.alloc(e,l,{},u):{};let f=[],g=i.shape,h=u?.abortEarly,p=l.issues.length;for(let m of i.allKeys){if(h&&l.issues.length!==p){if(pr(l,p))break;p=l.issues.length}if(m==="__proto__")continue;let b=g[m],v=b._zod.optin,_=b._zod.optout,z=b._zod.run({value:d[m],issues:[]},u);z instanceof Promise?f.push(z.then(k=>Ba(k,l,m,d,v,_))):Ba(z,l,m,d,v,_)}return a?Ah(f,d,l,u,o.value,e,h===!0):f.length?Promise.all(f).then(()=>l):l}}),Oh=C("$ZodObjectJIT",(e,t)=>{gx.init(e,t);let r=e._zod.parse,n=Yn(()=>Eh(t)),o=Dt.memoizer,s=g=>{let h=n.value,p=h.symbolKeys,m=new La(["payload","ctx"],{shape:g,inst:e,memo:o,syms:p}),b=k=>`shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`,v=(k,x)=>`
21
21
  let ${k}_ab = false;
22
22
  for (let i = 0; i < ${k}.issues.length; i++) {
23
23
  const iss = ${k}.issues[i];
24
- iss.path = iss.path ? [${P}, ...iss.path] : [${P}];
24
+ iss.path = iss.path ? [${x}, ...iss.path] : [${x}];
25
25
  payload.issues.push(iss);
26
26
  if (iss.continue !== true) ${k}_ab = true;
27
27
  }
28
28
  if (${k}_ab && ctx && ctx.abortEarly) {
29
29
  payload.value = newResult;
30
30
  return payload;
31
- }`;h.write("const input = payload.value;");let _=Object.create(null),w=0;for(let k of b.allKeys)_[k]=`key_${w++}`;h.write(o?"const newResult = memo.alloc(inst, payload, {}, ctx);":"const newResult = {};");for(let k of b.allKeys){if(k==="__proto__")continue;let P=_[k],A=typeof k=="symbol"?`syms[${f.indexOf(k)}]`:Wl(k),Z=`${A} in input`,D=m[k],B=D?._zod?.optin,K=B!==void 0,x=D?._zod?.optout==="optional";if(h.write(`const ${P} = ${g(A)};`),K&&x){let $=B==="optional"?`${P}_present`:`${P}.value !== undefined || ${P}_present`;h.write(`
32
- const ${P}_present = ${Z};
33
- if (!${P}.issues.length || ${P}_present) {
34
- if (${P}.issues.length) {${v(P,A)}
31
+ }`;m.write("const input = payload.value;");let _=Object.create(null),z=0;for(let k of h.allKeys)_[k]=`key_${z++}`;m.write(o?"const newResult = memo.alloc(inst, payload, {}, ctx);":"const newResult = {};");for(let k of h.allKeys){if(k==="__proto__")continue;let x=_[k],A=typeof k=="symbol"?`syms[${p.indexOf(k)}]`:rc(k),G=`${A} in input`,L=g[k],M=L?._zod?.optin,B=M!==void 0,S=L?._zod?.optout==="optional";if(m.write(`const ${x} = ${b(A)};`),B&&S){let $=M==="optional"?`${x}_present`:`${x}.value !== undefined || ${x}_present`;m.write(`
32
+ const ${x}_present = ${G};
33
+ if (!${x}.issues.length || ${x}_present) {
34
+ if (${x}.issues.length) {${v(x,A)}
35
35
  }
36
36
 
37
37
  if (${$}) {
38
- newResult[${A}] = ${P}.value;
38
+ newResult[${A}] = ${x}.value;
39
39
  }
40
40
  }
41
41
 
42
- `)}else K?(h.write(`
43
- if (${P}.issues.length) {${v(P,A)}
42
+ `)}else B?(m.write(`
43
+ if (${x}.issues.length) {${v(x,A)}
44
44
  }
45
- `),B==="defaulted"?h.write(`newResult[${A}] = ${P}.value;`):h.write(`
46
- if (${P}.value !== undefined || ${Z}) {
47
- newResult[${A}] = ${P}.value;
45
+ `),M==="defaulted"?m.write(`newResult[${A}] = ${x}.value;`):m.write(`
46
+ if (${x}.value !== undefined || ${G}) {
47
+ newResult[${A}] = ${x}.value;
48
48
  }
49
- `)):h.write(`
50
- const ${P}_present = ${Z};
51
- if (${P}.issues.length) {${v(P,A)}
49
+ `)):m.write(`
50
+ const ${x}_present = ${G};
51
+ if (${x}.issues.length) {${v(x,A)}
52
52
  }
53
- if (!${P}_present && !${P}.issues.length) {
53
+ if (!${x}_present && !${x}.issues.length) {
54
54
  payload.issues.push({
55
55
  code: "invalid_type",
56
56
  expected: "nonoptional",
@@ -63,15 +63,15 @@ ${r.join(`
63
63
  }
64
64
  }
65
65
 
66
- if (${P}_present) {
67
- newResult[${A}] = ${P}.value;
66
+ if (${x}_present) {
67
+ newResult[${A}] = ${x}.value;
68
68
  }
69
69
 
70
- `)}return h.write("payload.value = newResult;"),h.write("return payload;"),h.compile()},a,i=zn,l=!Mt.jitless,u=l&&Yl.value,d=t.catchall,p;e._zod.parse=(m,b)=>{p??(p=n.value);let f=m.value;return i(f)?l&&u&&b?.async===!1&&b.jitless!==!0?(a||(a=s(t.shape)),m=a(m,b),d?zh([],f,m,b,p,e,b?.abortEarly===!0):m):r(m,b):(m.issues.push({expected:"object",code:"invalid_type",input:f,inst:e}),m)}});function Tm(e,t,r,n){for(let s of e)if(s.issues.length===0)return t.value=s.value,t;let o=e.filter(s=>!cr(s));return o.length===1?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map(s=>s.issues.map(a=>ur(a,n,Kt())))}),t)}var bc=C("$ZodUnion",(e,t)=>{Ke.init(e,t),Re(e,"optin",n=>n.def.options.some(o=>o._zod.optin==="defaulted")?"defaulted":n.def.options.some(o=>o._zod.optin!==void 0)?"optional":void 0),Re(e,"optout",n=>n.def.options.some(o=>o._zod.optout==="optional")?"optional":void 0),Re(e,"values",n=>{if(n.def.options.every(o=>o._zod.values))return new Set(n.def.options.flatMap(o=>Array.from(o._zod.values)))}),Re(e,"pattern",n=>{if(n.def.options.every(o=>o._zod.pattern)){let o=n.def.options.map(s=>s._zod.pattern);return new RegExp(`^(${o.map(s=>Zo(s.source)).join("|")})$`)}});let r=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(n,o)=>{if(r)return r(n,o);let s=!1,a=[];for(let i of t.options){let l=i._zod.run({value:n.value,issues:[]},o);if(l instanceof Promise)a.push(l),s=!0;else{if(l.issues.length===0)return l;a.push(l)}}return s?Promise.all(a).then(i=>Tm(i,n,e,o)):Tm(a,n,e,o)}});function nx(e){let t=new Map;for(let r of e.options){let n=r._zod.propValues?.[e.discriminator];if(!n||n.size===0)throw new Error(`Invalid discriminated union option at index "${e.options.indexOf(r)}"`);for(let o of n)if(t.has(o)){if(o!==void 0)throw new Error(`Duplicate discriminator value "${String(o)}"`);t.set(o,null)}else t.set(o,r)}return t}var wh=C("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,bc.init(e,t);let r=e._zod.parse;Re(e,"propValues",o=>{let s={},a=0;for(let i of o.def.options){let l=i._zod.propValues;if(!l||Object.keys(l).length===0)throw new Error(`Invalid discriminated union option at index "${o.def.options.indexOf(i)}"`);l[o.def.discriminator]?.has(void 0)&&a++;for(let[c,u]of Object.entries(l)){Object.prototype.hasOwnProperty.call(s,c)||qt(s,c,new Set);for(let d of u)s[c].add(d)}}return!o.def.unionFallback&&a>1&&s[o.def.discriminator]?.delete(void 0),s}),t.options.forEach((o,s)=>{let a=Jn(o._zod.def);if(a&&!Object.prototype.hasOwnProperty.call(a,t.discriminator))throw new Error(`Invalid discriminated union option at index "${s}"`)});let n=Wn(()=>nx(t));e._zod.parse=(o,s)=>{let a=o.value;if(!zn(a))return o.issues.push({code:"invalid_type",expected:"object",input:a,inst:e}),o;let i=a?.[t.discriminator],l=n.value.get(i);return l&&(i!==void 0||s.direction!=="backward")?l._zod.run(o,s):t.unionFallback||s.direction==="backward"?r(o,s):(o.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,options:Array.from(n.value.keys()).filter(c=>n.value.get(c)!==null),input:a,path:[t.discriminator],inst:e}),o)}}),xh=C("$ZodIntersection",(e,t)=>{Ke.init(e,t),e._zod.parse=(r,n)=>{let o=r.value,s=t.left._zod.run({value:o,issues:[]},n),a=t.right._zod.run({value:o,issues:[]},n);return s instanceof Promise||a instanceof Promise?Promise.all([s,a]).then(([l,c])=>Cm(r,l,c)):Cm(r,s,a)}});function fc(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(en(e)&&en(t)){let r=Object.keys(t),n=Object.keys(e).filter(s=>r.indexOf(s)!==-1),o={...e,...t};Object.prototype.hasOwnProperty.call(o,"__proto__")&&delete o.__proto__;for(let s of n){if(s==="__proto__")continue;let a=fc(e[s],t[s]);if(!a.valid)return{valid:!1,mergeErrorPath:[s,...a.mergeErrorPath]};o[s]=a.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let r=[];for(let n=0;n<e.length;n++){let o=e[n],s=t[n],a=fc(o,s);if(!a.valid)return{valid:!1,mergeErrorPath:[n,...a.mergeErrorPath]};r.push(a.data)}return{valid:!0,data:r}}return{valid:!1,mergeErrorPath:[]}}function Cm(e,t,r){let n=new Map,o,s=new Map,a=(c,u)=>{let d;if(c.code==="unrecognized_keys"&&!c.path?.length)o??(o=c),d=c.keys;else if(c.code==="invalid_key"&&c.origin==="record"&&c.path?.length===1){let p=String(c.path[0]);s.has(p)||s.set(p,c),d=[p]}else return!1;for(let p of d)n.has(p)||n.set(p,{}),n.get(p)[u]=!0;return!0};for(let c of t.issues)a(c,"l")||e.issues.push(c);for(let c of r.issues)a(c,"r")||e.issues.push(c);let i=[...n].filter(([,c])=>c.l&&c.r).map(([c])=>c);if(i.length){let c=o?i.filter(u=>o.keys.includes(u)):[];c.length&&e.issues.push({...o,keys:c});for(let u of i)!c.includes(u)&&s.has(u)&&e.issues.push(s.get(u))}let l=fc(t.value,r.value);if(!l.valid){if(cr(e))return e;throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(l.mergeErrorPath)}`)}return e.value=l.data,e}var Sh=C("$ZodRecord",(e,t)=>{Ke.init(e,t);let r=Mt.memoizer;r?.attach(e),e._zod.parse=(n,o)=>{let s=n.value;if(!en(s))return n.issues.push({expected:"record",code:"invalid_type",input:s,inst:e}),n;let a=[],i=t.keyType._zod.values;if(i&&!t.partial){n.value=r?r.alloc(e,n,{},o):{};let l=new Set;for(let u of i)if(typeof u=="string"||typeof u=="number"||typeof u=="symbol"){if(l.add(typeof u=="number"?u.toString():u),u==="__proto__")continue;let d=t.keyType._zod.run({value:u,issues:[]},o);if(d instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(d.issues.length){n.issues.push({code:"invalid_key",origin:"record",issues:d.issues.map(b=>ur(b,o,Kt())),input:u,path:[u],inst:e});continue}let p=d.value;if(p==="__proto__")continue;let m=t.valueType._zod.run({value:s[u],issues:[]},o);m instanceof Promise?a.push(m.then(b=>{b.issues.length&&n.issues.push(...Dr(u,b.issues)),n.value[p]=b.value})):(m.issues.length&&n.issues.push(...Dr(u,m.issues)),n.value[p]=m.value)}let c;for(let u in s)if(!l.has(u))if(t.mode==="loose"){if(u==="__proto__")continue;n.value[u]=s[u]}else c=c??[],c.push(u);c&&c.length>0&&n.issues.push({code:"unrecognized_keys",input:s,inst:e,keys:c,continue:!0})}else{n.value=r?r.alloc(e,n,{},o):{};let l;for(let c of Reflect.ownKeys(s)){if(c==="__proto__"||!Object.prototype.propertyIsEnumerable.call(s,c))continue;let u=t.keyType._zod.run({value:c,issues:[]},o);if(u instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof c=="string"&&Ho.test(c)&&u.issues.length){let b=t.keyType._zod.run({value:Number(c),issues:[]},o);if(b instanceof Promise)throw new Error("Async schemas not supported in object keys currently");b.issues.length===0&&(u=b)}if(u.issues.length){t.mode==="loose"?n.value[c]=s[c]:i?(l=l??[],l.push(c)):n.issues.push({code:"invalid_key",origin:"record",issues:u.issues.map(b=>ur(b,o,Kt())),input:c,path:[c],inst:e});continue}let p=u.value;if(p==="__proto__")continue;let m=t.valueType._zod.run({value:s[c],issues:[]},o);m instanceof Promise?a.push(m.then(b=>{b.issues.length&&n.issues.push(...Dr(c,b.issues)),n.value[p]=b.value})):(m.issues.length&&n.issues.push(...Dr(c,m.issues)),n.value[p]=m.value)}l&&l.length>0&&n.issues.push({code:"unrecognized_keys",input:s,inst:e,keys:l,continue:!0})}return a.length?Promise.all(a).then(()=>n):n}});var Ph=C("$ZodEnum",(e,t)=>{Ke.init(e,t);let r=Kn(t.entries),n=new Set(r);e._zod.values=n,Re(e,"pattern",o=>{let s=Kn(o.def.entries).filter(a=>Xl.has(typeof a));return new RegExp(s.length?`^(${s.map(a=>Mr(a.toString())).join("|")})$`:"^[^\\s\\S]$")}),e._zod.parse=(o,s)=>{let a=o.value;return n.has(a)||o.issues.push({code:"invalid_value",values:r,input:a,inst:e}),o}}),$h=C("$ZodLiteral",(e,t)=>{Ke.init(e,t);let r=new Set(t.values);e._zod.values=r,Re(e,"pattern",n=>{let o=n.def.values;return new RegExp(o.length?`^(${o.map(s=>typeof s=="string"?Mr(s):s?Mr(s.toString()):String(s)).join("|")})$`:"^[^\\s\\S]$")}),e._zod.parse=(n,o)=>{let s=n.value;return r.has(s)||n.issues.push({code:"invalid_value",values:t.values,input:s,inst:e}),n}});var Eh=C("$ZodTransform",(e,t)=>{Ke.init(e,t),e._zod.optin="optional",Mt.memoizer?.guard(e),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Xn(e.constructor.name);let o=t.transform(r.value,r);if(n.async)return(o instanceof Promise?o:Promise.resolve(o)).then(a=>(r.value=a,r));if(o instanceof Promise)throw new dr;return r.value=o,r}});function Nm(e,t){return e.value=t.issues.length?void 0:t.value,e}var yc=C("$ZodOptional",(e,t)=>{Ke.init(e,t),Re(e,"optin",r=>r.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),e._zod.optout="optional",Re(e,"values",r=>{let n=r.def.innerType._zod.values;return n?new Set([...n,void 0]):void 0}),Re(e,"pattern",r=>{let n=r.def.innerType._zod.pattern;return n?new RegExp(`^(${Zo(n.source)})?$`):void 0}),e._zod.parse=(r,n)=>{if(r.value===void 0){if(t.innerType._zod.optin!=="defaulted")return r;let o=t.innerType._zod.run({value:r.value,issues:[]},n);return o instanceof Promise?o.then(s=>Nm(r,s)):Nm(r,o)}return t.innerType._zod.run(r,n)}}),Ah=C("$ZodExactOptional",(e,t)=>{yc.init(e,t),Re(e,"values",r=>r.def.innerType._zod.values),Re(e,"pattern",r=>r.def.innerType._zod.pattern),e._zod.parse=(r,n)=>t.innerType._zod.run(r,n)}),Oh=C("$ZodNullable",(e,t)=>{Ke.init(e,t),Re(e,"optin",r=>r.def.innerType._zod.optin),Re(e,"optout",r=>r.def.innerType._zod.optout),Re(e,"pattern",r=>{let n=r.def.innerType._zod.pattern;return n?new RegExp(`^(${Zo(n.source)}|null)$`):void 0}),Re(e,"values",r=>r.def.innerType._zod.values?new Set([...r.def.innerType._zod.values,null]):void 0),e._zod.parse=(r,n)=>r.value===null?r:t.innerType._zod.run(r,n)}),Ih=C("$ZodDefault",(e,t)=>{Ke.init(e,t),e._zod.optin="defaulted",Re(e,"values",r=>r.def.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);if(r.value===void 0)return r.value=t.defaultValue,r;let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>Rm(s,t)):Rm(o,t)}});function Rm(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var Th=C("$ZodPrefault",(e,t)=>{Ke.init(e,t),e._zod.optin="defaulted",Re(e,"values",r=>r.def.innerType._zod.values),e._zod.parse=(r,n)=>(n.direction==="backward"||r.value===void 0&&(r.value=t.defaultValue),t.innerType._zod.run(r,n))}),Ch=C("$ZodNonOptional",(e,t)=>{Ke.init(e,t),Re(e,"values",r=>{let n=r.def.innerType._zod.values;return n?new Set([...n].filter(o=>o!==void 0)):void 0}),e._zod.parse=(r,n)=>{let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>jm(s,e)):jm(o,e)}});function jm(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}function Mm(e,t,r,n){return t.issues.length?(e.value=r.catchValue({...t,value:e.value,error:{issues:t.issues.map(o=>ur(o,n,Kt()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}var Nh=C("$ZodCatch",(e,t)=>{Ke.init(e,t),Re(e,"optin",r=>r.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),Re(e,"optout",r=>r.def.innerType._zod.optout),Re(e,"values",r=>r.def.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run({value:r.value,issues:[]},n);return o instanceof Promise?o.then(s=>Mm(r,s,t,n)):Mm(r,o,t,n)}});var kc=C("$ZodPipe",(e,t)=>{Ke.init(e,t),Re(e,"values",r=>r.def.in._zod.values),Re(e,"optin",r=>r.def.in._zod.optin),Re(e,"optout",r=>r.def.out._zod.optout),Re(e,"propValues",r=>r.def.in._zod.propValues),e._zod.parse=(r,n)=>{if(n.direction==="backward"){let s=t.out._zod.run(r,n);return s instanceof Promise?s.then(a=>ja(a,t.in,n)):ja(s,t.in,n)}let o=t.in._zod.run(r,n);return o instanceof Promise?o.then(s=>ja(s,t.out,n)):ja(o,t.out,n)}});function ja(e,t,r){return e.issues.some(n=>n.code!=="unrecognized_keys")?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},r)}var Rh=C("$ZodPreprocess",(e,t)=>{kc.init(e,t)}),jh=C("$ZodReadonly",(e,t)=>{Ke.init(e,t),Re(e,"propValues",r=>r.def.innerType._zod.propValues),Re(e,"values",r=>r.def.innerType._zod.values),Re(e,"optin",r=>r.def.innerType?._zod?.optin),Re(e,"optout",r=>r.def.innerType?._zod?.optout),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(Dm):Dm(o)}});function Dm(e){return e.memo||(e.value=Object.freeze(e.value)),e}var Mh=C("$ZodCustom",(e,t)=>{zt.init(e,t),Ke.init(e,t),e._zod.parse=(r,n)=>r,e._zod.check=r=>{let n=r.value,o=t.fn(n);if(o instanceof Promise)return o.then(s=>Lm(s,r,n,e));Lm(o,r,n,e)}});function Lm(e,t,r,n){if(!e){let o={code:"custom",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(o.params=n._zod.def.params),t.issues.push(Yn(o))}}var zc=class extends Error{constructor(){super("Cannot parse a reference cycle that closes through a transform"),this.name="ZodCyclicError"}},_c="~memo",Dh=[];function Lh(e){return e!==null&&typeof e=="object"}function vc(e){return e.map(t=>t.path?{...t,path:t.path.slice()}:{...t})}var Vh=new WeakMap,Yo=0,Ba=1,Xo=2;function Ga(e,t,r){let n=Vh.get(e);if(n!==void 0)return n?Xo:Yo;if(t.has(e))return Xo;t.add(e);let o=Yo,s=u=>{if(o!==Xo&&u?._zod){let d=Ga(u,t,r);d>o&&(o=d)}},a=(u,d)=>{let p=Yo;for(let m of Reflect.ownKeys(u)){let b=Object.getOwnPropertyDescriptor(u,m);if(d&&!b.enumerable)continue;let f=b.get?Ba:b.value?._zod?Ga(b.value,t,r):Yo;f>p&&(p=f)}return p},i=u=>{u>o&&(o=u)},l=e._zod.def,c=l.type;switch(c){case"object":{let u=Jn(l);i(u?a(u,!0):Ba),s(l.catchall);break}case"array":s(l.element);break;case"tuple":for(let u of l.items)s(u);s(l.rest);break;case"record":case"map":s(l.keyType),s(l.valueType);break;case"set":s(l.valueType);break;case"union":for(let u of l.options)s(u);break;case"intersection":s(l.left),s(l.right);break;case"optional":case"nullable":case"default":case"prefault":case"catch":case"readonly":case"nonoptional":case"promise":case"success":s(l.innerType);break;case"pipe":s(l.in),s(l.out);break;case"function":s(l.input),s(l.output);break;case"lazy":{let u=l._cachedInner??(r?e._zod.innerType:void 0);i(u?Ga(u,t,!1):Ba);break}case"template_literal":case"string":case"number":case"int":case"boolean":case"bigint":case"symbol":case"undefined":case"null":case"void":case"never":case"any":case"unknown":case"date":case"nan":case"enum":case"literal":case"file":case"transform":case"custom":break;default:for(let u in l){let d=Object.getOwnPropertyDescriptor(l,u);if(!d||d.get)continue;let p=d.value;if(!(!p||typeof p!="object")){if(p._zod)s(p);else if(Array.isArray(p))for(let m of p)s(m)}}}return t.delete(e),ox(e,o)}function ox(e,t){return t!==Ba&&Vh.set(e,t===Xo),t}function sx(e,t){let r=e.buckets.get(t);return r||(r=new WeakMap,e.buckets.set(t,r)),r}var Fa,Za=[],ax={alloc(e,t,r){let n=Fa;if(!n)return r;Fa=void 0;let o={value:r,issues:null};return n.set(t.value,o),Za.push(o),r},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let r=e._zod.parse,n=(o,s)=>{if(s.direction!=="backward"&&ix(s,o.value))throw new zc;return r(o,s)};e._zod.parse=n,e._zod.run===r&&(e._zod.run=n)})},attach(e){var t;let r,n=!1,o,s;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let a=e._zod.parse,i=(l,c)=>{if(r===void 0){let g=Ga(e,new Set,!1);if(g===Yo)return e._zod.parse=a,e._zod.run===i&&(e._zod.run=a),a(l,c);g===Xo||n?r=!0:n=!0}let u=l.value;if(!Lh(u))return a(l,c);let d=c[_c];d||(d={buckets:new WeakMap,backEdges:void 0},c[_c]=d);let p;o===c?p=s:(p=sx(d,e),o=c,s=p);let m=p.get(u);if(m)return l.value=m.value,m.issues?m.issues.length&&l.issues.push(...vc(m.issues)):(l.memo=!0,d.backEdges??(d.backEdges=new WeakSet),d.backEdges.add(m.value)),l;Fa=p;let b=Za.length,f=a(l,c);Fa=void 0;let h=Za.length>b?Za.pop():void 0;return f instanceof Promise?f.then(g=>(h&&(h.issues=g.issues.length?vc(g.issues):Dh),g)):(h&&(h.issues=f.issues.length?vc(f.issues):Dh),f)};e._zod.parse=i,e._zod.run===a&&(e._zod.run=i)})}};function Fh(){return ax}function ix(e,t){let r=e[_c]?.backEdges;return r!==void 0&&Lh(t)&&r.has(t)}var lx=()=>{let e={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function t(s){return e[s]??null}let r={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",currency_code:"currency code",credit_card:"credit card number",iban:"IBAN",jwt:"JWT",template_literal:"input"},n={nan:"NaN"};function o(s,a){return s==="number"&&typeof a=="number"&&!Number.isFinite(a)?String(a):n[s]??s}return s=>{switch(s.code){case"invalid_type":{let a=o(s.expected),i=tc(s.input),l=o(i,s.input);return`Invalid input: expected ${a}, received ${l}`}case"invalid_value":return s.values.length===1?`Invalid input: expected ${wa(s.values[0])}`:`Invalid option: expected one of ${za(s.values,"|")}`;case"too_big":{let a=s.exact?"exactly ":s.inclusive?"<=":"<",i=t(s.origin);return i?`Too big: expected ${s.origin??"value"} to have ${a}${s.maximum.toString()} ${i.unit??"elements"}`:`Too big: expected ${s.origin??"value"} to be ${a}${s.maximum.toString()}`}case"too_small":{let a=s.exact?"exactly ":s.inclusive?">=":">",i=t(s.origin);return i?`Too small: expected ${s.origin} to have ${a}${s.minimum.toString()} ${i.unit}`:`Too small: expected ${s.origin} to be ${a}${s.minimum.toString()}`}case"invalid_format":{let a=s;return a.format==="starts_with"?`Invalid string: must start with "${a.prefix}"`:a.format==="ends_with"?`Invalid string: must end with "${a.suffix}"`:a.format==="includes"?`Invalid string: must include "${a.includes}"`:a.format==="regex"?`Invalid string: must match pattern ${a.pattern}`:`Invalid ${r[a.format]??s.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${s.divisor}`;case"unrecognized_keys":return`Unrecognized key${s.keys.length>1?"s":""}: ${za(s.keys,", ")}`;case"invalid_key":return`Invalid key in ${s.origin}`;case"invalid_union":return s.options&&Array.isArray(s.options)&&s.options.length>0?`Invalid discriminator value. Expected ${s.options.map(i=>`'${i}'`).join(" | ")}`:s.inclusive===!1?"Invalid input: more than one option matched":"Invalid input";case"invalid_element":return`Invalid value in ${s.origin}`;default:return"Invalid input"}}};function Zh(){return{localeError:lx()}}var Bh;var wc=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...r){let n=r[0];return this._map.set(t,n),n&&typeof n=="object"&&"id"in n&&this._idmap.set(n.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){let r=this._map.get(t);return r&&typeof r=="object"&&"id"in r&&this._idmap.delete(r.id),this._map.delete(t),this}get(t){let r=t._zod.parent;if(r){let n={...this.get(r)??{}};delete n.id;let o={...n,...this._map.get(t)};return Object.keys(o).length?o:void 0}return this._map.get(t)}has(t){return this._map.has(t)}};function cx(){return new wc}(Bh=globalThis).__zod_globalRegistry??(Bh.__zod_globalRegistry=cx());var _n=globalThis.__zod_globalRegistry;function Gh(e){return e.checks&&(e.checks=[...e.checks]),e}function Uh(e,t){return new e(Gh({type:"string",...ie(t)}))}function qh(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...ie(t)})}function Kh(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...ie(t)})}function Hh(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...ie(t)})}function Wh(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...ie(t)})}function Jh(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...ie(t)})}function Yh(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...ie(t)})}function Xh(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...ie(t)})}function Qh(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...ie(t)})}function eg(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...ie(t)})}function tg(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...ie(t)})}function rg(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...ie(t)})}function ng(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...ie(t)})}function og(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...ie(t)})}function sg(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...ie(t)})}function ag(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...ie(t)})}function ig(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...ie(t)})}function lg(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...ie(t)})}function cg(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...ie(t)})}function ug(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...ie(t)})}function dg(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...ie(t)})}function pg(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...ie(t)})}function fg(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...ie(t)})}function Ua(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...ie(t)})}function qa(e,t){return new e({type:"string",format:"date",check:"string_format",...ie(t)})}function Ka(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...ie(t)})}function Ha(e,t){return new e({type:"string",format:"duration",check:"string_format",...ie(t)})}function mg(e,t){return new e(Gh({type:"number",checks:[],...ie(t)}))}function hg(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...ie(t)})}function gg(e,t){return new e({type:"boolean",...ie(t)})}function bg(e,t){return new e({type:"null",...ie(t)})}function yg(e){return new e({type:"unknown"})}function kg(e,t){return new e({type:"never",...ie(t)})}function Wa(e,t){return new dc({check:"less_than",...ie(t),value:e,inclusive:!1})}function Qo(e,t){return new dc({check:"less_than",...ie(t),value:e,inclusive:!0})}function Ja(e,t){return new pc({check:"greater_than",...ie(t),value:e,inclusive:!1})}function es(e,t){return new pc({check:"greater_than",...ie(t),value:e,inclusive:!0})}function Ya(e,t){return new gm({check:"multiple_of",...ie(t),value:e})}function Xa(e,t){return new ym({check:"max_length",...ie(t),maximum:e})}function Qn(e,t){return new km({check:"min_length",...ie(t),minimum:e})}function Qa(e,t){return new vm({check:"length_equals",...ie(t),length:e})}function xc(e,t){return new zm({check:"string_format",format:"regex",...ie(t),pattern:e})}function Sc(e){return new _m({check:"string_format",format:"lowercase",...ie(e)})}function Pc(e){return new wm({check:"string_format",format:"uppercase",...ie(e)})}function $c(e,t){return new xm({check:"string_format",format:"includes",...ie(t),includes:e})}function Ec(e,t){return new Sm({check:"string_format",format:"starts_with",...ie(t),prefix:e})}function Ac(e,t){return new Pm({check:"string_format",format:"ends_with",...ie(t),suffix:e})}function tn(e){return new $m({check:"overwrite",tx:e})}function Oc(e){return tn(t=>t.normalize(e))}function Ic(){return tn(e=>e.trim())}function Tc(){return tn(e=>e.toLowerCase())}function Cc(){return tn(e=>e.toUpperCase())}function Nc(){return tn(e=>Jl(e))}function vg(e,t,r){return new e({type:"array",element:t,...ie(r)})}function zg(e,t,r){let n=ie(r);return n.abort??(n.abort=!0),new e({type:"custom",check:"custom",fn:t,...n})}function _g(e,t,r){return new e({type:"custom",check:"custom",fn:t,...ie(r)})}function wg(e,t){let r=ux(n=>(n.addIssue=o=>{if(typeof o=="string")n.issues.push(Yn(o,n.value,r._zod.def));else{let s=o;s.fatal&&(s.continue=!1),s.code??(s.code="custom"),"input"in s||(s.input=n.value),s.inst??(s.inst=r),s.continue??(s.continue=!r._zod.def.abort),n.issues.push(Yn(s))}},e(n.value,n)),t);return r}function ux(e,t){let r=new zt({check:"custom",...ie(t)});return r._zod.check=e,r}function ts(e,...t){for(let r of t)for(let n of Reflect.ownKeys(r))Object.prototype.propertyIsEnumerable.call(r,n)&&qt(e,n,r[n]);return e}function jc(e){let t=e?.target??"draft-2020-12";return t==="draft-4"&&(t="draft-04"),t==="draft-7"&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??_n,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??"ref",reused:e?.reused??"inline",intersections:[],deferred:[],external:e?.external??void 0}}function Lr(e,t,r,n,o){let s=typeof t.unrepresentable=="function"?t.unrepresentable({zodSchema:e,path:n.path,message:o}):t.unrepresentable;if(s==="any")return!1;if(s===void 0||s==="throw")throw new Error(o);return Object.assign(r,s),!0}function st(e,t,r={path:[],schemaPath:[]}){var n;let o=e._zod.def,s=t.seen.get(e);if(s)return s.count++,r.schemaPath.includes(e)&&(s.cycle=r.path),s.schema;let a={schema:{},count:1,cycle:void 0,path:r.path};t.seen.set(e,a),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let i=e._zod.toJSONSchema?.();if(i)a.schema=i;else{let u={...r,schemaPath:[...r.schemaPath,e],path:r.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,a.schema,u);else{let p=a.schema,m=t.processors[o.type];if(!m)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);m(e,t,p,u)}let d=e._zod.parent;d&&(a.ref||(a.ref=d),st(d,t,u),t.seen.get(d).isParent=!0)}let l=t.metadataRegistry.get(e);return l&&ts(a.schema,l),t.io==="input"&&Ct(e)&&(delete a.schema.examples,delete a.schema.default),t.io==="input"&&"_prefault"in a.schema&&((n=a.schema).default??(n.default=a.schema._prefault)),delete a.schema._prefault,t.seen.get(e).schema}function xg(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Mc(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");if(e.external&&e.sharedDefsExtractedFor===e.external)return;let n=new Map;for(let a of e.seen.entries()){let i=e.metadataRegistry.get(a[0])?.id;if(i){let l=n.get(i);if(l&&l!==a[0])throw new Error(`Duplicate schema id "${i}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);n.set(i,a[0])}}let o=a=>{let i=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let d=e.external.registry.get(a[0])?.id,p=e.external.uri??(b=>b);if(d)return{ref:p(d)};let m=a[1].defId??a[1].schema.id??`schema${e.counter++}`;return a[1].defId=m,{defId:m,ref:`${p("__shared")}#/${i}/${xg(m)}`}}let l="#",c=`${l}/${i}/`;if(a[1]===r&&!a[1].schema.id)return{ref:l};let u=a[1].schema.id??`__schema${e.counter++}`;return{defId:u,ref:c+xg(u)}},s=a=>{if(a[1].schema.$ref)return;let i=a[1],{ref:l,defId:c}=o(a);i.def={...i.schema},c&&(i.defId=c);let u=i.schema;for(let d in u)delete u[d];u.$ref=l};if(e.cycles==="throw")for(let a of e.seen.entries()){let i=a[1];if(i.cycle)throw new Error(`Cycle detected: #/${i.cycle?.join("/")}/<root>
70
+ `)}return m.write("payload.value = newResult;"),m.write("return payload;"),m.compile()},a,i=wn,c=!Dt.jitless,u=c&&oc.value,d=t.catchall,f;e._zod.parse=(g,h)=>{f??(f=n.value);let p=g.value;return i(p)?c&&u&&h?.async===!1&&h.jitless!==!0?(a||(a=s(t.shape)),g=a(g,h),d?Ah([],p,g,h,f,e,h?.abortEarly===!0):g):r(g,h):(g.issues.push({expected:"object",code:"invalid_type",input:p,inst:e}),g)}});function Vm(e,t,r,n){for(let s of e)if(s.issues.length===0)return t.value=s.value,t;let o=e.filter(s=>!pr(s));return o.length===1?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map(s=>s.issues.map(a=>fr(a,n,Ht())))}),t)}var xc=C("$ZodUnion",(e,t)=>{Ke.init(e,t),Re(e,"optin",n=>n.def.options.some(o=>o._zod.optin==="defaulted")?"defaulted":n.def.options.some(o=>o._zod.optin!==void 0)?"optional":void 0),Re(e,"optout",n=>n.def.options.some(o=>o._zod.optout==="optional")?"optional":void 0),Re(e,"values",n=>{if(n.def.options.every(o=>o._zod.values))return new Set(n.def.options.flatMap(o=>Array.from(o._zod.values)))}),Re(e,"pattern",n=>{if(n.def.options.every(o=>o._zod.pattern)){let o=n.def.options.map(s=>s._zod.pattern);return new RegExp(`^(${o.map(s=>qo(s.source)).join("|")})$`)}});let r=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(n,o)=>{if(r)return r(n,o);let s=!1,a=[];for(let i of t.options){let c=i._zod.run({value:n.value,issues:[]},o);if(c instanceof Promise)a.push(c),s=!0;else{if(c.issues.length===0)return c;a.push(c)}}return s?Promise.all(a).then(i=>Vm(i,n,e,o)):Vm(a,n,e,o)}});function bx(e){let t=new Map;for(let r of e.options){let n=r._zod.propValues?.[e.discriminator];if(!n||n.size===0)throw new Error(`Invalid discriminated union option at index "${e.options.indexOf(r)}"`);for(let o of n)if(t.has(o)){if(o!==void 0)throw new Error(`Duplicate discriminator value "${String(o)}"`);t.set(o,null)}else t.set(o,r)}return t}var Ih=C("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,xc.init(e,t);let r=e._zod.parse;Re(e,"propValues",o=>{let s={},a=0;for(let i of o.def.options){let c=i._zod.propValues;if(!c||Object.keys(c).length===0)throw new Error(`Invalid discriminated union option at index "${o.def.options.indexOf(i)}"`);c[o.def.discriminator]?.has(void 0)&&a++;for(let[l,u]of Object.entries(c)){Object.prototype.hasOwnProperty.call(s,l)||Kt(s,l,new Set);for(let d of u)s[l].add(d)}}return!o.def.unionFallback&&a>1&&s[o.def.discriminator]?.delete(void 0),s}),t.options.forEach((o,s)=>{let a=Xn(o._zod.def);if(a&&!Object.prototype.hasOwnProperty.call(a,t.discriminator))throw new Error(`Invalid discriminated union option at index "${s}"`)});let n=Yn(()=>bx(t));e._zod.parse=(o,s)=>{let a=o.value;if(!wn(a))return o.issues.push({code:"invalid_type",expected:"object",input:a,inst:e}),o;let i=a?.[t.discriminator],c=n.value.get(i);return c&&(i!==void 0||s.direction!=="backward")?c._zod.run(o,s):t.unionFallback||s.direction==="backward"?r(o,s):(o.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,options:Array.from(n.value.keys()).filter(l=>n.value.get(l)!==null),input:a,path:[t.discriminator],inst:e}),o)}}),Th=C("$ZodIntersection",(e,t)=>{Ke.init(e,t),e._zod.parse=(r,n)=>{let o=r.value,s=t.left._zod.run({value:o,issues:[]},n),a=t.right._zod.run({value:o,issues:[]},n);return s instanceof Promise||a instanceof Promise?Promise.all([s,a]).then(([c,l])=>Fm(r,c,l)):Fm(r,s,a)}});function vc(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(tn(e)&&tn(t)){let r=Object.keys(t),n=Object.keys(e).filter(s=>r.indexOf(s)!==-1),o={...e,...t};Object.prototype.hasOwnProperty.call(o,"__proto__")&&delete o.__proto__;for(let s of n){if(s==="__proto__")continue;let a=vc(e[s],t[s]);if(!a.valid)return{valid:!1,mergeErrorPath:[s,...a.mergeErrorPath]};o[s]=a.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let r=[];for(let n=0;n<e.length;n++){let o=e[n],s=t[n],a=vc(o,s);if(!a.valid)return{valid:!1,mergeErrorPath:[n,...a.mergeErrorPath]};r.push(a.data)}return{valid:!0,data:r}}return{valid:!1,mergeErrorPath:[]}}function Fm(e,t,r){let n=new Map,o,s=new Map,a=(l,u)=>{let d;if(l.code==="unrecognized_keys"&&!l.path?.length)o??(o=l),d=l.keys;else if(l.code==="invalid_key"&&l.origin==="record"&&l.path?.length===1){let f=String(l.path[0]);s.has(f)||s.set(f,l),d=[f]}else return!1;for(let f of d)n.has(f)||n.set(f,{}),n.get(f)[u]=!0;return!0};for(let l of t.issues)a(l,"l")||e.issues.push(l);for(let l of r.issues)a(l,"r")||e.issues.push(l);let i=[...n].filter(([,l])=>l.l&&l.r).map(([l])=>l);if(i.length){let l=o?i.filter(u=>o.keys.includes(u)):[];l.length&&e.issues.push({...o,keys:l});for(let u of i)!l.includes(u)&&s.has(u)&&e.issues.push(s.get(u))}let c=vc(t.value,r.value);if(!c.valid){if(pr(e))return e;throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}var Ch=C("$ZodRecord",(e,t)=>{Ke.init(e,t);let r=Dt.memoizer;r?.attach(e),e._zod.parse=(n,o)=>{let s=n.value;if(!tn(s))return n.issues.push({expected:"record",code:"invalid_type",input:s,inst:e}),n;let a=[],i=t.keyType._zod.values;if(i&&!t.partial){n.value=r?r.alloc(e,n,{},o):{};let c=new Set;for(let u of i)if(typeof u=="string"||typeof u=="number"||typeof u=="symbol"){if(c.add(typeof u=="number"?u.toString():u),u==="__proto__")continue;let d=t.keyType._zod.run({value:u,issues:[]},o);if(d instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(d.issues.length){n.issues.push({code:"invalid_key",origin:"record",issues:d.issues.map(h=>fr(h,o,Ht())),input:u,path:[u],inst:e});continue}let f=d.value;if(f==="__proto__")continue;let g=t.valueType._zod.run({value:s[u],issues:[]},o);g instanceof Promise?a.push(g.then(h=>{h.issues.length&&n.issues.push(...Lr(u,h.issues)),n.value[f]=h.value})):(g.issues.length&&n.issues.push(...Lr(u,g.issues)),n.value[f]=g.value)}let l;for(let u in s)if(!c.has(u))if(t.mode==="loose"){if(u==="__proto__")continue;n.value[u]=s[u]}else l=l??[],l.push(u);l&&l.length>0&&n.issues.push({code:"unrecognized_keys",input:s,inst:e,keys:l,continue:!0})}else{n.value=r?r.alloc(e,n,{},o):{};let c;for(let l of Reflect.ownKeys(s)){if(l==="__proto__"||!Object.prototype.propertyIsEnumerable.call(s,l))continue;let u=t.keyType._zod.run({value:l,issues:[]},o);if(u instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof l=="string"&&Xo.test(l)&&u.issues.length){let h=t.keyType._zod.run({value:Number(l),issues:[]},o);if(h instanceof Promise)throw new Error("Async schemas not supported in object keys currently");h.issues.length===0&&(u=h)}if(u.issues.length){t.mode==="loose"?n.value[l]=s[l]:i?(c=c??[],c.push(l)):n.issues.push({code:"invalid_key",origin:"record",issues:u.issues.map(h=>fr(h,o,Ht())),input:l,path:[l],inst:e});continue}let f=u.value;if(f==="__proto__")continue;let g=t.valueType._zod.run({value:s[l],issues:[]},o);g instanceof Promise?a.push(g.then(h=>{h.issues.length&&n.issues.push(...Lr(l,h.issues)),n.value[f]=h.value})):(g.issues.length&&n.issues.push(...Lr(l,g.issues)),n.value[f]=g.value)}c&&c.length>0&&n.issues.push({code:"unrecognized_keys",input:s,inst:e,keys:c,continue:!0})}return a.length?Promise.all(a).then(()=>n):n}});var Nh=C("$ZodEnum",(e,t)=>{Ke.init(e,t);let r=Wn(t.entries),n=new Set(r);e._zod.values=n,Re(e,"pattern",o=>{let s=Wn(o.def.entries).filter(a=>sc.has(typeof a));return new RegExp(s.length?`^(${s.map(a=>Dr(a.toString())).join("|")})$`:"^[^\\s\\S]$")}),e._zod.parse=(o,s)=>{let a=o.value;return n.has(a)||o.issues.push({code:"invalid_value",values:r,input:a,inst:e}),o}}),Rh=C("$ZodLiteral",(e,t)=>{Ke.init(e,t);let r=new Set(t.values);e._zod.values=r,Re(e,"pattern",n=>{let o=n.def.values;return new RegExp(o.length?`^(${o.map(s=>typeof s=="string"?Dr(s):s?Dr(s.toString()):String(s)).join("|")})$`:"^[^\\s\\S]$")}),e._zod.parse=(n,o)=>{let s=n.value;return r.has(s)||n.issues.push({code:"invalid_value",values:t.values,input:s,inst:e}),n}});var jh=C("$ZodTransform",(e,t)=>{Ke.init(e,t),e._zod.optin="optional",Dt.memoizer?.guard(e),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new eo(e.constructor.name);let o=t.transform(r.value,r);if(n.async)return(o instanceof Promise?o:Promise.resolve(o)).then(a=>(r.value=a,r));if(o instanceof Promise)throw new mr;return r.value=o,r}});function Bm(e,t){return e.value=t.issues.length?void 0:t.value,e}var Sc=C("$ZodOptional",(e,t)=>{Ke.init(e,t),Re(e,"optin",r=>r.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),e._zod.optout="optional",Re(e,"values",r=>{let n=r.def.innerType._zod.values;return n?new Set([...n,void 0]):void 0}),Re(e,"pattern",r=>{let n=r.def.innerType._zod.pattern;return n?new RegExp(`^(${qo(n.source)})?$`):void 0}),e._zod.parse=(r,n)=>{if(r.value===void 0){if(t.innerType._zod.optin!=="defaulted")return r;let o=t.innerType._zod.run({value:r.value,issues:[]},n);return o instanceof Promise?o.then(s=>Bm(r,s)):Bm(r,o)}return t.innerType._zod.run(r,n)}}),Mh=C("$ZodExactOptional",(e,t)=>{Sc.init(e,t),Re(e,"values",r=>r.def.innerType._zod.values),Re(e,"pattern",r=>r.def.innerType._zod.pattern),e._zod.parse=(r,n)=>t.innerType._zod.run(r,n)}),Dh=C("$ZodNullable",(e,t)=>{Ke.init(e,t),Re(e,"optin",r=>r.def.innerType._zod.optin),Re(e,"optout",r=>r.def.innerType._zod.optout),Re(e,"pattern",r=>{let n=r.def.innerType._zod.pattern;return n?new RegExp(`^(${qo(n.source)}|null)$`):void 0}),Re(e,"values",r=>r.def.innerType._zod.values?new Set([...r.def.innerType._zod.values,null]):void 0),e._zod.parse=(r,n)=>r.value===null?r:t.innerType._zod.run(r,n)}),Lh=C("$ZodDefault",(e,t)=>{Ke.init(e,t),e._zod.optin="defaulted",Re(e,"values",r=>r.def.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);if(r.value===void 0)return r.value=t.defaultValue,r;let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>Zm(s,t)):Zm(o,t)}});function Zm(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var Vh=C("$ZodPrefault",(e,t)=>{Ke.init(e,t),e._zod.optin="defaulted",Re(e,"values",r=>r.def.innerType._zod.values),e._zod.parse=(r,n)=>(n.direction==="backward"||r.value===void 0&&(r.value=t.defaultValue),t.innerType._zod.run(r,n))}),Fh=C("$ZodNonOptional",(e,t)=>{Ke.init(e,t),Re(e,"values",r=>{let n=r.def.innerType._zod.values;return n?new Set([...n].filter(o=>o!==void 0)):void 0}),e._zod.parse=(r,n)=>{let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>Gm(s,e)):Gm(o,e)}});function Gm(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}function Um(e,t,r,n){return t.issues.length?(e.value=r.catchValue({...t,value:e.value,error:{issues:t.issues.map(o=>fr(o,n,Ht()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}var Bh=C("$ZodCatch",(e,t)=>{Ke.init(e,t),Re(e,"optin",r=>r.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),Re(e,"optout",r=>r.def.innerType._zod.optout),Re(e,"values",r=>r.def.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run({value:r.value,issues:[]},n);return o instanceof Promise?o.then(s=>Um(r,s,t,n)):Um(r,o,t,n)}});var Pc=C("$ZodPipe",(e,t)=>{Ke.init(e,t),Re(e,"values",r=>r.def.in._zod.values),Re(e,"optin",r=>r.def.in._zod.optin),Re(e,"optout",r=>r.def.out._zod.optout),Re(e,"propValues",r=>r.def.in._zod.propValues),e._zod.parse=(r,n)=>{if(n.direction==="backward"){let s=t.out._zod.run(r,n);return s instanceof Promise?s.then(a=>Va(a,t.in,n)):Va(s,t.in,n)}let o=t.in._zod.run(r,n);return o instanceof Promise?o.then(s=>Va(s,t.out,n)):Va(o,t.out,n)}});function Va(e,t,r){return e.issues.some(n=>n.code!=="unrecognized_keys")?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},r)}var Zh=C("$ZodPreprocess",(e,t)=>{Pc.init(e,t)}),Gh=C("$ZodReadonly",(e,t)=>{Ke.init(e,t),Re(e,"propValues",r=>r.def.innerType._zod.propValues),Re(e,"values",r=>r.def.innerType._zod.values),Re(e,"optin",r=>r.def.innerType?._zod?.optin),Re(e,"optout",r=>r.def.innerType?._zod?.optout),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(qm):qm(o)}});function qm(e){return e.memo||(e.value=Object.freeze(e.value)),e}var Uh=C("$ZodCustom",(e,t)=>{_t.init(e,t),Ke.init(e,t),e._zod.parse=(r,n)=>r,e._zod.check=r=>{let n=r.value,o=t.fn(n);if(o instanceof Promise)return o.then(s=>Km(s,r,n,e));Km(o,r,n,e)}});function Km(e,t,r,n){if(!e){let o={code:"custom",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(o.params=n._zod.def.params),t.issues.push(Qn(o))}}var Ec=class extends Error{constructor(){super("Cannot parse a reference cycle that closes through a transform"),this.name="ZodCyclicError"}},Ac="~memo",qh=[];function Kh(e){return e!==null&&typeof e=="object"}function $c(e){return e.map(t=>t.path?{...t,path:t.path.slice()}:{...t})}var Hh=new WeakMap,ts=0,Ka=1,rs=2;function Ha(e,t,r){let n=Hh.get(e);if(n!==void 0)return n?rs:ts;if(t.has(e))return rs;t.add(e);let o=ts,s=u=>{if(o!==rs&&u?._zod){let d=Ha(u,t,r);d>o&&(o=d)}},a=(u,d)=>{let f=ts;for(let g of Reflect.ownKeys(u)){let h=Object.getOwnPropertyDescriptor(u,g);if(d&&!h.enumerable)continue;let p=h.get?Ka:h.value?._zod?Ha(h.value,t,r):ts;p>f&&(f=p)}return f},i=u=>{u>o&&(o=u)},c=e._zod.def,l=c.type;switch(l){case"object":{let u=Xn(c);i(u?a(u,!0):Ka),s(c.catchall);break}case"array":s(c.element);break;case"tuple":for(let u of c.items)s(u);s(c.rest);break;case"record":case"map":s(c.keyType),s(c.valueType);break;case"set":s(c.valueType);break;case"union":for(let u of c.options)s(u);break;case"intersection":s(c.left),s(c.right);break;case"optional":case"nullable":case"default":case"prefault":case"catch":case"readonly":case"nonoptional":case"promise":case"success":s(c.innerType);break;case"pipe":s(c.in),s(c.out);break;case"function":s(c.input),s(c.output);break;case"lazy":{let u=c._cachedInner??(r?e._zod.innerType:void 0);i(u?Ha(u,t,!1):Ka);break}case"template_literal":case"string":case"number":case"int":case"boolean":case"bigint":case"symbol":case"undefined":case"null":case"void":case"never":case"any":case"unknown":case"date":case"nan":case"enum":case"literal":case"file":case"transform":case"custom":break;default:for(let u in c){let d=Object.getOwnPropertyDescriptor(c,u);if(!d||d.get)continue;let f=d.value;if(!(!f||typeof f!="object")){if(f._zod)s(f);else if(Array.isArray(f))for(let g of f)s(g)}}}return t.delete(e),yx(e,o)}function yx(e,t){return t!==Ka&&Hh.set(e,t===rs),t}function kx(e,t){let r=e.buckets.get(t);return r||(r=new WeakMap,e.buckets.set(t,r)),r}var Ua,qa=[],vx={alloc(e,t,r){let n=Ua;if(!n)return r;Ua=void 0;let o={value:r,issues:null};return n.set(t.value,o),qa.push(o),r},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let r=e._zod.parse,n=(o,s)=>{if(s.direction!=="backward"&&zx(s,o.value))throw new Ec;return r(o,s)};e._zod.parse=n,e._zod.run===r&&(e._zod.run=n)})},attach(e){var t;let r,n=!1,o,s;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let a=e._zod.parse,i=(c,l)=>{if(r===void 0){let b=Ha(e,new Set,!1);if(b===ts)return e._zod.parse=a,e._zod.run===i&&(e._zod.run=a),a(c,l);b===rs||n?r=!0:n=!0}let u=c.value;if(!Kh(u))return a(c,l);let d=l[Ac];d||(d={buckets:new WeakMap,backEdges:void 0},l[Ac]=d);let f;o===l?f=s:(f=kx(d,e),o=l,s=f);let g=f.get(u);if(g)return c.value=g.value,g.issues?g.issues.length&&c.issues.push(...$c(g.issues)):(c.memo=!0,d.backEdges??(d.backEdges=new WeakSet),d.backEdges.add(g.value)),c;Ua=f;let h=qa.length,p=a(c,l);Ua=void 0;let m=qa.length>h?qa.pop():void 0;return p instanceof Promise?p.then(b=>(m&&(m.issues=b.issues.length?$c(b.issues):qh),b)):(m&&(m.issues=p.issues.length?$c(p.issues):qh),p)};e._zod.parse=i,e._zod.run===a&&(e._zod.run=i)})}};function Wh(){return vx}function zx(e,t){let r=e[Ac]?.backEdges;return r!==void 0&&Kh(t)&&r.has(t)}var _x=()=>{let e={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function t(s){return e[s]??null}let r={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",currency_code:"currency code",credit_card:"credit card number",iban:"IBAN",jwt:"JWT",template_literal:"input"},n={nan:"NaN"};function o(s,a){return s==="number"&&typeof a=="number"&&!Number.isFinite(a)?String(a):n[s]??s}return s=>{switch(s.code){case"invalid_type":{let a=o(s.expected),i=lc(s.input),c=o(i,s.input);return`Invalid input: expected ${a}, received ${c}`}case"invalid_value":return s.values.length===1?`Invalid input: expected ${$a(s.values[0])}`:`Invalid option: expected one of ${Sa(s.values,"|")}`;case"too_big":{let a=s.exact?"exactly ":s.inclusive?"<=":"<",i=t(s.origin);return i?`Too big: expected ${s.origin??"value"} to have ${a}${s.maximum.toString()} ${i.unit??"elements"}`:`Too big: expected ${s.origin??"value"} to be ${a}${s.maximum.toString()}`}case"too_small":{let a=s.exact?"exactly ":s.inclusive?">=":">",i=t(s.origin);return i?`Too small: expected ${s.origin} to have ${a}${s.minimum.toString()} ${i.unit}`:`Too small: expected ${s.origin} to be ${a}${s.minimum.toString()}`}case"invalid_format":{let a=s;return a.format==="starts_with"?`Invalid string: must start with "${a.prefix}"`:a.format==="ends_with"?`Invalid string: must end with "${a.suffix}"`:a.format==="includes"?`Invalid string: must include "${a.includes}"`:a.format==="regex"?`Invalid string: must match pattern ${a.pattern}`:`Invalid ${r[a.format]??s.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${s.divisor}`;case"unrecognized_keys":return`Unrecognized key${s.keys.length>1?"s":""}: ${Sa(s.keys,", ")}`;case"invalid_key":return`Invalid key in ${s.origin}`;case"invalid_union":return s.options&&Array.isArray(s.options)&&s.options.length>0?`Invalid discriminator value. Expected ${s.options.map(i=>`'${i}'`).join(" | ")}`:s.inclusive===!1?"Invalid input: more than one option matched":"Invalid input";case"invalid_element":return`Invalid value in ${s.origin}`;default:return"Invalid input"}}};function Jh(){return{localeError:_x()}}var Yh;var Oc=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...r){let n=r[0];return this._map.set(t,n),n&&typeof n=="object"&&"id"in n&&this._idmap.set(n.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){let r=this._map.get(t);return r&&typeof r=="object"&&"id"in r&&this._idmap.delete(r.id),this._map.delete(t),this}get(t){let r=t._zod.parent;if(r){let n={...this.get(r)??{}};delete n.id;let o={...n,...this._map.get(t)};return Object.keys(o).length?o:void 0}return this._map.get(t)}has(t){return this._map.has(t)}};function wx(){return new Oc}(Yh=globalThis).__zod_globalRegistry??(Yh.__zod_globalRegistry=wx());var xn=globalThis.__zod_globalRegistry;function Xh(e){return e.checks&&(e.checks=[...e.checks]),e}function Qh(e,t){return new e(Xh({type:"string",...ie(t)}))}function eg(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...ie(t)})}function tg(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...ie(t)})}function rg(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...ie(t)})}function ng(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...ie(t)})}function og(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...ie(t)})}function sg(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...ie(t)})}function ag(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...ie(t)})}function ig(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...ie(t)})}function lg(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...ie(t)})}function cg(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...ie(t)})}function ug(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...ie(t)})}function dg(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...ie(t)})}function pg(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...ie(t)})}function fg(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...ie(t)})}function mg(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...ie(t)})}function hg(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...ie(t)})}function gg(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...ie(t)})}function bg(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...ie(t)})}function yg(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...ie(t)})}function kg(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...ie(t)})}function vg(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...ie(t)})}function zg(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...ie(t)})}function Wa(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...ie(t)})}function Ja(e,t){return new e({type:"string",format:"date",check:"string_format",...ie(t)})}function Ya(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...ie(t)})}function Xa(e,t){return new e({type:"string",format:"duration",check:"string_format",...ie(t)})}function _g(e,t){return new e(Xh({type:"number",checks:[],...ie(t)}))}function wg(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...ie(t)})}function xg(e,t){return new e({type:"boolean",...ie(t)})}function Sg(e,t){return new e({type:"null",...ie(t)})}function Pg(e){return new e({type:"unknown"})}function $g(e,t){return new e({type:"never",...ie(t)})}function Qa(e,t){return new yc({check:"less_than",...ie(t),value:e,inclusive:!1})}function ns(e,t){return new yc({check:"less_than",...ie(t),value:e,inclusive:!0})}function ei(e,t){return new kc({check:"greater_than",...ie(t),value:e,inclusive:!1})}function os(e,t){return new kc({check:"greater_than",...ie(t),value:e,inclusive:!0})}function ti(e,t){return new xm({check:"multiple_of",...ie(t),value:e})}function ri(e,t){return new Pm({check:"max_length",...ie(t),maximum:e})}function to(e,t){return new $m({check:"min_length",...ie(t),minimum:e})}function ni(e,t){return new Em({check:"length_equals",...ie(t),length:e})}function Ic(e,t){return new Am({check:"string_format",format:"regex",...ie(t),pattern:e})}function Tc(e){return new Om({check:"string_format",format:"lowercase",...ie(e)})}function Cc(e){return new Im({check:"string_format",format:"uppercase",...ie(e)})}function Nc(e,t){return new Tm({check:"string_format",format:"includes",...ie(t),includes:e})}function Rc(e,t){return new Cm({check:"string_format",format:"starts_with",...ie(t),prefix:e})}function jc(e,t){return new Nm({check:"string_format",format:"ends_with",...ie(t),suffix:e})}function rn(e){return new Rm({check:"overwrite",tx:e})}function Mc(e){return rn(t=>t.normalize(e))}function Dc(){return rn(e=>e.trim())}function Lc(){return rn(e=>e.toLowerCase())}function Vc(){return rn(e=>e.toUpperCase())}function Fc(){return rn(e=>nc(e))}function Eg(e,t,r){return new e({type:"array",element:t,...ie(r)})}function Ag(e,t,r){let n=ie(r);return n.abort??(n.abort=!0),new e({type:"custom",check:"custom",fn:t,...n})}function Og(e,t,r){return new e({type:"custom",check:"custom",fn:t,...ie(r)})}function Ig(e,t){let r=xx(n=>(n.addIssue=o=>{if(typeof o=="string")n.issues.push(Qn(o,n.value,r._zod.def));else{let s=o;s.fatal&&(s.continue=!1),s.code??(s.code="custom"),"input"in s||(s.input=n.value),s.inst??(s.inst=r),s.continue??(s.continue=!r._zod.def.abort),n.issues.push(Qn(s))}},e(n.value,n)),t);return r}function xx(e,t){let r=new _t({check:"custom",...ie(t)});return r._zod.check=e,r}function ss(e,...t){for(let r of t)for(let n of Reflect.ownKeys(r))Object.prototype.propertyIsEnumerable.call(r,n)&&Kt(e,n,r[n]);return e}function Zc(e){let t=e?.target??"draft-2020-12";return t==="draft-4"&&(t="draft-04"),t==="draft-7"&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??xn,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??"ref",reused:e?.reused??"inline",intersections:[],deferred:[],external:e?.external??void 0}}function Vr(e,t,r,n,o){let s=typeof t.unrepresentable=="function"?t.unrepresentable({zodSchema:e,path:n.path,message:o}):t.unrepresentable;if(s==="any")return!1;if(s===void 0||s==="throw")throw new Error(o);return Object.assign(r,s),!0}function it(e,t,r={path:[],schemaPath:[]}){var n;let o=e._zod.def,s=t.seen.get(e);if(s)return s.count++,r.schemaPath.includes(e)&&(s.cycle=r.path),s.schema;let a={schema:{},count:1,cycle:void 0,path:r.path};t.seen.set(e,a),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let i=e._zod.toJSONSchema?.();if(i)a.schema=i;else{let u={...r,schemaPath:[...r.schemaPath,e],path:r.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,a.schema,u);else{let f=a.schema,g=t.processors[o.type];if(!g)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);g(e,t,f,u)}let d=e._zod.parent;d&&(a.ref||(a.ref=d),it(d,t,u),t.seen.get(d).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&ss(a.schema,c),t.io==="input"&&Nt(e)&&(delete a.schema.examples,delete a.schema.default),t.io==="input"&&"_prefault"in a.schema&&((n=a.schema).default??(n.default=a.schema._prefault)),delete a.schema._prefault,t.seen.get(e).schema}function Tg(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Gc(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");if(e.external&&e.sharedDefsExtractedFor===e.external)return;let n=new Map;for(let a of e.seen.entries()){let i=e.metadataRegistry.get(a[0])?.id;if(i){let c=n.get(i);if(c&&c!==a[0])throw new Error(`Duplicate schema id "${i}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);n.set(i,a[0])}}let o=a=>{let i=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let d=e.external.registry.get(a[0])?.id,f=e.external.uri??(h=>h);if(d)return{ref:f(d)};let g=a[1].defId??a[1].schema.id??`schema${e.counter++}`;return a[1].defId=g,{defId:g,ref:`${f("__shared")}#/${i}/${Tg(g)}`}}let c="#",l=`${c}/${i}/`;if(a[1]===r&&!a[1].schema.id)return{ref:c};let u=a[1].schema.id??`__schema${e.counter++}`;return{defId:u,ref:l+Tg(u)}},s=a=>{if(a[1].schema.$ref)return;let i=a[1],{ref:c,defId:l}=o(a);i.def={...i.schema},l&&(i.defId=l);let u=i.schema;for(let d in u)delete u[d];u.$ref=c};if(e.cycles==="throw")for(let a of e.seen.entries()){let i=a[1];if(i.cycle)throw new Error(`Cycle detected: #/${i.cycle?.join("/")}/<root>
71
71
 
72
- Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let a of e.seen.entries()){let i=a[1];if(t===a[0]){s(a);continue}if(e.external){let c=e.external.registry.get(a[0])?.id;if(t!==a[0]&&c){s(a);continue}}if(e.metadataRegistry.get(a[0])?.id){s(a);continue}if(i.cycle){s(a);continue}i.count>1&&e.reused==="ref"&&s(a)}e.external&&(e.sharedDefsExtractedFor=e.external)}function $g(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let r=[];for(let n of t){if(!n||typeof n!="object")return;$g(n);let o=Object.keys(n);if(o.length!==1||o[0]!=="type")return;let s=n.type;for(let a of Array.isArray(s)?s:[s]){if(typeof a!="string")return;r.includes(a)||r.push(a)}}delete e.anyOf,e.type=r.length===1?r[0]:r}var Eg=new Set(["type","properties","required","additionalProperties"]),Sg=["oneOf","anyOf"];function Pg(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!="object"||t===null?null:Object.keys(t).length?t:null}function Rc(e){let t=[];for(let s of e){if(typeof s!="object"||s.type!=="object")return null;for(let a in s)if(!Eg.has(a))return null;t.push(s)}let r={},n=new Set;for(let s of t){for(let a in s.properties){if(Object.prototype.hasOwnProperty.call(r,a))continue;let i=[];for(let c of t){let u=c.properties?.[a]??Pg(c);u!=null&&(i.some(d=>JSON.stringify(d)===JSON.stringify(u))||i.push(u))}let l=i.length===1?i[0]:Rc(i)??{allOf:i};qt(r,a,l)}for(let a of s.required??[])n.add(a)}let o={type:"object",properties:r};if(n.size&&(o.required=[...n]),t.every(s=>s.additionalProperties===!1))o.additionalProperties=!1;else{let s=[];for(let a of t){let i=Pg(a);i&&!s.some(l=>JSON.stringify(l)===JSON.stringify(i))&&s.push(i)}s.length===1?o.additionalProperties=s[0]:s.length>1&&(o.additionalProperties={allOf:s})}return o}function dx(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let o of Eg)if(o in e)return;let r=t.filter(o=>Sg.some(s=>Array.isArray(o[s]))),n=null;if(!r.length)n=Rc(t);else{let o=r[0],s=Sg.find(l=>Array.isArray(o[l]));if(Object.keys(o).length!==1)return;let a=t.filter(l=>l!==o),i=o[s].map(l=>Rc([...a,l]));if(i.some(l=>!l))return;n={[s]:i}}n&&(delete e.allOf,ts(e,n))}function Dc(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let n=i=>{let l=e.seen.get(i);if(l.ref===null)return;let c=l.def??l.schema,u={...c},d=l.ref;if(l.ref=null,d){n(d);let m=e.seen.get(d),b=m.schema;if(b.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(c.allOf=c.allOf??[],c.allOf.push(b)):ts(c,b),ts(c,u),i._zod.parent===d)for(let h in c)h==="$ref"||h==="allOf"||h in u||delete c[h];if(b.$ref&&m.def)for(let h in c)h==="$ref"||h==="allOf"||h in m.def&&JSON.stringify(c[h])===JSON.stringify(m.def[h])&&delete c[h]}let p=i._zod.parent;if(p&&p!==d){n(p);let m=e.seen.get(p);if(m?.schema.$ref&&(c.$ref=m.schema.$ref,m.def))for(let b in c)b==="$ref"||b==="allOf"||b in m.def&&JSON.stringify(c[b])===JSON.stringify(m.def[b])&&delete c[b]}e.override({zodSchema:i,jsonSchema:c,path:l.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let i of[...e.seen.entries()].reverse())n(i[0]);if(e.target!=="openapi-3.0")for(let i of e.seen.entries())$g(i[1].def??i[1].schema);for(let i of e.deferred)i();if(e.intersections.length){let i=new Map;for(let l of e.seen.values())for(let c of[l.schema,l.def]){let u=c?.allOf;if(!Array.isArray(u))continue;let d=i.get(u);d?d.push(c):i.set(u,[c])}for(let l of e.intersections)for(let c of i.get(l)??[])dx(c)}}let o={};if(e.target==="draft-2020-12"?o.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?o.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?o.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let i=e.external.registry.get(t)?.id;if(!i)throw new Error("Schema is missing an `id` property");o.$id=e.external.uri(i)}ts(o,r.defId?r.schema:r.def??r.schema);let s=e.metadataRegistry.get(t)?.id;s!==void 0&&o.id===s&&delete o.id;let a=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let i of e.seen.entries()){let l=i[1];l.def&&l.defId&&(l.def.id===l.defId&&delete l.def.id,qt(a,l.defId,l.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(a).length>0&&(e.target==="draft-2020-12"?o.$defs=a:o.definitions=a);try{let i=JSON.parse(JSON.stringify(o));return Object.defineProperty(i,"~standard",{value:{...t["~standard"],jsonSchema:{input:rs(t,"input",e.processors),output:rs(t,"output",e.processors)}},enumerable:!1,writable:!1}),i}catch{throw new Error("Error converting schema to JSON.")}}function Ct(e,t){let r=t??{seen:new Set};if(r.seen.has(e))return!1;r.seen.add(e);let n=e._zod.def;if(n.type==="transform")return!0;if(n.type==="array")return Ct(n.element,r);if(n.type==="set")return Ct(n.valueType,r);if(n.type==="lazy")return Ct(n.getter(),r);if(n.type==="promise"||n.type==="optional"||n.type==="nonoptional"||n.type==="nullable"||n.type==="readonly"||n.type==="default"||n.type==="prefault"||n.type==="catch")return Ct(n.innerType,r);if(n.type==="intersection")return Ct(n.left,r)||Ct(n.right,r);if(n.type==="record"||n.type==="map")return Ct(n.keyType,r)||Ct(n.valueType,r);if(n.type==="pipe")return e._zod.traits.has("$ZodCodec")?!0:Ct(n.in,r)||Ct(n.out,r);if(n.type==="object"){for(let o in n.shape)if(Ct(n.shape[o],r))return!0;return!1}if(n.type==="union"){for(let o of n.options)if(Ct(o,r))return!0;return!1}if(n.type==="tuple"){for(let o of n.items)if(Ct(o,r))return!0;return!!(n.rest&&Ct(n.rest,r))}return!1}var Ag=(e,t={})=>r=>{let n=jc({...r,processors:t});return st(e,n),Mc(n,e),Dc(n,e)},rs=(e,t,r={})=>n=>{let{libraryOptions:o,target:s}=n??{},a=jc({...o??{},target:s,io:t,processors:r});return st(e,a),Mc(a,e),Dc(a,e)};var eo=(e,t,r)=>{(e[t]===void 0||r>e[t])&&(e[t]=r)},to=(e,t,r)=>{(e[t]===void 0||r<e[t])&&(e[t]=r)},Og=(e,t)=>{eo(e,"minimum",t),to(e,"maximum",t)},Ng=(e,t)=>{e.multipleOf??(e.multipleOf=[]),e.multipleOf.includes(t)||e.multipleOf.push(t)},Rg=(e,t)=>{e.patterns??(e.patterns=new Set),e.patterns.add(t)},jg=(e,t)=>{e.mime=e.mime?e.mime.filter(r=>t.includes(r)):[...t]},Mg=(e,t)=>{e.format=t,t.includes("int")&&(e.isInt=!0)},Ig=(e,t)=>eo(e,"minimum",t.minimum),Tg=(e,t)=>to(e,"maximum",t.maximum),Cg=e=>(t,r)=>{Mg(t,r.format);let[n,o]=e[r.format];eo(t,"minimum",n),to(t,"maximum",o)},px={greater_than:(e,t)=>eo(e,t.inclusive?"minimum":"exclusiveMinimum",t.value),less_than:(e,t)=>to(e,t.inclusive?"maximum":"exclusiveMaximum",t.value),multiple_of:(e,t)=>Ng(e,t.value),number_format:Cg(Bo),bigint_format:Cg(xa),min_length:Ig,max_length:Tg,length_equals:(e,t)=>Og(e,t.length),min_size:Ig,max_size:Tg,size_equals:(e,t)=>Og(e,t.size),string_format:(e,t)=>{Mg(e,t.format),t.pattern&&Rg(e,t.pattern),(t.format==="base64"||t.format==="base64url")&&(e.contentEncoding=t.format),(t.local||t.precision===-1)&&(e.laxFormat=!0)},mime_type:(e,t)=>jg(e,t.mime)};function Xt(e){let t={},r=e._zod.def,n=e._zod.traits.has("$ZodCheck")?[e,...r.checks??[]]:r.checks??[];for(let s of n)px[s._zod.def.check]?.(t,s._zod.def);let o=e._zod.bag;o.minimum!==void 0&&eo(t,"minimum",o.minimum),o.exclusiveMinimum!==void 0&&eo(t,"exclusiveMinimum",o.exclusiveMinimum),o.maximum!==void 0&&to(t,"maximum",o.maximum),o.exclusiveMaximum!==void 0&&to(t,"exclusiveMaximum",o.exclusiveMaximum),o.multipleOf!==void 0&&Ng(t,o.multipleOf),o.format!==void 0&&(t.format??(t.format=o.format),o.format.includes("int")&&(t.isInt=!0)),o.mime&&jg(t,o.mime);for(let s of o.patterns??[])Rg(t,s);return t}var fx={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},mx=new Map([[hc,nm],[Va,om]]),Dg=e=>mx.get(e)??e,Lg=(e,t,r,n)=>{let o=r;o.type="string";let{minimum:s,maximum:a,format:i,patterns:l,contentEncoding:c,laxFormat:u}=Xt(e);if(typeof s=="number"&&(o.minLength=s),typeof a=="number"&&(o.maxLength=a),i&&(o.format=fx[i]??i,o.format===""&&delete o.format,(i==="time"||u)&&delete o.format),c&&(o.contentEncoding=c),l&&l.size>0){let d=[...l].map(Dg);d.length===1?o.pattern=d[0].source:d.length>1&&(o.allOf=[...d.map(p=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:p.source}))])}},Vg=(e,t,r,n)=>{let o=r,{minimum:s,maximum:a,multipleOf:i,exclusiveMaximum:l,exclusiveMinimum:c,isInt:u}=Xt(e);o.type=u?"integer":"number";let d=typeof c=="number"&&c>=(s??Number.NEGATIVE_INFINITY),p=typeof l=="number"&&l<=(a??Number.POSITIVE_INFINITY),m=t.target==="draft-04"||t.target==="openapi-3.0";if(d?m?(o.minimum=c,o.exclusiveMinimum=!0):o.exclusiveMinimum=c:typeof s=="number"&&(o.minimum=s),p?m?(o.maximum=l,o.exclusiveMaximum=!0):o.exclusiveMaximum=l:typeof a=="number"&&(o.maximum=a),i){let b=new Set;for(let g of i)Number.isFinite(g)&&g!==0?b.add(Math.abs(g)):Lr(e,t,o,n,`A multipleOf divisor of ${g} cannot be represented in JSON Schema`);let[f,...h]=b;f!==void 0&&(o.multipleOf=f),h.length&&(o.allOf=[...o.allOf??[],...h.map(g=>({multipleOf:g}))])}},Fg=(e,t,r,n)=>{r.type="boolean"};var Zg=(e,t,r,n)=>{t.target==="openapi-3.0"?(r.type="string",r.nullable=!0,r.enum=[null]):r.type="null"};var Bg=(e,t,r,n)=>{r.not={}};var Gg=(e,t,r,n)=>{};var Ug=(e,t,r,n)=>{let o=e._zod.def,s=Kn(o.entries);if(s.length===0){r.not={};return}s.every(a=>typeof a=="number")&&(r.type="number"),s.every(a=>typeof a=="string")&&(r.type="string"),r.enum=s},qg=(e,t,r,n)=>{let o=e._zod.def;if(o.values.length===0){r.not={};return}let s=[];for(let a of o.values)if(a===void 0){if(Lr(e,t,r,n,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof a=="bigint"){if(Lr(e,t,r,n,"BigInt literals cannot be represented in JSON Schema"))return;s.push(Number(a))}else s.push(a);if(s.length!==0)if(s.length===1){let a=s[0];r.type=a===null?"null":typeof a,t.target==="draft-04"||t.target==="openapi-3.0"?r.enum=[a]:r.const=a}else s.every(a=>typeof a=="number")&&(r.type="number"),s.every(a=>typeof a=="string")&&(r.type="string"),s.every(a=>typeof a=="boolean")&&(r.type="boolean"),s.every(a=>a===null)&&(r.type="null"),r.enum=s};var Kg=(e,t,r,n)=>{Lr(e,t,r,n,"Custom types cannot be represented in JSON Schema")};var Hg=(e,t,r,n)=>{Lr(e,t,r,n,"Transforms cannot be represented in JSON Schema")};var Wg=(e,t,r,n)=>{let o=r,s=e._zod.def,{minimum:a,maximum:i}=Xt(e);typeof a=="number"&&(o.minItems=a),typeof i=="number"&&(o.maxItems=i),o.type="array",o.items=st(s.element,t,{...n,path:[...n.path,"items"]})};function ei(e){let t=e._zod.def;return t.type==="pipe"&&t.in._zod.traits.has("$ZodTransform")?ei(t.out):t.type==="catch"?ei(t.innerType):e._zod.optin}var Jg=(e,t,r,n)=>{let o=r,s=e._zod.def,a=s.shape;if(Object.getOwnPropertySymbols(a).length&&Lr(e,t,o,n,"Symbol keys cannot be represented in JSON Schema"))return;o.type="object",o.properties={};for(let c in a)qt(o.properties,c,st(a[c],t,{...n,path:[...n.path,"properties",c]}));let l=[];for(let c of Object.keys(a)){let u=s.shape[c];(t.io==="input"?ei(u)===void 0:u._zod.optout===void 0)&&l.push(c)}l.length>0&&(o.required=l),s.catchall?._zod.def.type==="never"?o.additionalProperties=!1:s.catchall?s.catchall&&(o.additionalProperties=st(s.catchall,t,{...n,path:[...n.path,"additionalProperties"]})):t.io==="output"&&(o.additionalProperties=!1)},Yg=(e,t,r,n)=>{let o=e._zod.def,s=o.inclusive===!1,a=o.options.map((i,l)=>st(i,t,{...n,path:[...n.path,s?"oneOf":"anyOf",l]}));s?r.oneOf=a:r.anyOf=a},Xg=(e,t,r,n)=>{let o=e._zod.def,s=st(o.left,t,{...n,path:[...n.path,"allOf",0]}),a=st(o.right,t,{...n,path:[...n.path,"allOf",1]}),i=c=>"allOf"in c&&Object.keys(c).length===1,l=[...i(s)?s.allOf:[s],...i(a)?a.allOf:[a]];r.allOf=l,t.intersections.push(l)};function Lc(e,t,r){if(t.$ref){if(r.has(t))return t;r.add(t);let b=e.get(t)?.def;if(!b)return t;let f=Lc(e,b,r);return f===b?t:f}for(let b of["anyOf","oneOf"]){let f=t[b];if(!Array.isArray(f))continue;let h=f.map(g=>Lc(e,g,r));h.some((g,v)=>g!==f[v])&&(t={...t,[b]:h})}let n=Array.isArray(t.type)?t.type:[t.type],o=!n.includes("string")&&n.some(b=>b==="number"||b==="integer"),s=t.enum??(t.const!==void 0?[t.const]:void 0);if(!o&&!s?.some(b=>typeof b=="number"))return t;let{minimum:a,maximum:i,exclusiveMinimum:l,exclusiveMaximum:c,multipleOf:u,format:d,id:p,...m}=t;return m.enum?m.enum=m.enum.map(b=>typeof b=="number"?String(b):b):typeof m.const=="number"&&(m.const=String(m.const)),o&&(m.type="string",s||(m.pattern=(n.includes("number")?Ho:cc).source)),m}var Vc=new WeakMap;function hx(e){let t=new Map;for(let n of e.seen.values())n.def&&!t.has(n.schema)&&t.set(n.schema,n);let r=new Map;for(let n of Vc.get(e)??[]){let o=e.seen.get(n),s=(o?.def??o?.schema)?.propertyNames;if(!s||s===!0||r.has(s))continue;let a=Lc(t,s,new Set);a!==s&&r.set(s,a)}if(r.size)for(let n of e.seen.values())for(let o of[n.schema,n.def]){let s=o&&r.get(o.propertyNames);s&&(o.propertyNames=s)}}var Qg=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="object";let a=s.keyType,i=Xt(a).patterns;if(s.mode==="loose"&&i&&i.size>0){let u=st(s.valueType,t,{...n,path:[...n.path,"patternProperties","*"]});o.patternProperties={};for(let d of i)qt(o.patternProperties,Dg(d).source,u)}else{if(t.target==="draft-07"||t.target==="draft-2020-12"){o.propertyNames=st(s.keyType,t,{...n,path:[...n.path,"propertyNames"]});let u=Vc.get(t);u||(u=[],Vc.set(t,u),t.deferred.push(()=>hx(t))),u.push(e)}o.additionalProperties=st(s.valueType,t,{...n,path:[...n.path,"additionalProperties"]})}let l=a._zod.values,c=t.io==="input"&&ei(s.valueType)!==void 0;if(l&&!s.partial&&!c){let u=[...l].filter(d=>typeof d=="string"||typeof d=="number");u.length>0&&(o.required=u.map(String))}},eb=(e,t,r,n)=>{let o=e._zod.def,s=st(o.innerType,t,n),a=t.seen.get(e);t.target==="openapi-3.0"?(a.ref=o.innerType,r.nullable=!0):r.anyOf=[s,{type:"null"}]},tb=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Fc=Symbol();function rb(e,t,r,n,o){let s=!1,a=JSON.stringify(e,(i,l)=>typeof l!="bigint"?l:(s=!0,null));return s?(Lr(t,r,n,o,"BigInt defaults cannot be represented in JSON Schema"),Fc):JSON.parse(a)}var nb=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType;let a=rb(o.defaultValue,e,t,r,n);a!==Fc&&(r.default=a)},ob=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);if(s.ref=o.innerType,t.io!=="input")return;let a=rb(o.defaultValue,e,t,r,n);a!==Fc&&(r._prefault=a)},sb=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType;let a;try{a=o.catchValue(void 0)}catch{Lr(e,t,r,n,"Dynamic catch values are not supported in JSON Schema");return}r.default=a},ab=(e,t,r,n)=>{let o=e._zod.def,s=o.in._zod.traits.has("$ZodTransform"),a=t.io==="input"?s?o.out:o.in:o.out;st(a,t,n);let i=t.seen.get(e);i.ref=a},ib=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,r.readOnly=!0};var Zc=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType};var lb=new WeakSet([Object.prototype,Error.prototype]);function ti(e,t,r){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let n=r(this);return Object.defineProperty(this,t,{value:n,configurable:!0,writable:!0}),n},set(n){Object.defineProperty(this,t,{value:n,configurable:!0,writable:!0})}})}var xx=(e,t)=>{Af.init(e,t),e.name="ZodError";let r=Object.getPrototypeOf(e);lb.has(r)||(lb.add(r),ti(r,"format",n=>o=>Tf(n,o)),ti(r,"flatten",n=>o=>If(n,o)),ti(r,"addIssue",n=>o=>{n.issues.push(o),n.message=JSON.stringify(n.issues,Hn,2)}),ti(r,"addIssues",n=>o=>{n.issues.push(...o),n.message=JSON.stringify(n.issues,Hn,2)}),Object.defineProperty(r,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))};var Ht=C("ZodError",xx,void 0,{Parent:Error});var cb=Aa(Ht),ub=Oa(Ht),db=Ko(Ht),pb=Ia(Ht),fb=Nf(Ht),mb=Rf(Ht),hb=jf(Ht),gb=Mf(Ht),bb=Df(Ht),yb=Lf(Ht),kb=Vf(Ht),vb=Ff(Ht);function Px(){Mt.localeError||Kt(Zh())}function ni(){Mt.memoizer||Kt({memoizer:Fh()})}var et=C("ZodType",(e,t)=>(Px(),Ke.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(le.mergeDefs(t,{checks:[...t.checks??[],...e.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return lr(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(hS(e,t))},superRefine(e,t){return this.check(gS(e,t))},overwrite(e){return this.check(tn(e))},optional(){return Qe(this)},exactOptional(){return nS(this)},nullable(){return wb(this)},nullish(){return Qe(wb(this))},nonoptional(e){return cS(this,e)},array(){return Ie(this)},or(e){return We([this,e])},and(e){return oi(this,e)},transform(e){return xb(this,Ob(e))},default(e){return aS(this,e)},prefault(e){return lS(this,e)},catch(e){return dS(this,e)},pipe(e){return xb(this,e)},readonly(){return mS(this)},describe(e){let t=this.clone();return _n.add(t,{description:e}),t},meta(...e){if(e.length===0)return _n.get(this);let t=this.clone();return _n.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return le.hide(this,"~standard",{...mc(this),jsonSchema:{input:rs(this,"input"),output:rs(this,"output")}})},set"~standard"(e){le.own(this,"~standard",e)},parse:function e(t,r){return cb(this,t,r,{callee:e})},parseAsync:async function e(t,r){return await ub(this,t,r,{callee:e})},safeParse(e,t){return db(this,e,t)},async safeParseAsync(e,t){return pb(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){le.own(this,"spa",e)},validate(e,t){return Ta(this,e,t)},validateAsync(e,t){return Ca(this,e,t)},encode:function e(t,r){return fb(this,t,r,{callee:e})},decode:function e(t,r){return mb(this,t,r,{callee:e})},encodeAsync:async function e(t,r){return await hb(this,t,r,{callee:e})},decodeAsync:async function e(t,r){return await gb(this,t,r,{callee:e})},safeEncode(e,t){return bb(this,e,t)},safeDecode(e,t){return yb(this,e,t)},async safeEncodeAsync(e,t){return kb(this,e,t)},async safeDecodeAsync(e,t){return vb(this,e,t)},toJSONSchema(e){return Ag(this,{})(e)},get description(){return _n.get(this)?.description},get _def(){return this._zod.def}}),Sb=C("_ZodString",(e,t)=>{La.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Lg(e,r,n,o)},le.derived({format:e=>Xt(e).format??null,minLength:e=>Xt(e).minimum??null,maxLength:e=>Xt(e).maximum??null},{regex(...e){return this.check(xc(...e))},includes(...e){return this.check($c(...e))},startsWith(...e){return this.check(Ec(...e))},endsWith(...e){return this.check(Ac(...e))},min(...e){return this.check(Qn(...e))},max(...e){return this.check(Xa(...e))},length(...e){return this.check(Qa(...e))},nonempty(...e){return this.check(Qn(1,...e))},lowercase(e){return this.check(Sc(e))},uppercase(e){return this.check(Pc(e))},trim(){return this.check(Ic())},normalize(...e){return this.check(Oc(...e))},toLowerCase(){return this.check(Tc())},toUpperCase(){return this.check(Cc())},slugify(){return this.check(Nc())}})),$x=C("ZodString",(e,t)=>{La.init(e,t),Sb.init(e,t)},{email(e){return this.check(qh(Ex,e))},url(e){return this.check(Xh(Ox,e))},jwt(e){return this.check(fg(Ux,e))},emoji(e){return this.check(Qh(Ix,e))},guid(e){return this.check(Kh(Ax,e))},uuid(e){return this.check(Hh(ri,e))},uuidv4(e){return this.check(Wh(ri,e))},uuidv6(e){return this.check(Jh(ri,e))},uuidv7(e){return this.check(Yh(ri,e))},nanoid(e){return this.check(eg(Tx,e))},cuid(e){return this.check(tg(Cx,e))},cuid2(e){return this.check(rg(Nx,e))},ulid(e){return this.check(ng(Rx,e))},base64(e){return this.check(ug(Zx,e))},base64url(e){return this.check(dg(Bx,e))},xid(e){return this.check(og(jx,e))},ksuid(e){return this.check(sg(Mx,e))},ipv4(e){return this.check(ag(Dx,e))},ipv6(e){return this.check(ig(Lx,e))},cidrv4(e){return this.check(lg(Vx,e))},cidrv6(e){return this.check(cg(Fx,e))},e164(e){return this.check(pg(Gx,e))},datetime(e){return this.check(Ua(os,e))},date(e){return this.check(qa(ss,e))},time(e){return this.check(Ka(as,e))},duration(e){return this.check(Ha(is,e))}});function I(e){return Uh($x,e)}var rt=C("ZodStringFormat",(e,t)=>{He.init(e,t),Sb.init(e,t)}),os=C("ZodISODateTime",(e,t)=>{eh.init(e,t),rt.init(e,t)}),ss=C("ZodISODate",(e,t)=>{th.init(e,t),rt.init(e,t)}),as=C("ZodISOTime",(e,t)=>{rh.init(e,t),rt.init(e,t)}),is=C("ZodISODuration",(e,t)=>{nh.init(e,t),rt.init(e,t)}),Ex=C("ZodEmail",(e,t)=>{Bm.init(e,t),rt.init(e,t)});var Ax=C("ZodGUID",(e,t)=>{Fm.init(e,t),rt.init(e,t)});var ri=C("ZodUUID",(e,t)=>{Zm.init(e,t),rt.init(e,t)});var Ox=C("ZodURL",(e,t)=>{qm.init(e,t),rt.init(e,t)});var Ix=C("ZodEmoji",(e,t)=>{Km.init(e,t),rt.init(e,t)});var Tx=C("ZodNanoID",(e,t)=>{Hm.init(e,t),rt.init(e,t)});var Cx=C("ZodCUID",(e,t)=>{Wm.init(e,t),rt.init(e,t)});var Nx=C("ZodCUID2",(e,t)=>{Jm.init(e,t),rt.init(e,t)});var Rx=C("ZodULID",(e,t)=>{Ym.init(e,t),rt.init(e,t)});var jx=C("ZodXID",(e,t)=>{Xm.init(e,t),rt.init(e,t)});var Mx=C("ZodKSUID",(e,t)=>{Qm.init(e,t),rt.init(e,t)});var Dx=C("ZodIPv4",(e,t)=>{oh.init(e,t),rt.init(e,t)});var Lx=C("ZodIPv6",(e,t)=>{ah.init(e,t),rt.init(e,t)});var Vx=C("ZodCIDRv4",(e,t)=>{ih.init(e,t),rt.init(e,t)});var Fx=C("ZodCIDRv6",(e,t)=>{lh.init(e,t),rt.init(e,t)});var Zx=C("ZodBase64",(e,t)=>{uh.init(e,t),rt.init(e,t)});var Bx=C("ZodBase64URL",(e,t)=>{dh.init(e,t),rt.init(e,t)});var Gx=C("ZodE164",(e,t)=>{ph.init(e,t),rt.init(e,t)});var Ux=C("ZodJWT",(e,t)=>{fh.init(e,t),rt.init(e,t)});var Pb=C("ZodNumber",(e,t)=>{gc.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Vg(e,r,n,o),e.isFinite=!0},le.derived({minValue:e=>{let{minimum:t,exclusiveMinimum:r}=Xt(e);return Math.max(t??Number.NEGATIVE_INFINITY,r??Number.NEGATIVE_INFINITY)},maxValue:e=>{let{maximum:t,exclusiveMaximum:r}=Xt(e);return Math.min(t??Number.POSITIVE_INFINITY,r??Number.POSITIVE_INFINITY)},isInt:e=>{let{isInt:t,multipleOf:r}=Xt(e);return!!t||!!r?.some(Number.isSafeInteger)},format:e=>Xt(e).format??null},{gt(e,t){return this.check(Ja(e,t))},gte(e,t){return this.check(es(e,t))},min(e,t){return this.check(es(e,t))},lt(e,t){return this.check(Wa(e,t))},lte(e,t){return this.check(Qo(e,t))},max(e,t){return this.check(Qo(e,t))},int(e){return this.check(zb(e))},safe(e){return this.check(zb(e))},positive(e){return this.check(Ja(0,e))},nonnegative(e){return this.check(es(0,e))},negative(e){return this.check(Wa(0,e))},nonpositive(e){return this.check(Qo(0,e))},multipleOf(e,t){return this.check(Ya(e,t))},step(e,t){return this.check(Ya(e,t))},finite(){return this}}));function De(e){return mg(Pb,e)}var qx=C("ZodNumberFormat",(e,t)=>{mh.init(e,t),Pb.init(e,t)});function zb(e){return hg(qx,e)}var Kx=C("ZodBoolean",(e,t)=>{hh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Fg(e,r,n,o)});function ht(e){return gg(Kx,e)}var Hx=C("ZodNull",(e,t)=>{gh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Zg(e,r,n,o)});function $b(e){return bg(Hx,e)}var Wx=C("ZodUnknown",(e,t)=>{bh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Gg(e,r,n,o)});function Xe(){return yg(Wx)}var Jx=C("ZodNever",(e,t)=>{yh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Bg(e,r,n,o)});function Yx(e){return kg(Jx,e)}var Xx=C("ZodArray",(e,t)=>{ni(),kh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Wg(e,r,n,o),e.element=t.element},{min(e,t){return this.check(Qn(e,t))},nonempty(e){return this.check(Qn(1,e))},max(e,t){return this.check(Xa(e,t))},length(e,t){return this.check(Qa(e,t))},unwrap(){return this.element}});function Ie(e,t){return vg(Xx,e,t)}var Eb=C("ZodObject",(e,t)=>{ni(),_h.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Jg(e,r,n,o),le.installLazyProp(e,"shape",r=>r._zod.def.shape,!1)},{keyof(){return Dt(Object.keys(this._zod.def.shape))},catchall(e){return this.clone(le.mergeDefs(this._zod.def,{catchall:e}))},passthrough(){return this.clone(le.mergeDefs(this._zod.def,{catchall:Xe()}))},loose(){return this.clone(le.mergeDefs(this._zod.def,{catchall:Xe()}))},strict(){return this.clone(le.mergeDefs(this._zod.def,{catchall:Yx()}))},strip(){return this.clone(le.mergeDefs(this._zod.def,{catchall:void 0}))},extend(e){return le.extend(this,e)},safeExtend(e){return le.safeExtend(this,e)},merge(e){return le.merge(this,e)},pick(e){return le.pick(this,e)},omit(e){return le.omit(this,e)},partial(...e){return le.partial(Ib,this,e[0])},exactPartial(...e){return le.partial(Tb,this,e[0],"exactPartial")},required(...e){return le.required(Cb,this,e[0])}});function J(e,t){let r={type:"object",shape:e??{},...le.normalizeParams(t)};return new Eb(r)}function Nt(e,t){return new Eb({type:"object",shape:e,catchall:Xe(),...le.normalizeParams(t)})}var Ab=C("ZodUnion",(e,t)=>{bc.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Yg(e,r,n,o),e.options=t.options});function We(e,t){return new Ab({type:"union",options:e,...le.normalizeParams(t)})}var Qx=C("ZodDiscriminatedUnion",(e,t)=>{Ab.init(e,t),wh.init(e,t)});function Gc(e,t,r){return new Qx({type:"union",options:t,discriminator:e,...le.normalizeParams(r)})}var eS=C("ZodIntersection",(e,t)=>{xh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Xg(e,r,n,o)});function oi(e,t){return new eS({type:"intersection",left:e,right:t})}var _b=C("ZodRecord",(e,t)=>{ni(),Sh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Qg(e,r,n,o),e.keyType=t.keyType,e.valueType=t.valueType});function Be(e,t,r){return!t||!t._zod?new _b({type:"record",keyType:I(),valueType:e,...le.normalizeParams(t)}):new _b({type:"record",keyType:e,valueType:t,...le.normalizeParams(r)})}var Bc=C("ZodEnum",(e,t)=>{Ph.init(e,t),et.init(e,t),e._zod.processJSONSchema=(n,o,s)=>Ug(e,n,o,s),e.enum=t.entries,e.options=[...e._zod.values];let r=new Set(Object.keys(t.entries));e.extract=(n,o)=>{let s={};for(let a of n)if(r.has(a))s[a]=t.entries[a];else throw new Error(`Key ${a} not found in enum`);return new Bc({...t,checks:[],...le.normalizeParams(o),entries:s})},e.exclude=(n,o)=>{let s={...t.entries};for(let a of n)if(r.has(a))delete s[a];else throw new Error(`Key ${a} not found in enum`);return new Bc({...t,checks:[],...le.normalizeParams(o),entries:s})}});function Dt(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new Bc({type:"enum",entries:r,...le.normalizeParams(t)})}var tS=C("ZodLiteral",(e,t)=>{$h.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>qg(e,r,n,o),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function oe(e,t){return new tS({type:"literal",values:Array.isArray(e)?e:[e],...le.normalizeParams(t)})}var rS=C("ZodTransform",(e,t)=>{ni(),Eh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Hg(e,r,n,o),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Xn(e.constructor.name);r.addIssue=s=>{if(typeof s=="string")r.issues.push(le.issue(s,r.value,t));else{let a=s;a.fatal&&(a.continue=!1),a.code??(a.code="custom"),"input"in a||(a.input=r.value),a.inst??(a.inst=e),r.issues.push(le.issue(a))}};let o=t.transform(r.value,r);return o instanceof Promise?o.then(s=>(r.value=s,r)):(r.value=o,r)}});function Ob(e){return new rS({type:"transform",transform:e})}var Ib=C("ZodOptional",(e,t)=>{yc.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Zc(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function Qe(e){return new Ib({type:"optional",innerType:e})}var Tb=C("ZodExactOptional",(e,t)=>{Ah.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Zc(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function nS(e){return new Tb({type:"optional",innerType:e})}var oS=C("ZodNullable",(e,t)=>{Oh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>eb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function wb(e){return new oS({type:"nullable",innerType:e})}var sS=C("ZodDefault",(e,t)=>{Ih.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>nb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function aS(e,t){return new sS({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():le.shallowClone(t)}})}var iS=C("ZodPrefault",(e,t)=>{Th.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>ob(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function lS(e,t){return new iS({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():le.shallowClone(t)}})}var Cb=C("ZodNonOptional",(e,t)=>{Ch.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>tb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function cS(e,t){return new Cb({type:"nonoptional",innerType:e,...le.normalizeParams(t)})}var uS=C("ZodCatch",(e,t)=>{Nh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>sb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function dS(e,t){return new uS({type:"catch",innerType:e,catchValue:typeof t=="function"?t:le.constantCatch(t)})}var Nb=C("ZodPipe",(e,t)=>{kc.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>ab(e,r,n,o),e.in=t.in,e.out=t.out});function xb(e,t){return new Nb({type:"pipe",in:e,out:t})}var pS=C("ZodPreprocess",(e,t)=>{Nb.init(e,t),Rh.init(e,t)}),fS=C("ZodReadonly",(e,t)=>{jh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>ib(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function mS(e){return new fS({type:"readonly",innerType:e})}var Rb=C("ZodCustom",(e,t)=>{Mh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Kg(e,r,n,o)});function jb(e,t){return zg(Rb,e??(()=>!0),t)}function hS(e,t={}){return _g(Rb,e,t)}function gS(e,t){return wg(e,t)}function Uc(e,t){return new pS({type:"pipe",in:Ob(e),out:t})}var si={};pf(si,{ZodISODate:()=>ss,ZodISODateTime:()=>os,ZodISODuration:()=>is,ZodISOTime:()=>as,date:()=>yS,datetime:()=>bS,duration:()=>vS,time:()=>kS});function bS(e){return Ua(os,e)}function yS(e){return qa(ss,e)}function kS(e){return Ka(as,e)}function vS(e){return Ha(is,e)}var Kc="2025-11-25";var Mb=[Kc,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],rn="io.modelcontextprotocol/related-task",ii="2.0",pt=jb(e=>e!==null&&(typeof e=="object"||typeof e=="function")),Db=We([I(),De().int()]),Lb=I(),m2=Nt({ttl:De().optional(),pollInterval:De().optional()}),zS=J({ttl:De().optional()}),_S=J({taskId:I()}),Hc=Nt({progressToken:Db.optional(),[rn]:_S.optional()}),Wt=J({_meta:Hc.optional()}),ls=Wt.extend({task:zS.optional()}),Vb=e=>ls.safeParse(e).success,_t=J({method:I(),params:Wt.loose().optional()}),Qt=J({_meta:Hc.optional()}),er=J({method:I(),params:Qt.loose().optional()}),wt=Nt({_meta:Hc.optional()}),li=We([I(),De().int()]),Fb=J({jsonrpc:oe(ii),id:li,..._t.shape}).strict(),Wc=e=>Fb.safeParse(e).success,Zb=J({jsonrpc:oe(ii),...er.shape}).strict(),Bb=e=>Zb.safeParse(e).success,Jc=J({jsonrpc:oe(ii),id:li,result:wt}).strict(),cs=e=>Jc.safeParse(e).success;var ye;(function(e){e[e.ConnectionClosed=-32e3]="ConnectionClosed",e[e.RequestTimeout=-32001]="RequestTimeout",e[e.ParseError=-32700]="ParseError",e[e.InvalidRequest=-32600]="InvalidRequest",e[e.MethodNotFound=-32601]="MethodNotFound",e[e.InvalidParams=-32602]="InvalidParams",e[e.InternalError=-32603]="InternalError",e[e.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(ye||(ye={}));var Yc=J({jsonrpc:oe(ii),id:li.optional(),error:J({code:De().int(),message:I(),data:Xe().optional()})}).strict();var Gb=e=>Yc.safeParse(e).success;var Ub=We([Fb,Zb,Jc,Yc]),h2=We([Jc,Yc]),ci=wt.strict(),wS=Qt.extend({requestId:li.optional(),reason:I().optional()}),ui=er.extend({method:oe("notifications/cancelled"),params:wS}),xS=J({src:I(),mimeType:I().optional(),sizes:Ie(I()).optional(),theme:Dt(["light","dark"]).optional()}),us=J({icons:Ie(xS).optional()}),ro=J({name:I(),title:I().optional()}),qb=ro.extend({...ro.shape,...us.shape,version:I(),websiteUrl:I().optional(),description:I().optional()}),SS=oi(J({applyDefaults:ht().optional()}),Be(I(),Xe())),PS=Uc(e=>e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,oi(J({form:SS.optional(),url:pt.optional()}),Be(I(),Xe()).optional())),$S=Nt({list:pt.optional(),cancel:pt.optional(),requests:Nt({sampling:Nt({createMessage:pt.optional()}).optional(),elicitation:Nt({create:pt.optional()}).optional()}).optional()}),ES=Nt({list:pt.optional(),cancel:pt.optional(),requests:Nt({tools:Nt({call:pt.optional()}).optional()}).optional()}),AS=J({experimental:Be(I(),pt).optional(),sampling:J({context:pt.optional(),tools:pt.optional()}).optional(),elicitation:PS.optional(),roots:J({listChanged:ht().optional()}).optional(),tasks:$S.optional(),extensions:Be(I(),pt).optional()}),OS=Wt.extend({protocolVersion:I(),capabilities:AS,clientInfo:qb}),Xc=_t.extend({method:oe("initialize"),params:OS});var IS=J({experimental:Be(I(),pt).optional(),logging:pt.optional(),completions:pt.optional(),prompts:J({listChanged:ht().optional()}).optional(),resources:J({subscribe:ht().optional(),listChanged:ht().optional()}).optional(),tools:J({listChanged:ht().optional()}).optional(),tasks:ES.optional(),extensions:Be(I(),pt).optional()}),TS=wt.extend({protocolVersion:I(),capabilities:IS,serverInfo:qb,instructions:I().optional()}),Qc=er.extend({method:oe("notifications/initialized"),params:Qt.optional()});var di=_t.extend({method:oe("ping"),params:Wt.optional()}),CS=J({progress:De(),total:Qe(De()),message:Qe(I())}),NS=J({...Qt.shape,...CS.shape,progressToken:Db}),pi=er.extend({method:oe("notifications/progress"),params:NS}),RS=Wt.extend({cursor:Lb.optional()}),ds=_t.extend({params:RS.optional()}),ps=wt.extend({nextCursor:Lb.optional()}),jS=Dt(["working","input_required","completed","failed","cancelled"]),fs=J({taskId:I(),status:jS,ttl:We([De(),$b()]),createdAt:I(),lastUpdatedAt:I(),pollInterval:Qe(De()),statusMessage:Qe(I())}),no=wt.extend({task:fs}),MS=Qt.merge(fs),ms=er.extend({method:oe("notifications/tasks/status"),params:MS}),fi=_t.extend({method:oe("tasks/get"),params:Wt.extend({taskId:I()})}),mi=wt.merge(fs),hi=_t.extend({method:oe("tasks/result"),params:Wt.extend({taskId:I()})}),g2=wt.loose(),gi=ds.extend({method:oe("tasks/list")}),bi=ps.extend({tasks:Ie(fs)}),yi=_t.extend({method:oe("tasks/cancel"),params:Wt.extend({taskId:I()})}),Kb=wt.merge(fs),Hb=J({uri:I(),mimeType:Qe(I()),_meta:Be(I(),Xe()).optional()}),Wb=Hb.extend({text:I()}),eu=I().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:"Invalid Base64 string"}),Jb=Hb.extend({blob:eu}),hs=Dt(["user","assistant"]),oo=J({audience:Ie(hs).optional(),priority:De().min(0).max(1).optional(),lastModified:si.datetime({offset:!0}).optional()}),Yb=J({...ro.shape,...us.shape,uri:I(),description:Qe(I()),mimeType:Qe(I()),size:Qe(De()),annotations:oo.optional(),_meta:Qe(Nt({}))}),DS=J({...ro.shape,...us.shape,uriTemplate:I(),description:Qe(I()),mimeType:Qe(I()),annotations:oo.optional(),_meta:Qe(Nt({}))}),LS=ds.extend({method:oe("resources/list")}),VS=ps.extend({resources:Ie(Yb)}),FS=ds.extend({method:oe("resources/templates/list")}),ZS=ps.extend({resourceTemplates:Ie(DS)}),tu=Wt.extend({uri:I()}),BS=tu,GS=_t.extend({method:oe("resources/read"),params:BS}),US=wt.extend({contents:Ie(We([Wb,Jb]))}),qS=er.extend({method:oe("notifications/resources/list_changed"),params:Qt.optional()}),KS=tu,HS=_t.extend({method:oe("resources/subscribe"),params:KS}),WS=tu,JS=_t.extend({method:oe("resources/unsubscribe"),params:WS}),YS=Qt.extend({uri:I()}),XS=er.extend({method:oe("notifications/resources/updated"),params:YS}),QS=J({name:I(),description:Qe(I()),required:Qe(ht())}),e1=J({...ro.shape,...us.shape,description:Qe(I()),arguments:Qe(Ie(QS)),_meta:Qe(Nt({}))}),t1=ds.extend({method:oe("prompts/list")}),r1=ps.extend({prompts:Ie(e1)}),n1=Wt.extend({name:I(),arguments:Be(I(),I()).optional()}),o1=_t.extend({method:oe("prompts/get"),params:n1}),ru=J({type:oe("text"),text:I(),annotations:oo.optional(),_meta:Be(I(),Xe()).optional()}),nu=J({type:oe("image"),data:eu,mimeType:I(),annotations:oo.optional(),_meta:Be(I(),Xe()).optional()}),ou=J({type:oe("audio"),data:eu,mimeType:I(),annotations:oo.optional(),_meta:Be(I(),Xe()).optional()}),s1=J({type:oe("tool_use"),name:I(),id:I(),input:Be(I(),Xe()),_meta:Be(I(),Xe()).optional()}),a1=J({type:oe("resource"),resource:We([Wb,Jb]),annotations:oo.optional(),_meta:Be(I(),Xe()).optional()}),i1=Yb.extend({type:oe("resource_link")}),su=We([ru,nu,ou,i1,a1]),l1=J({role:hs,content:su}),c1=wt.extend({description:I().optional(),messages:Ie(l1)}),u1=er.extend({method:oe("notifications/prompts/list_changed"),params:Qt.optional()}),d1=J({title:I().optional(),readOnlyHint:ht().optional(),destructiveHint:ht().optional(),idempotentHint:ht().optional(),openWorldHint:ht().optional()}),p1=J({taskSupport:Dt(["required","optional","forbidden"]).optional()}),Xb=J({...ro.shape,...us.shape,description:I().optional(),inputSchema:J({type:oe("object"),properties:Be(I(),pt).optional(),required:Ie(I()).optional()}).catchall(Xe()),outputSchema:J({type:oe("object"),properties:Be(I(),pt).optional(),required:Ie(I()).optional()}).catchall(Xe()).optional(),annotations:d1.optional(),execution:p1.optional(),_meta:Be(I(),Xe()).optional()}),au=ds.extend({method:oe("tools/list")}),f1=ps.extend({tools:Ie(Xb)}),ki=wt.extend({content:Ie(su).default([]),structuredContent:Be(I(),Xe()).optional(),isError:ht().optional()}),b2=ki.or(wt.extend({toolResult:Xe()})),m1=ls.extend({name:I(),arguments:Be(I(),Xe()).optional()}),gs=_t.extend({method:oe("tools/call"),params:m1}),h1=er.extend({method:oe("notifications/tools/list_changed"),params:Qt.optional()}),y2=J({autoRefresh:ht().default(!0),debounceMs:De().int().nonnegative().default(300)}),bs=Dt(["debug","info","notice","warning","error","critical","alert","emergency"]),g1=Wt.extend({level:bs}),iu=_t.extend({method:oe("logging/setLevel"),params:g1}),b1=Qt.extend({level:bs,logger:I().optional(),data:Xe()}),y1=er.extend({method:oe("notifications/message"),params:b1}),k1=J({name:I().optional()}),v1=J({hints:Ie(k1).optional(),costPriority:De().min(0).max(1).optional(),speedPriority:De().min(0).max(1).optional(),intelligencePriority:De().min(0).max(1).optional()}),z1=J({mode:Dt(["auto","required","none"]).optional()}),_1=J({type:oe("tool_result"),toolUseId:I().describe("The unique identifier for the corresponding tool call."),content:Ie(su).default([]),structuredContent:J({}).loose().optional(),isError:ht().optional(),_meta:Be(I(),Xe()).optional()}),w1=Gc("type",[ru,nu,ou]),ai=Gc("type",[ru,nu,ou,s1,_1]),x1=J({role:hs,content:We([ai,Ie(ai)]),_meta:Be(I(),Xe()).optional()}),S1=ls.extend({messages:Ie(x1),modelPreferences:v1.optional(),systemPrompt:I().optional(),includeContext:Dt(["none","thisServer","allServers"]).optional(),temperature:De().optional(),maxTokens:De().int(),stopSequences:Ie(I()).optional(),metadata:pt.optional(),tools:Ie(Xb).optional(),toolChoice:z1.optional()}),P1=_t.extend({method:oe("sampling/createMessage"),params:S1}),ys=wt.extend({model:I(),stopReason:Qe(Dt(["endTurn","stopSequence","maxTokens"]).or(I())),role:hs,content:w1}),lu=wt.extend({model:I(),stopReason:Qe(Dt(["endTurn","stopSequence","maxTokens","toolUse"]).or(I())),role:hs,content:We([ai,Ie(ai)])}),$1=J({type:oe("boolean"),title:I().optional(),description:I().optional(),default:ht().optional()}),E1=J({type:oe("string"),title:I().optional(),description:I().optional(),minLength:De().optional(),maxLength:De().optional(),format:Dt(["email","uri","date","date-time"]).optional(),default:I().optional()}),A1=J({type:Dt(["number","integer"]),title:I().optional(),description:I().optional(),minimum:De().optional(),maximum:De().optional(),default:De().optional()}),O1=J({type:oe("string"),title:I().optional(),description:I().optional(),enum:Ie(I()),default:I().optional()}),I1=J({type:oe("string"),title:I().optional(),description:I().optional(),oneOf:Ie(J({const:I(),title:I()})),default:I().optional()}),T1=J({type:oe("string"),title:I().optional(),description:I().optional(),enum:Ie(I()),enumNames:Ie(I()).optional(),default:I().optional()}),C1=We([O1,I1]),N1=J({type:oe("array"),title:I().optional(),description:I().optional(),minItems:De().optional(),maxItems:De().optional(),items:J({type:oe("string"),enum:Ie(I())}),default:Ie(I()).optional()}),R1=J({type:oe("array"),title:I().optional(),description:I().optional(),minItems:De().optional(),maxItems:De().optional(),items:J({anyOf:Ie(J({const:I(),title:I()}))}),default:Ie(I()).optional()}),j1=We([N1,R1]),M1=We([T1,C1,j1]),D1=We([M1,$1,E1,A1]),L1=ls.extend({mode:oe("form").optional(),message:I(),requestedSchema:J({type:oe("object"),properties:Be(I(),D1),required:Ie(I()).optional()})}),V1=ls.extend({mode:oe("url"),message:I(),elicitationId:I(),url:I().url()}),F1=We([L1,V1]),Z1=_t.extend({method:oe("elicitation/create"),params:F1}),B1=Qt.extend({elicitationId:I()}),G1=er.extend({method:oe("notifications/elicitation/complete"),params:B1}),so=wt.extend({action:Dt(["accept","decline","cancel"]),content:Uc(e=>e===null?void 0:e,Be(I(),We([I(),De(),ht(),Ie(I())])).optional())}),U1=J({type:oe("ref/resource"),uri:I()});var q1=J({type:oe("ref/prompt"),name:I()}),K1=Wt.extend({ref:We([q1,U1]),argument:J({name:I(),value:I()}),context:J({arguments:Be(I(),I()).optional()}).optional()}),H1=_t.extend({method:oe("completion/complete"),params:K1});var W1=wt.extend({completion:Nt({values:Ie(I()).max(100),total:Qe(De().int()),hasMore:Qe(ht())})}),J1=J({uri:I().startsWith("file://"),name:I().optional(),_meta:Be(I(),Xe()).optional()}),Y1=_t.extend({method:oe("roots/list"),params:Wt.optional()}),cu=wt.extend({roots:Ie(J1)}),X1=er.extend({method:oe("notifications/roots/list_changed"),params:Qt.optional()}),k2=We([di,Xc,H1,iu,o1,t1,LS,FS,GS,HS,JS,gs,au,fi,hi,gi,yi]),v2=We([ui,pi,Qc,X1,ms]),z2=We([ci,ys,lu,so,cu,mi,bi,no]),_2=We([di,P1,Z1,Y1,fi,hi,gi,yi]),w2=We([ui,pi,y1,XS,qS,h1,u1,ms,G1]),x2=We([ci,TS,W1,c1,r1,VS,ZS,US,ki,f1,mi,bi,no]),fe=class e extends Error{constructor(t,r,n){super(`MCP error ${t}: ${r}`),this.code=t,this.data=n,this.name="McpError"}static fromError(t,r,n){if(t===ye.UrlElicitationRequired&&n){let o=n;if(o.elicitations)return new qc(o.elicitations,r)}return new e(t,r,n)}},qc=class extends fe{constructor(t,r=`URL elicitation${t.length>1?"s":""} required`){super(ye.UrlElicitationRequired,r,{elicitations:t})}get elicitations(){return this.data?.elicitations??[]}};var Q1=10*1024*1024,vi=class{constructor(t){this._maxBufferSize=t?.maxBufferSize??Q1}append(t){if((this._buffer?.length??0)+t.length>this._maxBufferSize)throw this.clear(),new Error(`ReadBuffer exceeded maximum size of ${this._maxBufferSize} bytes`);this._buffer=this._buffer?Buffer.concat([this._buffer,t]):t}readMessage(){if(!this._buffer)return null;let t=this._buffer.indexOf(`
73
- `);if(t===-1)return null;let r=this._buffer.toString("utf8",0,t).replace(/\r$/,"");return this._buffer=this._buffer.subarray(t+1),eP(r)}clear(){this._buffer=void 0}};function eP(e){return Ub.parse(JSON.parse(e))}function Qb(e){return JSON.stringify(e)+`
74
- `}var zi=class{constructor(t=ey.stdin,r=ey.stdout,n){this._stdin=t,this._stdout=r,this._started=!1,this._ondata=o=>{try{this._readBuffer.append(o),this.processReadBuffer()}catch(s){this.onerror?.(s),this.close().catch(()=>{})}},this._onerror=o=>{this.onerror?.(o)},this._readBuffer=new vi({maxBufferSize:n?.maxBufferSize})}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let t=this._readBuffer.readMessage();if(t===null)break;this.onmessage?.(t)}catch(t){this.onerror?.(t)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(t){return new Promise(r=>{let n=Qb(t);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};var ty="__export_design",ry="__import_design";function ny(e){try{let t=JSON.parse(String(e));return t&&typeof t.t=="string"?t:null}catch{return null}}import{readFile as MN,writeFile as DN}from"node:fs/promises";import{resolve as F_}from"node:path";function _i(e){return!!e._zod}function nn(e,t){return _i(e)?ac(e,t):e.safeParse(t)}function wi(e){if(!e)return;let t;if(_i(e)?t=e._zod?.def?.shape:t=e.shape,!!t){if(typeof t=="function")try{return t()}catch{return}return t}}function xi(e){if(_i(e)){let s=e._zod?.def;if(s){if(s.value!==void 0)return s.value;if(Array.isArray(s.values)&&s.values.length>0)return s.values[0]}}let r=e._def;if(r){if(r.value!==void 0)return r.value;if(Array.isArray(r.values)&&r.values.length>0)return r.values[0]}let n=e.value;if(n!==void 0)return n}function on(e){return e==="completed"||e==="failed"||e==="cancelled"}var rP=Symbol("Let zodToJsonSchema decide on which parser to use");var xM=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function uu(e){let r=wi(e)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=xi(r);if(typeof n!="string")throw new Error("Schema method literal must be a string");return n}function du(e,t){let r=nn(e,t);if(!r.success)throw r.error;return r.data}var lP=6e4,Si=class{constructor(t){this._options=t,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(ui,r=>{this._oncancel(r)}),this.setNotificationHandler(pi,r=>{this._onprogress(r)}),this.setRequestHandler(di,r=>({})),this._taskStore=t?.taskStore,this._taskMessageQueue=t?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(fi,async(r,n)=>{let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new fe(ye.InvalidParams,"Failed to retrieve task: Task not found");return{...o}}),this.setRequestHandler(hi,async(r,n)=>{let o=async()=>{let s=r.params.taskId;if(!await this._taskStore.getTask(s,n.sessionId))throw new fe(ye.InvalidParams,`Task not found: ${s}`);if(this._taskMessageQueue){let i;for(;i=await this._taskMessageQueue.dequeue(s,n.sessionId);){if(i.type==="response"||i.type==="error"){let l=i.message,c=l.id,u=this._requestResolvers.get(c);if(u)if(this._requestResolvers.delete(c),i.type==="response")u(l);else{let d=l,p=new fe(d.error.code,d.error.message,d.error.data);u(p)}else{let d=i.type==="response"?"Response":"Error";this._onerror(new Error(`${d} handler missing for request ${c}`))}continue}await this._transport?.send(i.message,{relatedRequestId:n.requestId})}}let a=await this._taskStore.getTask(s,n.sessionId);if(!a)throw new fe(ye.InvalidParams,`Task not found: ${s}`);if(!on(a.status))return await this._waitForTaskUpdate(s,n.signal,n.sessionId),await o();if(on(a.status)){let i=await this._taskStore.getTaskResult(s,n.sessionId);return this._clearTaskQueue(s,n.sessionId),{...i,_meta:{...i._meta,[rn]:{taskId:s}}}}return await o()};return await o()}),this.setRequestHandler(gi,async(r,n)=>{try{let{tasks:o,nextCursor:s}=await this._taskStore.listTasks(r.params?.cursor,n.sessionId);return{tasks:o,nextCursor:s,_meta:{}}}catch(o){throw new fe(ye.InvalidParams,`Failed to list tasks: ${o instanceof Error?o.message:String(o)}`)}}),this.setRequestHandler(yi,async(r,n)=>{try{let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new fe(ye.InvalidParams,`Task not found: ${r.params.taskId}`);if(on(o.status))throw new fe(ye.InvalidParams,`Cannot cancel task in terminal status: ${o.status}`);await this._taskStore.updateTaskStatus(r.params.taskId,"cancelled","Client cancelled task execution.",n.sessionId),this._clearTaskQueue(r.params.taskId,n.sessionId);let s=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!s)throw new fe(ye.InvalidParams,`Task not found after cancellation: ${r.params.taskId}`);return{_meta:{},...s}}catch(o){throw o instanceof fe?o:new fe(ye.InvalidRequest,`Failed to cancel task: ${o instanceof Error?o.message:String(o)}`)}}))}async _oncancel(t){if(!t.params.requestId)return;this._requestHandlerAbortControllers.get(t.params.requestId)?.abort(t.params.reason)}_setupTimeout(t,r,n,o,s=!1){this._timeoutInfo.set(t,{timeoutId:setTimeout(o,r),startTime:Date.now(),timeout:r,maxTotalTimeout:n,resetTimeoutOnProgress:s,onTimeout:o})}_resetTimeout(t){let r=this._timeoutInfo.get(t);if(!r)return!1;let n=Date.now()-r.startTime;if(r.maxTotalTimeout&&n>=r.maxTotalTimeout)throw this._timeoutInfo.delete(t),fe.fromError(ye.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:r.maxTotalTimeout,totalElapsed:n});return clearTimeout(r.timeoutId),r.timeoutId=setTimeout(r.onTimeout,r.timeout),!0}_cleanupTimeout(t){let r=this._timeoutInfo.get(t);r&&(clearTimeout(r.timeoutId),this._timeoutInfo.delete(t))}async connect(t){if(this._transport)throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=t;let r=this.transport?.onclose;this._transport.onclose=()=>{r?.(),this._onclose()};let n=this.transport?.onerror;this._transport.onerror=s=>{n?.(s),this._onerror(s)};let o=this._transport?.onmessage;this._transport.onmessage=(s,a)=>{o?.(s,a),cs(s)||Gb(s)?this._onresponse(s):Wc(s)?this._onrequest(s,a):Bb(s)?this._onnotification(s):this._onerror(new Error(`Unknown message type: ${JSON.stringify(s)}`))},await this._transport.start()}_onclose(){let t=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let n of this._timeoutInfo.values())clearTimeout(n.timeoutId);this._timeoutInfo.clear();for(let n of this._requestHandlerAbortControllers.values())n.abort();this._requestHandlerAbortControllers.clear();let r=fe.fromError(ye.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(let n of t.values())n(r)}_onerror(t){this.onerror?.(t)}_onnotification(t){let r=this._notificationHandlers.get(t.method)??this.fallbackNotificationHandler;r!==void 0&&Promise.resolve().then(()=>r(t)).catch(n=>this._onerror(new Error(`Uncaught error in notification handler: ${n}`)))}_onrequest(t,r){let n=this._requestHandlers.get(t.method)??this.fallbackRequestHandler,o=this._transport,s=t.params?._meta?.[rn]?.taskId,a=o?.sessionId,i=this._taskStore,l=!0,c;if(s&&i&&this._taskMessageQueue&&a!==void 0&&(l=!1,c=(async()=>{if(!await i.getTask(s,a))throw new fe(ye.InvalidParams,`Task not found: ${s}`);l=!0})()),n===void 0){let b={jsonrpc:"2.0",id:t.id,error:{code:ye.MethodNotFound,message:"Method not found"}};if(s&&c){let f={type:"error",message:b,timestamp:Date.now()};c.then(()=>this._enqueueTaskMessage(s,f,a),()=>o?.send(b)).catch(h=>this._onerror(new Error(`Failed to send an error response: ${h}`)))}else s&&this._taskMessageQueue?this._enqueueTaskMessage(s,{type:"error",message:b,timestamp:Date.now()},o?.sessionId).catch(f=>this._onerror(new Error(`Failed to enqueue error response: ${f}`))):o?.send(b).catch(f=>this._onerror(new Error(`Failed to send an error response: ${f}`)));return}let u=new AbortController;this._requestHandlerAbortControllers.set(t.id,u);let d=Vb(t.params)?t.params.task:void 0,p=this._taskStore?this.requestTaskStore(t,o?.sessionId):void 0,m={signal:u.signal,sessionId:o?.sessionId,_meta:t.params?._meta,sendNotification:async b=>{if(u.signal.aborted)return;let f={relatedRequestId:t.id};s&&(f.relatedTask={taskId:s}),await this.notification(b,f)},sendRequest:async(b,f,h)=>{if(u.signal.aborted)throw new fe(ye.ConnectionClosed,"Request was cancelled");let g={...h,relatedRequestId:t.id};s&&!g.relatedTask&&(g.relatedTask={taskId:s});let v=g.relatedTask?.taskId??s;return v&&p&&await p.updateTaskStatus(v,"input_required"),await this.request(b,f,g)},authInfo:r?.authInfo,requestId:t.id,requestInfo:r?.requestInfo,taskId:s,taskStore:p,taskRequestedTtl:d?.ttl,closeSSEStream:r?.closeSSEStream,closeStandaloneSSEStream:r?.closeStandaloneSSEStream};(c??Promise.resolve()).then(()=>{if(c&&u.signal.aborted)throw new fe(ye.ConnectionClosed,"Request was cancelled");d&&this.assertTaskHandlerCapability(t.method)}).then(()=>n(t,m)).then(async b=>{if(u.signal.aborted)return;let f={result:b,jsonrpc:"2.0",id:t.id};s&&this._taskMessageQueue?await this._enqueueTaskMessage(s,{type:"response",message:f,timestamp:Date.now()},o?.sessionId):await o?.send(f)},async b=>{if(u.signal.aborted)return;let f={jsonrpc:"2.0",id:t.id,error:{code:Number.isSafeInteger(b.code)?b.code:ye.InternalError,message:b.message??"Internal error",...b.data!==void 0&&{data:b.data}}};s&&this._taskMessageQueue&&l?await this._enqueueTaskMessage(s,{type:"error",message:f,timestamp:Date.now()},o?.sessionId):await o?.send(f)}).catch(b=>this._onerror(new Error(`Failed to send response: ${b}`))).finally(()=>{this._requestHandlerAbortControllers.get(t.id)===u&&this._requestHandlerAbortControllers.delete(t.id)})}_onprogress(t){let{progressToken:r,...n}=t.params,o=Number(r),s=this._progressHandlers.get(o);if(!s){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(t)}`));return}let a=this._responseHandlers.get(o),i=this._timeoutInfo.get(o);if(i&&a&&i.resetTimeoutOnProgress)try{this._resetTimeout(o)}catch(l){this._responseHandlers.delete(o),this._progressHandlers.delete(o),this._cleanupTimeout(o),a(l);return}s(n)}_onresponse(t){let r=Number(t.id),n=this._requestResolvers.get(r);if(n){if(this._requestResolvers.delete(r),cs(t))n(t);else{let a=new fe(t.error.code,t.error.message,t.error.data);n(a)}return}let o=this._responseHandlers.get(r);if(o===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(t)}`));return}this._responseHandlers.delete(r),this._cleanupTimeout(r);let s=!1;if(cs(t)&&t.result&&typeof t.result=="object"){let a=t.result;if(a.task&&typeof a.task=="object"){let i=a.task;typeof i.taskId=="string"&&(s=!0,this._taskProgressTokens.set(i.taskId,r))}}if(s||this._progressHandlers.delete(r),cs(t))o(t);else{let a=fe.fromError(t.error.code,t.error.message,t.error.data);o(a)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(t,r,n){let{task:o}=n??{};if(!o){try{yield{type:"result",result:await this.request(t,r,n)}}catch(a){yield{type:"error",error:a instanceof fe?a:new fe(ye.InternalError,String(a))}}return}let s;try{let a=await this.request(t,no,n);if(a.task)s=a.task.taskId,yield{type:"taskCreated",task:a.task};else throw new fe(ye.InternalError,"Task creation did not return a task");for(;;){let i=await this.getTask({taskId:s},n);if(yield{type:"taskStatus",task:i},on(i.status)){i.status==="completed"?yield{type:"result",result:await this.getTaskResult({taskId:s},r,n)}:i.status==="failed"?yield{type:"error",error:new fe(ye.InternalError,`Task ${s} failed`)}:i.status==="cancelled"&&(yield{type:"error",error:new fe(ye.InternalError,`Task ${s} was cancelled`)});return}if(i.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:s},r,n)};return}let l=i.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(c=>setTimeout(c,l)),n?.signal?.throwIfAborted()}}catch(a){yield{type:"error",error:a instanceof fe?a:new fe(ye.InternalError,String(a))}}}request(t,r,n){let{relatedRequestId:o,resumptionToken:s,onresumptiontoken:a,task:i,relatedTask:l}=n??{};return new Promise((c,u)=>{let d=v=>{u(v)};if(!this._transport){d(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(t.method),i&&this.assertTaskCapability(t.method)}catch(v){d(v);return}n?.signal?.throwIfAborted();let p=this._requestMessageId++,m={...t,jsonrpc:"2.0",id:p};n?.onprogress&&(this._progressHandlers.set(p,n.onprogress),m.params={...t.params,_meta:{...t.params?._meta||{},progressToken:p}}),i&&(m.params={...m.params,task:i}),l&&(m.params={...m.params,_meta:{...m.params?._meta||{},[rn]:l}});let b=v=>{this._responseHandlers.delete(p),this._progressHandlers.delete(p),this._cleanupTimeout(p),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:p,reason:String(v)}},{relatedRequestId:o,resumptionToken:s,onresumptiontoken:a}).catch(w=>this._onerror(new Error(`Failed to send cancellation: ${w}`)));let _=v instanceof fe?v:new fe(ye.RequestTimeout,String(v));u(_)};this._responseHandlers.set(p,v=>{if(!n?.signal?.aborted){if(v instanceof Error)return u(v);try{let _=nn(r,v.result);_.success?c(_.data):u(_.error)}catch(_){u(_)}}}),n?.signal?.addEventListener("abort",()=>{b(n?.signal?.reason)});let f=n?.timeout??lP,h=()=>b(fe.fromError(ye.RequestTimeout,"Request timed out",{timeout:f}));this._setupTimeout(p,f,n?.maxTotalTimeout,h,n?.resetTimeoutOnProgress??!1);let g=l?.taskId;if(g){let v=_=>{let w=this._responseHandlers.get(p);w?w(_):this._onerror(new Error(`Response handler missing for side-channeled request ${p}`))};this._requestResolvers.set(p,v),this._enqueueTaskMessage(g,{type:"request",message:m,timestamp:Date.now()}).catch(_=>{this._cleanupTimeout(p),u(_)})}else this._transport.send(m,{relatedRequestId:o,resumptionToken:s,onresumptiontoken:a}).catch(v=>{this._cleanupTimeout(p),u(v)})})}async getTask(t,r){return this.request({method:"tasks/get",params:t},mi,r)}async getTaskResult(t,r,n){return this.request({method:"tasks/result",params:t},r,n)}async listTasks(t,r){return this.request({method:"tasks/list",params:t},bi,r)}async cancelTask(t,r){return this.request({method:"tasks/cancel",params:t},Kb,r)}async notification(t,r){if(!this._transport)throw new Error("Not connected");this.assertNotificationCapability(t.method);let n=r?.relatedTask?.taskId;if(n){let i={...t,jsonrpc:"2.0",params:{...t.params,_meta:{...t.params?._meta||{},[rn]:r.relatedTask}}};await this._enqueueTaskMessage(n,{type:"notification",message:i,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(t.method)&&!t.params&&!r?.relatedRequestId&&!r?.relatedTask){if(this._pendingDebouncedNotifications.has(t.method))return;this._pendingDebouncedNotifications.add(t.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(t.method),!this._transport)return;let i={...t,jsonrpc:"2.0"};r?.relatedTask&&(i={...i,params:{...i.params,_meta:{...i.params?._meta||{},[rn]:r.relatedTask}}}),this._transport?.send(i,r).catch(l=>this._onerror(l))});return}let a={...t,jsonrpc:"2.0"};r?.relatedTask&&(a={...a,params:{...a.params,_meta:{...a.params?._meta||{},[rn]:r.relatedTask}}}),await this._transport.send(a,r)}setRequestHandler(t,r){let n=uu(t);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(o,s)=>{let a=du(t,o);return Promise.resolve(r(a,s))})}removeRequestHandler(t){this._requestHandlers.delete(t)}assertCanSetRequestHandler(t){if(this._requestHandlers.has(t))throw new Error(`A request handler for ${t} already exists, which would be overridden`)}setNotificationHandler(t,r){let n=uu(t);this._notificationHandlers.set(n,o=>{let s=du(t,o);return Promise.resolve(r(s))})}removeNotificationHandler(t){this._notificationHandlers.delete(t)}_cleanupTaskProgressHandler(t){let r=this._taskProgressTokens.get(t);r!==void 0&&(this._progressHandlers.delete(r),this._taskProgressTokens.delete(t))}async _enqueueTaskMessage(t,r,n){if(!this._taskStore||!this._taskMessageQueue)throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let o=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(t,r,n??this._transport?.sessionId,o)}async _clearTaskQueue(t,r){if(this._taskMessageQueue){let n=await this._taskMessageQueue.dequeueAll(t,r);for(let o of n)if(o.type==="request"&&Wc(o.message)){let s=o.message.id,a=this._requestResolvers.get(s);a?(a(new fe(ye.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(s)):this._onerror(new Error(`Resolver missing for request ${s} during task ${t} cleanup`))}}}async _waitForTaskUpdate(t,r,n){let o=this._options?.defaultTaskPollInterval??1e3;try{let s=await this._taskStore?.getTask(t,n);s?.pollInterval&&(o=s.pollInterval)}catch{}return new Promise((s,a)=>{if(r.aborted){a(new fe(ye.InvalidRequest,"Request cancelled"));return}let i=setTimeout(s,o);r.addEventListener("abort",()=>{clearTimeout(i),a(new fe(ye.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(t,r){let n=this._taskStore;if(!n)throw new Error("No task store configured");return{createTask:async o=>{if(!t)throw new Error("No request provided");return await n.createTask(o,t.id,{method:t.method,params:t.params},r)},getTask:async o=>{let s=await n.getTask(o,r);if(!s)throw new fe(ye.InvalidParams,"Failed to retrieve task: Task not found");return s},storeTaskResult:async(o,s,a)=>{await n.storeTaskResult(o,s,a,r);let i=await n.getTask(o,r);if(i){let l=ms.parse({method:"notifications/tasks/status",params:i});await this.notification(l),on(i.status)&&this._cleanupTaskProgressHandler(o)}},getTaskResult:o=>n.getTaskResult(o,r),updateTaskStatus:async(o,s,a)=>{let i=await n.getTask(o,r);if(!i)throw new fe(ye.InvalidParams,`Task "${o}" not found - it may have been cleaned up`);if(on(i.status))throw new fe(ye.InvalidParams,`Cannot update task "${o}" from terminal status "${i.status}" to "${s}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await n.updateTaskStatus(o,s,a,r);let l=await n.getTask(o,r);if(l){let c=ms.parse({method:"notifications/tasks/status",params:l});await this.notification(c),on(l.status)&&this._cleanupTaskProgressHandler(o)}},listTasks:o=>n.listTasks(o,r)}}};function oy(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function sy(e,t){let r={...e};for(let n in t){let o=n,s=t[o];if(s===void 0)continue;let a=r[o];oy(a)&&oy(s)?r[o]={...a,...s}:r[o]=s}return r}var iv=kn(rp(),1),lv=kn(av(),1);function zT(){let e=new iv.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,lv.default)(e),e}var ul=class{constructor(t){this._ajv=t??zT()}getValidator(t){let r="$id"in t&&typeof t.$id=="string"?this._ajv.getSchema(t.$id)??this._ajv.compile(t):this._ajv.compile(t);return n=>r(n)?{valid:!0,data:n,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(r.errors)}}};var dl=class{constructor(t){this._server=t}requestStream(t,r,n){return this._server.requestStream(t,r,n)}createMessageStream(t,r){let n=this._server.getClientCapabilities();if((t.tools||t.toolChoice)&&!n?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let o=t.messages[t.messages.length-1],s=Array.isArray(o.content)?o.content:[o.content],a=s.some(u=>u.type==="tool_result"),i=t.messages.length>1?t.messages[t.messages.length-2]:void 0,l=i?Array.isArray(i.content)?i.content:[i.content]:[],c=l.some(u=>u.type==="tool_use");if(a){if(s.some(u=>u.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!c)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(c){let u=new Set(l.filter(p=>p.type==="tool_use").map(p=>p.id)),d=new Set(s.filter(p=>p.type==="tool_result").map(p=>p.toolUseId));if(u.size!==d.size||![...u].every(p=>d.has(p)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:t},ys,r)}elicitInputStream(t,r){let n=this._server.getClientCapabilities(),o=t.mode??"form";switch(o){case"url":{if(!n?.elicitation?.url)throw new Error("Client does not support url elicitation.");break}case"form":{if(!n?.elicitation?.form)throw new Error("Client does not support form elicitation.");break}}let s=o==="form"&&t.mode===void 0?{...t,mode:"form"}:t;return this.requestStream({method:"elicitation/create",params:s},so,r)}async getTask(t,r){return this._server.getTask({taskId:t},r)}async getTaskResult(t,r,n){return this._server.getTaskResult({taskId:t},r,n)}async listTasks(t,r){return this._server.listTasks(t?{cursor:t}:void 0,r)}async cancelTask(t,r){return this._server.cancelTask({taskId:t},r)}};function cv(e,t,r){if(!e)throw new Error(`${r} does not support task creation (required for ${t})`);switch(t){case"tools/call":if(!e.tools?.call)throw new Error(`${r} does not support task creation for tools/call (required for ${t})`);break;default:break}}function uv(e,t,r){if(!e)throw new Error(`${r} does not support task creation (required for ${t})`);switch(t){case"sampling/createMessage":if(!e.sampling?.createMessage)throw new Error(`${r} does not support task creation for sampling/createMessage (required for ${t})`);break;case"elicitation/create":if(!e.elicitation?.create)throw new Error(`${r} does not support task creation for elicitation/create (required for ${t})`);break;default:break}}var pl=class extends Si{constructor(t,r){super(r),this._serverInfo=t,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(bs.options.map((n,o)=>[n,o])),this.isMessageIgnored=(n,o)=>{let s=this._loggingLevels.get(o);return s?this.LOG_LEVEL_SEVERITY.get(n)<this.LOG_LEVEL_SEVERITY.get(s):!1},this._capabilities=r?.capabilities??{},this._instructions=r?.instructions,this._jsonSchemaValidator=r?.jsonSchemaValidator??new ul,this.setRequestHandler(Xc,n=>this._oninitialize(n)),this.setNotificationHandler(Qc,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(iu,async(n,o)=>{let s=o.sessionId||o.requestInfo?.headers["mcp-session-id"]||void 0,{level:a}=n.params,i=bs.safeParse(a);return i.success&&this._loggingLevels.set(s,i.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new dl(this)}),this._experimental}registerCapabilities(t){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=sy(this._capabilities,t)}setRequestHandler(t,r){let o=wi(t)?.method;if(!o)throw new Error("Schema is missing a method literal");let s=xi(o);if(typeof s!="string")throw new Error("Schema method literal must be a string");if(s==="tools/call"){let i=async(l,c)=>{let u=nn(gs,l);if(!u.success){let b=u.error instanceof Error?u.error.message:String(u.error);throw new fe(ye.InvalidParams,`Invalid tools/call request: ${b}`)}let{params:d}=u.data,p=await Promise.resolve(r(l,c));if(d.task){let b=nn(no,p);if(!b.success){let f=b.error instanceof Error?b.error.message:String(b.error);throw new fe(ye.InvalidParams,`Invalid task creation result: ${f}`)}return b.data}let m=nn(ki,p);if(!m.success){let b=m.error instanceof Error?m.error.message:String(m.error);throw new fe(ye.InvalidParams,`Invalid tools/call result: ${b}`)}return m.data};return super.setRequestHandler(t,i)}return super.setRequestHandler(t,r)}assertCapabilityForMethod(t){switch(t){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${t})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${t})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${t})`);break;case"ping":break}}assertNotificationCapability(t){switch(t){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${t})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${t})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${t})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${t})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(t){if(this._capabilities)switch(t){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${t})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${t})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${t})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${t})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${t})`);break;case"ping":case"initialize":break}}assertTaskCapability(t){uv(this._clientCapabilities?.tasks?.requests,t,"Client")}assertTaskHandlerCapability(t){this._capabilities&&cv(this._capabilities.tasks?.requests,t,"Server")}async _oninitialize(t){let r=t.params.protocolVersion;return this._clientCapabilities=t.params.capabilities,this._clientVersion=t.params.clientInfo,{protocolVersion:Mb.includes(r)?r:Kc,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},ci)}async createMessage(t,r){if((t.tools||t.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let n=t.messages[t.messages.length-1],o=Array.isArray(n.content)?n.content:[n.content],s=o.some(c=>c.type==="tool_result"),a=t.messages.length>1?t.messages[t.messages.length-2]:void 0,i=a?Array.isArray(a.content)?a.content:[a.content]:[],l=i.some(c=>c.type==="tool_use");if(s){if(o.some(c=>c.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!l)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(l){let c=new Set(i.filter(d=>d.type==="tool_use").map(d=>d.id)),u=new Set(o.filter(d=>d.type==="tool_result").map(d=>d.toolUseId));if(c.size!==u.size||![...c].every(d=>u.has(d)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return t.tools?this.request({method:"sampling/createMessage",params:t},lu,r):this.request({method:"sampling/createMessage",params:t},ys,r)}async elicitInput(t,r){switch(t.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let o=t;return this.request({method:"elicitation/create",params:o},so,r)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let o=t.mode==="form"?t:{...t,mode:"form"},s=await this.request({method:"elicitation/create",params:o},so,r);if(s.action==="accept"&&s.content&&o.requestedSchema)try{let i=this._jsonSchemaValidator.getValidator(o.requestedSchema)(s.content);if(!i.valid)throw new fe(ye.InvalidParams,`Elicitation response content does not match requested schema: ${i.errorMessage}`)}catch(a){throw a instanceof fe?a:new fe(ye.InternalError,`Error validating elicitation response: ${a instanceof Error?a.message:String(a)}`)}return s}}}createElicitationCompletionNotifier(t,r){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:t}},r)}async listRoots(t,r){return this.request({method:"roots/list",params:t},cu,r)}async sendLoggingMessage(t,r){if(this._capabilities.logging&&!this.isMessageIgnored(t.level,r))return this.notification({method:"notifications/message",params:t})}async sendResourceUpdated(t){return this.notification({method:"notifications/resources/updated",params:t})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};var VC=kn(sz(),1),FC=kn(vp(),1),ZC=kn(wp(),1),BC=kn(xl(),1),Ip=kn(mz(),1);var hz={Proofboard:"Proofboard","Panel be\xE1ll\xEDt\xE1sai":"Board settings","Egyszer\u0171 m\xF3d: a halad\xF3 r\xE9szek rejtve. Kattint\xE1sra kikapcsol.":"Simple mode: advanced parts are hidden. Click to turn it off.","Egyszer\u0171 m\xF3d":"Simple mode",F\u00E1jl:"File","\xDAj terv\u2026":"New design\u2026","Terv bet\xF6lt\xE9se f\xE1jlb\xF3l; a saj\xE1t alkatr\xE9szeid megmaradnak":"Load a design from a file; your own parts are kept","Megnyit\xE1s\u2026":"Open\u2026","A teljes terv (a benne haszn\xE1lt saj\xE1t alkatr\xE9szekkel egy\xFCtt) f\xE1jlba":"The whole design (with the custom parts it uses) to a file","Ment\xE9s f\xE1jlba":"Save to file","P\xE9ld\xE1k\u2026":"Examples\u2026","Panel be\xE1ll\xEDt\xE1sai\u2026":"Board settings\u2026","A halad\xF3 r\xE9szek elrejt\xE9se: cs\xEDkv\xE1g\xE1s, k\xE9zi \u2194 automatikus bek\xF6t\xE9s, JSON, PlatformIO, saj\xE1t alkatr\xE9sz szerkeszt\xE9se; a Probl\xE9m\xE1k k\xF6z\xFCl csak a hib\xE1k":"Hide the advanced parts: strip cuts, manual \u2194 automatic wiring, JSON, PlatformIO, custom part editing; only errors among the Problems","Saj\xE1t alkatr\xE9szk\xF6nyvt\xE1r":"Your part library","A saj\xE1t k\xF6nyvt\xE1r ment\xE9se f\xE1jlba (a tervt\u0151l f\xFCggetlen\xFCl)":"Save your library to a file (independent of the design)","K\xF6nyvt\xE1r export\xE1l\xE1sa":"Export library","Alkatr\xE9szek bet\xF6lt\xE9se f\xE1jlb\xF3l a saj\xE1t k\xF6nyvt\xE1rba":"Load parts from a file into your library","K\xF6nyvt\xE1r import\xE1l\xE1sa\u2026":"Import library\u2026","JSON export / import\u2026":"JSON export / import\u2026","\xD6n\xE1ll\xF3 ablakban fut, \xE9s internet n\xE9lk\xFCl is m\u0171k\xF6dik":"Runs in its own window and works without internet","Telep\xEDt\xE9s alkalmaz\xE1sk\xE9nt\u2026":"Install as an app\u2026","N\xE9vjegy\u2026":"About\u2026",T\u00E9ma:"Theme","A rendszer be\xE1ll\xEDt\xE1sa szerint":"Follow the system setting",Auto:"Auto",Vil\u00E1gos:"Light",S\u00F6t\u00E9t:"Dark",Elrendez\u00E9s:"Layout","Tervez\xE9s: alkatr\xE9szek \xE9s bek\xF6t\xE9s (Alt+1)":"Design: parts and wiring (Alt+1)",Tervez\u00E9s:"Design","Program: a panel \xE9s a program egym\xE1s mellett (Alt+2)":"Program: the board and the program side by side (Alt+2)",Program:"Program","Szimul\xE1ci\xF3: vez\xE9rl\u0151k \xE9s GPIO-k (Alt+3)":"Simulation: controls and GPIOs (Alt+3)",Szimul\u00E1ci\u00F3:"Simulation","Az elrendez\xE9s vissza\xE1ll\xEDt\xE1sa az alap\xE1llapot\xE1ra":"Reset the layout to its default","Az elrendez\xE9s alap\xE1llapota":"Default layout","Panelek ki-be":"Toggle panels","Bal oldals\xE1v: Alkatr\xE9szek ( [ )":"Left sidebar: Parts ( [ )","Bal oldals\xE1v (Alkatr\xE9szek)":"Left sidebar (Parts)","Als\xF3 panel: Probl\xE9m\xE1k, Napl\xF3 (P)":"Bottom panel: Problems, Log (P)","Als\xF3 panel (Probl\xE9m\xE1k, Napl\xF3)":"Bottom panel (Problems, Log)","Jobb oldals\xE1v: Tulajdons\xE1gok, Kapcsolatok, Szimul\xE1ci\xF3 ( ] )":"Right sidebar: Properties, Connections, Simulation ( ] )","Jobb oldals\xE1v":"Right sidebar",Visszavon\u00E1s:"Undo","Visszavon\xE1s (Ctrl+Z)":"Undo (Ctrl+Z)","\xDAjra (Ctrl+Y)":"Redo (Ctrl+Y)",\u00DAjra:"Redo","Szimul\xE1ci\xF3 (S)":"Simulation (S)",Bez\u00E1r\u00E1s:"Close","Bal oldali panel":"Left panel",Tulajdons\u00E1gok:"Properties",Alkatr\u00E9szek:"Parts","Bal oldals\xE1v (\xF6sszecsukva)":"Left sidebar (collapsed)","Kinyit\xE1s ( [ )":"Expand ( [ )","Bal oldals\xE1v kinyit\xE1sa":"Expand the left sidebar","Alkatr\xE9sz keres\xE9se":"Search parts","Keres\xE9s: n\xE9v, l\xE1b, funkci\xF3 (pl. i2c, adc, motor)":"Search: name, pin, function (e.g. i2c, adc, motor)","Saj\xE1t alkatr\xE9sz le\xEDr\xE1sa az Alkatr\xE9sz-szerkeszt\u0151ben":"Describe a custom part in the Part editor","\xDAj alkatr\xE9sz":"New part",Csoportok:"Groups","Minden csoport kinyit\xE1sa":"Expand all groups","Minden csoport becsuk\xE1sa":"Collapse all groups","A saj\xE1t k\xF6nyvt\xE1r":"Your library","a b\xF6ng\xE9sz\u0151dben marad, terv v\xE1lt\xE1sakor is; export\xE1lni \xE9s import\xE1lni a F\xE1jl men\xFCben lehet. Amit egy tervbe leraksz, az a terv r\xE9sze lesz (":"stays in your browser, even when you switch designs; export and import are in the File menu. Whatever you place in a design becomes part of it (",Projekt:"Project","), \xEDgy a tervf\xE1jllal egy\xFCtt utazik.":"), so it travels with the design file.","Lerak\xE1s k\xF6zben:":"While placing:","forgat\xE1s,":"rotate,","t\xFCkr\xF6z\xE9s,":"mirror,","m\xE9gse.":"cancel.","\xC9rint\xE9ssel: egy ujjal h\xFAzva g\xF6rgetsz, alkatr\xE9szen h\xFAzva mozgatod; hosszan nyomva kijel\xF6l\u0151 keret; k\xE9t ujjal nagy\xEDt\xE1s \xE9s g\xF6rget\xE9s. Lerak\xE1skor az el\u0151n\xE9zet az ujjad f\xF6l\xF6tt j\xE1r, felenged\xE9sre ker\xFCl le.":"With touch: drag with one finger to scroll, drag on a part to move it; long press for a selection box; two fingers to zoom and scroll. While placing, the preview follows above your finger and is placed when you lift it.","H\xFAzd a sz\xE9less\xE9g \xE1ll\xEDt\xE1s\xE1hoz, dupla kattint\xE1s: alapm\xE9ret":"Drag to set the width, double-click: default size","Bal oldals\xE1v sz\xE9less\xE9ge":"Left sidebar width",N\u00E9zetek:"Views",N\u00E9zet:"View","A panel: alkatr\xE9szek, bek\xF6t\xE9s (1)":"The board: parts, wiring (1)",Panel:"Board","A program: blokkok, amelyek fut\xE1s k\xF6zben a GPIO-kat vez\xE9rlik (2)":"The program: blocks that drive the GPIOs while running (2)","A panel \xE9s a program egym\xE1s mellett (3)":"The board and the program side by side (3)",Mindkett\u0151:"Both","Mindkett\u0151: egym\xE1s mellett vagy egym\xE1s alatt":"Both: side by side or one above the other","Feloszt\xE1s ir\xE1nya":"Split direction","Alkatr\xE9sz-szerkeszt\u0151k":"Part editors","A panel is l\xE1tszik a szerkeszt\u0151 mellett (bal oldalt)":"Show the board next to the editor (on the left)","Panel a szerkeszt\u0151 mellett":"Board next to the editor","A panel megjelen\xEDt\xE9se":"Board display",Oldal:"Side","Alkatr\xE9szoldal (F)":"Component side (F)",Alkatr\u00E9szoldal:"Component side","R\xE9zoldal, t\xFCkr\xF6zve (F)":"Copper side, mirrored (F)",R\u00E9zoldal:"Copper side","Kapcsolati vonalak: a kapcsolatok egyenes vonallal a k\xE9t l\xE1b k\xF6z\xF6tt (N)":"Connection lines: connections as straight lines between the two pins (N)",Vonalak:"Lines","Minden alkatr\xE9sz r\xF6ntgen n\xE9zetben: csak k\xF6rvonal, l\xE1bak \xE9s l\xE1bnevek (X)":"Every part in X-ray view: outline, pins and pin names only (X)",R\u00F6ntgen:"X-ray","(Shift+W) R\xF6vid vezet\xE9k: a hossz\xFA vezet\xE9kekb\u0151l csak a k\xE9t v\xE9g l\xE1tszik szakad\xE1sjellel; r\xE1mutatva vagy kijel\xF6lve a teljes vonal":"(Shift+W) Short wires: long wires show only their two ends with a break mark; the full line on hover or when selected","R\xF6vid vezet\xE9k":"Short wires","A panel n\xE9zet\xE9nek elforgat\xE1sa 90\xB0-kal (T)":"Rotate the board view by 90\xB0 (T)","Panel elforgat\xE1sa 90\xB0-kal":"Rotate the board by 90\xB0","Kezdj\xFCnk egy panelt":"Let's start a board","A Proofboarddal pr\xF3bany\xE1kot tervezel \xE9s ki is pr\xF3b\xE1lod, miel\u0151tt forrasztan\xE1l.":"With Proofboard you design a perfboard and try it out before you solder.","\u2013 a bal oldali k\xF6nyvt\xE1rb\xF3l rakd le \u0151ket a panelra.":"\u2013 place them on the board from the library on the left.",Bek\u00F6t\u00E9s:"Wiring","\u2013 kapcsolatokkal (az \xFAtvonalat a program keresi meg), vagy k\xE9zzel hidakkal \xE9s vezet\xE9kekkel.":"\u2013 with connections (the app finds the route), or by hand with bridges and wires.",Kipr\u00F3b\u00E1l\u00E1s:"Trying it out","\u2013 a szimul\xE1ci\xF3 megmutatja a fesz\xFClts\xE9geket, a Probl\xE9m\xE1k a hib\xE1kat; a program a vez\xE9rl\u0151lapot m\u0171k\xF6dteti.":"\u2013 the simulation shows the voltages, Problems shows the mistakes; the program drives the controller board.","Tiszta sablon":"Blank template","vagy n\xE9zd meg, hogyan k\xE9sz\xFCl":"or see how it's done","P\xE9lda bet\xF6lt\xE9se":"Load an example","Alkatr\xE9sz-szerkeszt\u0151":"Part editor",Eszk\u00F6z\u00F6k:"Tools","Eszk\xF6zs\xE1v \xF6sszecsuk\xE1sa / kinyit\xE1sa":"Collapse / expand the toolbar","Eszk\xF6zs\xE1v \xF6sszecsuk\xE1sa":"Collapse the toolbar",Sz\u00EDn:"Color",V\u00E1g\u00E1s:"Cut","A cs\xEDkv\xE1g\xE1s t\xEDpusa":"Strip cut type",Kijel\u00F6l\u00E9s:"Select","\xD6sszecsuk\xE1s c\xEDmsorra (dupla kattint\xE1s a c\xEDmsoron is)":"Collapse to the title bar (or double-click the title bar)","\xD6sszecsuk\xE1s c\xEDmsorra":"Collapse to the title bar","R\xF6gz\xEDt\xE9s a jobb s\xE1vba (a Tulajdons\xE1gok szakasz tetej\xE9re)":"Dock in the right sidebar (at the top of Properties)","R\xF6gz\xEDt\xE9s a jobb s\xE1vba":"Dock in the right sidebar",Nagy\u00EDt\u00E1s:"Zoom","Kicsiny\xEDt\xE9s (Ctrl+g\xF6rg\u0151)":"Zoom out (Ctrl+wheel)",Kicsiny\u00EDt\u00E9s:"Zoom out","Az eg\xE9sz panel l\xE1tsz\xF3djon (0)":"Show the whole board (0)","Nagy\xEDt\xE1s (Ctrl+g\xF6rg\u0151)":"Zoom in (Ctrl+wheel)","Az eg\xE9sz panel, k\xF6z\xE9pen (0)":"The whole board, centered (0)","Az eg\xE9sz panel":"The whole board","M\u0171veletek a kijel\xF6l\xE9ssel":"Actions on the selection","Probl\xE9m\xE1k \xE9s napl\xF3":"Problems and log","H\xFAzd a magass\xE1g \xE1ll\xEDt\xE1s\xE1hoz":"Drag to set the height","Az als\xF3 panel magass\xE1ga":"Bottom panel height","Als\xF3 panel":"Bottom panel",Probl\u00E9m\u00E1k:"Problems",Napl\u00F3:"Log","Mind elolvasva":"Mark all read","Napl\xF3 t\xF6rl\xE9se":"Clear log","Probl\xE9m\xE1k \xE9s napl\xF3 (P)":"Problems and log (P)","Als\xF3 panel kinyit\xE1sa":"Expand the bottom panel","A Probl\xE9m\xE1k megnyit\xE1sa":"Open Problems","Jobb oldals\xE1v sz\xE9less\xE9ge":"Right sidebar width","Jobb oldali panel":"Right panel",Kapcsolatok:"Connections",K\u00F3d:"Code","Jobb oldals\xE1v (\xF6sszecsukva)":"Right sidebar (collapsed)","Kinyit\xE1s ( ] )":"Expand ( ] )","Jobb oldals\xE1v kinyit\xE1sa":"Expand the right sidebar","\xC1tt\xE9tel a m\xE1sik oldals\xE1vba":"Move to the other sidebar","Lev\xE1laszt\xE1s: lebeg\u0151 ablak a panel f\xF6l\xF6tt":"Detach: floating window above the board","Lev\xE1laszt\xE1s lebeg\u0151 ablakba":"Detach into a floating window","Automatikus \xFAtvonaltervez\xE9s":"Automatic routing","Cs\xEDkos panelen a kapcsolatok szerint elv\xE1gja a cs\xEDkokat az elt\xE9r\u0151 h\xE1l\xF3zat\xFA l\xE1bak k\xF6z\xF6tt":"On a stripboard, cuts the strips between pins of different nets, based on the connections","Automatikus cs\xEDkv\xE1g\xE1s":"Automatic strip cuts","Az automatikus hidak \xFAjratervez\xE9se":"Replan the automatic bridges","\xDAtvonalak keres\xE9se":"Find routes","Az automatikus hidakat k\xE9zi hidakk\xE1 alak\xEDtja":"Turns the automatic bridges into manual ones","R\xF6gz\xEDt\xE9s k\xE9zire":"Make manual","A k\xE9zi bek\xF6t\xE9sb\u0151l kapcsolatokat k\xE9sz\xEDt, \xE9s automatikusan \xFAjrah\xFAzza":"Creates connections from the manual wiring and reroutes them automatically","K\xE9zi \u2192 automatikus":"Manual \u2192 automatic","Auto hidak t\xF6rl\xE9se":"Delete auto bridges","Kapcsolat:":"Connection:","eszk\xF6z, vagy gomb kijel\xF6l\xE9sekor \u201EA \u2192 GPIO, B \u2192 GND\u201D. A k\xE9zi hidakat az \xFAtvonalkeres\u0151 nem m\xF3dos\xEDtja; a \u201EK\xE9zi \u2192 automatikus\u201D kapcsolatokk\xE1 alak\xEDtja \u0151ket, a \u201ER\xF6gz\xEDt\xE9s k\xE9zire\u201D visszafel\xE9.":"tool, or \u201CA \u2192 GPIO, B \u2192 GND\u201D when a button is selected. The router does not change manual bridges; \u201CManual \u2192 automatic\u201D turns them into connections, \u201CMake manual\u201D does the reverse.",Jelmagyar\u00E1zat:"Legend","gomb A / GPIO":"button A / GPIO","gomb B":"button B","GND / kat\xF3d":"GND / cathode","3V3 / an\xF3d / +":"3V3 / anode / +","VBUS / VSYS":"VBUS / VSYS","k\xE9zi h\xEDd":"manual bridge","automatikus h\xEDd":"automatic bridge","kapcsolat \u2192 GPIO":"connection \u2192 GPIO","kapcsolat \u2192 GND":"connection \u2192 GND","kapcsolat l\xE1b\u2013l\xE1b":"pin-to-pin connection","bek\xF6tetlen kapcsolat":"unrouted connection","USB t\xE1p a vez\xE9rl\u0151n":"USB power on the controller","Gomb m\xF3d":"Button mode","Nyomva tart\xE1s":"Hold",Kapcsol\u00F3:"Toggle",Panelek:"Panels",R\u00E9szletek:"Details",N\u00E9vjegy:"About","Pr\xF3bany\xE1k-tervez\u0151 \xE9s -szimul\xE1tor: pontraszteres, szekci\xF3s \xE9s cs\xEDkos panelek, hidak \xE9s vezet\xE9kek, \xFAtvonalkeres\u0151, egyen\xE1ram\xFA szimul\xE1ci\xF3, blokkos program \xE9s k\xF3dgener\xE1l\xE1s Pico \xE9s ESP32 vez\xE9rl\u0151lapokhoz.":"Perfboard designer and simulator: dot, sectioned and strip boards, bridges and wires, a router, DC simulation, a block program and code generation for Pico and ESP32 boards.","A tervek \xE9s a saj\xE1t alkatr\xE9szek csak ebben a b\xF6ng\xE9sz\u0151ben vannak mentve; f\xE1jlba a F\xE1jl \u2192 Ment\xE9s f\xE1jlba menti \u0151ket.":"Designs and custom parts are saved only in this browser; File \u2192 Save to file writes them to a file.","Forr\xE1sk\xF3d a GitHubon":"Source code on GitHub","Hibajelz\xE9s, \xF6tlet":"Report a bug, suggest an idea",Telep\u00EDt\u00E9s:"Install","\xDAj verzi\xF3 \xE9rhet\u0151 el.":"A new version is available.",Friss\u00EDt\u00E9s:"Update","K\xE9s\u0151bb (a k\xF6vetkez\u0151 megnyit\xE1skor friss\xFCl)":"Later (updates on the next launch)",K\u00E9s\u0151bb:"Later",P\u00E9ld\u00E1k:"Examples","Keres\xE9s a p\xE9ld\xE1k k\xF6z\xF6tt":"Search the examples","A bet\xF6lt\xE9s visszavonhat\xF3 (Ctrl+Z).":"Loading can be undone (Ctrl+Z).",T\u00EDpus:"Type",M\u00E9ret:"Size",oszlopok:"columns",sorok:"rows",lyuk:"holes",Szekci\u00F3:"Section","nincs (pontraszter)":"none (dot board)","teljes cs\xEDk (stripboard)":"full strip (stripboard)",Alkalmaz:"Apply","A panel m\xE9ret\xE9nek vagy a r\xE9zoszt\xE1snak a v\xE1ltoz\xE1sa visszavonhat\xF3 (Ctrl+Z). A panelr\xF3l lel\xF3g\xF3 hidak \xE9s vezet\xE9kek t\xF6rl\u0151dnek.":"Changing the board size or the copper layout can be undone (Ctrl+Z). Bridges and wires hanging off the board are deleted.","\xDAj terv":"New design","A mostani terv visszavon\xE1ssal (Ctrl+Z) visszahozhat\xF3; a saj\xE1t k\xF6nyvt\xE1rad nem v\xE1ltozik.":"The current design can be brought back with Undo (Ctrl+Z); your library does not change.",M\u00E9gse:"Cancel",L\u00E9trehoz\u00E1s:"Create","JSON export / import":"JSON export / import",Export:"Export",M\u00E1sol\u00E1s:"Copy",Import:"Import",'Form\xE1tum: parts[{type,label,r,c,rot,mir,props}], bridges[[r1,c1,r2,c2]], wires[{a:[r,c],b:[r,c],color}], gpio{"partId.l\xE1bsz\xE1m":"pullup|pulldown|float|out_high|out_low"}. Koordin\xE1ta: sor:oszlop.':'Format: parts[{type,label,r,c,rot,mir,props}], bridges[[r1,c1,r2,c2]], wires[{a:[r,c],b:[r,c],color}], gpio{"partId.pinNumber":"pullup|pulldown|float|out_high|out_low"}. Coordinate: row:column.',Nyelv:"Language","Verzi\xF3: {v} \xB7 {d}":"Version: {v} \xB7 {d}","Telep\xEDtett alkalmaz\xE1sk\xE9nt fut; internet n\xE9lk\xFCl is m\u0171k\xF6dik.":"Running as an installed app; works without internet.","Internet n\xE9lk\xFCl is m\u0171k\xF6dik (a b\xF6ng\xE9sz\u0151 elt\xE1rolta). Telep\xEDthet\u0151 is \xF6n\xE1ll\xF3 alkalmaz\xE1sk\xE9nt.":"Works without internet (stored by the browser). It can also be installed as an app.","Telep\xEDtve: a Proofboard \xF6n\xE1ll\xF3 alkalmaz\xE1sk\xE9nt is elind\xEDthat\xF3.":"Installed: Proofboard can now be started as an app.","Visszavon\xE1s az alkatr\xE9sz-szerkeszt\u0151ben (Ctrl+Z)":"Undo in the part editor (Ctrl+Z)","\xDAjra az alkatr\xE9sz-szerkeszt\u0151ben (Ctrl+Y)":"Redo in the part editor (Ctrl+Y)","Kijel\xF6l\xE9s \xE9s mozgat\xE1s; Shift+kattint\xE1s vagy keret: t\xF6bb elem":"Select and move; Shift+click or a box: several items",H\u00EDd:"Bridge","Forraszt\xF3h\xEDd szomsz\xE9dos lyukak k\xF6z\xF6tt (h\xFAz\xE1ssal t\xF6bb is)":"Solder bridge between neighboring holes (drag for several)",Vezet\u00E9k:"Wire","Huzal k\xE9t tetsz\u0151leges lyuk k\xF6z\xF6tt":"A wire between any two holes",Kapcsolat:"Connection","K\xE9t l\xE1b \xF6sszek\xF6t\xE9se; az \xFAtvonalat a program keresi meg":"Connect two pins; the app finds the route",Cs\u00EDkv\u00E1g\u00E1s:"Strip cut","A r\xE9z megszak\xEDt\xE1sa k\xE9t lyuk k\xF6z\xF6tt, vagy egy lyuk kif\xFAr\xE1sa":"Break the copper between two holes, or drill out a hole",Jegyzet:"Note","Sz\xF6veges c\xE9dula a panelon":"A text note on the board",T\u00F6rl\u00E9s:"Delete","Kattint\xE1sra vagy h\xFAz\xE1ssal t\xF6r\xF6l":"Deletes on click or drag",Mozgat\u00E1s:"Pan","A n\xE9zet mozgat\xE1sa (Sz\xF3k\xF6z + h\xFAz\xE1s is)":"Move the view (or Space + drag)","Hely szerint":"By position","A kattint\xE1s helye d\xF6nt: lyuk k\xF6zep\xE9n furat, k\xE9t lyuk k\xF6z\xF6tt r\xE9s":"Where you click decides: a hole in the middle of a hole, a gap between two holes",Furat:"Hole","A lyuk kif\xFAr\xE1sa: a cs\xEDk ott megszakad":"Drill out the hole: the strip is broken there",R\u00E9s:"Gap","Szakad\xE1s k\xE9t lyuk k\xF6z\xF6tt: a cs\xEDk a k\xE9t lyuk k\xF6z\xF6tt megszakad":"A break between two holes: the strip is cut between them","{p} alkatr\xE9sz \xB7 {b} h\xEDd \xB7 {w} vezet\xE9k":"parts: {p} \xB7 bridges: {b} \xB7 wires: {w}","kif\xFArt lyuk (nincs r\xE9z)":"drilled hole (no copper)",cs\u00EDk:"strip",szekci\u00F3:"section",net:"net",lebeg:"floating","Lerak\xE1s: {x}":"Placing: {x}","Eszk\xF6z: {x}":"Tool: {x}","{n} elem":"{n} item||{n} items",vezet\u00E9k:"wire",h\u00EDd:"bridge",jegyzet:"note","Kijel\xF6lve: {x}":"Selected: {x}",k\u00E9k:"blue",piros:"red",fekete:"black",s\u00E1rga:"yellow",z\u00F6ld:"green",feh\u00E9r:"white",narancs:"orange",sz\u00FCrke:"gray",Forgat\u00E1s:"Rotate",T\u00FCkr\u00F6z\u00E9s:"Mirror",M\u00E1solat:"Copy","sor eltol\xE1s":"row offset",sor:"row","oszlop eltol\xE1s":"column offset",oszlop:"col","pl. GND,VCC,SDA,SCL":"e.g. GND,VCC,SDA,SCL","Pl. 4,7k \xB7 4k7 \xB7 100n \xB7 2.1 \u2014 \u2191/\u2193: {x}":"E.g. 4.7k \xB7 4k7 \xB7 100n \xB7 2.1 \u2014 \u2191/\u2193: {x}","E12-sor":"E12 series",l\u00E9ptet\u00E9s:"step","Nem \xE9rtelmezhet\u0151 \xE9rt\xE9k (pl. 4,7k \xB7 4k7 \xB7 100n)":"Not a valid value (e.g. 4.7k \xB7 4k7 \xB7 100n)","A k\xE9t l\xE1b nem lehet ugyanabban a lyukban":"The two pins cannot be in the same hole","Ennyire nem l\xF3ghat ki (legal\xE1bb egy l\xE1b a panelon, legfeljebb 8 lyuknyi t\xFAll\xF3g\xE1s)":"It cannot hang off this far (at least one pin on the board, at most 8 holes of overhang)",Jelenlegi:"Current","nincs kapcsolat":"no connection","L\xE1bak \xE9s bek\xF6t\xE9s":"Pins and wiring","{n} l\xE1b":"{n} pin||{n} pins","{n} lebeg":"{n} floating","a panelon k\xEDv\xFCl":"off the board",kapcsolat:"connection",bek\u00F6tve:"routed","nincs bek\xF6tve":"not routed",h\u00E1l\u00F3:"net","lebeg (sehova sincs k\xF6tve)":"floating (not connected anywhere)",N\u00E9v:"Name",orig\u00F3:"origin",t\u00FCkr\u00F6zve:"mirrored",Duplik\u00E1l\u00E1s:"Duplicate","\xDAj p\xE9ld\xE1ny ugyanezekkel a be\xE1ll\xEDt\xE1sokkal":"A new instance with the same settings","R\xF6ntgen (csak k\xF6rvonal \xE9s l\xE1bak)":"X-ray (outline and pins only)","Alkatr\xE9sz szerkeszt\xE9se":"Edit part","A be\xE9p\xEDtett le\xEDr\xE1sb\xF3l saj\xE1t, szerkeszthet\u0151 alkatr\xE9sz":"An editable custom part from the built-in description","M\xE1solat saj\xE1t alkatr\xE9szk\xE9nt":"Copy as a custom part","Az alkatr\xE9sz k\xE9zi bek\xF6t\xE9s\xE9t kapcsolatokk\xE1 alak\xEDtja, \xEDgy mozgat\xE1skor k\xF6veti":"Turns the part's manual wiring into connections, so it follows when moved","Bek\xF6t\xE9s automatikusra":"Make wiring automatic","Ennek az alkatr\xE9sznek nincs k\xE9zi bek\xF6t\xE9se":"This part has no manual wiring",Csere:"Swap","M\xE1sik vez\xE9rl\u0151re cser\xE9li; a kapcsolatok megmaradnak, a GPIO-k \xFAjra kioszt\xF3dnak":"Swaps to another controller; connections are kept, GPIOs are reassigned","Csatlakoz\xF3: {x} (t\xFCskesor a panelon)":"Connector: {x} (pin header on the board)","A k\xE1bel kih\xFAz\xE1sa: a t\xFCskesor a panelon marad, a l\xE1bak szabad k\xE1belk\xE9nt k\xF6thet\u0151k be":"Unplug the cable: the pin header stays on the board, the pins can be wired as a loose cable",Kih\u00FAz\u00E1s:"Unplug","T\xFCskesor a panelra a l\xE1bsz\xE1m\xE1val \xE9s l\xE1bneveivel; a k\xE1bel abba dugva, a bek\xF6t\xE9s onnan indul":"A pin header on the board with its pin count and names; the cable plugs into it and wiring starts from there","Csatlakoz\xF3 (t\xFCskesor) a panelra":"Connector (pin header) on the board","Nincs el\xE9g szabad hely a panelon a csatlakoz\xF3nak":"Not enough free space on the board for the connector","{x}: a csatlakoz\xF3 a panelon, a k\xE1bel bedugva. Mozgasd oda, ahov\xE1 forrasztan\xE1d.":"{x}: the connector is on the board, the cable is plugged in. Move it where you would solder it.","Ide csatlakozik: {x} ({y}). A l\xE1bak sorrendje a k\xE1bel\xE9.":"Plugged in here: {x} ({y}). The pin order follows the cable.",K\u00E1bel:"Cable","A k\xFCls\u0151 alkatr\xE9sz k\xE1bele ebbe a csatlakoz\xF3ba":"Plug the external part's cable into this connector",Bedug\u00E1s:"Plug in","Csatlakoz\xF3: k\xFCls\u0151 alkatr\xE9sz (motor, szerv\xF3, szenzor) k\xE1bele dughat\xF3 bele. A l\xE1bnevek a feliratokhoz val\xF3k.":"Connector: the cable of an external part (motor, servo, sensor) plugs into it. The pin names are for the labels.","Kapcsolatok: az A l\xE1b szabad GPIO-ra, a B l\xE1b a f\xF6ldre":"Connections: pin A to a free GPIO, pin B to ground","Kijel\xF6lve: {p} alkatr\xE9sz, {b} k\xE9zi h\xEDd, {w} vezet\xE9k":"Selected: parts {p}, manual bridges {b}, wires {w}","H\xFAz\xE1ssal egy\xFCtt mozognak. Shift+kattint\xE1s: hozz\xE1ad\xE1s/elv\xE9tel.":"They move together when dragged. Shift+click: add/remove.","R\xF6ntgen be/ki":"X-ray on/off","A kijel\xF6l\xE9snek nincs k\xE9zi bek\xF6t\xE9se":"The selection has no manual wiring","nem villamos elem":"not an electrical element","Jegyzet sz\xF6vege":"Note text","\xDAj sor: Enter. {x} sor f\xE9lk\xF6v\xE9r c\xEDmsor. M\xE9ret: h\xFAzd a jobb als\xF3 sark\xE1t, vagy add meg.":"New line: Enter. A {x} line is a bold heading. Size: drag the bottom-right corner, or enter it.",C\u00EDm:"Title",sz\u00E9less\u00E9g:"width",magass\u00E1g:"height","Szaggatott ny\xEDl a jegyzett\u0151l az alkatr\xE9szig; csak jel\xF6l\xE9s, nem kapcsolat":"A dashed arrow from the note to the part; only a marker, not a connection",Mutat:"Points to",semmire:"nothing","Kapcsolat innen: {x}":"Connection from: {x}","Kattints a c\xE9l l\xE1bra, vagy v\xE1lassz:":"Click the target pin, or choose:","szabad GPIO":"free GPIO","Kattints egy l\xE1bra, majd a c\xE9l l\xE1bra (vagy GND / szabad GPIO).":"Click a pin, then the target pin (or GND / free GPIO).","Lerak\xE1s: {x}{y}. Kattints a panelra; Shift+kattint\xE1ssal t\xF6bb p\xE9ld\xE1ny.":"Placing: {x}{y}. Click on the board; Shift+click for several.","({x} m\xE1solata)":"(copy of {x})","H\xFAzd az egeret szomsz\xE9dos lyukakon \xE1t: minden szekci\xF3hat\xE1rn\xE1l h\xEDd keletkezik.":"Drag across neighboring holes: a bridge is made at every section boundary.","Kattints a kezd\u0151, majd a c\xE9l lyukra.":"Click the start hole, then the target hole.","Kattints vagy h\xFAzz a t\xF6rlend\u0151 elemen.":"Click or drag over what to delete.","Kattints egy alkatr\xE9szre, vezet\xE9kre vagy h\xEDdra. Shift+kattint\xE1s vagy keret h\xFAz\xE1sa \xFCres helyen: t\xF6bb elem. Ctrl+A: minden.":"Click a part, wire or bridge. Shift+click or drag a box on an empty area: several items. Ctrl+A: everything.","\xC9rintsd meg a panelt, h\xFAzd a hely\xE9re, \xE9s engedd fel":"Touch the board, drag it into place, and let go",f\u00F6ld:"ground",t\u00E1pbemenet:"power input",t\u00E1p:"power","3,3 V":"3.3 V",jel:"signal","anal\xF3g jel":"analog signal",kimenet:"output",t\u00E1pkimenet:"power output","kapcsol\xF3 A":"switch A","kapcsol\xF3 B":"switch B",b\u00E1zis:"base",kollektor:"collector",emitter:"emitter",gate:"gate",drain:"drain",source:"source",an\u00F3d:"anode",kat\u00F3d:"cathode","an\xF3d +":"anode +","kat\xF3d \u2212":"cathode \u2212",tekercs:"coil",t\u00F6lt\u00E9s:"charge",ellen\u00E1ll\u00E1s:"resistor",kondenz\u00E1tor:"capacitor",\u00E1tk\u00F6t\u00E9s:"jumper",t\u00FCske:"pin","GND (f\xF6ld)":"GND (ground)",\u00C1ltal\u00E1nos:"General","szabad GPIO (az \xFAtvonalkeres\u0151 v\xE1laszt)":"free GPIO (the router picks)","{x} (foglalt: {y})":"{x} (used by: {y})","{x}: t\xE1p":"{x}: power","Ide nem tehet\u0151 v\xE1g\xE1s":"No cut can go here","Itt nincs mit elv\xE1gni (szekci\xF3hat\xE1r vagy a cs\xEDk v\xE9ge)":"Nothing to cut here (section boundary or the end of the strip)","\xCDrd ide a le\xEDr\xE1st\u2026":"Write the description here\u2026","Tov\xE1bb nem mozd\xEDthat\xF3 (panel sz\xE9le)":"Cannot move further (edge of the board)","A panel sz\xE9l\xE9n\xE9l tov\xE1bb nem mozd\xEDthat\xF3":"Cannot move past the edge of the board","Kijel\xF6l\u0151 keret: h\xFAzd az ujjad":"Selection box: drag your finger","\xCDgy lel\xF3gna a panelr\xF3l (legal\xE1bb egy l\xE1b a panelon, legfeljebb 8 lyuknyi t\xFAll\xF3g\xE1s)":"It would hang off the board (at least one pin on the board, at most 8 holes of overhang)","Egyszer\u0171 m\xF3d: a halad\xF3 r\xE9szek rejtve.":"Simple mode: advanced parts are hidden.","Egyszer\u0171 m\xF3d kikapcsolva.":"Simple mode turned off.","Szimul\xE1ci\xF3 elind\xEDtva.":"Simulation started.","Szimul\xE1ci\xF3 le\xE1ll\xEDtva.":"Simulation stopped.","Egym\xE1s alatt (kattintva: egym\xE1s mellett)":"One above the other (click: side by side)","Egym\xE1s mellett (kattintva: egym\xE1s alatt)":"Side by side (click: one above the other)","Nincs z\xE1rlat vagy bek\xF6t\xE9si hiba.":"No short circuit or wiring error.","t\xE1p van":"powered","nincs t\xE1p":"no power","Nincs vez\xE9rl\u0151 (Pico, ESP32) a panelon.":"No controller (Pico, ESP32) on the board.",Gomb:"Button",\u00C1llapot:"State",Olvas:"Reads",lenyomva:"pressed",fel:"up","Ind\xEDtsd a szimul\xE1ci\xF3t, \xE9s kattints a gombokra a panelon.":"Start the simulation and click the buttons on the board.",M\u00F3d:"Mode",Szint:"Level","{x} m\xF3d":"{x} mode",kit\u00F6lt\u00E9s:"duty","frekv.":"freq.","Lass\xFA PWM: a panelon val\xF3s id\u0151ben villog; a t\xE1bl\xE1zat az \xE1tlagot mutatja.":"Slow PWM: blinks in real time on the board; the table shows the average.","Gyors PWM: a szem az \xE1tlagot l\xE1tja, a szimul\xE1ci\xF3 is \xE1tlagol.":"Fast PWM: the eye sees the average, and the simulation averages too.",villog:"blinking",\u00E1tlagolva:"averaged",nyitva:"on",z\u00E1rva:"off",\u00C1ram:"Current",vil\u00E1g\u00EDt:"lit",s\u00F6t\u00E9t:"dark",akt\u00EDv:"active",tel\u00EDtve:"saturated","Kond.":"Cap.","Id\u0151\xE1lland\xF3: ennyi id\u0151 alatt t\xF6lt\u0151dik fel kb. 63%-ra, 5\u03C4 alatt teljesen":"Time constant: it charges to about 63% in this time, fully in 5\u03C4","nincs t\xF6lt\u0151\xFAt":"no charging path",Logika:"Logic",Bemenet:"Input",Kimenet:"Output",t\u00E1rol\u00F3k:"registers",Motor:"Motor",Fordulat:"Speed",\u00E1ll:"stopped",L\u00E9ptet\u0151:"Stepper",Tekercs:"Coils",L\u00E9p\u00E9s:"Step",Tengely:"Shaft",Szerv\u00F3:"Servo",Jel:"Signal",Sz\u00F6g:"Angle",t\u00F6lt\u0151dik:"charging",mer\u00FCl:"discharging","nincs terhel\xE9s":"no load",Vez\u00E9rl\u0151k:"Controls","Szimul\xE1ci\xF3 le\xE1ll\xEDt\xE1sa":"Stop simulation","Bet\xF6ltve: {x}. Az el\u0151z\u0151 terv visszavon\xE1ssal (Ctrl+Z) visszahozhat\xF3.":"Loaded: {x}. The previous design can be brought back with Undo (Ctrl+Z).","P\xE9ld\xE1k kateg\xF3ri\xE1i":"Example categories","\xD6sszes kateg\xF3ria":"All categories","Mit tanulsz:":"What you learn:","Nincs ilyen p\xE9lda.":"No such example.","\xDAtvonalkeres\xE9s: {ok}/{n} kapcsolat bek\xF6tve, {b} h\xEDd, {w} vezet\xE9k.":"Routing: {ok}/{n} connections routed, bridges: {b}, wires: {w}.","Az automatikus bek\xF6t\xE9s k\xE9ziv\xE9 r\xF6gz\xEDtve.":"The automatic wiring was made manual.","Nincs k\xE9zi bek\xF6t\xE9s, amit \xE1t lehetne alak\xEDtani":"There is no manual wiring to convert","Az automatikus hidak t\xF6r\xF6lve, az \xFAtvonaltervez\xE9s kikapcsolva.":"Automatic bridges deleted, routing turned off.","A Proofboard elt\xE1rolva: internet n\xE9lk\xFCl is m\u0171k\xF6dik.":"Proofboard is stored: it works without internet.","\xDAj terv. Az el\u0151z\u0151 visszavon\xE1ssal (Ctrl+Z) visszahozhat\xF3.":"New design. The previous one can be brought back with Undo (Ctrl+Z).","{n} hiba":"{n} error||{n} errors","{n} figyelmeztet\xE9s":"{n} warning||{n} warnings","{n} megjegyz\xE9s":"{n} note||{n} notes","Nincs probl\xE9ma":"No problems","Als\xF3 panel \xF6sszecsuk\xE1sa":"Collapse the bottom panel","A terv JSON-ja a mez\u0151ben.":"The design's JSON is in the field.","V\xE1g\xF3lapra m\xE1solva.":"Copied to the clipboard.","Kijel\xF6ltem a sz\xF6veget, m\xE1sold Ctrl+C-vel.":"The text is selected, copy it with Ctrl+C.","Bet\xF6ltve: {p} alkatr\xE9sz, {b} h\xEDd, {w} vezet\xE9k":"Loaded: parts {p}, bridges {b}, wires {w}","a tervvel {n} saj\xE1t alkatr\xE9sz j\xF6tt (a terv r\xE9sze, a k\xF6nyvt\xE1radat nem v\xE1ltoztatta)":"the design brought {n} custom parts (part of the design, your library was not changed)","a k\xF6nyvt\xE1radban m\xE1s azonos nev\u0171 alkatr\xE9sz van, ez\xE9rt a terv v\xE1ltozata \xFAj n\xE9ven: {x}":"your library has a different part with the same name, so the design's version got a new name: {x}","Hib\xE1s JSON: {x}":"Invalid JSON: {x}","Nem siker\xFClt bet\xF6lteni: {x}":"Could not load: {x}","{ok}/{n} bek\xF6tve":"{ok}/{n} routed",nincs:"none",k\u00E1bel:"cable","{n} h\xEDd":"{n} bridge||{n} bridges",k\u00E9zi:"manual","Kattints: kezd\u0151- \xE9s v\xE9gpont, \xFAtvonal kiemel\xE9se":"Click: highlight the start, end and route","Kapcsolat t\xF6rl\xE9se":"Delete connection",C\u00E9l:"Target","M\xE9g nincs kapcsolat.":"No connections yet.","{a} auto + {m} k\xE9zi":"{a} auto + {m} manual","{n} vezet\xE9k":"{n} wire||{n} wires","{n} v\xE1g\xE1s":"{n} cut||{n} cuts","\xD6sszesen: {x}":"Total: {x}","A soronk\xE9nti sz\xE1mok \xF6sszege {n}; a k\xF6z\xF6s szakaszok (pl. GND-t\xF6rzs) t\xF6bb kapcsolatn\xE1l is szerepelnek, de csak egyszer kell beforrasztani.":"The rows add up to {n}; shared sections (e.g. a GND trunk) appear in several connections but only need soldering once.","sorok \xF6sszege: {n} (k\xF6z\xF6s szakaszok)":"rows add up to {n} (shared sections)",c\u00E9l:"target",kezdet:"start","Esc: kiemel\xE9s v\xE9ge":"Esc: end highlight","A saj\xE1t k\xF6nyvt\xE1rba ker\xFClt: {x}":"Added to your library: {x}","Alkatr\xE9sz t\xF6r\xF6lve":"Part deleted","Kattints a panelra a lerak\xE1shoz":"Click on the board to place it","H\xE1tt\xE9rbe: {x}":"To background: {x}","H\xE1tt\xE9rbe (Esc): a nem mentett alkatr\xE9sz a f\xFCl\xE9n v\xE1r":"To background (Esc): the unsaved part waits on its tab","Bez\xE1r\xE1s: {x}":"Close: {x}","Bez\xE1r\xE1s (Esc)":"Close (Esc)","a piszkozat megmarad, az \xDAj alkatr\xE9sz folytatja":"the draft is kept, New part continues it","Az alkatr\xE9sz szerkeszt\xE9se":"Edit the part","Alkatr\xE9sz-szerkeszt\u0151: {x}":"Part editor: {x}","A nem mentett alkatr\xE9sz a f\xFCl\xE9n v\xE1r: kattints r\xE1 a folytat\xE1shoz.":"The unsaved part waits on its tab: click it to continue.","A saj\xE1t k\xF6nyvt\xE1rad m\xE9g \xFCres.":"Your library is still empty.","{n} alkatr\xE9sz export\xE1lva.":"{n} part exported.||{n} parts exported.","{n} alkatr\xE9sz bet\xF6ltve a saj\xE1t k\xF6nyvt\xE1rba":"{n} part loaded into your library||{n} parts loaded into your library","{n} hib\xE1s kihagyva ({x})":"{n} invalid skipped ({x})","10\xD720 cm, 1\xD73 szekci\xF3":"10\xD720 cm, 1\xD73 sections","10\xD716 cm cs\xEDkos (stripboard)":"10\xD716 cm stripboard","7\xD79 cm pontraszter":"7\xD79 cm dot board","5\xD77 cm pontraszter":"5\xD77 cm dot board","4\xD76 cm pontraszter":"4\xD76 cm dot board","teljes cs\xEDk":"full strip",pontraszter:"dot board","1\xD7{n} szekci\xF3":"1\xD7{n} sections",Egyedi:"Custom",Alapok:"Basics",Vez\u00E9rl\u0151:"Controller",F\u00E9lvezet\u0151:"Semiconductor",Passz\u00EDv:"Passive","Saj\xE1t alkatr\xE9sz":"Custom part",Modul:"Module",kezd\u0151:"beginner",halad\u00F3:"advanced","be, felh\xFAzva":"in, pull-up","be, leh\xFAzva":"in, pull-down","be, lebeg\u0151":"in, floating","anal\xF3g (ADC)":"analog (ADC)","ki: 1":"out: 1","ki: 0":"out: 0","ki: PWM":"out: PWM","Sz\u0171r\xE9s c\xEDmk\xE9re":"Filter by tag","Sz\u0171r\xE9s:":"Filter:","Sz\u0171r\u0151k t\xF6rl\xE9se":"Clear filters","Tal\xE1latok minden kateg\xF3ri\xE1ban: {n}":"Results in all categories: {n}",program:"program","Szimul\xE1ci\xF3 fut":"Simulation running","Szimul\xE1ci\xF3 \xE1ll":"Simulation stopped","+ Blokk":"+ Block","A kijel\xF6lt blokk vagy \xE9l t\xF6rl\xE9se (Delete)":"Delete the selected block or edge (Delete)","Az eg\xE9sz program l\xE1tsz\xF3djon":"Show the whole program",Mind:"All","Teljes k\xE9perny\u0151":"Full screen","Teljes k\xE9perny\u0151 (Esc: vissza)":"Full screen (Esc: back)",Programv\u00E1szon:"Program canvas","M\xE9g nincs program. A {x} men\xFCb\u0151l rakj le egy bemenetet (pl. gomb) \xE9s egy kimenetet (pl. LED), majd h\xFAzz \xE9lt a kimeneti pontj\xE1t\xF3l a bemeneti pontig.":"No program yet. From the {x} menu place an input (e.g. a button) and an output (e.g. an LED), then drag an edge from the output point to the input point.","nincs l\xE1b kiv\xE1lasztva":"no pin selected","(nincs GPIO-n)":"(not on a GPIO)","ismeretlen l\xE1b":"unknown pin",Sablon:"Template","\xDCtemad\xF3 \u2192 Sorozat (f\xE9ll\xE9ptet\xE9s) \u2192 4 digit\xE1lis kimenet; ha van ULN2003, az IN1\u2013IN4 l\xE1baira":"Clock \u2192 Sequence (half-step) \u2192 4 digital outputs; to the IN1\u2013IN4 pins if there is a ULN2003",L\u00E9ptet\u0151motor:"Stepper motor","v\xE1lassz l\xE1bat":"choose a pin","Blokk t\xF6rl\xE9se":"Delete block",Le\u00E1ll\u00EDt\u00E1s:"Stop",Futtat\u00E1s:"Run","Vissza (Esc)":"Back (Esc)","Kil\xE9p\xE9s a teljes k\xE9perny\u0151b\u0151l":"Exit full screen","M\xE9g nincs bejegyz\xE9s. Ide ker\xFCl a bet\xF6lt\xE9s, a ment\xE9s, az \xFAtvonalkeres\xE9s \xE9s a szimul\xE1ci\xF3 ind\xEDt\xE1sa.":"No entries yet. Loading, saving, routing and starting the simulation are logged here.",Programnyelv:"Programming language","platformio.ini \xE9s src/main.cpp egy zip-ben (VS Code + PlatformIO)":"platformio.ini and src/main.cpp in a zip (VS Code + PlatformIO)","PlatformIO-projekt":"PlatformIO project","Gener\xE1lt k\xF3d":"Generated code","Let\xF6lt\xE9s ({x})":"Download ({x})","M\xE9g nincs program. A Blokkok f\xFCl\xF6n rakd \xF6ssze, \xE9s itt megjelenik a k\xF3dja.":"No program yet. Build it from blocks and its code appears here.","Felt\xF6lt\xE9s: Thonny-val nyisd meg, \xE9s mentsd a lapra {x} n\xE9ven (vagy {y}). A lapon MicroPython-firmware kell.":"Upload: open it in Thonny and save it to the board as {x} (or {y}). The board needs MicroPython firmware.",lap:"board","az alaplapkezel\u0151h\xF6z add hozz\xE1: {x}":"add to the Boards Manager: {x}","v\xE1laszd ki a lapot":"select the board","Halad\xF3knak: PlatformIO-projekt zip-ben.":"For advanced users: a PlatformIO project in a zip.",M\u00E1solva:"Copied","Nem siker\xFClt":"Failed","Alkatr\xE9szek lerak\xE1sa \xE9s bek\xF6t\xE9se":"Placing and wiring parts","A panel \xE9s a program egym\xE1s mellett, jobbra a k\xF3d":"The board and the program side by side, the code on the right","Vez\xE9rl\u0151k \xE9s GPIO-k; a szimul\xE1ci\xF3 ind\xEDt\xE1sakor erre v\xE1lt":"Controls and GPIOs; switches here when the simulation starts","Kedvenc (kattint\xE1sra kiveszi)":"Favorite (click to remove)",Kedvencekhez:"Add to favorites","{x} kedvenc":"{x} favorite","Hozz\xE1ad\xE1s a saj\xE1t k\xF6nyvt\xE1rhoz (m\xE1s tervekben is el\xE9rhet\u0151 lesz)":"Add to your library (available in other designs too)","{x} a k\xF6nyvt\xE1rba":"{x} to the library",Szerkeszt\u00E9s:"Edit","{x} szerkeszt\xE9se":"Edit {x}",Kedvencek:"Favorites","Legut\xF3bb haszn\xE1lt":"Recently used","A megnyitott terv saj\xE1t alkatr\xE9szei, amelyek nincsenek a k\xF6nyvt\xE1radban. \uFF0B: hozz\xE1ad\xE1s a saj\xE1t k\xF6nyvt\xE1rhoz.":"Custom parts of the open design that are not in your library. \uFF0B: add to your library.","Saj\xE1t k\xF6nyvt\xE1r":"Your library","Nincs tal\xE1lat.":"No results.",L\u00E1b:"Pin","f\xE9ll\xE9ptet\xE9s (8 l\xE9p\xE9s)":"half step (8 steps)","teljes l\xE9p\xE9s, k\xE9t tekercs (4)":"full step, two coils (4)","egy tekercs (4)":"one coil (4)","bin\xE1ris sz\xE1ml\xE1l\xF3 (16)":"binary counter (16)","saj\xE1t minta":"custom pattern","Ut\xE1nfut\xE1s (ki k\xE9sleltetve)":"Off delay (stays on)","Bekapcsol\xE1si k\xE9sleltet\xE9s":"On delay",Impulzus:"Pulse","Sz\u0171r\xE9s (mindk\xE9t v\xE1ltoz\xE1s)":"Filter (both changes)",Id\u0151:"Time","Digit\xE1lis bemenet":"Digital input","Egy l\xE1b szintje (pl. nyom\xF3gomb). Felh\xFAz\xE1ssal a lenyomott gomb alacsony szintet ad, ez\xE9rt az \u201Eakt\xEDv\u201D alapb\xF3l az alacsony.":"The level of a pin (e.g. a push button). With a pull-up the pressed button reads low, so \u201Cactive\u201D is low by default.",Felh\u00FAz\u00E1s:"Pull","fel (3,3 V)":"up (3.3 V)","le (GND)":"down (GND)",Akt\u00EDv:"Active","alacsony szinten":"when low","magas szinten":"when high","Anal\xF3g bemenet":"Analog input","Egy ADC-k\xE9pes l\xE1b fesz\xFClts\xE9ge 0\u20261 k\xF6z\xF6tt (0 V \u2192 0, 3,3 V \u2192 1), pl. potm\xE9ter vagy joystick.":"The voltage of an ADC-capable pin as 0\u20261 (0 V \u2192 0, 3.3 V \u2192 1), e.g. a potentiometer or joystick.",\u00E9rt\u00E9k:"value",\u00C1lland\u00F3:"Constant","R\xF6gz\xEDtett sz\xE1m (0\u20261 k\xF6z\xF6tt PWM-kit\xF6lt\xE9shez, vagy \xF6sszehasonl\xEDt\xE1shoz).":"A fixed number (0\u20261 for PWM duty, or for comparison).",\u00C9rt\u00E9k:"Value",NEM:"NOT","Megford\xEDtja a jelet.":"Inverts the signal.",be:"in",ki:"out",\u00C9S:"AND","Akkor igaz, ha mindk\xE9t bemenet igaz.":"True when both inputs are true.",A:"A",B:"B",C:"C",D:"D",VAGY:"OR","Akkor igaz, ha legal\xE1bb az egyik bemenet igaz.":"True when at least one input is true.","KIZ\xC1R\xD3 VAGY":"XOR","Akkor igaz, ha pontosan az egyik bemenet igaz.":"True when exactly one input is true.",\u00D6sszehasonl\u00EDt\u00E1s:"Compare","Igaz, ha a bemenet nagyobb (vagy kisebb) a hat\xE1rn\xE1l, pl. \u201Ea potm\xE9ter f\xE9ln\xE9l tov\xE1bb van tekerve\u201D.":"True when the input is above (or below) the threshold, e.g. \u201Cthe potentiometer is turned past halfway\u201D.",igaz:"true",Felt\u00E9tel:"Condition","nagyobb, mint":"greater than","kisebb, mint":"less than",Hat\u00E1r:"Threshold",\u00DCtemad\u00F3:"Clock","N\xE9gysz\xF6gjel: peri\xF3dusonk\xE9nt a kit\xF6lt\xE9s ar\xE1ny\xE1ban igaz (villog\xF3 LED).":"Square wave: true for the duty share of each period (blinking LED).",Peri\u00F3dus:"Period",Kit\u00F6lt\u00E9s:"Duty",V\u00E1lt\u00F3kapcsol\u00F3:"Toggle","Minden felfut\xF3 \xE9lre (pl. gombnyom\xE1sra) \xE1tv\xE1lt: be, ki, be\u2026":"Flips on every rising edge (e.g. a button press): on, off, on\u2026",v\u00E1lt\u00E1s:"toggle",\u00E1llapot:"state",Sz\u00E1ml\u00E1l\u00F3:"Counter","Felfut\xF3 \xE9lenk\xE9nt eggyel n\u0151, a hat\xE1rn\xE1l el\xF6lr\u0151l kezdi; a t\xF6rl\xE9s lenull\xE1zza. Az \u201Ear\xE1ny\u201D 0\u20261 k\xF6z\xF6tt (PWM-hez).":"Adds one on every rising edge and starts over at the limit; reset sets it to zero. \u201CRatio\u201D is 0\u20261 (for PWM).",sz\u00E1mol:"count",t\u00F6rl\u00E9s:"reset",ar\u00E1ny:"ratio",L\u00E9p\u00E9ssz\u00E1m:"Steps",Id\u0151z\u00EDt\u0151:"Timer","K\xE9sleltet\xE9s vagy ut\xE1nfut\xE1s a megadott id\u0151vel. Ut\xE1nfut\xE1s: azonnal bekapcsol, \xE9s a bemenet megsz\u0171n\xE9se ut\xE1n m\xE9g ennyi ideig igaz (l\xE9pcs\u0151h\xE1zi vil\xE1g\xEDt\xE1s). Bekapcsol\xE1si k\xE9sleltet\xE9s: csak akkor kapcsol be, ha a bemenet ennyi ideig folyamatosan igaz. Impulzus: felfut\xF3 \xE9lre ennyi ideig igaz. Sz\u0171r\xE9s: mindk\xE9t v\xE1ltoz\xE1st csak akkor adja tov\xE1bb, ha ennyi ideig tart (perg\xE9smentes\xEDt\xE9s).":"Delay or hold for the given time. Off delay: turns on at once and stays true this long after the input ends (staircase light). On delay: turns on only when the input has been true for this long. Pulse: true for this long on a rising edge. Filter: passes on both changes only if they last this long (debouncing).",M\u0171k\u00F6d\u00E9s:"Mode",Sorozat:"Sequence","Minden felfut\xF3 \xE9lre (pl. \xFCtemad\xF3t\xF3l) a minta k\xF6vetkez\u0151 sora ker\xFCl az A\u2013D kimenetekre: l\xE9ptet\u0151motor tekercsei, fut\xF3f\xE9ny, sz\xE1ml\xE1l\xF3. A \u201Evissza\u201D bemenet (vagy az ir\xE1ny) visszafel\xE9 l\xE9ptet.":"On every rising edge (e.g. from a clock) the next row of the pattern goes to outputs A\u2013D: stepper coils, chaser lights, counter. The \u201Cback\u201D input (or the direction) steps backwards.",l\u00E9p\u00E9s:"step",vissza:"back",Minta:"Pattern","Saj\xE1t minta (sorok sz\xF3k\xF6zzel)":"Custom pattern (rows separated by spaces)",Ir\u00E1ny:"Direction",el\u0151re:"forward","Digit\xE1lis kimenet":"Digital output","Igaz \u2192 a l\xE1b magas (3,3 V), hamis \u2192 alacsony (pl. LED, rel\xE9, MOSFET kapuja).":"True \u2192 the pin is high (3.3 V), false \u2192 low (e.g. LED, relay, MOSFET gate).","PWM kimenet":"PWM output","Kit\xF6lt\xE9s: LED f\xE9nyereje, motor fordulatsz\xE1ma. Ha a bemenet nincs bek\xF6tve, a be\xE1ll\xEDtott kit\xF6lt\xE9s \xE9rv\xE9nyes; bek\xF6tve a bemenet (0\u20261) adja, pl. \xC1lland\xF3 0,3 = 30 % vagy potm\xE9ter. Logikai jel (pl. \xDCtemad\xF3) 0 % vagy 100 %. Szerv\xF3hoz 50 Hz \xE9s 2,5\u202612,5 %.":"Duty: LED brightness, motor speed. If the input is not connected, the set duty applies; when connected, the input (0\u20261) sets it, e.g. Constant 0.3 = 30 % or a potentiometer. A logic signal (e.g. Clock) is 0 % or 100 %. For a servo, 50 Hz and 2.5\u202612.5 %.","Kit\xF6lt\xE9s (bemenet n\xE9lk\xFCl)":"Duty (without input)",Frekvencia:"Frequency","jel / adat":"signal / data","f\xF6ld (GND)":"ground (GND)","an\xF3d / +":"anode / +","kat\xF3d / \u2212":"cathode / \u2212",\u00E1ltal\u00E1nos:"general","GPIO (vez\xE9rl\u0151lap)":"GPIO (controller board)","3,3 V kimenet":"3.3 V output","t\xE1p (VSYS, 5V\u2026)":"power (VSYS, 5V\u2026)","egy\xE9b (RUN, EN\u2026)":"other (RUN, EN\u2026)","adc, adc2, in (csak bemenet), nopull, strap, uart0, led, valamint buszfunkci\xF3k: i2c0.sda, spi1.mosi, uart0.tx, pwm3.a\u2026":"adc, adc2, in (input only), nopull, strap, uart0, led, and bus functions: i2c0.sda, spi1.mosi, uart0.tx, pwm3.a\u2026","{n} l\xE1b egy sorban":"{n} pins in a row","k\xFCls\u0151 \xB7 {n} kivezet\xE9s":"external \xB7 {n} lead||external \xB7 {n} leads",n\u00E9v:"name",el\u0151tag:"prefix",kateg\u00F3ria:"category",szerel\u00E9s:"mounting","l\xE1bak (kifejez\xE9sek, ism\xE9tl\xE9s vagy extra mez\u0151k)":"pins (expressions, repeats or extra fields)",l\u00E1bcsoportok:"pin groups",param\u00E9terek:"parameters",l\u00E1bt\u00E1bla:"pin table","a test m\xE9rete":"the body size","saj\xE1t rajzelemek":"custom drawing elements",l\u00E1bfeliratok:"pin labels","a villamos modell r\xE9szletei":"details of the electrical model",vez\u00E9rl\u0151k:"controls",l\u00E1bak:"pins","\xDAj modul":"New module","Villamos modell":"Electrical model","(m\xE1solat)":"(copy)","Alkatr\xE9sz: {x}":"Part: {x}",\u00FAj:"new","jav\xEDtsd, miel\u0151tt az \u0171rlapra v\xE1ltasz.":"fix it before switching to the form.","Az \u0171rlapon legal\xE1bb egy, fix hely\u0171 l\xE1b kell (sz\xE1mmal megadott sor \xE9s oszlop).":"The form needs at least one pin at a fixed place (row and column given as numbers).","Nincs le\xEDr\xE1s.":"No description.","Adj hozz\xE1 l\xE1bakat: kattints az el\u0151n\xE9zetre, vagy haszn\xE1ld a l\xE1bsor-gener\xE1tort.":"Add pins: click on the preview, or use the pin row generator.",Alapadatok:"Basics",L\u00E1bak:"Pins","nincs l\xE1bhoz k\xF6tve.":"not connected to a pin.","A logik\xE1hoz kell egy t\xE1pbemenet szerep\u0171 l\xE1b.":"The logic needs a pin with the power input role.","A logik\xE1hoz kell egy f\xF6ld (GND) szerep\u0171 l\xE1b.":"The logic needs a pin with the ground (GND) role.",T\u00E1rol\u00F3:"Register","az \xE9rt\xE9k bemenete nincs bek\xF6tve.":"the value input is not connected.",Nyom\u00F3gomb:"Push button",Megjelen\u00E9s:"Appearance",El\u0151n\u00E9zet:"Preview","Az alkatr\xE9sz adatai":"Part data","Az alkatr\xE9sz probl\xE9m\xE1i":"Problems of the part","Szerkeszt\xE9si m\xF3d":"Editing mode","L\xE1bak: hely, n\xE9v, szerep, csoport, funkci\xF3":"Pins: position, name, role, group, function","M\u0171k\xF6d\xE9s: villamos modell, digit\xE1lis logika, vez\xE9rl\u0151 a szimul\xE1ci\xF3ban":"Behavior: electrical model, digital logic, control in the simulation","A le\xEDr\xE1s teljes JSON-form\xE1ja":"The full JSON form of the description",Elvet\u00E9s:"Discard","Elvet\xE9s: a nem mentett m\xF3dos\xEDt\xE1sok eldob\xE1sa, vissza a kiindul\xF3 \xE1llapotra":"Discard: drop the unsaved changes and go back to the starting state",Ment\u00E9s:"Save","Ment\xE9s a saj\xE1t k\xF6nyvt\xE1rba (Ctrl+S)":"Save to your library (Ctrl+S)","Ment\xE9s a saj\xE1t k\xF6nyvt\xE1rba, \xE9s a lerak\xE1s ind\xEDt\xE1sa a panelon (Ctrl+S)":"Save to your library and start placing it on the board (Ctrl+S)","saj\xE1t alkatr\xE9sz":"custom part","\xFAj, m\xE1solatb\xF3l":"new, from a copy","\xFAj alkatr\xE9sz":"new part","nem mentett m\xF3dos\xEDt\xE1sok":"unsaved changes","JSON-n\xE9zetben az alapadatok a le\xEDr\xE1sban szerkeszthet\u0151k.":"In JSON view the basics are edited in the description.","JSON-n\xE9zetben a megjelen\xE9s a le\xEDr\xE1sban szerkeszthet\u0151.":"In JSON view the appearance is edited in the description.","Az alkatr\xE9sz t\xF6rl\xE9se a saj\xE1t k\xF6nyvt\xE1rb\xF3l":"Delete the part from your library","Alkatr\xE9sz t\xF6rl\xE9se":"Delete part","A tervben m\xE1r lerakott p\xE9ld\xE1nyok megmaradnak (a terv saj\xE1t le\xEDr\xE1s\xE1val).":"Instances already placed in the design are kept (with the design's own description).","A le\xEDr\xE1s rendben, menthet\u0151.":"The description is fine and can be saved.",csoport:"group","Az azonos csoport\xFA l\xE1bak gy\xE1rilag \xF6ssze vannak k\xF6tve":"Pins in the same group are connected internally","pl. 3-5.5":"e.g. 3-5.5","Csak t\xE1pbemenetn\xE9l (vin) adhat\xF3 meg":"Only for a power input (vin)","t\xE1pfesz\xFClts\xE9g-tartom\xE1ny":"supply voltage range","pl. adc i2c0.sda":"e.g. adc i2c0.sda",k\u00E9pess\u00E9gek:"capabilities",buszfunkci\u00F3:"bus function","A buszfunkci\xF3, amire a l\xE1b v\xE1r":"The bus function the pin expects",El\u0151tag:"Prefix","A p\xE9ld\xE1nyok neve: el\u0151tag + sorsz\xE1m, pl. U1, LCD1":"Instance names: prefix + number, e.g. U1, LCD1",Kateg\u00F3ria:"Category","A panel mell\xE9 ker\xFCl; a l\xE1baihoz k\xE1bel (vezet\xE9k) k\xF6t be":"Goes next to the board; a cable (wire) connects its pins","K\xFCls\u0151 alkatr\xE9sz (k\xE1bellel bek\xF6tve)":"External part (connected by cable)",Marg\u00F3:"Margin",Kiterjeszt\u00E9s:"Extension",fent:"top",lent:"bottom",balra:"left",jobbra:"right","A test m\xE9rete a l\xE1bakon t\xFAl, lyukban (pl. egy kijelz\u0151panel nagyobb a l\xE1bsor\xE1n\xE1l).":"The body size beyond the pins, in holes (e.g. a display board is larger than its pin row).","Felirat a testen":"Text on the body","pl. TP4056":"e.g. TP4056",L\u00E1bnevek:"Pin names","a l\xE1bak alatt":"below the pins","a l\xE1bak felett":"above the pins","befel\xE9 (a test k\xF6zepe fel\xE9)":"inward (toward the body center)","kifel\xE9 (a test sz\xE9l\xE9n t\xFAl)":"outward (beyond the body edge)",nincsenek:"none","P\xE9ld\xE1nyn\xE9v ki\xEDr\xE1sa (pl. U1)":"Show the instance name (e.g. U1)","L\xE1bsor:":"Pin row:",l\u00E1bsz\u00E1m:"pin count","db,":"pcs,",ir\u00E1ny:"direction",v\u00EDzszintes:"horizontal",f\u00FCgg\u0151leges:"vertical","innen:":"from:","kezd\u0151 sor":"start row","kezd\u0151 oszlop":"start column","nevek vessz\u0151vel, pl. RST,CE,DC,DIN,CLK,VCC,BL,GND":"names separated by commas, e.g. RST,CE,DC,DIN,CLK,VCC,BL,GND","L\xE1bsor hozz\xE1ad\xE1sa":"Add pin row","A szerepet a n\xE9vb\u0151l tippeli (GND, VCC, VIN\u2026), ut\xE1na a t\xE1bl\xE1zatban \xE1ll\xEDthat\xF3.":"The role is guessed from the name (GND, VCC, VIN\u2026), then it can be set in the table.","Minden oszlop l\xE1tszik.":"All columns are shown.","A kijel\xF6lt l\xE1b tov\xE1bbi adatai (csoport, funkci\xF3, t\xE1p) a sora alatt.":"More data of the selected pin (group, function, supply) below its row.","Minden oszlop":"All columns","Azon.":"ID",Sor:"Row","Oszl.":"Col.",Szerep:"Role",Csoport:"Group","T\xE1pbemenetn\xE9l a megengedett fesz\xFClts\xE9g, pl. 2.7-3.6":"For a power input, the allowed voltage, e.g. 2.7-3.6","T\xE1p (V)":"Supply (V)","GPIO-n\xE1l a k\xE9pess\xE9gek ({x}); perif\xE9ri\xE1n\xE1l a buszfunkci\xF3, amire a l\xE1b v\xE1r":"For a GPIO, its capabilities ({x}); for a peripheral, the bus function the pin expects",Funkci\u00F3:"Function",azonos\u00EDt\u00F3:"ID",szerep:"role","L\xE1b t\xF6rl\xE9se":"Delete pin","Az els\u0151 l\xE1b lesz a lerak\xE1si pont (0:0); ment\xE9skor a t\xF6bbi ehhez igazodik.":"The first pin becomes the placement point (0:0); on saving the others are aligned to it.","Az \u0171rlap ezeket nem tudja megjelen\xEDteni:":"The form cannot show these:","Ha m\xE9gis \xE1tv\xE1ltasz, ezek elvesznek.":"If you switch anyway, they are lost.","V\xE1lt\xE1s az \u0171rlapra (elhagyja \u0151ket)":"Switch to the form (drops them)","Maradok a JSON-n\xE1l":"Stay in JSON","A le\xEDr\xE1s teljes JSON-form\xE1ja; az \u0171rlapon be\xE1ll\xEDtottak itt is megjelennek, \xE9s az itteni m\xF3dos\xEDt\xE1sok az \u0171rlapra v\xE1lt\xE1skor visszaker\xFClnek. Ha a le\xEDr\xE1s olyat tartalmaz, amit az \u0171rlap nem tud (kifejez\xE9sek, param\xE9terek, saj\xE1t rajzelemek), a v\xE1lt\xE1s el\u0151tt sz\xF3l. A mez\u0151k le\xEDr\xE1sa: {x}.":"The full JSON form of the description; what you set on the form appears here, and changes made here go back when you switch to the form. If the description has something the form cannot handle (expressions, parameters, custom drawing elements), you are told before switching. The fields are described in {x}.","Le\xEDr\xE1s JSON":"Description JSON","JSON alkalmaz\xE1sa":"Apply JSON","Kiindul\xE1s be\xE9p\xEDtettb\u0151l:":"Start from a built-in:","be\xE9p\xEDtett alkatr\xE9sz":"built-in part","El\u0151bb adj l\xE1bakat az alkatr\xE9szhez a L\xE1bak f\xFCl\xF6n.":"First add pins to the part on the Pins tab.",Kapcsol\u00E1s:"Circuit",Igazs\u00E1gt\u00E1bla:"Truth table","Logika n\xE9zete":"Logic view","T\xE1rol\xF3s (sorrendi) logik\xE1n\xE1l a t\xE1bl\xE1zat a t\xE1rol\xF3k pillanatnyi \xE9rt\xE9k\xE9t is bemenetnek veszi.":"With registers (sequential logic) the table also takes the registers' current value as an input.","Legfeljebb {max} bemenet f\xE9r a t\xE1bl\xE1zatba (most {n}); enn\xE9l t\xF6bbn\xE9l a Kapcsol\xE1s n\xE9zetet haszn\xE1ld.":"At most {max} inputs fit in the table (now {n}); for more, use the Circuit view.","Itt az enged\xE9lyez\xE9s 0: a kimenet nem hajt":"Enable is 0 here: the output does not drive","Kattints egy kimeneti cell\xE1ra: 0 \u2194 1. A kimenet el\u0151tti kapuk a t\xE1bl\xE1zatb\xF3l a legr\xF6videbb alakban (az \xC9S-ek VAGY-a) \xFAjra\xE9p\xFClnek; a {z} sorokban az enged\xE9lyez\xE9s 0, ott mindegy.":"Click an output cell: 0 \u2194 1. The gates before the output are rebuilt from the table in the shortest form (an OR of ANDs); in {z} rows enable is 0, so it does not matter.","A kijel\xF6lt elem vagy kimenet l\xE1bai kiemelve. Kattints egy l\xE1bra: a L\xE1bak f\xFCl\xF6n kijel\xF6li.":"The pins of the selected element or output are highlighted. Click a pin: it is selected on the Pins tab.","Kattints egy \xFCres lyukra: \xFAj l\xE1b oda. Kattints egy l\xE1bra: kijel\xF6l\xE9s a t\xE1bl\xE1zatban; h\xFAzva \xE1thelyezhet\u0151. A szaggatott keret a lerak\xE1si pont.":"Click an empty hole: a new pin there. Click a pin: selects it in the table; drag to move it. The dashed frame is the placement point.","JSON-n\xE9zetben az el\u0151n\xE9zet csak a l\xE1bakat mutatja (alap\xE9rt\xE9kekkel).":"In JSON view the preview shows only the pins (with default values).","Biztos? Kattints \xFAjra":"Sure? Click again","Biztos? {n} p\xE9ld\xE1ny is t\xF6rl\u0151dik":"Sure? {n} instance is deleted too||Sure? {n} instances are deleted too",Kapu:"Gate","Villamos elem":"Electrical element","Az alkatr\xE9sz egy l\xE1ba: logikai bemenet, \xE9s ide k\xF6tnek a villamos elemek is":"A pin of the part: a logic input, and electrical elements connect here too","Kimenet (l\xE1b)":"Output (pin)","Logikai kimenet: az ide k\xF6t\xF6tt jel hajtja a l\xE1bat":"Logic output: the signal connected here drives the pin",Kapuk:"Gates","{x} kapu":"{x} gate",Egy\u00E9b:"Other","Az \xF3rajel \xE9l\xE9n felveszi a D \xE9rt\xE9k\xE9t, egy\xE9bk\xE9nt megtartja":"Takes the value of D on the clock edge, otherwise holds it","\xC1lland\xF3 0":"Constant 0","Mindig 0":"Always 0","\xC1lland\xF3 1":"Constant 1","Mindig 1":"Always 1","Villamos elemek":"Electrical elements","Kivezet\xE9sei l\xE1bakhoz k\xF6thet\u0151k":"Its leads connect to pins","Szimul\xE1ci\xF3ban lenyomva a k\xE9t l\xE1b\xE1t \xF6sszek\xF6ti":"In the simulation, pressing it connects its two pins","lefut\xF3 \xE9l":"falling edge","felfut\xF3 \xE9l":"rising edge","nem k\xF6telez\u0151":"optional",Ki:"Out","azon.":"ID","Bemenetek sz\xE1ma":"Number of inputs","Erre a n\xE9vre a kifejez\xE9sek is hivatkozhatnak":"Expressions can refer to this name",\u00D3rajel:"Clock","A {r} (0-ra) \xE9s a {s} (1-re) bemenet nem k\xF6telez\u0151; 1 szintn\xE9l azonnal hat.":"The {r} (to 0) and {s} (to 1) inputs are optional; they act at once at level 1.",be\u00E1ll\u00EDt\u00E1s:"set",Elem:"Element","ESP32-szer\u0171 lap: a buszfunkci\xF3 b\xE1rmely GPIO-ra kioszthat\xF3; a k\xE9pess\xE9gek ekkor az alap\xE9rtelmezett l\xE1bak":"ESP32-like board: a bus function can be assigned to any GPIO; the capabilities are then the default pins","szabadon kioszthat\xF3 buszok":"freely assignable buses","A kivezet\xE9seit egy-egy {x} elemhez k\xF6sd (a l\xE1b kimeneti pontj\xE1t\xF3l h\xFAzva).":"Connect each lead to a {x} element (dragging from the pin's output point).","Szimul\xE1ci\xF3 k\xF6zben a gombot lenyomva a k\xE9t l\xE1b\xE1t \xF6sszek\xF6ti. Mindk\xE9t kivezet\xE9s\xE9t egy-egy {x} elemhez k\xF6sd.":"During the simulation, pressing the button connects its two pins. Connect both leads to a {x} element each.","Push-pull: 1-n\xE9l a t\xE1p fel\xE9, 0-n\xE1l a f\xF6ld fel\xE9 hajt. Nyitott drain: csak a f\xF6ld fel\xE9 (felh\xFAz\xF3 ellen\xE1ll\xE1s kell).":"Push-pull: drives toward the supply at 1, toward ground at 0. Open drain: only toward ground (needs a pull-up resistor).","nyitott drain":"open drain","\xC9rt\xE9k kifejez\xE9ssel":"Value as an expression","pl. !(A & B)":"e.g. !(A & B)","Jelek: ! NEM, & \xC9S, | VAGY, ^ KIZ\xC1R\xD3 VAGY, z\xE1r\xF3jel, 0/1. Enterre a diagram ebb\u0151l \xFAjra\xE9p\xFCl.":"Symbols: ! NOT, & AND, | OR, ^ XOR, parentheses, 0/1. On Enter the diagram is rebuilt from it.",Enged\u00E9lyez\u00E9s:"Enable","\xFCres = mindig hajt; pl. !OE":"empty = always drives; e.g. !OE","A kifejez\xE9st \xE1t\xEDrva (Enter) a kimenet el\u0151tti kapuk ebb\u0151l \xFAjra\xE9p\xFClnek.":"Editing the expression (Enter) rebuilds the gates before the output from it.","Elem t\xF6rl\xE9se":"Delete element","Bels\u0151 kapcsol\xE1s":"Internal circuit","+ Elem":"+ Element","A kijel\xF6lt elem vagy \xE9l t\xF6rl\xE9se (Delete)":"Delete the selected element or edge (Delete)","Az eg\xE9sz kapcsol\xE1s l\xE1tsz\xF3djon":"Show the whole circuit","Bels\u0151 kapcsol\xE1s v\xE1szna":"Internal circuit canvas","\xDCres. A {x} men\xFCb\u0151l rakj le bemenetet, kaput \xE9s kimenetet, majd h\xFAzz \xE9lt a kimeneti pontj\xE1t\xF3l a bemeneti pontig.":"Empty. From the {x} menu place an input, a gate and an output, then drag an edge from the output point to the input point.",Ellen\u00E1ll\u00E1s:"Resistor","1. v\xE9g":"end 1","2. v\xE9g":"end 2",Di\u00F3da:"Diode","Nyit\xF3fesz.":"Forward V",Fesz\u00FClts\u00E9gforr\u00E1s:"Voltage source",Fesz\u00FClts\u00E9g:"Voltage","N-MOSFET":"N-MOSFET",K\u00FCsz\u00F6b:"Threshold","Nyitott ell.":"On resistance",Kondenz\u00E1tor:"Capacitor","1. v\xE9g (+)":"end 1 (+)",Kapacit\u00E1s:"Capacitance","N\xE9vleges fesz.":"Rated voltage","DC motor":"DC motor","\xDCzemi ell.":"Operating resistance","NPN tranzisztor":"NPN transistor","Er\u0151s\xEDt\xE9s (\u03B2)":"Gain (\u03B2)","Vez\xE9rl\u0151lap (MCU)":"Controller board (MCU)",GND:"GND","t\xE1p be":"power in","USB 5V (ha van)":"USB 5V (if any)","Stab. min.":"Reg. min.","T\xE1p max.":"Supply max.","GPIO max.":"GPIO max.","NEM-\xC9S":"NAND","NEM-VAGY":"NOR",ER\u0150S\u00CDT\u0150:"BUFFER",\u00F3rajel:"clock",enged\u00E9lyez\u00E9s:"enable","1. l\xE1b":"pin 1","2. l\xE1b":"pin 2","Ezt nem lehet \xF6sszek\xF6tni.":"These cannot be connected.","Ennek az elemnek nincs kimenete.":"This element has no output.","Villamos elem \xE9s nyom\xF3gomb kivezet\xE9se csak l\xE1bhoz k\xF6thet\u0151.":"Leads of an electrical element or a push button connect only to a pin.","Bemenet {x}":"Input {x}","\xC1lland\xF3 {x}":"Constant {x}","T\xE1rol\xF3 {x}":"Register {x}","Kimenet {x}":"Output {x}","Bemenet: nincs l\xE1b kiv\xE1lasztva.":"Input: no pin selected.","Kapukb\xF3l \xE1ll\xF3 k\xF6r: a jel \xF6nmag\xE1ba fut vissza (t\xE1rol\xF3val szak\xEDthat\xF3 meg).":"A loop of gates: the signal feeds back into itself (a register can break it).","{g} kapu: a(z) {i}. bemenete nincs bek\xF6tve.":"{g} gate: input {i} is not connected.","Nincs ilyen (vagy nem egy\xE9rtelm\u0171) l\xE1b vagy t\xE1rol\xF3: {x}":"No such (or ambiguous) pin or register: {x}","Nyom\xF3gomb: mindk\xE9t l\xE1b\xE1t egy-egy l\xE1bhoz kell k\xF6tni.":"Push button: both its pins must be connected to a pin each.","Kattints: ugr\xE1s a mez\u0151h\xF6z":"Click: jump to the field","{a}: teljesen a panelon k\xEDv\xFCl esik":"{a}: lies completely off the board","{a}: a {b} csatlakoz\xF3nak kevesebb l\xE1ba van, mint a k\xE1belnek ({c}), \xEDgy nincs bedugva":"{a}: connector {b} has fewer pins than the cable ({c}), so it is not plugged in","{a}: a {b} l\xE1b sehova sincs k\xF6tve":"{a}: the {b} pin is not connected anywhere","\xDCtk\xF6z\xE9s a {a} lyukban: {b}":"Collision in hole {a}: {b}","{a} kif\xFArt lyukban van ({b}), nincs alatta r\xE9z: a l\xE1b sehov\xE1 sem csatlakozik":"{a} is in a drilled hole ({b}), there is no copper under it: the pin connects nowhere","Vezet\xE9kv\xE9g kif\xFArt lyukban ({a}:{b}): nincs alatta r\xE9z":"Wire end in a drilled hole ({a}:{b}): no copper under it","H\xEDd kif\xFArt lyukn\xE1l ({a}:{b}\u2013{c}:{d})":"Bridge at a drilled hole ({a}:{b}\u2013{c}:{d})","{a}: az A \xE9s B oldal k\xF6z\xF6s neten van, a gomb r\xF6vidre z\xE1rt":"{a}: sides A and B are on the same net, the button is shorted","{a}: az akku + \xE9s \u2212 p\xF3lusa \xF6ssze van k\xF6tve":"{a}: the battery's + and \u2212 terminals are connected","{a}: {b} \xF6ssze van k\xF6tve":"{a}: {b} are connected",\u00E9s:"and"," (egy szekci\xF3ba esnek)":" (they fall in one section)","Z\xE1rlat: GND \u2013 {a}":"Short circuit: GND \u2013 {a}","Z\xE1rlat: 3V3 \u2013 {a}":"Short circuit: 3V3 \u2013 {a}","{a} k\xF6z\xF6s neten van":"{a} are on the same net","{a} k\xF6zvetlen\xFCl {b}-re k\xF6tve":"{a} connected directly to {b}","\xD6ssze\xE9r\u0151 jelek: {a}":"Touching signals: {a}","{a} \xE9s {b} teste \xE1tfed":"The bodies of {a} and {b} overlap","{a}: {b} szekci\xF3ban t\xF6bb l\xE1b k\xF6z\xF6s szekci\xF3ba esik. A l\xE1bsor nem futhat szekci\xF3ir\xE1nyban, forgasd 90\xB0-kal.":"{a}: in {b} sections several pins share a section. The pin row cannot run along the sections; rotate it by 90\xB0.","Z\xE1rlat: {a} egy szekci\xF3ba esik":"Short circuit: {a} fall in one section","Vezet\xE9kv\xE9g a {a} lyukban egy alkatr\xE9szl\xE1bbal k\xF6z\xF6sen, ez nem el\xE9g stabil.":"A wire end shares hole {a} with a part pin, which is not stable enough.","Tedd \xE1t a {a} lyukba (ugyanaz a szekci\xF3).":"Move it to hole {a} (same section).","A szekci\xF3ban nincs szabad lyuk: h\xEDdd \xE1t egy oldalszomsz\xE9dos szekci\xF3ba, \xE9s onnan vezesd tov\xE1bb.":"The section has no free hole: bridge over to a neighboring section and continue from there.","{a} vezet\xE9kv\xE9g ugyanabban a {b} lyukban":"{a} wire ends in the same hole {b}","Kapcsolat nincs bek\xF6tve: {a}":"Connection not routed: {a}","{a}: csak vezet\xE9kkel k\xF6thet\u0151 be (nincs szabad h\xEDd\xFAt)":"{a}: can only be routed with a wire (no free bridge path)","{a}: egyik oldala sincs GPIO-ra k\xF6tve":"{a}: neither side is connected to a GPIO","{a}: a motor k\xF6zvetlen\xFCl GPIO-ra van k\xF6tve. Tranzisztor vagy MOSFET kell a meghajt\xE1s\xE1hoz.":"{a}: the motor is connected directly to a GPIO. It needs a transistor or MOSFET to drive it.","{a}: nincs visszacsap\xF3 di\xF3da a motoron. Tegy\xE9l egy di\xF3d\xE1t (pl. 1N5817) a motor kapcsaira, a kat\xF3dj\xE1val a + fel\xE9, k\xFCl\xF6nben kikapcsol\xE1skor a fesz\xFClts\xE9gt\xFCske t\xF6nkreteheti a tranzisztort.":"{a}: no flyback diode on the motor. Put a diode (e.g. 1N5817) across the motor terminals, cathode toward +, otherwise the voltage spike at switch-off can destroy the transistor.","{a}.{b}: nincs t\xE1pfesz\xFClts\xE9g":"{a}.{b}: no supply voltage","(a {a} nincs bek\xF6tve)":"({a} is not connected)","{a}.{b}: {c} V, t\xF6bb a megengedett {d} V-n\xE1l":"{a}.{b}: {c} V, more than the allowed {d} V","{a}.{b}: csak {c} V, legal\xE1bb {d} V kell":"{a}.{b}: only {c} V, at least {d} V is needed","{a}.{b} ({c}) \u2192 {d}: ez a l\xE1b nem {e}, \xEDgy a hardveres {f} nem haszn\xE1lhat\xF3 rajta, csak szoftveres. Alkalmas l\xE1bak: {g}":"{a}.{b} ({c}) \u2192 {d}: this pin is not {e}, so hardware {f} cannot be used on it, only software. Suitable pins: {g}","{a}: az {b}-l\xE1bai k\xFCl\xF6nb\xF6z\u0151 buszokra ker\xFCltek ({c}). Egy perif\xE9ri\xE1t egy buszra k\xF6ss.":"{a}: its {b} pins ended up on different buses ({c}). Connect one peripheral to one bus.","{a} ugyanazon a PWM-szeleten ({b}) van, csak azonos frekvenci\xE1val m\u0171k\xF6dhetnek (most: {c}).":"{a} are on the same PWM slice ({b}), they can only run at the same frequency (now: {c}).","{a}: anal\xF3g jel a {b}-n, de azon nincs ADC. Erre alkalmas: {c}":"{a}: analog signal on {b}, but it has no ADC. Suitable: {c}","{a}: ADC2-csatorna, bekapcsolt WiFi mellett nem m\xE9r. Anal\xF3g jelhez ink\xE1bb ADC1-es l\xE1bat v\xE1lassz: {b}":"{a}: ADC2 channel, it does not measure while WiFi is on. For an analog signal choose an ADC1 pin instead: {b}","{a}: az anal\xF3g m\xE9r\xE9shez \xE1ll\xEDtsd ADC m\xF3dba (most: {b})":"{a}: set it to ADC mode for analog measurement (now: {b})","Z\xE1rlat a VBUS-on ({a} A)":"Short circuit on VBUS ({a} A)","3V3 t\xFAlterhelve vagy z\xE1rlatos ({a} mA)":"3V3 overloaded or shorted ({a} mA)","{a}: {b} mA, kimenet z\xE1rlatban":"{a}: {b} mA, output shorted","{a}: {b} mA, sok (aj\xE1nlott max. ~{c} mA)":"{a}: {b} mA, too much (recommended max. ~{c} mA)","{a}: lebeg, am\xEDg a gomb nincs lenyomva{b}. Tegy\xE9l k\xFCls\u0151 felh\xFAz\xF3 ellen\xE1ll\xE1st (pl. 10 k\u03A9 a 3V3-ra), vagy v\xE1lassz m\xE1sik GPIO-t.":"{a}: floats while the button is not pressed{b}. Add an external pull-up resistor (e.g. 10 k\u03A9 to 3V3), or choose another GPIO.","(ezen a l\xE1bon nincs bels\u0151 felh\xFAz\xF3 ellen\xE1ll\xE1s)":"(this pin has no internal pull-up)","{a}: a t\xE1pbemeneten ({b}) csak {c} V van, a stabiliz\xE1tornak legal\xE1bb {d} V kell, \xEDgy nincs 3,3 V":"{a}: the power input ({b}) has only {c} V, the regulator needs at least {d} V, so there is no 3.3 V","{a}: {b} mA, el\u0151t\xE9t-ellen\xE1ll\xE1s kell":"{a}: {b} mA, it needs a series resistor","{a}: {b}A, t\xF6bb a megengedett {c}A-n\xE9l":"{a}: {b}A, more than the allowed {c}A","{a}: lebeg\u0151 bemenet: {b}. CMOS-bemenetet ne hagyj szabadon: k\xF6sd jelre, vagy a nem haszn\xE1ltat GND-re (vagy VCC-re).":"{a}: floating input: {b}. Do not leave a CMOS input open: connect it to a signal, or tie an unused one to GND (or VCC).","{a}.{b}: {c} mA kimeneti \xE1ram, t\xF6bb a megengedett {d}A-n\xE9l{e}":"{a}.{b}: {c} mA output current, more than the allowed {d}A{e}","(k\xE9t kimenet egym\xE1s ellen?)":"(two outputs fighting?)","{a}: {b} V, t\xF6bb a n\xE9vleges {c} V-n\xE1l":"{a}: {b} V, more than the rated {c} V","{a}: nincs \xE9rv\xE9nyes szerv\xF3jel. A jel l\xE1b\xE1t k\xF6sd egy PWM m\xF3d\xFA GPIO-ra: 50 Hz, 2,5\u201312,5 % kit\xF6lt\xE9s (7,5 % = k\xF6z\xE9p\xE1ll\xE1s).":"{a}: no valid servo signal. Connect the signal pin to a GPIO in PWM mode: 50 Hz, 2.5\u201312.5 % duty (7.5 % = center).","{a}: a b\xE1zis lebeg. Tegy\xE9l leh\xFAz\xF3 ellen\xE1ll\xE1st a B \xE9s az E k\xF6z\xE9 (pl. 10 k\u03A9), vagy k\xF6sd kimenetre.":"{a}: the base floats. Add a pull-down resistor between B and E (e.g. 10 k\u03A9), or connect it to an output.","{a}: {b}A kollektor\xE1ram, t\xF6bb a megengedett {c}A-n\xE9l":"{a}: {b}A collector current, more than the allowed {c}A","{a}: nem tel\xEDt\u0151dik (Uce {b} V, Ic {c}A = \u03B2\xB7Ib). Kapcsol\xF3nak kisebb b\xE1zisellen\xE1ll\xE1s kell: a b\xE1zis\xE1ram (most {d}A) legyen a k\xEDv\xE1nt kollektor\xE1ram kb. tizede.":"{a}: not saturated (Uce {b} V, Ic {c}A = \u03B2\xB7Ib). As a switch it needs a smaller base resistor: the base current (now {d}A) should be about a tenth of the desired collector current.","{a}: ford\xEDtva van bek\xF6tve ({b} V). Az elektrolit kondenz\xE1tor + l\xE1ba ker\xFClj\xF6n a magasabb fesz\xFClts\xE9gre.":"{a}: connected in reverse ({b} V). The electrolytic capacitor's + pin goes to the higher voltage.","{a}: a gate lebeg. Tegy\xE9l leh\xFAz\xF3 ellen\xE1ll\xE1st a G \xE9s az S k\xF6z\xE9 (pl. 100 k\u03A9), vagy k\xF6sd kimenetre.":"{a}: the gate floats. Add a pull-down resistor between G and S (e.g. 100 k\u03A9), or connect it to an output.","{a}: z\xE1rlat a t\xE1pbemeneten ({b} A)":"{a}: short circuit at the power input ({b} A)","{a}: a {b} USB-je a t\xE1pbemeneten ({c}) \xE1t k\xF6zvetlen\xFCl t\xF6lti az akkut ({d} A). Az akku \xE9s a t\xE1pbemenet k\xF6z\xE9 Schottky-di\xF3da kell.":"{a}: the USB of {b} charges the battery directly through the power input ({c}) ({d} A). A Schottky diode is needed between the battery and the power input.","{a}: {b} A t\xF6lt\u0151\xE1ram, sok":"{a}: {b} A charging current, too much","{a}: z\xE1rlat ({b} A)":"{a}: short circuit ({b} A)","{a}: az USB k\xF6zvetlen\xFCl t\xF6lti az akkut ({b} A). A VSYS el\xE9 Schottky-di\xF3da kell.":"{a}: the USB charges the battery directly ({b} A). A Schottky diode is needed in front of VSYS.","A l\xE1b nincs GPIO-ra k\xF6tve":"The pin is not connected to a GPIO","Nincs kiv\xE1lasztva l\xE1b":"No pin selected","Ezt a GPIO-t egy m\xE1sik blokk is haszn\xE1lja":"Another block uses this GPIO too","ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor sz\xE1m\xEDt a szintje, rossz szintn\xE9l a lap nem indul el vagy let\xF6lt\u0151 m\xF3dba ker\xFCl. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"strapping pin: its level matters at power-up; at the wrong level the board does not start or enters download mode. If you can, choose another GPIO.","a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja: felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"used by the serial port (USB-serial converter): it can interfere with uploading and serial output. If you can, choose another GPIO.","a be\xE9p\xEDtett USB haszn\xE1lja. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"used by the built-in USB. If you can, choose another GPIO.","a lap be\xE9p\xEDtett LED-je is ezen a l\xE1bon van.":"the board's built-in LED is on this pin too.","Nincs vez\xE9rl\u0151lap a tervben; a l\xE1bsz\xE1mok nem ismertek.":"No controller board in the design; pin numbers are unknown.","{a}: nincs Arduino-c\xE9lk\xF6rnyezet a le\xEDr\xE1s\xE1ban; az \xE1ltal\xE1nos Arduino-f\xFCggv\xE9nyekkel k\xE9sz\xFClt.":"{a}: its description has no Arduino target; made with the generic Arduino functions.","{a}: t\xF6bb blokk is haszn\xE1lja ({b}, {c}).":"{a}: used by several blocks ({b}, {c}).","0\u20133,3 V-os tartom\xE1ny":"0\u20133.3 V range","anal\xF3g bemenet: {a} \u2192 {b}":"analog input: {a} \u2192 {b}",ut\u00E1nfut\u00E1s:"off delay","felfut\xF3 \xE9l: impulzus":"rising edge: pulse","bekapcsol\xE1si k\xE9sleltet\xE9s":"on delay","indul\xE1skor nem l\xE9p":"does not step at start","felfut\xF3 \xE9l: k\xF6vetkez\u0151 sor":"rising edge: next row","Proofboard \u2013 gener\xE1lt program":"Proofboard \u2013 generated program","\xDCtemenk\xE9nt (20 ms) beolvassa a bemeneteket, kisz\xE1molja a blokkokat, \xE9s be\xE1ll\xEDtja a kimeneteket.":"Every tick (20 ms) it reads the inputs, computes the blocks and sets the outputs.","blokkok \xE9rt\xE9kei \xE9s \xE1llapota":"block values and state",Lap:"Board",alaplapkezel\u0151:"Boards Manager","A le\xEDr\xE1s nem objektum.":"The description is not an object.","Hi\xE1nyzik a n\xE9v.":"The name is missing.","Az el\u0151tag 1\u20136 karakter, bet\u0171vel kezd\u0151dik (pl. U, MOD, J).":"The prefix is 1\u20136 characters and starts with a letter (e.g. U, MOD, J).","Hi\xE1nyzik a l\xE1bk\xE9p r\xF6vid le\xEDr\xE1sa.":"The short footprint description is missing.","Legal\xE1bb egy l\xE1b kell.":"At least one pin is needed.","\xC9rv\xE9nytelen param\xE9terkulcs.":"Invalid parameter key.","K\xE9tszer szerepel: {a}":"Appears twice: {a}","Ismeretlen param\xE9tert\xEDpus: {a}":"Unknown parameter type: {a}","A v\xE1laszthat\xF3 t\xEDpushoz opci\xF3k kellenek.":"The select type needs options.","Hi\xE1nyzik az alap\xE9rt\xE9k.":"The default value is missing.","A l\xE1bak nem \xE9rt\xE9kelhet\u0151k ki: ":"The pins cannot be evaluated: ","Hi\xE1nyzik a l\xE1b azonos\xEDt\xF3ja.":"The pin ID is missing.","A l\xE1bak list\xE1ja alap\xE9rt\xE9kekkel \xFCres.":"With default values the pin list is empty.","{a}: a helye nem sz\xE1m.":"{a}: its position is not a number.","{a}: a l\xE1b csak eg\xE9sz lyukpoz\xEDci\xF3n lehet.":"{a}: a pin can only be at a whole hole position.","K\xE9tszer szerepel a l\xE1b: {a}":"The pin appears twice: {a}","{a} \xE9s {b} ugyanabban a lyukban ({c}).":"{a} and {b} are in the same hole ({c}).","{a}: {b} nem sz\xE1m.":"{a}: {b} is not a number.","{a}: a minim\xE1lis fesz\xFClts\xE9g nem lehet nagyobb a maxim\xE1lisn\xE1l.":"{a}: the minimum voltage cannot be higher than the maximum.","{a}: ismeretlen buszfunkci\xF3: {b} (lehet: {c})":"{a}: unknown bus function: {b} (allowed: {c})","{a}: fesz\xFClts\xE9gtartom\xE1ny csak t\xE1pbemenetn\xE9l (vin) sz\xE1m\xEDt.":"{a}: a voltage range only matters for a power input (vin).","Van t\xE1pbemenet, de nincs GND-l\xE1b: a t\xE1pfesz\xFClts\xE9g a panel f\xF6ldj\xE9hez k\xE9pest sz\xE1m\xEDt.":"There is a power input but no GND pin: the supply voltage is measured against the board's ground.","Egy csoportban legal\xE1bb k\xE9t l\xE1b kell.":"A group needs at least two pins.","Nincs ilyen l\xE1b: {a}":"No such pin: {a}","{a} t\xF6bb csoportban is szerepel.":"{a} appears in several groups.","Hi\xE1nyzik a(z) {a} kivezet\xE9s l\xE1ba.":"The pin of lead {a} is missing.","Egy elem k\xE9t kivezet\xE9se nem lehet ugyanaz a l\xE1b.":"Two leads of an element cannot be the same pin.","nem sz\xE1m":"not a number","{a}: nem \xE9rtelmezhet\u0151 \xE9rt\xE9k.":"{a}: not a valid value.","T\xE1rol\xF3 neve: bet\u0171vel kezd\u0151d\u0151 azonos\xEDt\xF3 kell (most: \u201E{a}\u201D).":"Register name: an identifier starting with a letter is needed (now: \u201C{a}\u201D).","K\xE9tszer szerepel a t\xE1rol\xF3: {a}":"The register appears twice: {a}","{a}: a t\xE1rol\xF3 neve nem lehet egy l\xE1b neve.":"{a}: a register name cannot be a pin name.","{a}: hi\xE1nyzik.":"{a}: missing.","{a}: nincs ilyen l\xE1b vagy t\xE1rol\xF3: {b}":"{a}: no such pin or register: {b}","{a}|{b} \xF3rajele":"{a}|clock of {b}","{a}|{b} k\xF6vetkez\u0151 \xE9rt\xE9ke (D)":"{a}|next value of {b} (D)","{a}|{b} t\xF6rl\xE9se":"{a}|reset of {b}","{a}|{b} be\xE1ll\xEDt\xE1sa":"{a}|set of {b}","{a}: az \xE9l rise vagy fall lehet.":"{a}: the edge can be rise or fall.","A logik\xE1hoz legal\xE1bb egy kimenet kell.":"The logic needs at least one output.","Nincs ilyen kimeneti l\xE1b: {a}":"No such output pin: {a}","{a}: k\xE9t kifejez\xE9s hajtja ugyanazt a kimenetet.":"{a}: two expressions drive the same output.","{a}: a t\xE1p- vagy GND-l\xE1b nem lehet kimenet.":"{a}: a power or GND pin cannot be an output.",kifejez\u00E9s:"expression","{a}: hi\xE1nyzik a kifejez\xE9s.":"{a}: the expression is missing.","{a} {b}: nincs ilyen (vagy nem egy\xE9rtelm\u0171) l\xE1b vagy t\xE1rol\xF3: {c}":"{a} {b}: no such (or ambiguous) pin or register: {c}","{a}: a kimenet t\xEDpusa pp vagy od lehet.":"{a}: the output type can be pp or od.","A csatlakoz\xF3 le\xEDr\xE1sa objektum.":"The connector description is an object.","A csatlakoz\xF3 l\xE1bsz\xE1m\xE1hoz eg\xE9sz (int) param\xE9ter kell.":"The connector's pin count needs an integer (int) parameter.","A csatlakoz\xF3 l\xE1bneveihez names t\xEDpus\xFA param\xE9ter kell.":"The connector's pin names need a parameter of type names.","A csatlakoz\xF3 l\xE1bainak list\xE1ja nem lehet \xFCres.":"The connector's pin list cannot be empty.","A csatlakoz\xF3ban nincs ilyen l\xE1b: {a}":"The connector has no such pin: {a}","A cs\xFAszk\xE1hoz nincs ilyen param\xE9ter: {a}":"The slider has no such parameter: {a}","A cs\xFAszka param\xE9tere ({a}) sz\xE1m legyen, min \xE9s max \xE9rt\xE9kkel.":"The slider's parameter ({a}) must be a number with min and max.","Ismeretlen vez\xE9rl\u0151.":"Unknown control.","Meg kell adni, mely l\xE1bak z\xE1r\xF3dnak \xF6ssze.":"You must give which pins close together.","Ismeretlen szerel\xE9s: {a} (board vagy off).":"Unknown mounting: {a} (board or off).","Nincs test (body r\xE9teg): az alkatr\xE9sz csak l\xE1bakk\xE9nt l\xE1tszik.":"No body (body layer): the part shows only as pins.","Hi\xE1nyzik a z\xE1r\xF3 z\xE1r\xF3jel":"The closing parenthesis is missing","Hi\xE1nyz\xF3 tag a kifejez\xE9s v\xE9g\xE9n":"A term is missing at the end of the expression","Itt nem \xE1llhat: \u201E{x}\u201D":"Not allowed here: \u201C{x}\u201D","\xDCres kifejez\xE9s":"Empty expression","F\xF6l\xF6sleges r\xE9sz: \u201E{x}\u201D":"Extra part: \u201C{x}\u201D",'Ez nem Proofboard alkatr\xE9szk\xF6nyvt\xE1r (hi\xE1nyzik a "format": "proofboard-parts").':'This is not a Proofboard part library ("format": "proofboard-parts" is missing).',"Raspberry Pi Pico W":"Raspberry Pi Pico W","2\xD720 l\xE1b, sort\xE1v 6":"2\xD720 pins, row spacing 6","Sort\xE1v (oszt\xE1s)":"Row spacing (pitch)","A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Adatlap szerint 17,78 mm = 7 oszt\xE1s, de t\xFCskesorral, foglalatban vagy adapterlapon m\xE1s is lehet (pl. 6 vagy 8). Vonalz\xF3val m\xE9rd le a saj\xE1todat.":"The distance of the two pin rows in holes (0 \u2192 {span}). The datasheet says 17.78 mm = 7 pitches, but with pin headers, a socket or an adapter board it can differ (e.g. 6 or 8). Measure yours with a ruler.","ESP32 DevKit V1 (DOIT, 30 l\xE1b)":"ESP32 DevKit V1 (DOIT, 30 pins)","2\xD715 l\xE1b, sort\xE1v 10":"2\xD715 pins, row spacing 10","\xC1ltal\xE1ban 25,4 mm = 10 oszt\xE1s (a lap 28 mm sz\xE9les). A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Vonalz\xF3val m\xE9rd le a saj\xE1todat: a lapok gy\xE1rt\xF3nk\xE9nt elt\xE9rhetnek.":"Usually 25.4 mm = 10 pitches (the board is 28 mm wide). The distance of the two pin rows in holes (0 \u2192 {span}). Measure yours with a ruler: boards differ between makers.","ESP32-WROOM-32 modul USB-soros \xE1talak\xEDt\xF3val. T\xE1p: USB (di\xF3d\xE1n \xE1t a VIN-re) vagy VIN 5\u201312 V (AMS1117 stabiliz\xE1tor, legal\xE1bb kb. 4,2 V kell), vagy k\xF6zvetlen\xFCl 3,3 V a 3V3 l\xE1bon. A GPIO34\u201339 csak bemenet, bels\u0151 felh\xFAz\xE1s n\xE9lk\xFCl; az ADC2-l\xE1bak bekapcsolt WiFi mellett nem m\xE9rnek.":"ESP32-WROOM-32 module with a USB-serial converter. Power: USB (to VIN through a diode) or VIN 5\u201312 V (AMS1117 regulator, needs at least about 4.2 V), or 3.3 V directly on the 3V3 pin. GPIO34\u201339 are input only, without internal pull-up; the ADC2 pins do not measure while WiFi is on.","ind\xEDt\xE1si (strapping) l\xE1b (MTDI): ha bekapcsol\xE1skor magas, a modul 1,8 V-os flasht felt\xE9telez, \xE9s nem indul el. Ne tegy\xE9l r\xE1 felh\xFAz\xE1st.":"strapping pin (MTDI): if it is high at power-up, the module assumes a 1.8 V flash and does not start. Do not put a pull-up on it.","ind\xEDt\xE1si (strapping) l\xE1b (MTDO): bekapcsol\xE1skor magasnak kell lennie (bels\u0151 felh\xFAz\xE1s). Ne h\xFAzd le gombbal vagy terhel\xE9ssel.":"strapping pin (MTDO): it must be high at power-up (internal pull-up). Do not pull it low with a button or a load.","ind\xEDt\xE1si (strapping) l\xE1b, \xE9s a be\xE9p\xEDtett k\xE9k LED is ezen van: a felt\xF6lt\xE9shez bekapcsol\xE1skor alacsony vagy lebeg\u0151 kell legyen. Ne tegy\xE9l r\xE1 felh\xFAz\xE1st.":"strapping pin, and the built-in blue LED is on it too: for uploading it must be low or floating at power-up. Do not put a pull-up on it.","ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor magasnak kell lennie (bels\u0151 felh\xFAz\xE1s). Ne h\xFAzd le.":"strapping pin: it must be high at power-up (internal pull-up). Do not pull it low.","TX0: a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja, felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"TX0: used by the serial port (USB-serial converter), it can interfere with uploading and serial output. If you can, choose another GPIO.","RX0: a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja, felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"RX0: used by the serial port (USB-serial converter), it can interfere with uploading and serial output. If you can, choose another GPIO.","ESP32-C3 SuperMini":"ESP32-C3 SuperMini","2\xD78 l\xE1b, sort\xE1v 6":"2\xD78 pins, row spacing 6","\xC1ltal\xE1ban 15,24 mm = 6 oszt\xE1s (a lap 18 mm sz\xE9les). A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Vonalz\xF3val m\xE9rd le a saj\xE1todat: a lapok gy\xE1rt\xF3nk\xE9nt elt\xE9rhetnek.":"Usually 15.24 mm = 6 pitches (the board is 18 mm wide). The distance of the two pin rows in holes (0 \u2192 {span}). Measure yours with a ruler: boards differ between makers.","ESP32-C3 (RISC-V, WiFi, BLE), nat\xEDv USB-C. T\xE1p: USB vagy az 5V l\xE1b (kb. 3,5\u20136 V, kis fesz\xFClts\xE9ges\xE9s\u0171 stabiliz\xE1tor), vagy 3,3 V a 3V3 l\xE1bon. Az 5V l\xE1b k\xF6zvetlen\xFCl az USB-hez csatlakozik, nincs di\xF3da: akkut ne k\xF6ss r\xE1 USB mellett. ADC: GPIO0\u20134 (ADC1), GPIO5 (ADC2).":"ESP32-C3 (RISC-V, WiFi, BLE), native USB-C. Power: USB or the 5V pin (about 3.5\u20136 V, low-dropout regulator), or 3.3 V on the 3V3 pin. The 5V pin connects directly to USB, with no diode: do not connect a battery to it while USB is plugged in. ADC: GPIO0\u20134 (ADC1), GPIO5 (ADC2).","ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor magasnak kell lennie. Ne h\xFAzd le gombbal vagy terhel\xE9ssel.":"strapping pin: it must be high at power-up. Do not pull it low with a button or a load.","ind\xEDt\xE1si (strapping) l\xE1b, \xE9s a be\xE9p\xEDtett k\xE9k LED is ezen van (alacsony szintre vil\xE1g\xEDt): bekapcsol\xE1skor magasnak kell lennie. Ne h\xFAzd le.":"strapping pin, and the built-in blue LED is on it too (lit when low): it must be high at power-up. Do not pull it low.","a lap BOOT gombja is ezen van (lenyomva a f\xF6ldre h\xFAz), \xE9s ind\xEDt\xE1si l\xE1b: ha bekapcsol\xE1skor alacsony, a lap let\xF6lt\u0151 m\xF3dba ker\xFCl. Gombnak j\xF3, ha indul\xE1skor nincs lenyomva.":"the board's BOOT button is on it too (pulls to ground when pressed), and it is a strapping pin: if it is low at power-up, the board enters download mode. Fine for a button if it is not pressed at start.","RX (UART0): ha a soros ki\xEDr\xE1s nem a nat\xEDv USB-n megy, a soros port haszn\xE1lja.":"RX (UART0): used by the serial port when serial output does not go over native USB.","TX (UART0): ha a soros ki\xEDr\xE1s nem a nat\xEDv USB-n megy, a soros port haszn\xE1lja.":"TX (UART0): used by the serial port when serial output does not go over native USB.","Nyom\xF3gomb 12 mm":"Push button 12 mm","A 0:0, 0:5 \xB7 B 2:0, 2:5":"A 0:0, 0:5 \xB7 B 2:0, 2:5","0:0 \u2013 0:4 (\xE1ll\xEDthat\xF3)":"0:0 \u2013 0:4 (adjustable)",\u03A9:"\u03A9","2. l\xE1b helye":"Pin 2 position","Az els\u0151 l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:4. Nagyobb t\xE1vols\xE1ggal a l\xE1b maga is \xE1thidalhat.":"Relative to the first pin (before rotation). Default: 0:4. With a larger distance the lead itself can act as a jumper.","\xC1tk\xF6t\u0151 huzal (0 \u03A9)":"Jumper wire (0 \u03A9)","0:0 \u2013 0:2 (\xE1ll\xEDthat\xF3)":"0:0 \u2013 0:2 (adjustable)","2. v\xE9g helye":"End 2 position","Egyenes dr\xF3t\xE1tk\xF6t\xE9s az alkatr\xE9szoldalon: a k\xE9t v\xE9ge egy h\xE1l\xF3zat.":"A straight wire jumper on the component side: both ends are one net.","LED 3 mm":"LED 3 mm","an\xF3d 0:0 \xB7 kat\xF3d 0:1 (\xE1ll\xEDthat\xF3)":"anode 0:0 \xB7 cathode 0:1 (adjustable)","{color.label}, nyit\xF3fesz\xFClts\xE9g {color.vf} V":"{color.label}, forward voltage {color.vf} V",lila:"purple","Kat\xF3d helye":"Cathode position","Az an\xF3dhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1.":"Relative to the anode (before rotation). Default: 0:1.","an\xF3d 0:0 \xB7 kat\xF3d 0:4 (\xE1ll\xEDthat\xF3)":"anode 0:0 \xB7 cathode 0:4 (adjustable)","Csak an\xF3dt\xF3l kat\xF3d fel\xE9 vezet, {kind.vf} V nyit\xF3fesz\xFClts\xE9g felett. A cs\xEDk a kat\xF3d oldal\xE1n van.":"Conducts only from anode to cathode, above a forward voltage of {kind.vf} V. The band is on the cathode side.","1N5817 Schottky (0,3 V, 1 A)":"1N5817 Schottky (0.3 V, 1 A)","1N4148 jeldi\xF3da (0,7 V, 0,2 A)":"1N4148 signal diode (0.7 V, 0.2 A)","1N4007 egyenir\xE1ny\xEDt\xF3 (0,7 V, 1 A)":"1N4007 rectifier (0.7 V, 1 A)","Az an\xF3dhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:4.":"Relative to the anode (before rotation). Default: 0:4.","N-MOSFET (2N7000)":"N-MOSFET (2N7000)","S 0:0 \xB7 G 0:1 \xB7 D 0:2 (TO-92)":"S 0:0 \xB7 G 0:1 \xB7 D 0:2 (TO-92)","K\xFCsz\xF6b (Vth)":"Threshold (Vth)","A D\u2013S akkor vezet, ha a gate a source-hoz k\xE9pest enn\xE9l magasabb.":"D\u2013S conducts when the gate is higher than this relative to the source.",V:"V","Nyitott ellen\xE1ll\xE1s":"On resistance","Max. \xE1ram":"Max. current","Kondenz\xE1tor (ker\xE1mia)":"Capacitor (ceramic)","0:0 \u2013 0:1 (\xE1ll\xEDthat\xF3)":"0:0 \u2013 0:1 (adjustable)","Egyen\xE1ramon szakad\xE1s. A szimul\xE1ci\xF3 a fesz\xFClts\xE9get \xE9s az id\u0151\xE1lland\xF3t (\u03C4 = R\xB7C) mutatja.":"An open circuit at DC. The simulation shows the voltage and the time constant (\u03C4 = R\xB7C).",F:"F","N\xE9vleges fesz\xFClts\xE9g":"Rated voltage","Az els\u0151 l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1.":"Relative to the first pin (before rotation). Default: 0:1.","Elektrolit kondenz\xE1tor":"Electrolytic capacitor","+ 0:0 \xB7 \u2212 0:1 (\xE1ll\xEDthat\xF3)":"+ 0:0 \xB7 \u2212 0:1 (adjustable)","Polarit\xE1sos: a + l\xE1b ker\xFClj\xF6n a magasabb fesz\xFClts\xE9gre. A cs\xEDk a \u2212 l\xE1b oldal\xE1n van.":"Polarized: the + pin goes to the higher voltage. The band is on the \u2212 pin side.","\u2212 l\xE1b helye":"\u2212 pin position","A + l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1.":"Relative to the + pin (before rotation). Default: 0:1.","TO-92, l\xE1bsorrend t\xEDpus szerint":"TO-92, pin order by type","A C\u2013E akkor vezet, ha a b\xE1zison \xE1ram folyik (Ube \u2248 0,65 V). Ic legfeljebb \u03B2\xB7Ib ({kind.beta}\xB7Ib); kapcsol\xF3k\xE9nt kb. t\xEDzszer annyi b\xE1zis\xE1ram kell, mint Ic/\u03B2.":"C\u2013E conducts when current flows into the base (Ube \u2248 0.65 V). Ic is at most \u03B2\xB7Ib ({kind.beta}\xB7Ib); as a switch it needs about ten times Ic/\u03B2 of base current.","BC547 (C-B-E, 100 mA)":"BC547 (C-B-E, 100 mA)","2N3904 (E-B-C, 200 mA)":"2N3904 (E-B-C, 200 mA)","2N2222A (E-B-C, 600 mA)":"2N2222A (E-B-C, 600 mA)","74HC00 n\xE9gy NAND kapu":"74HC00 quad NAND gate","DIP-14 \xB7 4\xD7 NAND":"DIP-14 \xB7 4\xD7 NAND","N\xE9gy k\xE9tbemenetes NAND kapu (nY = NEM(nA \xC9S nB)). T\xE1p 2\u20136 V; a nem haszn\xE1lt bemeneteket k\xF6sd GND-re.":"Four two-input NAND gates (nY = NOT(nA AND nB)). Supply 2\u20136 V; tie unused inputs to GND.","74HC74 kett\u0151s D t\xE1rol\xF3":"74HC74 dual D flip-flop","DIP-14 \xB7 2\xD7 D flip-flop":"DIP-14 \xB7 2\xD7 D flip-flop","K\xE9t D t\xE1rol\xF3: a CLK felfut\xF3 \xE9l\xE9n Q felveszi D \xE9rt\xE9k\xE9t. CLR = 0 t\xF6rli (Q = 0), PRE = 0 be\xE1ll\xEDtja (Q = 1), az \xF3rajelt\u0151l f\xFCggetlen\xFCl; haszn\xE1lat k\xF6zben mindkett\u0151t k\xF6sd VCC-re. Qn a Q neg\xE1ltja. T\xE1p 2\u20136 V.":"Two D flip-flops: on the rising edge of CLK, Q takes the value of D. CLR = 0 clears it (Q = 0), PRE = 0 sets it (Q = 1), regardless of the clock; in use, tie both to VCC. Qn is the inverse of Q. Supply 2\u20136 V.","74HC595 l\xE9ptet\u0151regiszter":"74HC595 shift register","DIP-16 \xB7 8 bit SIPO":"DIP-16 \xB7 8-bit SIPO","8 bites soros-p\xE1rhuzamos \xE1talak\xEDt\xF3: SRCLK felfut\xF3 \xE9l\xE9n a SER bit bel\xE9p, a t\xF6bbi eggyel tov\xE1bbl\xE9p; RCLK felfut\xF3 \xE9l\xE9n a 8 bit a QA\u2026QH kimenetekre ker\xFCl. OE = 0 enged\xE9lyezi a kimeneteket, SRCLR = 0 t\xF6rli a l\xE9ptet\u0151regisztert. QHs (QH') a k\xF6vetkez\u0151 595 SER bemenet\xE9re k\xF6thet\u0151. T\xE1p 2\u20136 V.":"8-bit serial-to-parallel converter: on the rising edge of SRCLK the SER bit shifts in and the rest move one step; on the rising edge of RCLK the 8 bits go to outputs QA\u2026QH. OE = 0 enables the outputs, SRCLR = 0 clears the shift register. QHs (QH') can go to the SER input of the next 595. Supply 2\u20136 V.","74HC139 kett\u0151s 2\u21924 dek\xF3der":"74HC139 dual 2\u21924 decoder","DIP-16 \xB7 2\xD7 (2\u21924)":"DIP-16 \xB7 2\xD7 (2\u21924)","K\xE9t 2\u21924 dek\xF3der: az A1 A0 bin\xE1ris sz\xE1m szerinti Y kimenet lesz 0 (akt\xEDv alacsony), a t\xF6bbi 1; ha E = 1, mind 1. T\xE1p 2\u20136 V.":"Two 2\u21924 decoders: the Y output selected by the binary number A1 A0 goes 0 (active low), the others 1; if E = 1, all are 1. Supply 2\u20136 V.","L\xE9ptet\u0151motor (28BYJ-48)":"Stepper motor (28BYJ-48)",K\u00FCls\u0151:"External","k\xFCls\u0151 \xB7 5 eres k\xE1bel (A B C D, k\xF6z\xF6s +)":"external \xB7 5-wire cable (A B C D, common +)",Tekercsellen\u00E1ll\u00E1s:"Coil resistance","5 V-os unipol\xE1ris l\xE9ptet\u0151motor, 64:1 \xE1tt\xE9tellel: f\xE9ll\xE9ptet\xE9sben 4096 l\xE9p\xE9s a kimen\u0151 tengely egy fordulata. A tekercseket egy meghajt\xF3 (pl. ULN2003) kapcsolja a f\xF6ld fel\xE9; a k\xF6z\xF6s vezet\xE9k (piros) a +5 V. A szimul\xE1ci\xF3 a tekercsek gerjeszt\xE9si sorrendj\xE9b\u0151l l\xE9pteti (A, AB, B, BC, C, CD, D, DA).":"5 V unipolar stepper motor with 64:1 gearing: in half-step mode, 4096 steps make one turn of the output shaft. A driver (e.g. ULN2003) switches the coils to ground; the common wire (red) is +5 V. The simulation steps it from the coil excitation order (A, AB, B, BC, C, CD, D, DA).","ULN2003 l\xE9ptet\u0151motor-meghajt\xF3":"ULN2003 stepper driver","IN1\u2013IN4 \xB7 t\xE1p \xB7 motorcsatlakoz\xF3":"IN1\u2013IN4 \xB7 power \xB7 motor connector","N\xE9gy Darlington-kapcsol\xF3: ha az INn bemenet magas (\u2265 kb. 2,2 V, a Pico 3,3 V-ja el\xE9g), a hozz\xE1 tartoz\xF3 kimenet (A\u2013D) a f\xF6ld fel\xE9 kapcsol, \xE9s a motor tekercs\xE9n \xE1t a k\xF6z\xF6s + fel\u0151l \xE1ram folyik. A VCC (+) a motor t\xE1pja, 5 V; a COM ezzel k\xF6z\xF6s.":"Four Darlington switches: when input INn is high (\u2265 about 2.2 V, the Pico's 3.3 V is enough), the matching output (A\u2013D) switches to ground and current flows from the common + through the motor coil. VCC (+) is the motor supply, 5 V; COM is shared with it.","DC motor (130-as)":"DC motor (type 130)","k\xFCls\u0151 \xB7 + \xE9s \u2212 kivezet\xE9s":"external \xB7 + and \u2212 leads","A motor a panel mellett \xE1ll; a kivezet\xE9seit vezet\xE9kkel (k\xE1bellel) k\xF6sd a panelra. Indukt\xEDv terhel\xE9s: GPIO-r\xF3l k\xF6zvetlen\xFCl nem hajthat\xF3, tranzisztor vagy MOSFET \xE9s visszacsap\xF3 di\xF3da kell.":"The motor sits next to the board; connect its leads to the board with wires (a cable). An inductive load: it cannot be driven directly from a GPIO, it needs a transistor or MOSFET and a flyback diode.","\xDCzemi ellen\xE1ll\xE1s":"Operating resistance","Egyszer\u0171s\xEDtett modell: forg\xE1s k\xF6zbeni \xE1ramfelv\xE9tel \u2248 U / R. A fordulat a fesz\xFClts\xE9ggel ar\xE1nyos.":"Simplified model: current while running \u2248 U / R. Speed is proportional to the voltage.","Szerv\xF3 (SG90)":"Servo (SG90)","k\xFCls\u0151 \xB7 GND, V+, jel k\xE1bel":"external \xB7 GND, V+, signal cable","\xC1ramfelv\xE9tel (ell.)":"Current draw (resistance)","A szerv\xF3t a jelvezet\xE9ken \xE9rkez\u0151 PWM vez\xE9rli: 50 Hz, 0,5\u20132,5 ms impulzus \u2192 0\u2013180\xB0. A Pico GPIO-j\xE1n \xE1ll\xEDtsd PWM m\xF3dba (50 Hz, 7,5 % = k\xF6z\xE9p\xE1ll\xE1s). T\xE1p: 4,8\u20136 V.":"The servo is driven by PWM on its signal wire: 50 Hz, 0.5\u20132.5 ms pulse \u2192 0\u2013180\xB0. Set the Pico GPIO to PWM mode (50 Hz, 7.5 % = center). Supply: 4.8\u20136 V.","T\xFCskesor 1\xD7N":"Pin header 1\xD7N",Csatlakoz\u00F3:"Connector","N l\xE1b egy sorban \xB7 csatlakoz\xF3":"N pins in a row \xB7 connector",L\u00E1bsz\u00E1m:"Pin count","Vessz\u0151vel, sorrendben (pl. GND,VCC,SDA,SCL). K\xFCls\u0151 alkatr\xE9sz csatlakoz\xF3j\xE1n\xE1l az alkatr\xE9sz l\xE1bneveit kapja.":"Comma-separated, in order (e.g. GND,VCC,SDA,SCL). As an external part's connector it gets the part's pin names.","Akku csatlakoz\xF3":"Battery connector","TP4056 t\xF6lt\u0151modul":"TP4056 charger module","IN 0:0, 0:6 \xB7 OUT/B 9:0\u20269:6 (k\xF6zel\xEDt\u0151)":"IN 0:0, 0:6 \xB7 OUT/B 9:0\u20269:6 (approximate)","Saj\xE1t USB":"Own USB","Egyszer\u0171s\xEDtett modell: a bemenetr\u0151l (5 V) a B+ fel\xE9 t\xF6lt, a B+ \xE9s az OUT+ k\xF6z\xF6s. A l\xE1bak a modul forrpontjainak k\xF6zel\xEDt\u0151 helyei, t\xFCskesorral rakd fel.":"Simplified model: it charges from the input (5 V) toward B+; B+ and OUT+ are shared. The pins are approximate positions of the module's pads; mount it with pin headers.","nincs bedugva":"not plugged in","5 V bedugva":"5 V plugged in","Nokia 5110 kijelz\u0151":"Nokia 5110 display","8 l\xE1b egy sorban \xB7 VCC 2,7\u20133,3 V":"8 pins in a row \xB7 VCC 2.7\u20133.3 V",'OLED kijelz\u0151 0,96" (SSD1306, I\xB2C)':'OLED display 0.96" (SSD1306, I\xB2C)',"GND \xB7 VCC \xB7 SCL \xB7 SDA egy sorban":"GND \xB7 VCC \xB7 SCL \xB7 SDA in a row","128\xD764 pontos OLED kijelz\u0151 I\xB2C-buszon (alapc\xEDm 0x3C). A modulon felh\xFAz\xF3 ellen\xE1ll\xE1sok vannak az SCL- \xE9s SDA-vonalon. T\xE1p 3,3\u20135 V; a kijelz\u0151 tartalm\xE1t a szimul\xE1ci\xF3 nem rajzolja ki.":"128\xD764 dot OLED display on the I\xB2C bus (default address 0x3C). The module has pull-up resistors on the SCL and SDA lines. Supply 3.3\u20135 V; the simulation does not draw the display content.","Joystick (KY-023)":"Joystick (KY-023)","GND \xB7 +5V \xB7 VRx \xB7 VRy \xB7 SW egy sorban":"GND \xB7 +5V \xB7 VRx \xB7 VRy \xB7 SW in a row","X \xE1ll\xE1s":"X position","\u2212100 % bal, +100 % jobb. Szimul\xE1ci\xF3 k\xF6zben cs\xFAszk\xE1val is \xE1ll\xEDthat\xF3.":"\u2212100 % left, +100 % right. It can also be set with a slider during the simulation.","Y \xE1ll\xE1s":"Y position","\u2212100 % le, +100 % fel.":"\u2212100 % down, +100 % up.",X:"X",Y:"Y","Csere: {x}":"Swap: {x}","{n} kapcsolat elveszett":"{n} connection lost||{n} connections lost","nem f\xE9r el a panelon, mozgasd":"does not fit on the board, move it","Mentve, {n} saj\xE1t alkatr\xE9sszel egy\xFCtt.":"Saved, together with {n} custom part.||Saved, together with {n} custom parts.","Mentve.":"Saved.","Mentve: {x}":"Saved: {x}","Panel: {c}\xD7{r} lyuk, {s}.":"Board: {c}\xD7{r} holes, {s}.","LED akkur\xF3l \u2013 k\xE9zi hidakkal":"LED from a battery \u2013 manual bridges","Akku, el\u0151t\xE9t-ellen\xE1ll\xE1s \xE9s LED, forraszt\xF3hidakkal bek\xF6tve.":"Battery, series resistor and LED, wired with solder bridges.","el\u0151t\xE9t-ellen\xE1ll\xE1s a LED-hez":"a series resistor for the LED","forraszt\xF3h\xEDd k\xE9zzel":"solder bridges by hand","a szimul\xE1ci\xF3 fesz\xFClts\xE9gei":"voltages in the simulation","K\xE9zi hidak\nA r\xE9z 3 lyukas szakaszokb\xF3l \xE1ll; a hidak (H\xEDd eszk\xF6z, B) k\xF6tik \xF6ssze a szomsz\xE9dos szakaszokat.\nAz \xE1ramk\xF6r: akku + \u2192 R1 \u2192 LED1 \u2192 akku \u2212.":`Manual bridges
72
+ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let a of e.seen.entries()){let i=a[1];if(t===a[0]){s(a);continue}if(e.external){let l=e.external.registry.get(a[0])?.id;if(t!==a[0]&&l){s(a);continue}}if(e.metadataRegistry.get(a[0])?.id){s(a);continue}if(i.cycle){s(a);continue}i.count>1&&e.reused==="ref"&&s(a)}e.external&&(e.sharedDefsExtractedFor=e.external)}function Rg(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let r=[];for(let n of t){if(!n||typeof n!="object")return;Rg(n);let o=Object.keys(n);if(o.length!==1||o[0]!=="type")return;let s=n.type;for(let a of Array.isArray(s)?s:[s]){if(typeof a!="string")return;r.includes(a)||r.push(a)}}delete e.anyOf,e.type=r.length===1?r[0]:r}var jg=new Set(["type","properties","required","additionalProperties"]),Cg=["oneOf","anyOf"];function Ng(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!="object"||t===null?null:Object.keys(t).length?t:null}function Bc(e){let t=[];for(let s of e){if(typeof s!="object"||s.type!=="object")return null;for(let a in s)if(!jg.has(a))return null;t.push(s)}let r={},n=new Set;for(let s of t){for(let a in s.properties){if(Object.prototype.hasOwnProperty.call(r,a))continue;let i=[];for(let l of t){let u=l.properties?.[a]??Ng(l);u!=null&&(i.some(d=>JSON.stringify(d)===JSON.stringify(u))||i.push(u))}let c=i.length===1?i[0]:Bc(i)??{allOf:i};Kt(r,a,c)}for(let a of s.required??[])n.add(a)}let o={type:"object",properties:r};if(n.size&&(o.required=[...n]),t.every(s=>s.additionalProperties===!1))o.additionalProperties=!1;else{let s=[];for(let a of t){let i=Ng(a);i&&!s.some(c=>JSON.stringify(c)===JSON.stringify(i))&&s.push(i)}s.length===1?o.additionalProperties=s[0]:s.length>1&&(o.additionalProperties={allOf:s})}return o}function Sx(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let o of jg)if(o in e)return;let r=t.filter(o=>Cg.some(s=>Array.isArray(o[s]))),n=null;if(!r.length)n=Bc(t);else{let o=r[0],s=Cg.find(c=>Array.isArray(o[c]));if(Object.keys(o).length!==1)return;let a=t.filter(c=>c!==o),i=o[s].map(c=>Bc([...a,c]));if(i.some(c=>!c))return;n={[s]:i}}n&&(delete e.allOf,ss(e,n))}function Uc(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let n=i=>{let c=e.seen.get(i);if(c.ref===null)return;let l=c.def??c.schema,u={...l},d=c.ref;if(c.ref=null,d){n(d);let g=e.seen.get(d),h=g.schema;if(h.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(l.allOf=l.allOf??[],l.allOf.push(h)):ss(l,h),ss(l,u),i._zod.parent===d)for(let m in l)m==="$ref"||m==="allOf"||m in u||delete l[m];if(h.$ref&&g.def)for(let m in l)m==="$ref"||m==="allOf"||m in g.def&&JSON.stringify(l[m])===JSON.stringify(g.def[m])&&delete l[m]}let f=i._zod.parent;if(f&&f!==d){n(f);let g=e.seen.get(f);if(g?.schema.$ref&&(l.$ref=g.schema.$ref,g.def))for(let h in l)h==="$ref"||h==="allOf"||h in g.def&&JSON.stringify(l[h])===JSON.stringify(g.def[h])&&delete l[h]}e.override({zodSchema:i,jsonSchema:l,path:c.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let i of[...e.seen.entries()].reverse())n(i[0]);if(e.target!=="openapi-3.0")for(let i of e.seen.entries())Rg(i[1].def??i[1].schema);for(let i of e.deferred)i();if(e.intersections.length){let i=new Map;for(let c of e.seen.values())for(let l of[c.schema,c.def]){let u=l?.allOf;if(!Array.isArray(u))continue;let d=i.get(u);d?d.push(l):i.set(u,[l])}for(let c of e.intersections)for(let l of i.get(c)??[])Sx(l)}}let o={};if(e.target==="draft-2020-12"?o.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?o.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?o.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let i=e.external.registry.get(t)?.id;if(!i)throw new Error("Schema is missing an `id` property");o.$id=e.external.uri(i)}ss(o,r.defId?r.schema:r.def??r.schema);let s=e.metadataRegistry.get(t)?.id;s!==void 0&&o.id===s&&delete o.id;let a=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let i of e.seen.entries()){let c=i[1];c.def&&c.defId&&(c.def.id===c.defId&&delete c.def.id,Kt(a,c.defId,c.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(a).length>0&&(e.target==="draft-2020-12"?o.$defs=a:o.definitions=a);try{let i=JSON.parse(JSON.stringify(o));return Object.defineProperty(i,"~standard",{value:{...t["~standard"],jsonSchema:{input:as(t,"input",e.processors),output:as(t,"output",e.processors)}},enumerable:!1,writable:!1}),i}catch{throw new Error("Error converting schema to JSON.")}}function Nt(e,t){let r=t??{seen:new Set};if(r.seen.has(e))return!1;r.seen.add(e);let n=e._zod.def;if(n.type==="transform")return!0;if(n.type==="array")return Nt(n.element,r);if(n.type==="set")return Nt(n.valueType,r);if(n.type==="lazy")return Nt(n.getter(),r);if(n.type==="promise"||n.type==="optional"||n.type==="nonoptional"||n.type==="nullable"||n.type==="readonly"||n.type==="default"||n.type==="prefault"||n.type==="catch")return Nt(n.innerType,r);if(n.type==="intersection")return Nt(n.left,r)||Nt(n.right,r);if(n.type==="record"||n.type==="map")return Nt(n.keyType,r)||Nt(n.valueType,r);if(n.type==="pipe")return e._zod.traits.has("$ZodCodec")?!0:Nt(n.in,r)||Nt(n.out,r);if(n.type==="object"){for(let o in n.shape)if(Nt(n.shape[o],r))return!0;return!1}if(n.type==="union"){for(let o of n.options)if(Nt(o,r))return!0;return!1}if(n.type==="tuple"){for(let o of n.items)if(Nt(o,r))return!0;return!!(n.rest&&Nt(n.rest,r))}return!1}var Mg=(e,t={})=>r=>{let n=Zc({...r,processors:t});return it(e,n),Gc(n,e),Uc(n,e)},as=(e,t,r={})=>n=>{let{libraryOptions:o,target:s}=n??{},a=Zc({...o??{},target:s,io:t,processors:r});return it(e,a),Gc(a,e),Uc(a,e)};var ro=(e,t,r)=>{(e[t]===void 0||r>e[t])&&(e[t]=r)},no=(e,t,r)=>{(e[t]===void 0||r<e[t])&&(e[t]=r)},Dg=(e,t)=>{ro(e,"minimum",t),no(e,"maximum",t)},Bg=(e,t)=>{e.multipleOf??(e.multipleOf=[]),e.multipleOf.includes(t)||e.multipleOf.push(t)},Zg=(e,t)=>{e.patterns??(e.patterns=new Set),e.patterns.add(t)},Gg=(e,t)=>{e.mime=e.mime?e.mime.filter(r=>t.includes(r)):[...t]},Ug=(e,t)=>{e.format=t,t.includes("int")&&(e.isInt=!0)},Lg=(e,t)=>ro(e,"minimum",t.minimum),Vg=(e,t)=>no(e,"maximum",t.maximum),Fg=e=>(t,r)=>{Ug(t,r.format);let[n,o]=e[r.format];ro(t,"minimum",n),no(t,"maximum",o)},Px={greater_than:(e,t)=>ro(e,t.inclusive?"minimum":"exclusiveMinimum",t.value),less_than:(e,t)=>no(e,t.inclusive?"maximum":"exclusiveMaximum",t.value),multiple_of:(e,t)=>Bg(e,t.value),number_format:Fg(Ko),bigint_format:Fg(Ea),min_length:Lg,max_length:Vg,length_equals:(e,t)=>Dg(e,t.length),min_size:Lg,max_size:Vg,size_equals:(e,t)=>Dg(e,t.size),string_format:(e,t)=>{Ug(e,t.format),t.pattern&&Zg(e,t.pattern),(t.format==="base64"||t.format==="base64url")&&(e.contentEncoding=t.format),(t.local||t.precision===-1)&&(e.laxFormat=!0)},mime_type:(e,t)=>Gg(e,t.mime)};function Qt(e){let t={},r=e._zod.def,n=e._zod.traits.has("$ZodCheck")?[e,...r.checks??[]]:r.checks??[];for(let s of n)Px[s._zod.def.check]?.(t,s._zod.def);let o=e._zod.bag;o.minimum!==void 0&&ro(t,"minimum",o.minimum),o.exclusiveMinimum!==void 0&&ro(t,"exclusiveMinimum",o.exclusiveMinimum),o.maximum!==void 0&&no(t,"maximum",o.maximum),o.exclusiveMaximum!==void 0&&no(t,"exclusiveMaximum",o.exclusiveMaximum),o.multipleOf!==void 0&&Bg(t,o.multipleOf),o.format!==void 0&&(t.format??(t.format=o.format),o.format.includes("int")&&(t.isInt=!0)),o.mime&&Gg(t,o.mime);for(let s of o.patterns??[])Zg(t,s);return t}var $x={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Ex=new Map([[_c,dm],[Ga,pm]]),qg=e=>Ex.get(e)??e,Kg=(e,t,r,n)=>{let o=r;o.type="string";let{minimum:s,maximum:a,format:i,patterns:c,contentEncoding:l,laxFormat:u}=Qt(e);if(typeof s=="number"&&(o.minLength=s),typeof a=="number"&&(o.maxLength=a),i&&(o.format=$x[i]??i,o.format===""&&delete o.format,(i==="time"||u)&&delete o.format),l&&(o.contentEncoding=l),c&&c.size>0){let d=[...c].map(qg);d.length===1?o.pattern=d[0].source:d.length>1&&(o.allOf=[...d.map(f=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:f.source}))])}},Hg=(e,t,r,n)=>{let o=r,{minimum:s,maximum:a,multipleOf:i,exclusiveMaximum:c,exclusiveMinimum:l,isInt:u}=Qt(e);o.type=u?"integer":"number";let d=typeof l=="number"&&l>=(s??Number.NEGATIVE_INFINITY),f=typeof c=="number"&&c<=(a??Number.POSITIVE_INFINITY),g=t.target==="draft-04"||t.target==="openapi-3.0";if(d?g?(o.minimum=l,o.exclusiveMinimum=!0):o.exclusiveMinimum=l:typeof s=="number"&&(o.minimum=s),f?g?(o.maximum=c,o.exclusiveMaximum=!0):o.exclusiveMaximum=c:typeof a=="number"&&(o.maximum=a),i){let h=new Set;for(let b of i)Number.isFinite(b)&&b!==0?h.add(Math.abs(b)):Vr(e,t,o,n,`A multipleOf divisor of ${b} cannot be represented in JSON Schema`);let[p,...m]=h;p!==void 0&&(o.multipleOf=p),m.length&&(o.allOf=[...o.allOf??[],...m.map(b=>({multipleOf:b}))])}},Wg=(e,t,r,n)=>{r.type="boolean"};var Jg=(e,t,r,n)=>{t.target==="openapi-3.0"?(r.type="string",r.nullable=!0,r.enum=[null]):r.type="null"};var Yg=(e,t,r,n)=>{r.not={}};var Xg=(e,t,r,n)=>{};var Qg=(e,t,r,n)=>{let o=e._zod.def,s=Wn(o.entries);if(s.length===0){r.not={};return}s.every(a=>typeof a=="number")&&(r.type="number"),s.every(a=>typeof a=="string")&&(r.type="string"),r.enum=s},eb=(e,t,r,n)=>{let o=e._zod.def;if(o.values.length===0){r.not={};return}let s=[];for(let a of o.values)if(a===void 0){if(Vr(e,t,r,n,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof a=="bigint"){if(Vr(e,t,r,n,"BigInt literals cannot be represented in JSON Schema"))return;s.push(Number(a))}else s.push(a);if(s.length!==0)if(s.length===1){let a=s[0];r.type=a===null?"null":typeof a,t.target==="draft-04"||t.target==="openapi-3.0"?r.enum=[a]:r.const=a}else s.every(a=>typeof a=="number")&&(r.type="number"),s.every(a=>typeof a=="string")&&(r.type="string"),s.every(a=>typeof a=="boolean")&&(r.type="boolean"),s.every(a=>a===null)&&(r.type="null"),r.enum=s};var tb=(e,t,r,n)=>{Vr(e,t,r,n,"Custom types cannot be represented in JSON Schema")};var rb=(e,t,r,n)=>{Vr(e,t,r,n,"Transforms cannot be represented in JSON Schema")};var nb=(e,t,r,n)=>{let o=r,s=e._zod.def,{minimum:a,maximum:i}=Qt(e);typeof a=="number"&&(o.minItems=a),typeof i=="number"&&(o.maxItems=i),o.type="array",o.items=it(s.element,t,{...n,path:[...n.path,"items"]})};function oi(e){let t=e._zod.def;return t.type==="pipe"&&t.in._zod.traits.has("$ZodTransform")?oi(t.out):t.type==="catch"?oi(t.innerType):e._zod.optin}var ob=(e,t,r,n)=>{let o=r,s=e._zod.def,a=s.shape;if(Object.getOwnPropertySymbols(a).length&&Vr(e,t,o,n,"Symbol keys cannot be represented in JSON Schema"))return;o.type="object",o.properties={};for(let l in a)Kt(o.properties,l,it(a[l],t,{...n,path:[...n.path,"properties",l]}));let c=[];for(let l of Object.keys(a)){let u=s.shape[l];(t.io==="input"?oi(u)===void 0:u._zod.optout===void 0)&&c.push(l)}c.length>0&&(o.required=c),s.catchall?._zod.def.type==="never"?o.additionalProperties=!1:s.catchall?s.catchall&&(o.additionalProperties=it(s.catchall,t,{...n,path:[...n.path,"additionalProperties"]})):t.io==="output"&&(o.additionalProperties=!1)},sb=(e,t,r,n)=>{let o=e._zod.def,s=o.inclusive===!1,a=o.options.map((i,c)=>it(i,t,{...n,path:[...n.path,s?"oneOf":"anyOf",c]}));s?r.oneOf=a:r.anyOf=a},ab=(e,t,r,n)=>{let o=e._zod.def,s=it(o.left,t,{...n,path:[...n.path,"allOf",0]}),a=it(o.right,t,{...n,path:[...n.path,"allOf",1]}),i=l=>"allOf"in l&&Object.keys(l).length===1,c=[...i(s)?s.allOf:[s],...i(a)?a.allOf:[a]];r.allOf=c,t.intersections.push(c)};function qc(e,t,r){if(t.$ref){if(r.has(t))return t;r.add(t);let h=e.get(t)?.def;if(!h)return t;let p=qc(e,h,r);return p===h?t:p}for(let h of["anyOf","oneOf"]){let p=t[h];if(!Array.isArray(p))continue;let m=p.map(b=>qc(e,b,r));m.some((b,v)=>b!==p[v])&&(t={...t,[h]:m})}let n=Array.isArray(t.type)?t.type:[t.type],o=!n.includes("string")&&n.some(h=>h==="number"||h==="integer"),s=t.enum??(t.const!==void 0?[t.const]:void 0);if(!o&&!s?.some(h=>typeof h=="number"))return t;let{minimum:a,maximum:i,exclusiveMinimum:c,exclusiveMaximum:l,multipleOf:u,format:d,id:f,...g}=t;return g.enum?g.enum=g.enum.map(h=>typeof h=="number"?String(h):h):typeof g.const=="number"&&(g.const=String(g.const)),o&&(g.type="string",s||(g.pattern=(n.includes("number")?Xo:gc).source)),g}var Kc=new WeakMap;function Ax(e){let t=new Map;for(let n of e.seen.values())n.def&&!t.has(n.schema)&&t.set(n.schema,n);let r=new Map;for(let n of Kc.get(e)??[]){let o=e.seen.get(n),s=(o?.def??o?.schema)?.propertyNames;if(!s||s===!0||r.has(s))continue;let a=qc(t,s,new Set);a!==s&&r.set(s,a)}if(r.size)for(let n of e.seen.values())for(let o of[n.schema,n.def]){let s=o&&r.get(o.propertyNames);s&&(o.propertyNames=s)}}var ib=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="object";let a=s.keyType,i=Qt(a).patterns;if(s.mode==="loose"&&i&&i.size>0){let u=it(s.valueType,t,{...n,path:[...n.path,"patternProperties","*"]});o.patternProperties={};for(let d of i)Kt(o.patternProperties,qg(d).source,u)}else{if(t.target==="draft-07"||t.target==="draft-2020-12"){o.propertyNames=it(s.keyType,t,{...n,path:[...n.path,"propertyNames"]});let u=Kc.get(t);u||(u=[],Kc.set(t,u),t.deferred.push(()=>Ax(t))),u.push(e)}o.additionalProperties=it(s.valueType,t,{...n,path:[...n.path,"additionalProperties"]})}let c=a._zod.values,l=t.io==="input"&&oi(s.valueType)!==void 0;if(c&&!s.partial&&!l){let u=[...c].filter(d=>typeof d=="string"||typeof d=="number");u.length>0&&(o.required=u.map(String))}},lb=(e,t,r,n)=>{let o=e._zod.def,s=it(o.innerType,t,n),a=t.seen.get(e);t.target==="openapi-3.0"?(a.ref=o.innerType,r.nullable=!0):r.anyOf=[s,{type:"null"}]},cb=(e,t,r,n)=>{let o=e._zod.def;it(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Hc=Symbol();function ub(e,t,r,n,o){let s=!1,a=JSON.stringify(e,(i,c)=>typeof c!="bigint"?c:(s=!0,null));return s?(Vr(t,r,n,o,"BigInt defaults cannot be represented in JSON Schema"),Hc):JSON.parse(a)}var db=(e,t,r,n)=>{let o=e._zod.def;it(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType;let a=ub(o.defaultValue,e,t,r,n);a!==Hc&&(r.default=a)},pb=(e,t,r,n)=>{let o=e._zod.def;it(o.innerType,t,n);let s=t.seen.get(e);if(s.ref=o.innerType,t.io!=="input")return;let a=ub(o.defaultValue,e,t,r,n);a!==Hc&&(r._prefault=a)},fb=(e,t,r,n)=>{let o=e._zod.def;it(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType;let a;try{a=o.catchValue(void 0)}catch{Vr(e,t,r,n,"Dynamic catch values are not supported in JSON Schema");return}r.default=a},mb=(e,t,r,n)=>{let o=e._zod.def,s=o.in._zod.traits.has("$ZodTransform"),a=t.io==="input"?s?o.out:o.in:o.out;it(a,t,n);let i=t.seen.get(e);i.ref=a},hb=(e,t,r,n)=>{let o=e._zod.def;it(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,r.readOnly=!0};var Wc=(e,t,r,n)=>{let o=e._zod.def;it(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType};var gb=new WeakSet([Object.prototype,Error.prototype]);function si(e,t,r){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let n=r(this);return Object.defineProperty(this,t,{value:n,configurable:!0,writable:!0}),n},set(n){Object.defineProperty(this,t,{value:n,configurable:!0,writable:!0})}})}var Dx=(e,t)=>{Mf.init(e,t),e.name="ZodError";let r=Object.getPrototypeOf(e);gb.has(r)||(gb.add(r),si(r,"format",n=>o=>Vf(n,o)),si(r,"flatten",n=>o=>Lf(n,o)),si(r,"addIssue",n=>o=>{n.issues.push(o),n.message=JSON.stringify(n.issues,Jn,2)}),si(r,"addIssues",n=>o=>{n.issues.push(...o),n.message=JSON.stringify(n.issues,Jn,2)}),Object.defineProperty(r,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))};var Wt=C("ZodError",Dx,void 0,{Parent:Error});var bb=Ca(Wt),yb=Na(Wt),kb=Yo(Wt),vb=Ra(Wt),zb=Bf(Wt),_b=Zf(Wt),wb=Gf(Wt),xb=Uf(Wt),Sb=qf(Wt),Pb=Kf(Wt),$b=Hf(Wt),Eb=Wf(Wt);function Vx(){Dt.localeError||Ht(Jh())}function ii(){Dt.memoizer||Ht({memoizer:Wh()})}var et=C("ZodType",(e,t)=>(Vx(),Ke.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(le.mergeDefs(t,{checks:[...t.checks??[],...e.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return dr(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(AS(e,t))},superRefine(e,t){return this.check(OS(e,t))},overwrite(e){return this.check(rn(e))},optional(){return Qe(this)},exactOptional(){return bS(this)},nullable(){return Ib(this)},nullish(){return Qe(Ib(this))},nonoptional(e){return wS(this,e)},array(){return Ie(this)},or(e){return We([this,e])},and(e){return li(this,e)},transform(e){return Tb(this,Db(e))},default(e){return vS(this,e)},prefault(e){return _S(this,e)},catch(e){return SS(this,e)},pipe(e){return Tb(this,e)},readonly(){return ES(this)},describe(e){let t=this.clone();return xn.add(t,{description:e}),t},meta(...e){if(e.length===0)return xn.get(this);let t=this.clone();return xn.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return le.hide(this,"~standard",{...zc(this),jsonSchema:{input:as(this,"input"),output:as(this,"output")}})},set"~standard"(e){le.own(this,"~standard",e)},parse:function e(t,r){return bb(this,t,r,{callee:e})},parseAsync:async function e(t,r){return await yb(this,t,r,{callee:e})},safeParse(e,t){return kb(this,e,t)},async safeParseAsync(e,t){return vb(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){le.own(this,"spa",e)},validate(e,t){return ja(this,e,t)},validateAsync(e,t){return Ma(this,e,t)},encode:function e(t,r){return zb(this,t,r,{callee:e})},decode:function e(t,r){return _b(this,t,r,{callee:e})},encodeAsync:async function e(t,r){return await wb(this,t,r,{callee:e})},decodeAsync:async function e(t,r){return await xb(this,t,r,{callee:e})},safeEncode(e,t){return Sb(this,e,t)},safeDecode(e,t){return Pb(this,e,t)},async safeEncodeAsync(e,t){return $b(this,e,t)},async safeDecodeAsync(e,t){return Eb(this,e,t)},toJSONSchema(e){return Mg(this,{})(e)},get description(){return xn.get(this)?.description},get _def(){return this._zod.def}}),Cb=C("_ZodString",(e,t)=>{Za.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Kg(e,r,n,o)},le.derived({format:e=>Qt(e).format??null,minLength:e=>Qt(e).minimum??null,maxLength:e=>Qt(e).maximum??null},{regex(...e){return this.check(Ic(...e))},includes(...e){return this.check(Nc(...e))},startsWith(...e){return this.check(Rc(...e))},endsWith(...e){return this.check(jc(...e))},min(...e){return this.check(to(...e))},max(...e){return this.check(ri(...e))},length(...e){return this.check(ni(...e))},nonempty(...e){return this.check(to(1,...e))},lowercase(e){return this.check(Tc(e))},uppercase(e){return this.check(Cc(e))},trim(){return this.check(Dc())},normalize(...e){return this.check(Mc(...e))},toLowerCase(){return this.check(Lc())},toUpperCase(){return this.check(Vc())},slugify(){return this.check(Fc())}})),Fx=C("ZodString",(e,t)=>{Za.init(e,t),Cb.init(e,t)},{email(e){return this.check(eg(Bx,e))},url(e){return this.check(ag(Gx,e))},jwt(e){return this.check(zg(sS,e))},emoji(e){return this.check(ig(Ux,e))},guid(e){return this.check(tg(Zx,e))},uuid(e){return this.check(rg(ai,e))},uuidv4(e){return this.check(ng(ai,e))},uuidv6(e){return this.check(og(ai,e))},uuidv7(e){return this.check(sg(ai,e))},nanoid(e){return this.check(lg(qx,e))},cuid(e){return this.check(cg(Kx,e))},cuid2(e){return this.check(ug(Hx,e))},ulid(e){return this.check(dg(Wx,e))},base64(e){return this.check(yg(rS,e))},base64url(e){return this.check(kg(nS,e))},xid(e){return this.check(pg(Jx,e))},ksuid(e){return this.check(fg(Yx,e))},ipv4(e){return this.check(mg(Xx,e))},ipv6(e){return this.check(hg(Qx,e))},cidrv4(e){return this.check(gg(eS,e))},cidrv6(e){return this.check(bg(tS,e))},e164(e){return this.check(vg(oS,e))},datetime(e){return this.check(Wa(ls,e))},date(e){return this.check(Ja(cs,e))},time(e){return this.check(Ya(us,e))},duration(e){return this.check(Xa(ds,e))}});function I(e){return Qh(Fx,e)}var rt=C("ZodStringFormat",(e,t)=>{He.init(e,t),Cb.init(e,t)}),ls=C("ZodISODateTime",(e,t)=>{lh.init(e,t),rt.init(e,t)}),cs=C("ZodISODate",(e,t)=>{ch.init(e,t),rt.init(e,t)}),us=C("ZodISOTime",(e,t)=>{uh.init(e,t),rt.init(e,t)}),ds=C("ZodISODuration",(e,t)=>{dh.init(e,t),rt.init(e,t)}),Bx=C("ZodEmail",(e,t)=>{Ym.init(e,t),rt.init(e,t)});var Zx=C("ZodGUID",(e,t)=>{Wm.init(e,t),rt.init(e,t)});var ai=C("ZodUUID",(e,t)=>{Jm.init(e,t),rt.init(e,t)});var Gx=C("ZodURL",(e,t)=>{eh.init(e,t),rt.init(e,t)});var Ux=C("ZodEmoji",(e,t)=>{th.init(e,t),rt.init(e,t)});var qx=C("ZodNanoID",(e,t)=>{rh.init(e,t),rt.init(e,t)});var Kx=C("ZodCUID",(e,t)=>{nh.init(e,t),rt.init(e,t)});var Hx=C("ZodCUID2",(e,t)=>{oh.init(e,t),rt.init(e,t)});var Wx=C("ZodULID",(e,t)=>{sh.init(e,t),rt.init(e,t)});var Jx=C("ZodXID",(e,t)=>{ah.init(e,t),rt.init(e,t)});var Yx=C("ZodKSUID",(e,t)=>{ih.init(e,t),rt.init(e,t)});var Xx=C("ZodIPv4",(e,t)=>{ph.init(e,t),rt.init(e,t)});var Qx=C("ZodIPv6",(e,t)=>{mh.init(e,t),rt.init(e,t)});var eS=C("ZodCIDRv4",(e,t)=>{hh.init(e,t),rt.init(e,t)});var tS=C("ZodCIDRv6",(e,t)=>{gh.init(e,t),rt.init(e,t)});var rS=C("ZodBase64",(e,t)=>{yh.init(e,t),rt.init(e,t)});var nS=C("ZodBase64URL",(e,t)=>{kh.init(e,t),rt.init(e,t)});var oS=C("ZodE164",(e,t)=>{vh.init(e,t),rt.init(e,t)});var sS=C("ZodJWT",(e,t)=>{zh.init(e,t),rt.init(e,t)});var Nb=C("ZodNumber",(e,t)=>{wc.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Hg(e,r,n,o),e.isFinite=!0},le.derived({minValue:e=>{let{minimum:t,exclusiveMinimum:r}=Qt(e);return Math.max(t??Number.NEGATIVE_INFINITY,r??Number.NEGATIVE_INFINITY)},maxValue:e=>{let{maximum:t,exclusiveMaximum:r}=Qt(e);return Math.min(t??Number.POSITIVE_INFINITY,r??Number.POSITIVE_INFINITY)},isInt:e=>{let{isInt:t,multipleOf:r}=Qt(e);return!!t||!!r?.some(Number.isSafeInteger)},format:e=>Qt(e).format??null},{gt(e,t){return this.check(ei(e,t))},gte(e,t){return this.check(os(e,t))},min(e,t){return this.check(os(e,t))},lt(e,t){return this.check(Qa(e,t))},lte(e,t){return this.check(ns(e,t))},max(e,t){return this.check(ns(e,t))},int(e){return this.check(Ab(e))},safe(e){return this.check(Ab(e))},positive(e){return this.check(ei(0,e))},nonnegative(e){return this.check(os(0,e))},negative(e){return this.check(Qa(0,e))},nonpositive(e){return this.check(ns(0,e))},multipleOf(e,t){return this.check(ti(e,t))},step(e,t){return this.check(ti(e,t))},finite(){return this}}));function De(e){return _g(Nb,e)}var aS=C("ZodNumberFormat",(e,t)=>{_h.init(e,t),Nb.init(e,t)});function Ab(e){return wg(aS,e)}var iS=C("ZodBoolean",(e,t)=>{wh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Wg(e,r,n,o)});function gt(e){return xg(iS,e)}var lS=C("ZodNull",(e,t)=>{xh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Jg(e,r,n,o)});function Rb(e){return Sg(lS,e)}var cS=C("ZodUnknown",(e,t)=>{Sh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Xg(e,r,n,o)});function Xe(){return Pg(cS)}var uS=C("ZodNever",(e,t)=>{Ph.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Yg(e,r,n,o)});function dS(e){return $g(uS,e)}var pS=C("ZodArray",(e,t)=>{ii(),$h.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>nb(e,r,n,o),e.element=t.element},{min(e,t){return this.check(to(e,t))},nonempty(e){return this.check(to(1,e))},max(e,t){return this.check(ri(e,t))},length(e,t){return this.check(ni(e,t))},unwrap(){return this.element}});function Ie(e,t){return Eg(pS,e,t)}var jb=C("ZodObject",(e,t)=>{ii(),Oh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>ob(e,r,n,o),le.installLazyProp(e,"shape",r=>r._zod.def.shape,!1)},{keyof(){return Lt(Object.keys(this._zod.def.shape))},catchall(e){return this.clone(le.mergeDefs(this._zod.def,{catchall:e}))},passthrough(){return this.clone(le.mergeDefs(this._zod.def,{catchall:Xe()}))},loose(){return this.clone(le.mergeDefs(this._zod.def,{catchall:Xe()}))},strict(){return this.clone(le.mergeDefs(this._zod.def,{catchall:dS()}))},strip(){return this.clone(le.mergeDefs(this._zod.def,{catchall:void 0}))},extend(e){return le.extend(this,e)},safeExtend(e){return le.safeExtend(this,e)},merge(e){return le.merge(this,e)},pick(e){return le.pick(this,e)},omit(e){return le.omit(this,e)},partial(...e){return le.partial(Lb,this,e[0])},exactPartial(...e){return le.partial(Vb,this,e[0],"exactPartial")},required(...e){return le.required(Fb,this,e[0])}});function J(e,t){let r={type:"object",shape:e??{},...le.normalizeParams(t)};return new jb(r)}function Rt(e,t){return new jb({type:"object",shape:e,catchall:Xe(),...le.normalizeParams(t)})}var Mb=C("ZodUnion",(e,t)=>{xc.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>sb(e,r,n,o),e.options=t.options});function We(e,t){return new Mb({type:"union",options:e,...le.normalizeParams(t)})}var fS=C("ZodDiscriminatedUnion",(e,t)=>{Mb.init(e,t),Ih.init(e,t)});function Yc(e,t,r){return new fS({type:"union",options:t,discriminator:e,...le.normalizeParams(r)})}var mS=C("ZodIntersection",(e,t)=>{Th.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>ab(e,r,n,o)});function li(e,t){return new mS({type:"intersection",left:e,right:t})}var Ob=C("ZodRecord",(e,t)=>{ii(),Ch.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>ib(e,r,n,o),e.keyType=t.keyType,e.valueType=t.valueType});function Ze(e,t,r){return!t||!t._zod?new Ob({type:"record",keyType:I(),valueType:e,...le.normalizeParams(t)}):new Ob({type:"record",keyType:e,valueType:t,...le.normalizeParams(r)})}var Jc=C("ZodEnum",(e,t)=>{Nh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(n,o,s)=>Qg(e,n,o,s),e.enum=t.entries,e.options=[...e._zod.values];let r=new Set(Object.keys(t.entries));e.extract=(n,o)=>{let s={};for(let a of n)if(r.has(a))s[a]=t.entries[a];else throw new Error(`Key ${a} not found in enum`);return new Jc({...t,checks:[],...le.normalizeParams(o),entries:s})},e.exclude=(n,o)=>{let s={...t.entries};for(let a of n)if(r.has(a))delete s[a];else throw new Error(`Key ${a} not found in enum`);return new Jc({...t,checks:[],...le.normalizeParams(o),entries:s})}});function Lt(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new Jc({type:"enum",entries:r,...le.normalizeParams(t)})}var hS=C("ZodLiteral",(e,t)=>{Rh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>eb(e,r,n,o),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function oe(e,t){return new hS({type:"literal",values:Array.isArray(e)?e:[e],...le.normalizeParams(t)})}var gS=C("ZodTransform",(e,t)=>{ii(),jh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>rb(e,r,n,o),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new eo(e.constructor.name);r.addIssue=s=>{if(typeof s=="string")r.issues.push(le.issue(s,r.value,t));else{let a=s;a.fatal&&(a.continue=!1),a.code??(a.code="custom"),"input"in a||(a.input=r.value),a.inst??(a.inst=e),r.issues.push(le.issue(a))}};let o=t.transform(r.value,r);return o instanceof Promise?o.then(s=>(r.value=s,r)):(r.value=o,r)}});function Db(e){return new gS({type:"transform",transform:e})}var Lb=C("ZodOptional",(e,t)=>{Sc.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Wc(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function Qe(e){return new Lb({type:"optional",innerType:e})}var Vb=C("ZodExactOptional",(e,t)=>{Mh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Wc(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function bS(e){return new Vb({type:"optional",innerType:e})}var yS=C("ZodNullable",(e,t)=>{Dh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>lb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function Ib(e){return new yS({type:"nullable",innerType:e})}var kS=C("ZodDefault",(e,t)=>{Lh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>db(e,r,n,o),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function vS(e,t){return new kS({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():le.shallowClone(t)}})}var zS=C("ZodPrefault",(e,t)=>{Vh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>pb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function _S(e,t){return new zS({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():le.shallowClone(t)}})}var Fb=C("ZodNonOptional",(e,t)=>{Fh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>cb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function wS(e,t){return new Fb({type:"nonoptional",innerType:e,...le.normalizeParams(t)})}var xS=C("ZodCatch",(e,t)=>{Bh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>fb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function SS(e,t){return new xS({type:"catch",innerType:e,catchValue:typeof t=="function"?t:le.constantCatch(t)})}var Bb=C("ZodPipe",(e,t)=>{Pc.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>mb(e,r,n,o),e.in=t.in,e.out=t.out});function Tb(e,t){return new Bb({type:"pipe",in:e,out:t})}var PS=C("ZodPreprocess",(e,t)=>{Bb.init(e,t),Zh.init(e,t)}),$S=C("ZodReadonly",(e,t)=>{Gh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>hb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function ES(e){return new $S({type:"readonly",innerType:e})}var Zb=C("ZodCustom",(e,t)=>{Uh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>tb(e,r,n,o)});function Gb(e,t){return Ag(Zb,e??(()=>!0),t)}function AS(e,t={}){return Og(Zb,e,t)}function OS(e,t){return Ig(e,t)}function Xc(e,t){return new PS({type:"pipe",in:Db(e),out:t})}var ci={};vf(ci,{ZodISODate:()=>cs,ZodISODateTime:()=>ls,ZodISODuration:()=>ds,ZodISOTime:()=>us,date:()=>TS,datetime:()=>IS,duration:()=>NS,time:()=>CS});function IS(e){return Wa(ls,e)}function TS(e){return Ja(cs,e)}function CS(e){return Ya(us,e)}function NS(e){return Xa(ds,e)}var eu="2025-11-25";var Ub=[eu,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],nn="io.modelcontextprotocol/related-task",di="2.0",mt=Gb(e=>e!==null&&(typeof e=="object"||typeof e=="function")),qb=We([I(),De().int()]),Kb=I(),O2=Rt({ttl:De().optional(),pollInterval:De().optional()}),RS=J({ttl:De().optional()}),jS=J({taskId:I()}),tu=Rt({progressToken:qb.optional(),[nn]:jS.optional()}),Jt=J({_meta:tu.optional()}),ps=Jt.extend({task:RS.optional()}),Hb=e=>ps.safeParse(e).success,wt=J({method:I(),params:Jt.loose().optional()}),er=J({_meta:tu.optional()}),tr=J({method:I(),params:er.loose().optional()}),xt=Rt({_meta:tu.optional()}),pi=We([I(),De().int()]),Wb=J({jsonrpc:oe(di),id:pi,...wt.shape}).strict(),ru=e=>Wb.safeParse(e).success,Jb=J({jsonrpc:oe(di),...tr.shape}).strict(),Yb=e=>Jb.safeParse(e).success,nu=J({jsonrpc:oe(di),id:pi,result:xt}).strict(),fs=e=>nu.safeParse(e).success;var ye;(function(e){e[e.ConnectionClosed=-32e3]="ConnectionClosed",e[e.RequestTimeout=-32001]="RequestTimeout",e[e.ParseError=-32700]="ParseError",e[e.InvalidRequest=-32600]="InvalidRequest",e[e.MethodNotFound=-32601]="MethodNotFound",e[e.InvalidParams=-32602]="InvalidParams",e[e.InternalError=-32603]="InternalError",e[e.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(ye||(ye={}));var ou=J({jsonrpc:oe(di),id:pi.optional(),error:J({code:De().int(),message:I(),data:Xe().optional()})}).strict();var Xb=e=>ou.safeParse(e).success;var Qb=We([Wb,Jb,nu,ou]),I2=We([nu,ou]),fi=xt.strict(),MS=er.extend({requestId:pi.optional(),reason:I().optional()}),mi=tr.extend({method:oe("notifications/cancelled"),params:MS}),DS=J({src:I(),mimeType:I().optional(),sizes:Ie(I()).optional(),theme:Lt(["light","dark"]).optional()}),ms=J({icons:Ie(DS).optional()}),oo=J({name:I(),title:I().optional()}),ey=oo.extend({...oo.shape,...ms.shape,version:I(),websiteUrl:I().optional(),description:I().optional()}),LS=li(J({applyDefaults:gt().optional()}),Ze(I(),Xe())),VS=Xc(e=>e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,li(J({form:LS.optional(),url:mt.optional()}),Ze(I(),Xe()).optional())),FS=Rt({list:mt.optional(),cancel:mt.optional(),requests:Rt({sampling:Rt({createMessage:mt.optional()}).optional(),elicitation:Rt({create:mt.optional()}).optional()}).optional()}),BS=Rt({list:mt.optional(),cancel:mt.optional(),requests:Rt({tools:Rt({call:mt.optional()}).optional()}).optional()}),ZS=J({experimental:Ze(I(),mt).optional(),sampling:J({context:mt.optional(),tools:mt.optional()}).optional(),elicitation:VS.optional(),roots:J({listChanged:gt().optional()}).optional(),tasks:FS.optional(),extensions:Ze(I(),mt).optional()}),GS=Jt.extend({protocolVersion:I(),capabilities:ZS,clientInfo:ey}),su=wt.extend({method:oe("initialize"),params:GS});var US=J({experimental:Ze(I(),mt).optional(),logging:mt.optional(),completions:mt.optional(),prompts:J({listChanged:gt().optional()}).optional(),resources:J({subscribe:gt().optional(),listChanged:gt().optional()}).optional(),tools:J({listChanged:gt().optional()}).optional(),tasks:BS.optional(),extensions:Ze(I(),mt).optional()}),qS=xt.extend({protocolVersion:I(),capabilities:US,serverInfo:ey,instructions:I().optional()}),au=tr.extend({method:oe("notifications/initialized"),params:er.optional()});var hi=wt.extend({method:oe("ping"),params:Jt.optional()}),KS=J({progress:De(),total:Qe(De()),message:Qe(I())}),HS=J({...er.shape,...KS.shape,progressToken:qb}),gi=tr.extend({method:oe("notifications/progress"),params:HS}),WS=Jt.extend({cursor:Kb.optional()}),hs=wt.extend({params:WS.optional()}),gs=xt.extend({nextCursor:Kb.optional()}),JS=Lt(["working","input_required","completed","failed","cancelled"]),bs=J({taskId:I(),status:JS,ttl:We([De(),Rb()]),createdAt:I(),lastUpdatedAt:I(),pollInterval:Qe(De()),statusMessage:Qe(I())}),so=xt.extend({task:bs}),YS=er.merge(bs),ys=tr.extend({method:oe("notifications/tasks/status"),params:YS}),bi=wt.extend({method:oe("tasks/get"),params:Jt.extend({taskId:I()})}),yi=xt.merge(bs),ki=wt.extend({method:oe("tasks/result"),params:Jt.extend({taskId:I()})}),T2=xt.loose(),vi=hs.extend({method:oe("tasks/list")}),zi=gs.extend({tasks:Ie(bs)}),_i=wt.extend({method:oe("tasks/cancel"),params:Jt.extend({taskId:I()})}),ty=xt.merge(bs),ry=J({uri:I(),mimeType:Qe(I()),_meta:Ze(I(),Xe()).optional()}),ny=ry.extend({text:I()}),iu=I().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:"Invalid Base64 string"}),oy=ry.extend({blob:iu}),ks=Lt(["user","assistant"]),ao=J({audience:Ie(ks).optional(),priority:De().min(0).max(1).optional(),lastModified:ci.datetime({offset:!0}).optional()}),sy=J({...oo.shape,...ms.shape,uri:I(),description:Qe(I()),mimeType:Qe(I()),size:Qe(De()),annotations:ao.optional(),_meta:Qe(Rt({}))}),XS=J({...oo.shape,...ms.shape,uriTemplate:I(),description:Qe(I()),mimeType:Qe(I()),annotations:ao.optional(),_meta:Qe(Rt({}))}),QS=hs.extend({method:oe("resources/list")}),e1=gs.extend({resources:Ie(sy)}),t1=hs.extend({method:oe("resources/templates/list")}),r1=gs.extend({resourceTemplates:Ie(XS)}),lu=Jt.extend({uri:I()}),n1=lu,o1=wt.extend({method:oe("resources/read"),params:n1}),s1=xt.extend({contents:Ie(We([ny,oy]))}),a1=tr.extend({method:oe("notifications/resources/list_changed"),params:er.optional()}),i1=lu,l1=wt.extend({method:oe("resources/subscribe"),params:i1}),c1=lu,u1=wt.extend({method:oe("resources/unsubscribe"),params:c1}),d1=er.extend({uri:I()}),p1=tr.extend({method:oe("notifications/resources/updated"),params:d1}),f1=J({name:I(),description:Qe(I()),required:Qe(gt())}),m1=J({...oo.shape,...ms.shape,description:Qe(I()),arguments:Qe(Ie(f1)),_meta:Qe(Rt({}))}),h1=hs.extend({method:oe("prompts/list")}),g1=gs.extend({prompts:Ie(m1)}),b1=Jt.extend({name:I(),arguments:Ze(I(),I()).optional()}),y1=wt.extend({method:oe("prompts/get"),params:b1}),cu=J({type:oe("text"),text:I(),annotations:ao.optional(),_meta:Ze(I(),Xe()).optional()}),uu=J({type:oe("image"),data:iu,mimeType:I(),annotations:ao.optional(),_meta:Ze(I(),Xe()).optional()}),du=J({type:oe("audio"),data:iu,mimeType:I(),annotations:ao.optional(),_meta:Ze(I(),Xe()).optional()}),k1=J({type:oe("tool_use"),name:I(),id:I(),input:Ze(I(),Xe()),_meta:Ze(I(),Xe()).optional()}),v1=J({type:oe("resource"),resource:We([ny,oy]),annotations:ao.optional(),_meta:Ze(I(),Xe()).optional()}),z1=sy.extend({type:oe("resource_link")}),pu=We([cu,uu,du,z1,v1]),_1=J({role:ks,content:pu}),w1=xt.extend({description:I().optional(),messages:Ie(_1)}),x1=tr.extend({method:oe("notifications/prompts/list_changed"),params:er.optional()}),S1=J({title:I().optional(),readOnlyHint:gt().optional(),destructiveHint:gt().optional(),idempotentHint:gt().optional(),openWorldHint:gt().optional()}),P1=J({taskSupport:Lt(["required","optional","forbidden"]).optional()}),ay=J({...oo.shape,...ms.shape,description:I().optional(),inputSchema:J({type:oe("object"),properties:Ze(I(),mt).optional(),required:Ie(I()).optional()}).catchall(Xe()),outputSchema:J({type:oe("object"),properties:Ze(I(),mt).optional(),required:Ie(I()).optional()}).catchall(Xe()).optional(),annotations:S1.optional(),execution:P1.optional(),_meta:Ze(I(),Xe()).optional()}),fu=hs.extend({method:oe("tools/list")}),$1=gs.extend({tools:Ie(ay)}),wi=xt.extend({content:Ie(pu).default([]),structuredContent:Ze(I(),Xe()).optional(),isError:gt().optional()}),C2=wi.or(xt.extend({toolResult:Xe()})),E1=ps.extend({name:I(),arguments:Ze(I(),Xe()).optional()}),vs=wt.extend({method:oe("tools/call"),params:E1}),A1=tr.extend({method:oe("notifications/tools/list_changed"),params:er.optional()}),N2=J({autoRefresh:gt().default(!0),debounceMs:De().int().nonnegative().default(300)}),zs=Lt(["debug","info","notice","warning","error","critical","alert","emergency"]),O1=Jt.extend({level:zs}),mu=wt.extend({method:oe("logging/setLevel"),params:O1}),I1=er.extend({level:zs,logger:I().optional(),data:Xe()}),T1=tr.extend({method:oe("notifications/message"),params:I1}),C1=J({name:I().optional()}),N1=J({hints:Ie(C1).optional(),costPriority:De().min(0).max(1).optional(),speedPriority:De().min(0).max(1).optional(),intelligencePriority:De().min(0).max(1).optional()}),R1=J({mode:Lt(["auto","required","none"]).optional()}),j1=J({type:oe("tool_result"),toolUseId:I().describe("The unique identifier for the corresponding tool call."),content:Ie(pu).default([]),structuredContent:J({}).loose().optional(),isError:gt().optional(),_meta:Ze(I(),Xe()).optional()}),M1=Yc("type",[cu,uu,du]),ui=Yc("type",[cu,uu,du,k1,j1]),D1=J({role:ks,content:We([ui,Ie(ui)]),_meta:Ze(I(),Xe()).optional()}),L1=ps.extend({messages:Ie(D1),modelPreferences:N1.optional(),systemPrompt:I().optional(),includeContext:Lt(["none","thisServer","allServers"]).optional(),temperature:De().optional(),maxTokens:De().int(),stopSequences:Ie(I()).optional(),metadata:mt.optional(),tools:Ie(ay).optional(),toolChoice:R1.optional()}),V1=wt.extend({method:oe("sampling/createMessage"),params:L1}),_s=xt.extend({model:I(),stopReason:Qe(Lt(["endTurn","stopSequence","maxTokens"]).or(I())),role:ks,content:M1}),hu=xt.extend({model:I(),stopReason:Qe(Lt(["endTurn","stopSequence","maxTokens","toolUse"]).or(I())),role:ks,content:We([ui,Ie(ui)])}),F1=J({type:oe("boolean"),title:I().optional(),description:I().optional(),default:gt().optional()}),B1=J({type:oe("string"),title:I().optional(),description:I().optional(),minLength:De().optional(),maxLength:De().optional(),format:Lt(["email","uri","date","date-time"]).optional(),default:I().optional()}),Z1=J({type:Lt(["number","integer"]),title:I().optional(),description:I().optional(),minimum:De().optional(),maximum:De().optional(),default:De().optional()}),G1=J({type:oe("string"),title:I().optional(),description:I().optional(),enum:Ie(I()),default:I().optional()}),U1=J({type:oe("string"),title:I().optional(),description:I().optional(),oneOf:Ie(J({const:I(),title:I()})),default:I().optional()}),q1=J({type:oe("string"),title:I().optional(),description:I().optional(),enum:Ie(I()),enumNames:Ie(I()).optional(),default:I().optional()}),K1=We([G1,U1]),H1=J({type:oe("array"),title:I().optional(),description:I().optional(),minItems:De().optional(),maxItems:De().optional(),items:J({type:oe("string"),enum:Ie(I())}),default:Ie(I()).optional()}),W1=J({type:oe("array"),title:I().optional(),description:I().optional(),minItems:De().optional(),maxItems:De().optional(),items:J({anyOf:Ie(J({const:I(),title:I()}))}),default:Ie(I()).optional()}),J1=We([H1,W1]),Y1=We([q1,K1,J1]),X1=We([Y1,F1,B1,Z1]),Q1=ps.extend({mode:oe("form").optional(),message:I(),requestedSchema:J({type:oe("object"),properties:Ze(I(),X1),required:Ie(I()).optional()})}),eP=ps.extend({mode:oe("url"),message:I(),elicitationId:I(),url:I().url()}),tP=We([Q1,eP]),rP=wt.extend({method:oe("elicitation/create"),params:tP}),nP=er.extend({elicitationId:I()}),oP=tr.extend({method:oe("notifications/elicitation/complete"),params:nP}),io=xt.extend({action:Lt(["accept","decline","cancel"]),content:Xc(e=>e===null?void 0:e,Ze(I(),We([I(),De(),gt(),Ie(I())])).optional())}),sP=J({type:oe("ref/resource"),uri:I()});var aP=J({type:oe("ref/prompt"),name:I()}),iP=Jt.extend({ref:We([aP,sP]),argument:J({name:I(),value:I()}),context:J({arguments:Ze(I(),I()).optional()}).optional()}),lP=wt.extend({method:oe("completion/complete"),params:iP});var cP=xt.extend({completion:Rt({values:Ie(I()).max(100),total:Qe(De().int()),hasMore:Qe(gt())})}),uP=J({uri:I().startsWith("file://"),name:I().optional(),_meta:Ze(I(),Xe()).optional()}),dP=wt.extend({method:oe("roots/list"),params:Jt.optional()}),gu=xt.extend({roots:Ie(uP)}),pP=tr.extend({method:oe("notifications/roots/list_changed"),params:er.optional()}),R2=We([hi,su,lP,mu,y1,h1,QS,t1,o1,l1,u1,vs,fu,bi,ki,vi,_i]),j2=We([mi,gi,au,pP,ys]),M2=We([fi,_s,hu,io,gu,yi,zi,so]),D2=We([hi,V1,rP,dP,bi,ki,vi,_i]),L2=We([mi,gi,T1,p1,a1,A1,x1,ys,oP]),V2=We([fi,qS,cP,w1,g1,e1,r1,s1,wi,$1,yi,zi,so]),fe=class e extends Error{constructor(t,r,n){super(`MCP error ${t}: ${r}`),this.code=t,this.data=n,this.name="McpError"}static fromError(t,r,n){if(t===ye.UrlElicitationRequired&&n){let o=n;if(o.elicitations)return new Qc(o.elicitations,r)}return new e(t,r,n)}},Qc=class extends fe{constructor(t,r=`URL elicitation${t.length>1?"s":""} required`){super(ye.UrlElicitationRequired,r,{elicitations:t})}get elicitations(){return this.data?.elicitations??[]}};var fP=10*1024*1024,xi=class{constructor(t){this._maxBufferSize=t?.maxBufferSize??fP}append(t){if((this._buffer?.length??0)+t.length>this._maxBufferSize)throw this.clear(),new Error(`ReadBuffer exceeded maximum size of ${this._maxBufferSize} bytes`);this._buffer=this._buffer?Buffer.concat([this._buffer,t]):t}readMessage(){if(!this._buffer)return null;let t=this._buffer.indexOf(`
73
+ `);if(t===-1)return null;let r=this._buffer.toString("utf8",0,t).replace(/\r$/,"");return this._buffer=this._buffer.subarray(t+1),mP(r)}clear(){this._buffer=void 0}};function mP(e){return Qb.parse(JSON.parse(e))}function iy(e){return JSON.stringify(e)+`
74
+ `}var Si=class{constructor(t=ly.stdin,r=ly.stdout,n){this._stdin=t,this._stdout=r,this._started=!1,this._ondata=o=>{try{this._readBuffer.append(o),this.processReadBuffer()}catch(s){this.onerror?.(s),this.close().catch(()=>{})}},this._onerror=o=>{this.onerror?.(o)},this._readBuffer=new xi({maxBufferSize:n?.maxBufferSize})}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let t=this._readBuffer.readMessage();if(t===null)break;this.onmessage?.(t)}catch(t){this.onerror?.(t)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(t){return new Promise(r=>{let n=iy(t);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};var cy="__export_design",uy="__import_design";function dy(e){try{let t=JSON.parse(String(e));return t&&typeof t.t=="string"?t:null}catch{return null}}import{readFile as QN,writeFile as eR}from"node:fs/promises";import{resolve as tw}from"node:path";function Pi(e){return!!e._zod}function on(e,t){return Pi(e)?fc(e,t):e.safeParse(t)}function $i(e){if(!e)return;let t;if(Pi(e)?t=e._zod?.def?.shape:t=e.shape,!!t){if(typeof t=="function")try{return t()}catch{return}return t}}function Ei(e){if(Pi(e)){let s=e._zod?.def;if(s){if(s.value!==void 0)return s.value;if(Array.isArray(s.values)&&s.values.length>0)return s.values[0]}}let r=e._def;if(r){if(r.value!==void 0)return r.value;if(Array.isArray(r.values)&&r.values.length>0)return r.values[0]}let n=e.value;if(n!==void 0)return n}function sn(e){return e==="completed"||e==="failed"||e==="cancelled"}var gP=Symbol("Let zodToJsonSchema decide on which parser to use");var VM=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function bu(e){let r=$i(e)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=Ei(r);if(typeof n!="string")throw new Error("Schema method literal must be a string");return n}function yu(e,t){let r=on(e,t);if(!r.success)throw r.error;return r.data}var _P=6e4,Ai=class{constructor(t){this._options=t,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(mi,r=>{this._oncancel(r)}),this.setNotificationHandler(gi,r=>{this._onprogress(r)}),this.setRequestHandler(hi,r=>({})),this._taskStore=t?.taskStore,this._taskMessageQueue=t?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(bi,async(r,n)=>{let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new fe(ye.InvalidParams,"Failed to retrieve task: Task not found");return{...o}}),this.setRequestHandler(ki,async(r,n)=>{let o=async()=>{let s=r.params.taskId;if(!await this._taskStore.getTask(s,n.sessionId))throw new fe(ye.InvalidParams,`Task not found: ${s}`);if(this._taskMessageQueue){let i;for(;i=await this._taskMessageQueue.dequeue(s,n.sessionId);){if(i.type==="response"||i.type==="error"){let c=i.message,l=c.id,u=this._requestResolvers.get(l);if(u)if(this._requestResolvers.delete(l),i.type==="response")u(c);else{let d=c,f=new fe(d.error.code,d.error.message,d.error.data);u(f)}else{let d=i.type==="response"?"Response":"Error";this._onerror(new Error(`${d} handler missing for request ${l}`))}continue}await this._transport?.send(i.message,{relatedRequestId:n.requestId})}}let a=await this._taskStore.getTask(s,n.sessionId);if(!a)throw new fe(ye.InvalidParams,`Task not found: ${s}`);if(!sn(a.status))return await this._waitForTaskUpdate(s,n.signal,n.sessionId),await o();if(sn(a.status)){let i=await this._taskStore.getTaskResult(s,n.sessionId);return this._clearTaskQueue(s,n.sessionId),{...i,_meta:{...i._meta,[nn]:{taskId:s}}}}return await o()};return await o()}),this.setRequestHandler(vi,async(r,n)=>{try{let{tasks:o,nextCursor:s}=await this._taskStore.listTasks(r.params?.cursor,n.sessionId);return{tasks:o,nextCursor:s,_meta:{}}}catch(o){throw new fe(ye.InvalidParams,`Failed to list tasks: ${o instanceof Error?o.message:String(o)}`)}}),this.setRequestHandler(_i,async(r,n)=>{try{let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new fe(ye.InvalidParams,`Task not found: ${r.params.taskId}`);if(sn(o.status))throw new fe(ye.InvalidParams,`Cannot cancel task in terminal status: ${o.status}`);await this._taskStore.updateTaskStatus(r.params.taskId,"cancelled","Client cancelled task execution.",n.sessionId),this._clearTaskQueue(r.params.taskId,n.sessionId);let s=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!s)throw new fe(ye.InvalidParams,`Task not found after cancellation: ${r.params.taskId}`);return{_meta:{},...s}}catch(o){throw o instanceof fe?o:new fe(ye.InvalidRequest,`Failed to cancel task: ${o instanceof Error?o.message:String(o)}`)}}))}async _oncancel(t){if(!t.params.requestId)return;this._requestHandlerAbortControllers.get(t.params.requestId)?.abort(t.params.reason)}_setupTimeout(t,r,n,o,s=!1){this._timeoutInfo.set(t,{timeoutId:setTimeout(o,r),startTime:Date.now(),timeout:r,maxTotalTimeout:n,resetTimeoutOnProgress:s,onTimeout:o})}_resetTimeout(t){let r=this._timeoutInfo.get(t);if(!r)return!1;let n=Date.now()-r.startTime;if(r.maxTotalTimeout&&n>=r.maxTotalTimeout)throw this._timeoutInfo.delete(t),fe.fromError(ye.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:r.maxTotalTimeout,totalElapsed:n});return clearTimeout(r.timeoutId),r.timeoutId=setTimeout(r.onTimeout,r.timeout),!0}_cleanupTimeout(t){let r=this._timeoutInfo.get(t);r&&(clearTimeout(r.timeoutId),this._timeoutInfo.delete(t))}async connect(t){if(this._transport)throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=t;let r=this.transport?.onclose;this._transport.onclose=()=>{r?.(),this._onclose()};let n=this.transport?.onerror;this._transport.onerror=s=>{n?.(s),this._onerror(s)};let o=this._transport?.onmessage;this._transport.onmessage=(s,a)=>{o?.(s,a),fs(s)||Xb(s)?this._onresponse(s):ru(s)?this._onrequest(s,a):Yb(s)?this._onnotification(s):this._onerror(new Error(`Unknown message type: ${JSON.stringify(s)}`))},await this._transport.start()}_onclose(){let t=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let n of this._timeoutInfo.values())clearTimeout(n.timeoutId);this._timeoutInfo.clear();for(let n of this._requestHandlerAbortControllers.values())n.abort();this._requestHandlerAbortControllers.clear();let r=fe.fromError(ye.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(let n of t.values())n(r)}_onerror(t){this.onerror?.(t)}_onnotification(t){let r=this._notificationHandlers.get(t.method)??this.fallbackNotificationHandler;r!==void 0&&Promise.resolve().then(()=>r(t)).catch(n=>this._onerror(new Error(`Uncaught error in notification handler: ${n}`)))}_onrequest(t,r){let n=this._requestHandlers.get(t.method)??this.fallbackRequestHandler,o=this._transport,s=t.params?._meta?.[nn]?.taskId,a=o?.sessionId,i=this._taskStore,c=!0,l;if(s&&i&&this._taskMessageQueue&&a!==void 0&&(c=!1,l=(async()=>{if(!await i.getTask(s,a))throw new fe(ye.InvalidParams,`Task not found: ${s}`);c=!0})()),n===void 0){let h={jsonrpc:"2.0",id:t.id,error:{code:ye.MethodNotFound,message:"Method not found"}};if(s&&l){let p={type:"error",message:h,timestamp:Date.now()};l.then(()=>this._enqueueTaskMessage(s,p,a),()=>o?.send(h)).catch(m=>this._onerror(new Error(`Failed to send an error response: ${m}`)))}else s&&this._taskMessageQueue?this._enqueueTaskMessage(s,{type:"error",message:h,timestamp:Date.now()},o?.sessionId).catch(p=>this._onerror(new Error(`Failed to enqueue error response: ${p}`))):o?.send(h).catch(p=>this._onerror(new Error(`Failed to send an error response: ${p}`)));return}let u=new AbortController;this._requestHandlerAbortControllers.set(t.id,u);let d=Hb(t.params)?t.params.task:void 0,f=this._taskStore?this.requestTaskStore(t,o?.sessionId):void 0,g={signal:u.signal,sessionId:o?.sessionId,_meta:t.params?._meta,sendNotification:async h=>{if(u.signal.aborted)return;let p={relatedRequestId:t.id};s&&(p.relatedTask={taskId:s}),await this.notification(h,p)},sendRequest:async(h,p,m)=>{if(u.signal.aborted)throw new fe(ye.ConnectionClosed,"Request was cancelled");let b={...m,relatedRequestId:t.id};s&&!b.relatedTask&&(b.relatedTask={taskId:s});let v=b.relatedTask?.taskId??s;return v&&f&&await f.updateTaskStatus(v,"input_required"),await this.request(h,p,b)},authInfo:r?.authInfo,requestId:t.id,requestInfo:r?.requestInfo,taskId:s,taskStore:f,taskRequestedTtl:d?.ttl,closeSSEStream:r?.closeSSEStream,closeStandaloneSSEStream:r?.closeStandaloneSSEStream};(l??Promise.resolve()).then(()=>{if(l&&u.signal.aborted)throw new fe(ye.ConnectionClosed,"Request was cancelled");d&&this.assertTaskHandlerCapability(t.method)}).then(()=>n(t,g)).then(async h=>{if(u.signal.aborted)return;let p={result:h,jsonrpc:"2.0",id:t.id};s&&this._taskMessageQueue?await this._enqueueTaskMessage(s,{type:"response",message:p,timestamp:Date.now()},o?.sessionId):await o?.send(p)},async h=>{if(u.signal.aborted)return;let p={jsonrpc:"2.0",id:t.id,error:{code:Number.isSafeInteger(h.code)?h.code:ye.InternalError,message:h.message??"Internal error",...h.data!==void 0&&{data:h.data}}};s&&this._taskMessageQueue&&c?await this._enqueueTaskMessage(s,{type:"error",message:p,timestamp:Date.now()},o?.sessionId):await o?.send(p)}).catch(h=>this._onerror(new Error(`Failed to send response: ${h}`))).finally(()=>{this._requestHandlerAbortControllers.get(t.id)===u&&this._requestHandlerAbortControllers.delete(t.id)})}_onprogress(t){let{progressToken:r,...n}=t.params,o=Number(r),s=this._progressHandlers.get(o);if(!s){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(t)}`));return}let a=this._responseHandlers.get(o),i=this._timeoutInfo.get(o);if(i&&a&&i.resetTimeoutOnProgress)try{this._resetTimeout(o)}catch(c){this._responseHandlers.delete(o),this._progressHandlers.delete(o),this._cleanupTimeout(o),a(c);return}s(n)}_onresponse(t){let r=Number(t.id),n=this._requestResolvers.get(r);if(n){if(this._requestResolvers.delete(r),fs(t))n(t);else{let a=new fe(t.error.code,t.error.message,t.error.data);n(a)}return}let o=this._responseHandlers.get(r);if(o===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(t)}`));return}this._responseHandlers.delete(r),this._cleanupTimeout(r);let s=!1;if(fs(t)&&t.result&&typeof t.result=="object"){let a=t.result;if(a.task&&typeof a.task=="object"){let i=a.task;typeof i.taskId=="string"&&(s=!0,this._taskProgressTokens.set(i.taskId,r))}}if(s||this._progressHandlers.delete(r),fs(t))o(t);else{let a=fe.fromError(t.error.code,t.error.message,t.error.data);o(a)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(t,r,n){let{task:o}=n??{};if(!o){try{yield{type:"result",result:await this.request(t,r,n)}}catch(a){yield{type:"error",error:a instanceof fe?a:new fe(ye.InternalError,String(a))}}return}let s;try{let a=await this.request(t,so,n);if(a.task)s=a.task.taskId,yield{type:"taskCreated",task:a.task};else throw new fe(ye.InternalError,"Task creation did not return a task");for(;;){let i=await this.getTask({taskId:s},n);if(yield{type:"taskStatus",task:i},sn(i.status)){i.status==="completed"?yield{type:"result",result:await this.getTaskResult({taskId:s},r,n)}:i.status==="failed"?yield{type:"error",error:new fe(ye.InternalError,`Task ${s} failed`)}:i.status==="cancelled"&&(yield{type:"error",error:new fe(ye.InternalError,`Task ${s} was cancelled`)});return}if(i.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:s},r,n)};return}let c=i.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(l=>setTimeout(l,c)),n?.signal?.throwIfAborted()}}catch(a){yield{type:"error",error:a instanceof fe?a:new fe(ye.InternalError,String(a))}}}request(t,r,n){let{relatedRequestId:o,resumptionToken:s,onresumptiontoken:a,task:i,relatedTask:c}=n??{};return new Promise((l,u)=>{let d=v=>{u(v)};if(!this._transport){d(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(t.method),i&&this.assertTaskCapability(t.method)}catch(v){d(v);return}n?.signal?.throwIfAborted();let f=this._requestMessageId++,g={...t,jsonrpc:"2.0",id:f};n?.onprogress&&(this._progressHandlers.set(f,n.onprogress),g.params={...t.params,_meta:{...t.params?._meta||{},progressToken:f}}),i&&(g.params={...g.params,task:i}),c&&(g.params={...g.params,_meta:{...g.params?._meta||{},[nn]:c}});let h=v=>{this._responseHandlers.delete(f),this._progressHandlers.delete(f),this._cleanupTimeout(f),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:f,reason:String(v)}},{relatedRequestId:o,resumptionToken:s,onresumptiontoken:a}).catch(z=>this._onerror(new Error(`Failed to send cancellation: ${z}`)));let _=v instanceof fe?v:new fe(ye.RequestTimeout,String(v));u(_)};this._responseHandlers.set(f,v=>{if(!n?.signal?.aborted){if(v instanceof Error)return u(v);try{let _=on(r,v.result);_.success?l(_.data):u(_.error)}catch(_){u(_)}}}),n?.signal?.addEventListener("abort",()=>{h(n?.signal?.reason)});let p=n?.timeout??_P,m=()=>h(fe.fromError(ye.RequestTimeout,"Request timed out",{timeout:p}));this._setupTimeout(f,p,n?.maxTotalTimeout,m,n?.resetTimeoutOnProgress??!1);let b=c?.taskId;if(b){let v=_=>{let z=this._responseHandlers.get(f);z?z(_):this._onerror(new Error(`Response handler missing for side-channeled request ${f}`))};this._requestResolvers.set(f,v),this._enqueueTaskMessage(b,{type:"request",message:g,timestamp:Date.now()}).catch(_=>{this._cleanupTimeout(f),u(_)})}else this._transport.send(g,{relatedRequestId:o,resumptionToken:s,onresumptiontoken:a}).catch(v=>{this._cleanupTimeout(f),u(v)})})}async getTask(t,r){return this.request({method:"tasks/get",params:t},yi,r)}async getTaskResult(t,r,n){return this.request({method:"tasks/result",params:t},r,n)}async listTasks(t,r){return this.request({method:"tasks/list",params:t},zi,r)}async cancelTask(t,r){return this.request({method:"tasks/cancel",params:t},ty,r)}async notification(t,r){if(!this._transport)throw new Error("Not connected");this.assertNotificationCapability(t.method);let n=r?.relatedTask?.taskId;if(n){let i={...t,jsonrpc:"2.0",params:{...t.params,_meta:{...t.params?._meta||{},[nn]:r.relatedTask}}};await this._enqueueTaskMessage(n,{type:"notification",message:i,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(t.method)&&!t.params&&!r?.relatedRequestId&&!r?.relatedTask){if(this._pendingDebouncedNotifications.has(t.method))return;this._pendingDebouncedNotifications.add(t.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(t.method),!this._transport)return;let i={...t,jsonrpc:"2.0"};r?.relatedTask&&(i={...i,params:{...i.params,_meta:{...i.params?._meta||{},[nn]:r.relatedTask}}}),this._transport?.send(i,r).catch(c=>this._onerror(c))});return}let a={...t,jsonrpc:"2.0"};r?.relatedTask&&(a={...a,params:{...a.params,_meta:{...a.params?._meta||{},[nn]:r.relatedTask}}}),await this._transport.send(a,r)}setRequestHandler(t,r){let n=bu(t);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(o,s)=>{let a=yu(t,o);return Promise.resolve(r(a,s))})}removeRequestHandler(t){this._requestHandlers.delete(t)}assertCanSetRequestHandler(t){if(this._requestHandlers.has(t))throw new Error(`A request handler for ${t} already exists, which would be overridden`)}setNotificationHandler(t,r){let n=bu(t);this._notificationHandlers.set(n,o=>{let s=yu(t,o);return Promise.resolve(r(s))})}removeNotificationHandler(t){this._notificationHandlers.delete(t)}_cleanupTaskProgressHandler(t){let r=this._taskProgressTokens.get(t);r!==void 0&&(this._progressHandlers.delete(r),this._taskProgressTokens.delete(t))}async _enqueueTaskMessage(t,r,n){if(!this._taskStore||!this._taskMessageQueue)throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let o=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(t,r,n??this._transport?.sessionId,o)}async _clearTaskQueue(t,r){if(this._taskMessageQueue){let n=await this._taskMessageQueue.dequeueAll(t,r);for(let o of n)if(o.type==="request"&&ru(o.message)){let s=o.message.id,a=this._requestResolvers.get(s);a?(a(new fe(ye.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(s)):this._onerror(new Error(`Resolver missing for request ${s} during task ${t} cleanup`))}}}async _waitForTaskUpdate(t,r,n){let o=this._options?.defaultTaskPollInterval??1e3;try{let s=await this._taskStore?.getTask(t,n);s?.pollInterval&&(o=s.pollInterval)}catch{}return new Promise((s,a)=>{if(r.aborted){a(new fe(ye.InvalidRequest,"Request cancelled"));return}let i=setTimeout(s,o);r.addEventListener("abort",()=>{clearTimeout(i),a(new fe(ye.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(t,r){let n=this._taskStore;if(!n)throw new Error("No task store configured");return{createTask:async o=>{if(!t)throw new Error("No request provided");return await n.createTask(o,t.id,{method:t.method,params:t.params},r)},getTask:async o=>{let s=await n.getTask(o,r);if(!s)throw new fe(ye.InvalidParams,"Failed to retrieve task: Task not found");return s},storeTaskResult:async(o,s,a)=>{await n.storeTaskResult(o,s,a,r);let i=await n.getTask(o,r);if(i){let c=ys.parse({method:"notifications/tasks/status",params:i});await this.notification(c),sn(i.status)&&this._cleanupTaskProgressHandler(o)}},getTaskResult:o=>n.getTaskResult(o,r),updateTaskStatus:async(o,s,a)=>{let i=await n.getTask(o,r);if(!i)throw new fe(ye.InvalidParams,`Task "${o}" not found - it may have been cleaned up`);if(sn(i.status))throw new fe(ye.InvalidParams,`Cannot update task "${o}" from terminal status "${i.status}" to "${s}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await n.updateTaskStatus(o,s,a,r);let c=await n.getTask(o,r);if(c){let l=ys.parse({method:"notifications/tasks/status",params:c});await this.notification(l),sn(c.status)&&this._cleanupTaskProgressHandler(o)}},listTasks:o=>n.listTasks(o,r)}}};function py(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function fy(e,t){let r={...e};for(let n in t){let o=n,s=t[o];if(s===void 0)continue;let a=r[o];py(a)&&py(s)?r[o]={...a,...s}:r[o]=s}return r}var hv=zn(cp(),1),gv=zn(mv(),1);function RT(){let e=new hv.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,gv.default)(e),e}var ml=class{constructor(t){this._ajv=t??RT()}getValidator(t){let r="$id"in t&&typeof t.$id=="string"?this._ajv.getSchema(t.$id)??this._ajv.compile(t):this._ajv.compile(t);return n=>r(n)?{valid:!0,data:n,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(r.errors)}}};var hl=class{constructor(t){this._server=t}requestStream(t,r,n){return this._server.requestStream(t,r,n)}createMessageStream(t,r){let n=this._server.getClientCapabilities();if((t.tools||t.toolChoice)&&!n?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let o=t.messages[t.messages.length-1],s=Array.isArray(o.content)?o.content:[o.content],a=s.some(u=>u.type==="tool_result"),i=t.messages.length>1?t.messages[t.messages.length-2]:void 0,c=i?Array.isArray(i.content)?i.content:[i.content]:[],l=c.some(u=>u.type==="tool_use");if(a){if(s.some(u=>u.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!l)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(l){let u=new Set(c.filter(f=>f.type==="tool_use").map(f=>f.id)),d=new Set(s.filter(f=>f.type==="tool_result").map(f=>f.toolUseId));if(u.size!==d.size||![...u].every(f=>d.has(f)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:t},_s,r)}elicitInputStream(t,r){let n=this._server.getClientCapabilities(),o=t.mode??"form";switch(o){case"url":{if(!n?.elicitation?.url)throw new Error("Client does not support url elicitation.");break}case"form":{if(!n?.elicitation?.form)throw new Error("Client does not support form elicitation.");break}}let s=o==="form"&&t.mode===void 0?{...t,mode:"form"}:t;return this.requestStream({method:"elicitation/create",params:s},io,r)}async getTask(t,r){return this._server.getTask({taskId:t},r)}async getTaskResult(t,r,n){return this._server.getTaskResult({taskId:t},r,n)}async listTasks(t,r){return this._server.listTasks(t?{cursor:t}:void 0,r)}async cancelTask(t,r){return this._server.cancelTask({taskId:t},r)}};function bv(e,t,r){if(!e)throw new Error(`${r} does not support task creation (required for ${t})`);switch(t){case"tools/call":if(!e.tools?.call)throw new Error(`${r} does not support task creation for tools/call (required for ${t})`);break;default:break}}function yv(e,t,r){if(!e)throw new Error(`${r} does not support task creation (required for ${t})`);switch(t){case"sampling/createMessage":if(!e.sampling?.createMessage)throw new Error(`${r} does not support task creation for sampling/createMessage (required for ${t})`);break;case"elicitation/create":if(!e.elicitation?.create)throw new Error(`${r} does not support task creation for elicitation/create (required for ${t})`);break;default:break}}var gl=class extends Ai{constructor(t,r){super(r),this._serverInfo=t,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(zs.options.map((n,o)=>[n,o])),this.isMessageIgnored=(n,o)=>{let s=this._loggingLevels.get(o);return s?this.LOG_LEVEL_SEVERITY.get(n)<this.LOG_LEVEL_SEVERITY.get(s):!1},this._capabilities=r?.capabilities??{},this._instructions=r?.instructions,this._jsonSchemaValidator=r?.jsonSchemaValidator??new ml,this.setRequestHandler(su,n=>this._oninitialize(n)),this.setNotificationHandler(au,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(mu,async(n,o)=>{let s=o.sessionId||o.requestInfo?.headers["mcp-session-id"]||void 0,{level:a}=n.params,i=zs.safeParse(a);return i.success&&this._loggingLevels.set(s,i.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new hl(this)}),this._experimental}registerCapabilities(t){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=fy(this._capabilities,t)}setRequestHandler(t,r){let o=$i(t)?.method;if(!o)throw new Error("Schema is missing a method literal");let s=Ei(o);if(typeof s!="string")throw new Error("Schema method literal must be a string");if(s==="tools/call"){let i=async(c,l)=>{let u=on(vs,c);if(!u.success){let h=u.error instanceof Error?u.error.message:String(u.error);throw new fe(ye.InvalidParams,`Invalid tools/call request: ${h}`)}let{params:d}=u.data,f=await Promise.resolve(r(c,l));if(d.task){let h=on(so,f);if(!h.success){let p=h.error instanceof Error?h.error.message:String(h.error);throw new fe(ye.InvalidParams,`Invalid task creation result: ${p}`)}return h.data}let g=on(wi,f);if(!g.success){let h=g.error instanceof Error?g.error.message:String(g.error);throw new fe(ye.InvalidParams,`Invalid tools/call result: ${h}`)}return g.data};return super.setRequestHandler(t,i)}return super.setRequestHandler(t,r)}assertCapabilityForMethod(t){switch(t){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${t})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${t})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${t})`);break;case"ping":break}}assertNotificationCapability(t){switch(t){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${t})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${t})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${t})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${t})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(t){if(this._capabilities)switch(t){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${t})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${t})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${t})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${t})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${t})`);break;case"ping":case"initialize":break}}assertTaskCapability(t){yv(this._clientCapabilities?.tasks?.requests,t,"Client")}assertTaskHandlerCapability(t){this._capabilities&&bv(this._capabilities.tasks?.requests,t,"Server")}async _oninitialize(t){let r=t.params.protocolVersion;return this._clientCapabilities=t.params.capabilities,this._clientVersion=t.params.clientInfo,{protocolVersion:Ub.includes(r)?r:eu,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},fi)}async createMessage(t,r){if((t.tools||t.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let n=t.messages[t.messages.length-1],o=Array.isArray(n.content)?n.content:[n.content],s=o.some(l=>l.type==="tool_result"),a=t.messages.length>1?t.messages[t.messages.length-2]:void 0,i=a?Array.isArray(a.content)?a.content:[a.content]:[],c=i.some(l=>l.type==="tool_use");if(s){if(o.some(l=>l.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!c)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(c){let l=new Set(i.filter(d=>d.type==="tool_use").map(d=>d.id)),u=new Set(o.filter(d=>d.type==="tool_result").map(d=>d.toolUseId));if(l.size!==u.size||![...l].every(d=>u.has(d)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return t.tools?this.request({method:"sampling/createMessage",params:t},hu,r):this.request({method:"sampling/createMessage",params:t},_s,r)}async elicitInput(t,r){switch(t.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let o=t;return this.request({method:"elicitation/create",params:o},io,r)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let o=t.mode==="form"?t:{...t,mode:"form"},s=await this.request({method:"elicitation/create",params:o},io,r);if(s.action==="accept"&&s.content&&o.requestedSchema)try{let i=this._jsonSchemaValidator.getValidator(o.requestedSchema)(s.content);if(!i.valid)throw new fe(ye.InvalidParams,`Elicitation response content does not match requested schema: ${i.errorMessage}`)}catch(a){throw a instanceof fe?a:new fe(ye.InternalError,`Error validating elicitation response: ${a instanceof Error?a.message:String(a)}`)}return s}}}createElicitationCompletionNotifier(t,r){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:t}},r)}async listRoots(t,r){return this.request({method:"roots/list",params:t},gu,r)}async sendLoggingMessage(t,r){if(this._capabilities.logging&&!this.isMessageIgnored(t.level,r))return this.notification({method:"notifications/message",params:t})}async sendResourceUpdated(t){return this.notification({method:"notifications/resources/updated",params:t})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};var eN=zn(fz(),1),tN=zn($p(),1),rN=zn(Op(),1),nN=zn(El(),1),Dp=zn(_z(),1);var wz={Proofboard:"Proofboard","Panel be\xE1ll\xEDt\xE1sai":"Board settings","Egyszer\u0171 m\xF3d: a halad\xF3 r\xE9szek rejtve. Kattint\xE1sra kikapcsol.":"Simple mode: advanced parts are hidden. Click to turn it off.","Egyszer\u0171 m\xF3d":"Simple mode",F\u00E1jl:"File","\xDAj terv\u2026":"New design\u2026","Terv bet\xF6lt\xE9se f\xE1jlb\xF3l; a saj\xE1t alkatr\xE9szeid megmaradnak":"Load a design from a file; your own parts are kept","Megnyit\xE1s\u2026":"Open\u2026","A teljes terv (a benne haszn\xE1lt saj\xE1t alkatr\xE9szekkel egy\xFCtt) f\xE1jlba":"The whole design (with the custom parts it uses) to a file","Ment\xE9s f\xE1jlba":"Save to file","P\xE9ld\xE1k\u2026":"Examples\u2026","Panel be\xE1ll\xEDt\xE1sai\u2026":"Board settings\u2026","A halad\xF3 r\xE9szek elrejt\xE9se: cs\xEDkv\xE1g\xE1s, k\xE9zi \u2194 automatikus bek\xF6t\xE9s, JSON, PlatformIO, saj\xE1t alkatr\xE9sz szerkeszt\xE9se; a Probl\xE9m\xE1k k\xF6z\xFCl csak a hib\xE1k":"Hide the advanced parts: strip cuts, manual \u2194 automatic wiring, JSON, PlatformIO, custom part editing; only errors among the Problems","Saj\xE1t alkatr\xE9szk\xF6nyvt\xE1r":"Your part library","A saj\xE1t k\xF6nyvt\xE1r ment\xE9se f\xE1jlba (a tervt\u0151l f\xFCggetlen\xFCl)":"Save your library to a file (independent of the design)","K\xF6nyvt\xE1r export\xE1l\xE1sa":"Export library","Alkatr\xE9szek bet\xF6lt\xE9se f\xE1jlb\xF3l a saj\xE1t k\xF6nyvt\xE1rba":"Load parts from a file into your library","K\xF6nyvt\xE1r import\xE1l\xE1sa\u2026":"Import library\u2026","JSON export / import\u2026":"JSON export / import\u2026","\xD6n\xE1ll\xF3 ablakban fut, \xE9s internet n\xE9lk\xFCl is m\u0171k\xF6dik":"Runs in its own window and works without internet","Telep\xEDt\xE9s alkalmaz\xE1sk\xE9nt\u2026":"Install as an app\u2026","N\xE9vjegy\u2026":"About\u2026",T\u00E9ma:"Theme","A rendszer be\xE1ll\xEDt\xE1sa szerint":"Follow the system setting",Auto:"Auto",Vil\u00E1gos:"Light",S\u00F6t\u00E9t:"Dark",Elrendez\u00E9s:"Layout","Tervez\xE9s: alkatr\xE9szek \xE9s bek\xF6t\xE9s (Alt+1)":"Design: parts and wiring (Alt+1)",Tervez\u00E9s:"Design","Program: a panel \xE9s a program egym\xE1s mellett (Alt+2)":"Program: the board and the program side by side (Alt+2)",Program:"Program","Szimul\xE1ci\xF3: vez\xE9rl\u0151k \xE9s GPIO-k (Alt+3)":"Simulation: controls and GPIOs (Alt+3)",Szimul\u00E1ci\u00F3:"Simulation","Az elrendez\xE9s vissza\xE1ll\xEDt\xE1sa az alap\xE1llapot\xE1ra":"Reset the layout to its default","Az elrendez\xE9s alap\xE1llapota":"Default layout","Panelek ki-be":"Toggle panels","Bal oldals\xE1v: Alkatr\xE9szek ( [ )":"Left sidebar: Parts ( [ )","Bal oldals\xE1v (Alkatr\xE9szek)":"Left sidebar (Parts)","Als\xF3 panel: Probl\xE9m\xE1k, Napl\xF3 (P)":"Bottom panel: Problems, Log (P)","Als\xF3 panel (Probl\xE9m\xE1k, Napl\xF3)":"Bottom panel (Problems, Log)","Jobb oldals\xE1v: Tulajdons\xE1gok, Kapcsolatok, Szimul\xE1ci\xF3 ( ] )":"Right sidebar: Properties, Connections, Simulation ( ] )","Jobb oldals\xE1v":"Right sidebar",Visszavon\u00E1s:"Undo","Visszavon\xE1s (Ctrl+Z)":"Undo (Ctrl+Z)","\xDAjra (Ctrl+Y)":"Redo (Ctrl+Y)",\u00DAjra:"Redo","Szimul\xE1ci\xF3 (S)":"Simulation (S)",Bez\u00E1r\u00E1s:"Close","Bal oldali panel":"Left panel",Tulajdons\u00E1gok:"Properties",Alkatr\u00E9szek:"Parts","Bal oldals\xE1v (\xF6sszecsukva)":"Left sidebar (collapsed)","Kinyit\xE1s ( [ )":"Expand ( [ )","Bal oldals\xE1v kinyit\xE1sa":"Expand the left sidebar","Alkatr\xE9sz keres\xE9se":"Search parts","Keres\xE9s: n\xE9v, l\xE1b, funkci\xF3 (pl. i2c, adc, motor)":"Search: name, pin, function (e.g. i2c, adc, motor)","Saj\xE1t alkatr\xE9sz le\xEDr\xE1sa az Alkatr\xE9sz-szerkeszt\u0151ben":"Describe a custom part in the Part editor","\xDAj alkatr\xE9sz":"New part",Csoportok:"Groups","Minden csoport kinyit\xE1sa":"Expand all groups","Minden csoport becsuk\xE1sa":"Collapse all groups","A saj\xE1t k\xF6nyvt\xE1r":"Your library","a b\xF6ng\xE9sz\u0151dben marad, terv v\xE1lt\xE1sakor is; export\xE1lni \xE9s import\xE1lni a F\xE1jl men\xFCben lehet. Amit egy tervbe leraksz, az a terv r\xE9sze lesz (":"stays in your browser, even when you switch designs; export and import are in the File menu. Whatever you place in a design becomes part of it (",Projekt:"Project","), \xEDgy a tervf\xE1jllal egy\xFCtt utazik.":"), so it travels with the design file.","Lerak\xE1s k\xF6zben:":"While placing:","forgat\xE1s,":"rotate,","t\xFCkr\xF6z\xE9s,":"mirror,","m\xE9gse.":"cancel.","\xC9rint\xE9ssel: egy ujjal h\xFAzva g\xF6rgetsz, alkatr\xE9szen h\xFAzva mozgatod; hosszan nyomva kijel\xF6l\u0151 keret; k\xE9t ujjal nagy\xEDt\xE1s \xE9s g\xF6rget\xE9s. Lerak\xE1skor az el\u0151n\xE9zet az ujjad f\xF6l\xF6tt j\xE1r, felenged\xE9sre ker\xFCl le.":"With touch: drag with one finger to scroll, drag on a part to move it; long press for a selection box; two fingers to zoom and scroll. While placing, the preview follows above your finger and is placed when you lift it.","H\xFAzd a sz\xE9less\xE9g \xE1ll\xEDt\xE1s\xE1hoz, dupla kattint\xE1s: alapm\xE9ret":"Drag to set the width, double-click: default size","Bal oldals\xE1v sz\xE9less\xE9ge":"Left sidebar width",N\u00E9zetek:"Views",N\u00E9zet:"View","A panel: alkatr\xE9szek, bek\xF6t\xE9s (1)":"The board: parts, wiring (1)",Panel:"Board","A program: blokkok, amelyek fut\xE1s k\xF6zben a GPIO-kat vez\xE9rlik (2)":"The program: blocks that drive the GPIOs while running (2)","A panel \xE9s a program egym\xE1s mellett (3)":"The board and the program side by side (3)",Mindkett\u0151:"Both","Mindkett\u0151: egym\xE1s mellett vagy egym\xE1s alatt":"Both: side by side or one above the other","Feloszt\xE1s ir\xE1nya":"Split direction","Alkatr\xE9sz-szerkeszt\u0151k":"Part editors","A panel is l\xE1tszik a szerkeszt\u0151 mellett (bal oldalt)":"Show the board next to the editor (on the left)","Panel a szerkeszt\u0151 mellett":"Board next to the editor","A panel megjelen\xEDt\xE9se":"Board display",Oldal:"Side","Alkatr\xE9szoldal (F)":"Component side (F)",Alkatr\u00E9szoldal:"Component side","R\xE9zoldal, t\xFCkr\xF6zve (F)":"Copper side, mirrored (F)",R\u00E9zoldal:"Copper side","Kapcsolati vonalak: a kapcsolatok egyenes vonallal a k\xE9t l\xE1b k\xF6z\xF6tt (N)":"Connection lines: connections as straight lines between the two pins (N)",Vonalak:"Lines","Minden alkatr\xE9sz r\xF6ntgen n\xE9zetben: csak k\xF6rvonal, l\xE1bak \xE9s l\xE1bnevek (X)":"Every part in X-ray view: outline, pins and pin names only (X)",R\u00F6ntgen:"X-ray","(Shift+W) R\xF6vid vezet\xE9k: a hossz\xFA vezet\xE9kekb\u0151l csak a k\xE9t v\xE9g l\xE1tszik szakad\xE1sjellel; r\xE1mutatva vagy kijel\xF6lve a teljes vonal":"(Shift+W) Short wires: long wires show only their two ends with a break mark; the full line on hover or when selected","R\xF6vid vezet\xE9k":"Short wires","A panel n\xE9zet\xE9nek elforgat\xE1sa 90\xB0-kal (T)":"Rotate the board view by 90\xB0 (T)","Panel elforgat\xE1sa 90\xB0-kal":"Rotate the board by 90\xB0","Kezdj\xFCnk egy panelt":"Let's start a board","A Proofboarddal pr\xF3bany\xE1kot tervezel \xE9s ki is pr\xF3b\xE1lod, miel\u0151tt forrasztan\xE1l.":"With Proofboard you design a perfboard and try it out before you solder.","\u2013 a bal oldali k\xF6nyvt\xE1rb\xF3l rakd le \u0151ket a panelra.":"\u2013 place them on the board from the library on the left.",Bek\u00F6t\u00E9s:"Wiring","\u2013 kapcsolatokkal (az \xFAtvonalat a program keresi meg), vagy k\xE9zzel hidakkal \xE9s vezet\xE9kekkel.":"\u2013 with connections (the app finds the route), or by hand with bridges and wires.",Kipr\u00F3b\u00E1l\u00E1s:"Trying it out","\u2013 a szimul\xE1ci\xF3 megmutatja a fesz\xFClts\xE9geket, a Probl\xE9m\xE1k a hib\xE1kat; a program a vez\xE9rl\u0151lapot m\u0171k\xF6dteti.":"\u2013 the simulation shows the voltages, Problems shows the mistakes; the program drives the controller board.","Tiszta sablon":"Blank template","vagy n\xE9zd meg, hogyan k\xE9sz\xFCl":"or see how it's done","P\xE9lda bet\xF6lt\xE9se":"Load an example","Alkatr\xE9sz-szerkeszt\u0151":"Part editor",Eszk\u00F6z\u00F6k:"Tools","Eszk\xF6zs\xE1v \xF6sszecsuk\xE1sa / kinyit\xE1sa":"Collapse / expand the toolbar","Eszk\xF6zs\xE1v \xF6sszecsuk\xE1sa":"Collapse the toolbar",Sz\u00EDn:"Color",V\u00E1g\u00E1s:"Cut","A cs\xEDkv\xE1g\xE1s t\xEDpusa":"Strip cut type",Kijel\u00F6l\u00E9s:"Select","\xD6sszecsuk\xE1s c\xEDmsorra (dupla kattint\xE1s a c\xEDmsoron is)":"Collapse to the title bar (or double-click the title bar)","\xD6sszecsuk\xE1s c\xEDmsorra":"Collapse to the title bar","R\xF6gz\xEDt\xE9s a jobb s\xE1vba (a Tulajdons\xE1gok szakasz tetej\xE9re)":"Dock in the right sidebar (at the top of Properties)","R\xF6gz\xEDt\xE9s a jobb s\xE1vba":"Dock in the right sidebar",Nagy\u00EDt\u00E1s:"Zoom","Kicsiny\xEDt\xE9s (Ctrl+g\xF6rg\u0151)":"Zoom out (Ctrl+wheel)",Kicsiny\u00EDt\u00E9s:"Zoom out","Az eg\xE9sz panel l\xE1tsz\xF3djon (0)":"Show the whole board (0)","Nagy\xEDt\xE1s (Ctrl+g\xF6rg\u0151)":"Zoom in (Ctrl+wheel)","Az eg\xE9sz panel, k\xF6z\xE9pen (0)":"The whole board, centered (0)","Az eg\xE9sz panel":"The whole board","M\u0171veletek a kijel\xF6l\xE9ssel":"Actions on the selection","Probl\xE9m\xE1k \xE9s napl\xF3":"Problems and log","H\xFAzd a magass\xE1g \xE1ll\xEDt\xE1s\xE1hoz":"Drag to set the height","Az als\xF3 panel magass\xE1ga":"Bottom panel height","Als\xF3 panel":"Bottom panel",Probl\u00E9m\u00E1k:"Problems",Napl\u00F3:"Log","Mind elolvasva":"Mark all read","Napl\xF3 t\xF6rl\xE9se":"Clear log","Probl\xE9m\xE1k \xE9s napl\xF3 (P)":"Problems and log (P)","Als\xF3 panel kinyit\xE1sa":"Expand the bottom panel","A Probl\xE9m\xE1k megnyit\xE1sa":"Open Problems","Jobb oldals\xE1v sz\xE9less\xE9ge":"Right sidebar width","Jobb oldali panel":"Right panel",Kapcsolatok:"Connections",K\u00F3d:"Code","Jobb oldals\xE1v (\xF6sszecsukva)":"Right sidebar (collapsed)","Kinyit\xE1s ( ] )":"Expand ( ] )","Jobb oldals\xE1v kinyit\xE1sa":"Expand the right sidebar","\xC1tt\xE9tel a m\xE1sik oldals\xE1vba":"Move to the other sidebar","Lev\xE1laszt\xE1s: lebeg\u0151 ablak a panel f\xF6l\xF6tt":"Detach: floating window above the board","Lev\xE1laszt\xE1s lebeg\u0151 ablakba":"Detach into a floating window","Automatikus \xFAtvonaltervez\xE9s":"Automatic routing","Cs\xEDkos panelen a kapcsolatok szerint elv\xE1gja a cs\xEDkokat az elt\xE9r\u0151 h\xE1l\xF3zat\xFA l\xE1bak k\xF6z\xF6tt":"On a stripboard, cuts the strips between pins of different nets, based on the connections","Automatikus cs\xEDkv\xE1g\xE1s":"Automatic strip cuts","Az automatikus hidak \xFAjratervez\xE9se":"Replan the automatic bridges","\xDAtvonalak keres\xE9se":"Find routes","Az automatikus hidakat k\xE9zi hidakk\xE1 alak\xEDtja":"Turns the automatic bridges into manual ones","R\xF6gz\xEDt\xE9s k\xE9zire":"Make manual","A k\xE9zi bek\xF6t\xE9sb\u0151l kapcsolatokat k\xE9sz\xEDt, \xE9s automatikusan \xFAjrah\xFAzza":"Creates connections from the manual wiring and reroutes them automatically","K\xE9zi \u2192 automatikus":"Manual \u2192 automatic","Auto hidak t\xF6rl\xE9se":"Delete auto bridges","Kapcsolat:":"Connection:","eszk\xF6z, vagy gomb kijel\xF6l\xE9sekor \u201EA \u2192 GPIO, B \u2192 GND\u201D. A k\xE9zi hidakat az \xFAtvonalkeres\u0151 nem m\xF3dos\xEDtja; a \u201EK\xE9zi \u2192 automatikus\u201D kapcsolatokk\xE1 alak\xEDtja \u0151ket, a \u201ER\xF6gz\xEDt\xE9s k\xE9zire\u201D visszafel\xE9.":"tool, or \u201CA \u2192 GPIO, B \u2192 GND\u201D when a button is selected. The router does not change manual bridges; \u201CManual \u2192 automatic\u201D turns them into connections, \u201CMake manual\u201D does the reverse.",Jelmagyar\u00E1zat:"Legend","gomb A / GPIO":"button A / GPIO","gomb B":"button B","GND / kat\xF3d":"GND / cathode","3V3 / an\xF3d / +":"3V3 / anode / +","VBUS / VSYS":"VBUS / VSYS","k\xE9zi h\xEDd":"manual bridge","automatikus h\xEDd":"automatic bridge","kapcsolat \u2192 GPIO":"connection \u2192 GPIO","kapcsolat \u2192 GND":"connection \u2192 GND","kapcsolat l\xE1b\u2013l\xE1b":"pin-to-pin connection","bek\xF6tetlen kapcsolat":"unrouted connection","USB t\xE1p a vez\xE9rl\u0151n":"USB power on the controller","Gomb m\xF3d":"Button mode","Nyomva tart\xE1s":"Hold",Kapcsol\u00F3:"Toggle",Panelek:"Panels",R\u00E9szletek:"Details",N\u00E9vjegy:"About","Pr\xF3bany\xE1k-tervez\u0151 \xE9s -szimul\xE1tor: pontraszteres, szekci\xF3s \xE9s cs\xEDkos panelek, hidak \xE9s vezet\xE9kek, \xFAtvonalkeres\u0151, egyen\xE1ram\xFA szimul\xE1ci\xF3, blokkos program \xE9s k\xF3dgener\xE1l\xE1s Pico \xE9s ESP32 vez\xE9rl\u0151lapokhoz.":"Perfboard designer and simulator: dot, sectioned and strip boards, bridges and wires, a router, DC simulation, a block program and code generation for Pico and ESP32 boards.","A tervek \xE9s a saj\xE1t alkatr\xE9szek csak ebben a b\xF6ng\xE9sz\u0151ben vannak mentve; f\xE1jlba a F\xE1jl \u2192 Ment\xE9s f\xE1jlba menti \u0151ket.":"Designs and custom parts are saved only in this browser; File \u2192 Save to file writes them to a file.","Forr\xE1sk\xF3d a GitHubon":"Source code on GitHub","Hibajelz\xE9s, \xF6tlet":"Report a bug, suggest an idea",Telep\u00EDt\u00E9s:"Install","\xDAj verzi\xF3 \xE9rhet\u0151 el.":"A new version is available.",Friss\u00EDt\u00E9s:"Update","K\xE9s\u0151bb (a k\xF6vetkez\u0151 megnyit\xE1skor friss\xFCl)":"Later (updates on the next launch)",K\u00E9s\u0151bb:"Later",P\u00E9ld\u00E1k:"Examples","Keres\xE9s a p\xE9ld\xE1k k\xF6z\xF6tt":"Search the examples","A bet\xF6lt\xE9s visszavonhat\xF3 (Ctrl+Z).":"Loading can be undone (Ctrl+Z).",T\u00EDpus:"Type",M\u00E9ret:"Size",oszlopok:"columns",sorok:"rows",lyuk:"holes",Szekci\u00F3:"Section","nincs (pontraszter)":"none (dot board)","teljes cs\xEDk (stripboard)":"full strip (stripboard)",Alkalmaz:"Apply","A panel m\xE9ret\xE9nek vagy a r\xE9zoszt\xE1snak a v\xE1ltoz\xE1sa visszavonhat\xF3 (Ctrl+Z). A panelr\xF3l lel\xF3g\xF3 hidak \xE9s vezet\xE9kek t\xF6rl\u0151dnek.":"Changing the board size or the copper layout can be undone (Ctrl+Z). Bridges and wires hanging off the board are deleted.","\xDAj terv":"New design","A mostani terv visszavon\xE1ssal (Ctrl+Z) visszahozhat\xF3; a saj\xE1t k\xF6nyvt\xE1rad nem v\xE1ltozik.":"The current design can be brought back with Undo (Ctrl+Z); your library does not change.",M\u00E9gse:"Cancel",L\u00E9trehoz\u00E1s:"Create","JSON export / import":"JSON export / import",Export:"Export",M\u00E1sol\u00E1s:"Copy",Import:"Import",'Form\xE1tum: parts[{type,label,r,c,rot,mir,props}], bridges[[r1,c1,r2,c2]], wires[{a:[r,c],b:[r,c],color}], gpio{"partId.l\xE1bsz\xE1m":"pullup|pulldown|float|out_high|out_low"}. Koordin\xE1ta: sor:oszlop.':'Format: parts[{type,label,r,c,rot,mir,props}], bridges[[r1,c1,r2,c2]], wires[{a:[r,c],b:[r,c],color}], gpio{"partId.pinNumber":"pullup|pulldown|float|out_high|out_low"}. Coordinate: row:column.',Nyelv:"Language","Verzi\xF3: {v} \xB7 {d}":"Version: {v} \xB7 {d}","Telep\xEDtett alkalmaz\xE1sk\xE9nt fut; internet n\xE9lk\xFCl is m\u0171k\xF6dik.":"Running as an installed app; works without internet.","Internet n\xE9lk\xFCl is m\u0171k\xF6dik (a b\xF6ng\xE9sz\u0151 elt\xE1rolta). Telep\xEDthet\u0151 is \xF6n\xE1ll\xF3 alkalmaz\xE1sk\xE9nt.":"Works without internet (stored by the browser). It can also be installed as an app.","Telep\xEDtve: a Proofboard \xF6n\xE1ll\xF3 alkalmaz\xE1sk\xE9nt is elind\xEDthat\xF3.":"Installed: Proofboard can now be started as an app.","Visszavon\xE1s az alkatr\xE9sz-szerkeszt\u0151ben (Ctrl+Z)":"Undo in the part editor (Ctrl+Z)","\xDAjra az alkatr\xE9sz-szerkeszt\u0151ben (Ctrl+Y)":"Redo in the part editor (Ctrl+Y)","Kijel\xF6l\xE9s \xE9s mozgat\xE1s; Shift+kattint\xE1s vagy keret: t\xF6bb elem":"Select and move; Shift+click or a box: several items",H\u00EDd:"Bridge","Forraszt\xF3h\xEDd szomsz\xE9dos lyukak k\xF6z\xF6tt (h\xFAz\xE1ssal t\xF6bb is)":"Solder bridge between neighboring holes (drag for several)",Vezet\u00E9k:"Wire","Huzal k\xE9t tetsz\u0151leges lyuk k\xF6z\xF6tt":"A wire between any two holes",Kapcsolat:"Connection","K\xE9t l\xE1b \xF6sszek\xF6t\xE9se; az \xFAtvonalat a program keresi meg":"Connect two pins; the app finds the route",Cs\u00EDkv\u00E1g\u00E1s:"Strip cut","A r\xE9z megszak\xEDt\xE1sa k\xE9t lyuk k\xF6z\xF6tt, vagy egy lyuk kif\xFAr\xE1sa":"Break the copper between two holes, or drill out a hole",Jegyzet:"Note","Sz\xF6veges c\xE9dula a panelon":"A text note on the board",T\u00F6rl\u00E9s:"Delete","Kattint\xE1sra vagy h\xFAz\xE1ssal t\xF6r\xF6l":"Deletes on click or drag",Mozgat\u00E1s:"Pan","A n\xE9zet mozgat\xE1sa (Sz\xF3k\xF6z + h\xFAz\xE1s is)":"Move the view (or Space + drag)","Hely szerint":"By position","A kattint\xE1s helye d\xF6nt: lyuk k\xF6zep\xE9n furat, k\xE9t lyuk k\xF6z\xF6tt r\xE9s":"Where you click decides: a hole in the middle of a hole, a gap between two holes",Furat:"Hole","A lyuk kif\xFAr\xE1sa: a cs\xEDk ott megszakad":"Drill out the hole: the strip is broken there",R\u00E9s:"Gap","Szakad\xE1s k\xE9t lyuk k\xF6z\xF6tt: a cs\xEDk a k\xE9t lyuk k\xF6z\xF6tt megszakad":"A break between two holes: the strip is cut between them","{p} alkatr\xE9sz \xB7 {b} h\xEDd \xB7 {w} vezet\xE9k":"parts: {p} \xB7 bridges: {b} \xB7 wires: {w}","kif\xFArt lyuk (nincs r\xE9z)":"drilled hole (no copper)",cs\u00EDk:"strip",szekci\u00F3:"section",net:"net",lebeg:"floating","Lerak\xE1s: {x}":"Placing: {x}","Eszk\xF6z: {x}":"Tool: {x}","{n} elem":"{n} item||{n} items",vezet\u00E9k:"wire",h\u00EDd:"bridge",jegyzet:"note","Kijel\xF6lve: {x}":"Selected: {x}",k\u00E9k:"blue",piros:"red",fekete:"black",s\u00E1rga:"yellow",z\u00F6ld:"green",feh\u00E9r:"white",narancs:"orange",sz\u00FCrke:"gray",Forgat\u00E1s:"Rotate",T\u00FCkr\u00F6z\u00E9s:"Mirror",M\u00E1solat:"Copy","sor eltol\xE1s":"row offset",sor:"row","oszlop eltol\xE1s":"column offset",oszlop:"col","pl. GND,VCC,SDA,SCL":"e.g. GND,VCC,SDA,SCL","Pl. 4,7k \xB7 4k7 \xB7 100n \xB7 2.1 \u2014 \u2191/\u2193: {x}":"E.g. 4.7k \xB7 4k7 \xB7 100n \xB7 2.1 \u2014 \u2191/\u2193: {x}","E12-sor":"E12 series",l\u00E9ptet\u00E9s:"step","Nem \xE9rtelmezhet\u0151 \xE9rt\xE9k (pl. 4,7k \xB7 4k7 \xB7 100n)":"Not a valid value (e.g. 4.7k \xB7 4k7 \xB7 100n)","A k\xE9t l\xE1b nem lehet ugyanabban a lyukban":"The two pins cannot be in the same hole","Ennyire nem l\xF3ghat ki (legal\xE1bb egy l\xE1b a panelon, legfeljebb 8 lyuknyi t\xFAll\xF3g\xE1s)":"It cannot hang off this far (at least one pin on the board, at most 8 holes of overhang)",Jelenlegi:"Current","nincs kapcsolat":"no connection","L\xE1bak \xE9s bek\xF6t\xE9s":"Pins and wiring","{n} l\xE1b":"{n} pin||{n} pins","{n} lebeg":"{n} floating","a panelon k\xEDv\xFCl":"off the board",kapcsolat:"connection",bek\u00F6tve:"routed","nincs bek\xF6tve":"not routed",h\u00E1l\u00F3:"net","lebeg (sehova sincs k\xF6tve)":"floating (not connected anywhere)",N\u00E9v:"Name",orig\u00F3:"origin",t\u00FCkr\u00F6zve:"mirrored",Duplik\u00E1l\u00E1s:"Duplicate","\xDAj p\xE9ld\xE1ny ugyanezekkel a be\xE1ll\xEDt\xE1sokkal":"A new instance with the same settings","R\xF6ntgen (csak k\xF6rvonal \xE9s l\xE1bak)":"X-ray (outline and pins only)","Alkatr\xE9sz szerkeszt\xE9se":"Edit part","A be\xE9p\xEDtett le\xEDr\xE1sb\xF3l saj\xE1t, szerkeszthet\u0151 alkatr\xE9sz":"An editable custom part from the built-in description","M\xE1solat saj\xE1t alkatr\xE9szk\xE9nt":"Copy as a custom part","Az alkatr\xE9sz k\xE9zi bek\xF6t\xE9s\xE9t kapcsolatokk\xE1 alak\xEDtja, \xEDgy mozgat\xE1skor k\xF6veti":"Turns the part's manual wiring into connections, so it follows when moved","Bek\xF6t\xE9s automatikusra":"Make wiring automatic","Ennek az alkatr\xE9sznek nincs k\xE9zi bek\xF6t\xE9se":"This part has no manual wiring",Csere:"Swap","M\xE1sik vez\xE9rl\u0151re cser\xE9li; a kapcsolatok megmaradnak, a GPIO-k \xFAjra kioszt\xF3dnak":"Swaps to another controller; connections are kept, GPIOs are reassigned","Csatlakoz\xF3: {x} (t\xFCskesor a panelon)":"Connector: {x} (pin header on the board)","A k\xE1bel kih\xFAz\xE1sa: a t\xFCskesor a panelon marad, a l\xE1bak szabad k\xE1belk\xE9nt k\xF6thet\u0151k be":"Unplug the cable: the pin header stays on the board, the pins can be wired as a loose cable",Kih\u00FAz\u00E1s:"Unplug","T\xFCskesor a panelra a l\xE1bsz\xE1m\xE1val \xE9s l\xE1bneveivel; a k\xE1bel abba dugva, a bek\xF6t\xE9s onnan indul":"A pin header on the board with its pin count and names; the cable plugs into it and wiring starts from there","Csatlakoz\xF3 (t\xFCskesor) a panelra":"Connector (pin header) on the board","Nincs el\xE9g szabad hely a panelon a csatlakoz\xF3nak":"Not enough free space on the board for the connector","{x}: a csatlakoz\xF3 a panelon, a k\xE1bel bedugva. Mozgasd oda, ahov\xE1 forrasztan\xE1d.":"{x}: the connector is on the board, the cable is plugged in. Move it where you would solder it.","Ide csatlakozik: {x} ({y}). A l\xE1bak sorrendje a k\xE1bel\xE9.":"Plugged in here: {x} ({y}). The pin order follows the cable.",K\u00E1bel:"Cable","A k\xFCls\u0151 alkatr\xE9sz k\xE1bele ebbe a csatlakoz\xF3ba":"Plug the external part's cable into this connector",Bedug\u00E1s:"Plug in","Csatlakoz\xF3: k\xFCls\u0151 alkatr\xE9sz (motor, szerv\xF3, szenzor) k\xE1bele dughat\xF3 bele. A l\xE1bnevek a feliratokhoz val\xF3k.":"Connector: the cable of an external part (motor, servo, sensor) plugs into it. The pin names are for the labels.","Kapcsolatok: az A l\xE1b szabad GPIO-ra, a B l\xE1b a f\xF6ldre":"Connections: pin A to a free GPIO, pin B to ground","Kijel\xF6lve: {p} alkatr\xE9sz, {b} k\xE9zi h\xEDd, {w} vezet\xE9k":"Selected: parts {p}, manual bridges {b}, wires {w}","H\xFAz\xE1ssal egy\xFCtt mozognak. Shift+kattint\xE1s: hozz\xE1ad\xE1s/elv\xE9tel.":"They move together when dragged. Shift+click: add/remove.","R\xF6ntgen be/ki":"X-ray on/off","A kijel\xF6l\xE9snek nincs k\xE9zi bek\xF6t\xE9se":"The selection has no manual wiring","nem villamos elem":"not an electrical element","Jegyzet sz\xF6vege":"Note text","\xDAj sor: Enter. {x} sor f\xE9lk\xF6v\xE9r c\xEDmsor. M\xE9ret: h\xFAzd a jobb als\xF3 sark\xE1t, vagy add meg.":"New line: Enter. A {x} line is a bold heading. Size: drag the bottom-right corner, or enter it.",C\u00EDm:"Title",sz\u00E9less\u00E9g:"width",magass\u00E1g:"height","Szaggatott ny\xEDl a jegyzett\u0151l az alkatr\xE9szig; csak jel\xF6l\xE9s, nem kapcsolat":"A dashed arrow from the note to the part; only a marker, not a connection",Mutat:"Points to",semmire:"nothing","Kapcsolat innen: {x}":"Connection from: {x}","Kattints a c\xE9l l\xE1bra, vagy v\xE1lassz:":"Click the target pin, or choose:","szabad GPIO":"free GPIO","Kattints egy l\xE1bra, majd a c\xE9l l\xE1bra (vagy GND / szabad GPIO).":"Click a pin, then the target pin (or GND / free GPIO).","Lerak\xE1s: {x}{y}. Kattints a panelra; Shift+kattint\xE1ssal t\xF6bb p\xE9ld\xE1ny.":"Placing: {x}{y}. Click on the board; Shift+click for several.","({x} m\xE1solata)":"(copy of {x})","H\xFAzd az egeret szomsz\xE9dos lyukakon \xE1t: minden szekci\xF3hat\xE1rn\xE1l h\xEDd keletkezik.":"Drag across neighboring holes: a bridge is made at every section boundary.","Kattints a kezd\u0151, majd a c\xE9l lyukra.":"Click the start hole, then the target hole.","Kattints vagy h\xFAzz a t\xF6rlend\u0151 elemen.":"Click or drag over what to delete.","Kattints egy alkatr\xE9szre, vezet\xE9kre vagy h\xEDdra. Shift+kattint\xE1s vagy keret h\xFAz\xE1sa \xFCres helyen: t\xF6bb elem. Ctrl+A: minden.":"Click a part, wire or bridge. Shift+click or drag a box on an empty area: several items. Ctrl+A: everything.","\xC9rintsd meg a panelt, h\xFAzd a hely\xE9re, \xE9s engedd fel":"Touch the board, drag it into place, and let go",f\u00F6ld:"ground",t\u00E1pbemenet:"power input",t\u00E1p:"power","3,3 V":"3.3 V",jel:"signal","anal\xF3g jel":"analog signal",kimenet:"output",t\u00E1pkimenet:"power output","kapcsol\xF3 A":"switch A","kapcsol\xF3 B":"switch B",b\u00E1zis:"base",kollektor:"collector",emitter:"emitter",gate:"gate",drain:"drain",source:"source",an\u00F3d:"anode",kat\u00F3d:"cathode","an\xF3d +":"anode +","kat\xF3d \u2212":"cathode \u2212",tekercs:"coil",t\u00F6lt\u00E9s:"charge",ellen\u00E1ll\u00E1s:"resistor",kondenz\u00E1tor:"capacitor",\u00E1tk\u00F6t\u00E9s:"jumper",t\u00FCske:"pin","GND (f\xF6ld)":"GND (ground)",\u00C1ltal\u00E1nos:"General","szabad GPIO (az \xFAtvonalkeres\u0151 v\xE1laszt)":"free GPIO (the router picks)","{x} (foglalt: {y})":"{x} (used by: {y})","{x}: t\xE1p":"{x}: power","Ide nem tehet\u0151 v\xE1g\xE1s":"No cut can go here","Itt nincs mit elv\xE1gni (szekci\xF3hat\xE1r vagy a cs\xEDk v\xE9ge)":"Nothing to cut here (section boundary or the end of the strip)","\xCDrd ide a le\xEDr\xE1st\u2026":"Write the description here\u2026","Tov\xE1bb nem mozd\xEDthat\xF3 (panel sz\xE9le)":"Cannot move further (edge of the board)","A panel sz\xE9l\xE9n\xE9l tov\xE1bb nem mozd\xEDthat\xF3":"Cannot move past the edge of the board","Kijel\xF6l\u0151 keret: h\xFAzd az ujjad":"Selection box: drag your finger","\xCDgy lel\xF3gna a panelr\xF3l (legal\xE1bb egy l\xE1b a panelon, legfeljebb 8 lyuknyi t\xFAll\xF3g\xE1s)":"It would hang off the board (at least one pin on the board, at most 8 holes of overhang)","Egyszer\u0171 m\xF3d: a halad\xF3 r\xE9szek rejtve.":"Simple mode: advanced parts are hidden.","Egyszer\u0171 m\xF3d kikapcsolva.":"Simple mode turned off.","Szimul\xE1ci\xF3 elind\xEDtva.":"Simulation started.","Szimul\xE1ci\xF3 le\xE1ll\xEDtva.":"Simulation stopped.","Egym\xE1s alatt (kattintva: egym\xE1s mellett)":"One above the other (click: side by side)","Egym\xE1s mellett (kattintva: egym\xE1s alatt)":"Side by side (click: one above the other)","Nincs z\xE1rlat vagy bek\xF6t\xE9si hiba.":"No short circuit or wiring error.","t\xE1p van":"powered","nincs t\xE1p":"no power","Nincs vez\xE9rl\u0151 (Pico, ESP32) a panelon.":"No controller (Pico, ESP32) on the board.",Gomb:"Button",\u00C1llapot:"State",Olvas:"Reads",lenyomva:"pressed",fel:"up","Ind\xEDtsd a szimul\xE1ci\xF3t, \xE9s kattints a gombokra a panelon.":"Start the simulation and click the buttons on the board.",M\u00F3d:"Mode",Szint:"Level","{x} m\xF3d":"{x} mode",kit\u00F6lt\u00E9s:"duty","frekv.":"freq.","Lass\xFA PWM: a panelon val\xF3s id\u0151ben villog; a t\xE1bl\xE1zat az \xE1tlagot mutatja.":"Slow PWM: blinks in real time on the board; the table shows the average.","Gyors PWM: a szem az \xE1tlagot l\xE1tja, a szimul\xE1ci\xF3 is \xE1tlagol.":"Fast PWM: the eye sees the average, and the simulation averages too.",villog:"blinking",\u00E1tlagolva:"averaged",nyitva:"on",z\u00E1rva:"off",\u00C1ram:"Current",vil\u00E1g\u00EDt:"lit",s\u00F6t\u00E9t:"dark",akt\u00EDv:"active",tel\u00EDtve:"saturated","Kond.":"Cap.","Id\u0151\xE1lland\xF3: ennyi id\u0151 alatt t\xF6lt\u0151dik fel kb. 63%-ra, 5\u03C4 alatt teljesen":"Time constant: it charges to about 63% in this time, fully in 5\u03C4","nincs t\xF6lt\u0151\xFAt":"no charging path",Logika:"Logic",Bemenet:"Input",Kimenet:"Output",t\u00E1rol\u00F3k:"registers",Motor:"Motor",Fordulat:"Speed",\u00E1ll:"stopped",L\u00E9ptet\u0151:"Stepper",Tekercs:"Coils",L\u00E9p\u00E9s:"Step",Tengely:"Shaft",Szerv\u00F3:"Servo",Jel:"Signal",Sz\u00F6g:"Angle",t\u00F6lt\u0151dik:"charging",mer\u00FCl:"discharging","nincs terhel\xE9s":"no load",Vez\u00E9rl\u0151k:"Controls","Szimul\xE1ci\xF3 le\xE1ll\xEDt\xE1sa":"Stop simulation","Bet\xF6ltve: {x}. Az el\u0151z\u0151 terv visszavon\xE1ssal (Ctrl+Z) visszahozhat\xF3.":"Loaded: {x}. The previous design can be brought back with Undo (Ctrl+Z).","P\xE9ld\xE1k kateg\xF3ri\xE1i":"Example categories","\xD6sszes kateg\xF3ria":"All categories","Mit tanulsz:":"What you learn:","Nincs ilyen p\xE9lda.":"No such example.","\xDAtvonalkeres\xE9s: {ok}/{n} kapcsolat bek\xF6tve, {b} h\xEDd, {w} vezet\xE9k.":"Routing: {ok}/{n} connections routed, bridges: {b}, wires: {w}.","Az automatikus bek\xF6t\xE9s k\xE9ziv\xE9 r\xF6gz\xEDtve.":"The automatic wiring was made manual.","Nincs k\xE9zi bek\xF6t\xE9s, amit \xE1t lehetne alak\xEDtani":"There is no manual wiring to convert","Az automatikus hidak t\xF6r\xF6lve, az \xFAtvonaltervez\xE9s kikapcsolva.":"Automatic bridges deleted, routing turned off.","A Proofboard elt\xE1rolva: internet n\xE9lk\xFCl is m\u0171k\xF6dik.":"Proofboard is stored: it works without internet.","\xDAj terv. Az el\u0151z\u0151 visszavon\xE1ssal (Ctrl+Z) visszahozhat\xF3.":"New design. The previous one can be brought back with Undo (Ctrl+Z).","{n} hiba":"{n} error||{n} errors","{n} figyelmeztet\xE9s":"{n} warning||{n} warnings","{n} megjegyz\xE9s":"{n} note||{n} notes","Nincs probl\xE9ma":"No problems","Als\xF3 panel \xF6sszecsuk\xE1sa":"Collapse the bottom panel","A terv JSON-ja a mez\u0151ben.":"The design's JSON is in the field.","V\xE1g\xF3lapra m\xE1solva.":"Copied to the clipboard.","Kijel\xF6ltem a sz\xF6veget, m\xE1sold Ctrl+C-vel.":"The text is selected, copy it with Ctrl+C.","Bet\xF6ltve: {p} alkatr\xE9sz, {b} h\xEDd, {w} vezet\xE9k":"Loaded: parts {p}, bridges {b}, wires {w}","a tervvel {n} saj\xE1t alkatr\xE9sz j\xF6tt (a terv r\xE9sze, a k\xF6nyvt\xE1radat nem v\xE1ltoztatta)":"the design brought {n} custom parts (part of the design, your library was not changed)","a k\xF6nyvt\xE1radban m\xE1s azonos nev\u0171 alkatr\xE9sz van, ez\xE9rt a terv v\xE1ltozata \xFAj n\xE9ven: {x}":"your library has a different part with the same name, so the design's version got a new name: {x}","Hib\xE1s JSON: {x}":"Invalid JSON: {x}","Nem siker\xFClt bet\xF6lteni: {x}":"Could not load: {x}","{ok}/{n} bek\xF6tve":"{ok}/{n} routed",nincs:"none",k\u00E1bel:"cable","{n} h\xEDd":"{n} bridge||{n} bridges",k\u00E9zi:"manual","Kattints: kezd\u0151- \xE9s v\xE9gpont, \xFAtvonal kiemel\xE9se":"Click: highlight the start, end and route","Kapcsolat t\xF6rl\xE9se":"Delete connection",C\u00E9l:"Target","M\xE9g nincs kapcsolat.":"No connections yet.","{a} auto + {m} k\xE9zi":"{a} auto + {m} manual","{n} vezet\xE9k":"{n} wire||{n} wires","{n} v\xE1g\xE1s":"{n} cut||{n} cuts","\xD6sszesen: {x}":"Total: {x}","A soronk\xE9nti sz\xE1mok \xF6sszege {n}; a k\xF6z\xF6s szakaszok (pl. GND-t\xF6rzs) t\xF6bb kapcsolatn\xE1l is szerepelnek, de csak egyszer kell beforrasztani.":"The rows add up to {n}; shared sections (e.g. a GND trunk) appear in several connections but only need soldering once.","sorok \xF6sszege: {n} (k\xF6z\xF6s szakaszok)":"rows add up to {n} (shared sections)",c\u00E9l:"target",kezdet:"start","Esc: kiemel\xE9s v\xE9ge":"Esc: end highlight","A saj\xE1t k\xF6nyvt\xE1rba ker\xFClt: {x}":"Added to your library: {x}","Alkatr\xE9sz t\xF6r\xF6lve":"Part deleted","Kattints a panelra a lerak\xE1shoz":"Click on the board to place it","H\xE1tt\xE9rbe: {x}":"To background: {x}","H\xE1tt\xE9rbe (Esc): a nem mentett alkatr\xE9sz a f\xFCl\xE9n v\xE1r":"To background (Esc): the unsaved part waits on its tab","Bez\xE1r\xE1s: {x}":"Close: {x}","Bez\xE1r\xE1s (Esc)":"Close (Esc)","a piszkozat megmarad, az \xDAj alkatr\xE9sz folytatja":"the draft is kept, New part continues it","Az alkatr\xE9sz szerkeszt\xE9se":"Edit the part","Alkatr\xE9sz-szerkeszt\u0151: {x}":"Part editor: {x}","A nem mentett alkatr\xE9sz a f\xFCl\xE9n v\xE1r: kattints r\xE1 a folytat\xE1shoz.":"The unsaved part waits on its tab: click it to continue.","A saj\xE1t k\xF6nyvt\xE1rad m\xE9g \xFCres.":"Your library is still empty.","{n} alkatr\xE9sz export\xE1lva.":"{n} part exported.||{n} parts exported.","{n} alkatr\xE9sz bet\xF6ltve a saj\xE1t k\xF6nyvt\xE1rba":"{n} part loaded into your library||{n} parts loaded into your library","{n} hib\xE1s kihagyva ({x})":"{n} invalid skipped ({x})","10\xD720 cm, 1\xD73 szekci\xF3":"10\xD720 cm, 1\xD73 sections","10\xD716 cm cs\xEDkos (stripboard)":"10\xD716 cm stripboard","7\xD79 cm pontraszter":"7\xD79 cm dot board","5\xD77 cm pontraszter":"5\xD77 cm dot board","4\xD76 cm pontraszter":"4\xD76 cm dot board","teljes cs\xEDk":"full strip",pontraszter:"dot board","1\xD7{n} szekci\xF3":"1\xD7{n} sections",Egyedi:"Custom",Alapok:"Basics",Vez\u00E9rl\u0151:"Controller",F\u00E9lvezet\u0151:"Semiconductor",Passz\u00EDv:"Passive","Saj\xE1t alkatr\xE9sz":"Custom part",Modul:"Module",kezd\u0151:"beginner",halad\u00F3:"advanced","be, felh\xFAzva":"in, pull-up","be, leh\xFAzva":"in, pull-down","be, lebeg\u0151":"in, floating","anal\xF3g (ADC)":"analog (ADC)","ki: 1":"out: 1","ki: 0":"out: 0","ki: PWM":"out: PWM","Sz\u0171r\xE9s c\xEDmk\xE9re":"Filter by tag","Sz\u0171r\xE9s:":"Filter:","Sz\u0171r\u0151k t\xF6rl\xE9se":"Clear filters","Tal\xE1latok minden kateg\xF3ri\xE1ban: {n}":"Results in all categories: {n}",program:"program","Szimul\xE1ci\xF3 fut":"Simulation running","Szimul\xE1ci\xF3 \xE1ll":"Simulation stopped","+ Blokk":"+ Block","A kijel\xF6lt blokk vagy \xE9l t\xF6rl\xE9se (Delete)":"Delete the selected block or edge (Delete)","Az eg\xE9sz program l\xE1tsz\xF3djon":"Show the whole program",Mind:"All","Teljes k\xE9perny\u0151":"Full screen","Teljes k\xE9perny\u0151 (Esc: vissza)":"Full screen (Esc: back)",Programv\u00E1szon:"Program canvas","M\xE9g nincs program. A {x} men\xFCb\u0151l rakj le egy bemenetet (pl. gomb) \xE9s egy kimenetet (pl. LED), majd h\xFAzz \xE9lt a kimeneti pontj\xE1t\xF3l a bemeneti pontig.":"No program yet. From the {x} menu place an input (e.g. a button) and an output (e.g. an LED), then drag an edge from the output point to the input point.","nincs l\xE1b kiv\xE1lasztva":"no pin selected","(nincs GPIO-n)":"(not on a GPIO)","ismeretlen l\xE1b":"unknown pin",Sablon:"Template","\xDCtemad\xF3 \u2192 Sorozat (f\xE9ll\xE9ptet\xE9s) \u2192 4 digit\xE1lis kimenet; ha van ULN2003, az IN1\u2013IN4 l\xE1baira":"Clock \u2192 Sequence (half-step) \u2192 4 digital outputs; to the IN1\u2013IN4 pins if there is a ULN2003",L\u00E9ptet\u0151motor:"Stepper motor","v\xE1lassz l\xE1bat":"choose a pin","Blokk t\xF6rl\xE9se":"Delete block",Le\u00E1ll\u00EDt\u00E1s:"Stop",Futtat\u00E1s:"Run","Vissza (Esc)":"Back (Esc)","Kil\xE9p\xE9s a teljes k\xE9perny\u0151b\u0151l":"Exit full screen","M\xE9g nincs bejegyz\xE9s. Ide ker\xFCl a bet\xF6lt\xE9s, a ment\xE9s, az \xFAtvonalkeres\xE9s \xE9s a szimul\xE1ci\xF3 ind\xEDt\xE1sa.":"No entries yet. Loading, saving, routing and starting the simulation are logged here.",Programnyelv:"Programming language","platformio.ini \xE9s src/main.cpp egy zip-ben (VS Code + PlatformIO)":"platformio.ini and src/main.cpp in a zip (VS Code + PlatformIO)","PlatformIO-projekt":"PlatformIO project","Gener\xE1lt k\xF3d":"Generated code","Let\xF6lt\xE9s ({x})":"Download ({x})","M\xE9g nincs program. A Blokkok f\xFCl\xF6n rakd \xF6ssze, \xE9s itt megjelenik a k\xF3dja.":"No program yet. Build it from blocks and its code appears here.","Felt\xF6lt\xE9s: Thonny-val nyisd meg, \xE9s mentsd a lapra {x} n\xE9ven (vagy {y}). A lapon MicroPython-firmware kell.":"Upload: open it in Thonny and save it to the board as {x} (or {y}). The board needs MicroPython firmware.",lap:"board","az alaplapkezel\u0151h\xF6z add hozz\xE1: {x}":"add to the Boards Manager: {x}","v\xE1laszd ki a lapot":"select the board","Halad\xF3knak: PlatformIO-projekt zip-ben.":"For advanced users: a PlatformIO project in a zip.",M\u00E1solva:"Copied","Nem siker\xFClt":"Failed","Alkatr\xE9szek lerak\xE1sa \xE9s bek\xF6t\xE9se":"Placing and wiring parts","A panel \xE9s a program egym\xE1s mellett, jobbra a k\xF3d":"The board and the program side by side, the code on the right","Vez\xE9rl\u0151k \xE9s GPIO-k; a szimul\xE1ci\xF3 ind\xEDt\xE1sakor erre v\xE1lt":"Controls and GPIOs; switches here when the simulation starts","Kedvenc (kattint\xE1sra kiveszi)":"Favorite (click to remove)",Kedvencekhez:"Add to favorites","{x} kedvenc":"{x} favorite","Hozz\xE1ad\xE1s a saj\xE1t k\xF6nyvt\xE1rhoz (m\xE1s tervekben is el\xE9rhet\u0151 lesz)":"Add to your library (available in other designs too)","{x} a k\xF6nyvt\xE1rba":"{x} to the library",Szerkeszt\u00E9s:"Edit","{x} szerkeszt\xE9se":"Edit {x}",Kedvencek:"Favorites","Legut\xF3bb haszn\xE1lt":"Recently used","A megnyitott terv saj\xE1t alkatr\xE9szei, amelyek nincsenek a k\xF6nyvt\xE1radban. \uFF0B: hozz\xE1ad\xE1s a saj\xE1t k\xF6nyvt\xE1rhoz.":"Custom parts of the open design that are not in your library. \uFF0B: add to your library.","Saj\xE1t k\xF6nyvt\xE1r":"Your library","Nincs tal\xE1lat.":"No results.",L\u00E1b:"Pin","f\xE9ll\xE9ptet\xE9s (8 l\xE9p\xE9s)":"half step (8 steps)","teljes l\xE9p\xE9s, k\xE9t tekercs (4)":"full step, two coils (4)","egy tekercs (4)":"one coil (4)","bin\xE1ris sz\xE1ml\xE1l\xF3 (16)":"binary counter (16)","saj\xE1t minta":"custom pattern","Ut\xE1nfut\xE1s (ki k\xE9sleltetve)":"Off delay (stays on)","Bekapcsol\xE1si k\xE9sleltet\xE9s":"On delay",Impulzus:"Pulse","Sz\u0171r\xE9s (mindk\xE9t v\xE1ltoz\xE1s)":"Filter (both changes)",Id\u0151:"Time","Digit\xE1lis bemenet":"Digital input","Egy l\xE1b szintje (pl. nyom\xF3gomb). Felh\xFAz\xE1ssal a lenyomott gomb alacsony szintet ad, ez\xE9rt az \u201Eakt\xEDv\u201D alapb\xF3l az alacsony.":"The level of a pin (e.g. a push button). With a pull-up the pressed button reads low, so \u201Cactive\u201D is low by default.",Felh\u00FAz\u00E1s:"Pull","fel (3,3 V)":"up (3.3 V)","le (GND)":"down (GND)",Akt\u00EDv:"Active","alacsony szinten":"when low","magas szinten":"when high","Anal\xF3g bemenet":"Analog input","Egy ADC-k\xE9pes l\xE1b fesz\xFClts\xE9ge 0\u20261 k\xF6z\xF6tt (0 V \u2192 0, 3,3 V \u2192 1), pl. potm\xE9ter vagy joystick.":"The voltage of an ADC-capable pin as 0\u20261 (0 V \u2192 0, 3.3 V \u2192 1), e.g. a potentiometer or joystick.",\u00E9rt\u00E9k:"value",\u00C1lland\u00F3:"Constant","R\xF6gz\xEDtett sz\xE1m (0\u20261 k\xF6z\xF6tt PWM-kit\xF6lt\xE9shez, vagy \xF6sszehasonl\xEDt\xE1shoz).":"A fixed number (0\u20261 for PWM duty, or for comparison).",\u00C9rt\u00E9k:"Value",NEM:"NOT","Megford\xEDtja a jelet.":"Inverts the signal.",be:"in",ki:"out",\u00C9S:"AND","Akkor igaz, ha mindk\xE9t bemenet igaz.":"True when both inputs are true.",A:"A",B:"B",C:"C",D:"D",VAGY:"OR","Akkor igaz, ha legal\xE1bb az egyik bemenet igaz.":"True when at least one input is true.","KIZ\xC1R\xD3 VAGY":"XOR","Akkor igaz, ha pontosan az egyik bemenet igaz.":"True when exactly one input is true.",\u00D6sszehasonl\u00EDt\u00E1s:"Compare","Igaz, ha a bemenet nagyobb (vagy kisebb) a hat\xE1rn\xE1l, pl. \u201Ea potm\xE9ter f\xE9ln\xE9l tov\xE1bb van tekerve\u201D.":"True when the input is above (or below) the threshold, e.g. \u201Cthe potentiometer is turned past halfway\u201D.",igaz:"true",Felt\u00E9tel:"Condition","nagyobb, mint":"greater than","kisebb, mint":"less than",Hat\u00E1r:"Threshold",\u00DCtemad\u00F3:"Clock","N\xE9gysz\xF6gjel: peri\xF3dusonk\xE9nt a kit\xF6lt\xE9s ar\xE1ny\xE1ban igaz (villog\xF3 LED).":"Square wave: true for the duty share of each period (blinking LED).",Peri\u00F3dus:"Period",Kit\u00F6lt\u00E9s:"Duty",V\u00E1lt\u00F3kapcsol\u00F3:"Toggle","Minden felfut\xF3 \xE9lre (pl. gombnyom\xE1sra) \xE1tv\xE1lt: be, ki, be\u2026":"Flips on every rising edge (e.g. a button press): on, off, on\u2026",v\u00E1lt\u00E1s:"toggle",\u00E1llapot:"state",Sz\u00E1ml\u00E1l\u00F3:"Counter","Felfut\xF3 \xE9lenk\xE9nt eggyel n\u0151, a hat\xE1rn\xE1l el\xF6lr\u0151l kezdi; a t\xF6rl\xE9s lenull\xE1zza. Az \u201Ear\xE1ny\u201D 0\u20261 k\xF6z\xF6tt (PWM-hez).":"Adds one on every rising edge and starts over at the limit; reset sets it to zero. \u201CRatio\u201D is 0\u20261 (for PWM).",sz\u00E1mol:"count",t\u00F6rl\u00E9s:"reset",ar\u00E1ny:"ratio",L\u00E9p\u00E9ssz\u00E1m:"Steps",Id\u0151z\u00EDt\u0151:"Timer","K\xE9sleltet\xE9s vagy ut\xE1nfut\xE1s a megadott id\u0151vel. Ut\xE1nfut\xE1s: azonnal bekapcsol, \xE9s a bemenet megsz\u0171n\xE9se ut\xE1n m\xE9g ennyi ideig igaz (l\xE9pcs\u0151h\xE1zi vil\xE1g\xEDt\xE1s). Bekapcsol\xE1si k\xE9sleltet\xE9s: csak akkor kapcsol be, ha a bemenet ennyi ideig folyamatosan igaz. Impulzus: felfut\xF3 \xE9lre ennyi ideig igaz. Sz\u0171r\xE9s: mindk\xE9t v\xE1ltoz\xE1st csak akkor adja tov\xE1bb, ha ennyi ideig tart (perg\xE9smentes\xEDt\xE9s).":"Delay or hold for the given time. Off delay: turns on at once and stays true this long after the input ends (staircase light). On delay: turns on only when the input has been true for this long. Pulse: true for this long on a rising edge. Filter: passes on both changes only if they last this long (debouncing).",M\u0171k\u00F6d\u00E9s:"Mode",Sorozat:"Sequence","Minden felfut\xF3 \xE9lre (pl. \xFCtemad\xF3t\xF3l) a minta k\xF6vetkez\u0151 sora ker\xFCl az A\u2013D kimenetekre: l\xE9ptet\u0151motor tekercsei, fut\xF3f\xE9ny, sz\xE1ml\xE1l\xF3. A \u201Evissza\u201D bemenet (vagy az ir\xE1ny) visszafel\xE9 l\xE9ptet.":"On every rising edge (e.g. from a clock) the next row of the pattern goes to outputs A\u2013D: stepper coils, chaser lights, counter. The \u201Cback\u201D input (or the direction) steps backwards.",l\u00E9p\u00E9s:"step",vissza:"back",Minta:"Pattern","Saj\xE1t minta (sorok sz\xF3k\xF6zzel)":"Custom pattern (rows separated by spaces)",Ir\u00E1ny:"Direction",el\u0151re:"forward","Digit\xE1lis kimenet":"Digital output","Igaz \u2192 a l\xE1b magas (3,3 V), hamis \u2192 alacsony (pl. LED, rel\xE9, MOSFET kapuja).":"True \u2192 the pin is high (3.3 V), false \u2192 low (e.g. LED, relay, MOSFET gate).","PWM kimenet":"PWM output","Kit\xF6lt\xE9s: LED f\xE9nyereje, motor fordulatsz\xE1ma. Ha a bemenet nincs bek\xF6tve, a be\xE1ll\xEDtott kit\xF6lt\xE9s \xE9rv\xE9nyes; bek\xF6tve a bemenet (0\u20261) adja, pl. \xC1lland\xF3 0,3 = 30 % vagy potm\xE9ter. Logikai jel (pl. \xDCtemad\xF3) 0 % vagy 100 %. Szerv\xF3hoz 50 Hz \xE9s 2,5\u202612,5 %.":"Duty: LED brightness, motor speed. If the input is not connected, the set duty applies; when connected, the input (0\u20261) sets it, e.g. Constant 0.3 = 30 % or a potentiometer. A logic signal (e.g. Clock) is 0 % or 100 %. For a servo, 50 Hz and 2.5\u202612.5 %.","Kit\xF6lt\xE9s (bemenet n\xE9lk\xFCl)":"Duty (without input)",Frekvencia:"Frequency","jel / adat":"signal / data","f\xF6ld (GND)":"ground (GND)","an\xF3d / +":"anode / +","kat\xF3d / \u2212":"cathode / \u2212",\u00E1ltal\u00E1nos:"general","GPIO (vez\xE9rl\u0151lap)":"GPIO (controller board)","3,3 V kimenet":"3.3 V output","t\xE1p (VSYS, 5V\u2026)":"power (VSYS, 5V\u2026)","egy\xE9b (RUN, EN\u2026)":"other (RUN, EN\u2026)","adc, adc2, in (csak bemenet), nopull, strap, uart0, led, valamint buszfunkci\xF3k: i2c0.sda, spi1.mosi, uart0.tx, pwm3.a\u2026":"adc, adc2, in (input only), nopull, strap, uart0, led, and bus functions: i2c0.sda, spi1.mosi, uart0.tx, pwm3.a\u2026","{n} l\xE1b egy sorban":"{n} pins in a row","k\xFCls\u0151 \xB7 {n} kivezet\xE9s":"external \xB7 {n} lead||external \xB7 {n} leads",n\u00E9v:"name",el\u0151tag:"prefix",kateg\u00F3ria:"category",szerel\u00E9s:"mounting","l\xE1bak (kifejez\xE9sek, ism\xE9tl\xE9s vagy extra mez\u0151k)":"pins (expressions, repeats or extra fields)",l\u00E1bcsoportok:"pin groups",param\u00E9terek:"parameters",l\u00E1bt\u00E1bla:"pin table","a test m\xE9rete":"the body size","saj\xE1t rajzelemek":"custom drawing elements",l\u00E1bfeliratok:"pin labels","a villamos modell r\xE9szletei":"details of the electrical model",vez\u00E9rl\u0151k:"controls",l\u00E1bak:"pins","\xDAj modul":"New module","Villamos modell":"Electrical model","(m\xE1solat)":"(copy)","Alkatr\xE9sz: {x}":"Part: {x}",\u00FAj:"new","jav\xEDtsd, miel\u0151tt az \u0171rlapra v\xE1ltasz.":"fix it before switching to the form.","Az \u0171rlapon legal\xE1bb egy, fix hely\u0171 l\xE1b kell (sz\xE1mmal megadott sor \xE9s oszlop).":"The form needs at least one pin at a fixed place (row and column given as numbers).","Nincs le\xEDr\xE1s.":"No description.","Adj hozz\xE1 l\xE1bakat: kattints az el\u0151n\xE9zetre, vagy haszn\xE1ld a l\xE1bsor-gener\xE1tort.":"Add pins: click on the preview, or use the pin row generator.",Alapadatok:"Basics",L\u00E1bak:"Pins","nincs l\xE1bhoz k\xF6tve.":"not connected to a pin.","A logik\xE1hoz kell egy t\xE1pbemenet szerep\u0171 l\xE1b.":"The logic needs a pin with the power input role.","A logik\xE1hoz kell egy f\xF6ld (GND) szerep\u0171 l\xE1b.":"The logic needs a pin with the ground (GND) role.",T\u00E1rol\u00F3:"Register","az \xE9rt\xE9k bemenete nincs bek\xF6tve.":"the value input is not connected.",Nyom\u00F3gomb:"Push button",Megjelen\u00E9s:"Appearance",El\u0151n\u00E9zet:"Preview","Az alkatr\xE9sz adatai":"Part data","Az alkatr\xE9sz probl\xE9m\xE1i":"Problems of the part","Szerkeszt\xE9si m\xF3d":"Editing mode","L\xE1bak: hely, n\xE9v, szerep, csoport, funkci\xF3":"Pins: position, name, role, group, function","M\u0171k\xF6d\xE9s: villamos modell, digit\xE1lis logika, vez\xE9rl\u0151 a szimul\xE1ci\xF3ban":"Behavior: electrical model, digital logic, control in the simulation","A le\xEDr\xE1s teljes JSON-form\xE1ja":"The full JSON form of the description",Elvet\u00E9s:"Discard","Elvet\xE9s: a nem mentett m\xF3dos\xEDt\xE1sok eldob\xE1sa, vissza a kiindul\xF3 \xE1llapotra":"Discard: drop the unsaved changes and go back to the starting state",Ment\u00E9s:"Save","Ment\xE9s a saj\xE1t k\xF6nyvt\xE1rba (Ctrl+S)":"Save to your library (Ctrl+S)","Ment\xE9s a saj\xE1t k\xF6nyvt\xE1rba, \xE9s a lerak\xE1s ind\xEDt\xE1sa a panelon (Ctrl+S)":"Save to your library and start placing it on the board (Ctrl+S)","saj\xE1t alkatr\xE9sz":"custom part","\xFAj, m\xE1solatb\xF3l":"new, from a copy","\xFAj alkatr\xE9sz":"new part","nem mentett m\xF3dos\xEDt\xE1sok":"unsaved changes","JSON-n\xE9zetben az alapadatok a le\xEDr\xE1sban szerkeszthet\u0151k.":"In JSON view the basics are edited in the description.","JSON-n\xE9zetben a megjelen\xE9s a le\xEDr\xE1sban szerkeszthet\u0151.":"In JSON view the appearance is edited in the description.","Az alkatr\xE9sz t\xF6rl\xE9se a saj\xE1t k\xF6nyvt\xE1rb\xF3l":"Delete the part from your library","Alkatr\xE9sz t\xF6rl\xE9se":"Delete part","A tervben m\xE1r lerakott p\xE9ld\xE1nyok megmaradnak (a terv saj\xE1t le\xEDr\xE1s\xE1val).":"Instances already placed in the design are kept (with the design's own description).","A le\xEDr\xE1s rendben, menthet\u0151.":"The description is fine and can be saved.",csoport:"group","Az azonos csoport\xFA l\xE1bak gy\xE1rilag \xF6ssze vannak k\xF6tve":"Pins in the same group are connected internally","pl. 3-5.5":"e.g. 3-5.5","Csak t\xE1pbemenetn\xE9l (vin) adhat\xF3 meg":"Only for a power input (vin)","t\xE1pfesz\xFClts\xE9g-tartom\xE1ny":"supply voltage range","pl. adc i2c0.sda":"e.g. adc i2c0.sda",k\u00E9pess\u00E9gek:"capabilities",buszfunkci\u00F3:"bus function","A buszfunkci\xF3, amire a l\xE1b v\xE1r":"The bus function the pin expects",El\u0151tag:"Prefix","A p\xE9ld\xE1nyok neve: el\u0151tag + sorsz\xE1m, pl. U1, LCD1":"Instance names: prefix + number, e.g. U1, LCD1",Kateg\u00F3ria:"Category","A panel mell\xE9 ker\xFCl; a l\xE1baihoz k\xE1bel (vezet\xE9k) k\xF6t be":"Goes next to the board; a cable (wire) connects its pins","K\xFCls\u0151 alkatr\xE9sz (k\xE1bellel bek\xF6tve)":"External part (connected by cable)",Marg\u00F3:"Margin",Kiterjeszt\u00E9s:"Extension",fent:"top",lent:"bottom",balra:"left",jobbra:"right","A test m\xE9rete a l\xE1bakon t\xFAl, lyukban (pl. egy kijelz\u0151panel nagyobb a l\xE1bsor\xE1n\xE1l).":"The body size beyond the pins, in holes (e.g. a display board is larger than its pin row).","Felirat a testen":"Text on the body","pl. TP4056":"e.g. TP4056",L\u00E1bnevek:"Pin names","a l\xE1bak alatt":"below the pins","a l\xE1bak felett":"above the pins","befel\xE9 (a test k\xF6zepe fel\xE9)":"inward (toward the body center)","kifel\xE9 (a test sz\xE9l\xE9n t\xFAl)":"outward (beyond the body edge)",nincsenek:"none","P\xE9ld\xE1nyn\xE9v ki\xEDr\xE1sa (pl. U1)":"Show the instance name (e.g. U1)","L\xE1bsor:":"Pin row:",l\u00E1bsz\u00E1m:"pin count","db,":"pcs,",ir\u00E1ny:"direction",v\u00EDzszintes:"horizontal",f\u00FCgg\u0151leges:"vertical","innen:":"from:","kezd\u0151 sor":"start row","kezd\u0151 oszlop":"start column","nevek vessz\u0151vel, pl. RST,CE,DC,DIN,CLK,VCC,BL,GND":"names separated by commas, e.g. RST,CE,DC,DIN,CLK,VCC,BL,GND","L\xE1bsor hozz\xE1ad\xE1sa":"Add pin row","A szerepet a n\xE9vb\u0151l tippeli (GND, VCC, VIN\u2026), ut\xE1na a t\xE1bl\xE1zatban \xE1ll\xEDthat\xF3.":"The role is guessed from the name (GND, VCC, VIN\u2026), then it can be set in the table.","Minden oszlop l\xE1tszik.":"All columns are shown.","A kijel\xF6lt l\xE1b tov\xE1bbi adatai (csoport, funkci\xF3, t\xE1p) a sora alatt.":"More data of the selected pin (group, function, supply) below its row.","Minden oszlop":"All columns","Azon.":"ID",Sor:"Row","Oszl.":"Col.",Szerep:"Role",Csoport:"Group","T\xE1pbemenetn\xE9l a megengedett fesz\xFClts\xE9g, pl. 2.7-3.6":"For a power input, the allowed voltage, e.g. 2.7-3.6","T\xE1p (V)":"Supply (V)","GPIO-n\xE1l a k\xE9pess\xE9gek ({x}); perif\xE9ri\xE1n\xE1l a buszfunkci\xF3, amire a l\xE1b v\xE1r":"For a GPIO, its capabilities ({x}); for a peripheral, the bus function the pin expects",Funkci\u00F3:"Function",azonos\u00EDt\u00F3:"ID",szerep:"role","L\xE1b t\xF6rl\xE9se":"Delete pin","Az els\u0151 l\xE1b lesz a lerak\xE1si pont (0:0); ment\xE9skor a t\xF6bbi ehhez igazodik.":"The first pin becomes the placement point (0:0); on saving the others are aligned to it.","Az \u0171rlap ezeket nem tudja megjelen\xEDteni:":"The form cannot show these:","Ha m\xE9gis \xE1tv\xE1ltasz, ezek elvesznek.":"If you switch anyway, they are lost.","V\xE1lt\xE1s az \u0171rlapra (elhagyja \u0151ket)":"Switch to the form (drops them)","Maradok a JSON-n\xE1l":"Stay in JSON","A le\xEDr\xE1s teljes JSON-form\xE1ja; az \u0171rlapon be\xE1ll\xEDtottak itt is megjelennek, \xE9s az itteni m\xF3dos\xEDt\xE1sok az \u0171rlapra v\xE1lt\xE1skor visszaker\xFClnek. Ha a le\xEDr\xE1s olyat tartalmaz, amit az \u0171rlap nem tud (kifejez\xE9sek, param\xE9terek, saj\xE1t rajzelemek), a v\xE1lt\xE1s el\u0151tt sz\xF3l. A mez\u0151k le\xEDr\xE1sa: {x}.":"The full JSON form of the description; what you set on the form appears here, and changes made here go back when you switch to the form. If the description has something the form cannot handle (expressions, parameters, custom drawing elements), you are told before switching. The fields are described in {x}.","Le\xEDr\xE1s JSON":"Description JSON","JSON alkalmaz\xE1sa":"Apply JSON","Kiindul\xE1s be\xE9p\xEDtettb\u0151l:":"Start from a built-in:","be\xE9p\xEDtett alkatr\xE9sz":"built-in part","El\u0151bb adj l\xE1bakat az alkatr\xE9szhez a L\xE1bak f\xFCl\xF6n.":"First add pins to the part on the Pins tab.",Kapcsol\u00E1s:"Circuit",Igazs\u00E1gt\u00E1bla:"Truth table","Logika n\xE9zete":"Logic view","T\xE1rol\xF3s (sorrendi) logik\xE1n\xE1l a t\xE1bl\xE1zat a t\xE1rol\xF3k pillanatnyi \xE9rt\xE9k\xE9t is bemenetnek veszi.":"With registers (sequential logic) the table also takes the registers' current value as an input.","Legfeljebb {max} bemenet f\xE9r a t\xE1bl\xE1zatba (most {n}); enn\xE9l t\xF6bbn\xE9l a Kapcsol\xE1s n\xE9zetet haszn\xE1ld.":"At most {max} inputs fit in the table (now {n}); for more, use the Circuit view.","Itt az enged\xE9lyez\xE9s 0: a kimenet nem hajt":"Enable is 0 here: the output does not drive","Kattints egy kimeneti cell\xE1ra: 0 \u2194 1. A kimenet el\u0151tti kapuk a t\xE1bl\xE1zatb\xF3l a legr\xF6videbb alakban (az \xC9S-ek VAGY-a) \xFAjra\xE9p\xFClnek; a {z} sorokban az enged\xE9lyez\xE9s 0, ott mindegy.":"Click an output cell: 0 \u2194 1. The gates before the output are rebuilt from the table in the shortest form (an OR of ANDs); in {z} rows enable is 0, so it does not matter.","A kijel\xF6lt elem vagy kimenet l\xE1bai kiemelve. Kattints egy l\xE1bra: a L\xE1bak f\xFCl\xF6n kijel\xF6li.":"The pins of the selected element or output are highlighted. Click a pin: it is selected on the Pins tab.","Kattints egy \xFCres lyukra: \xFAj l\xE1b oda. Kattints egy l\xE1bra: kijel\xF6l\xE9s a t\xE1bl\xE1zatban; h\xFAzva \xE1thelyezhet\u0151. A szaggatott keret a lerak\xE1si pont.":"Click an empty hole: a new pin there. Click a pin: selects it in the table; drag to move it. The dashed frame is the placement point.","JSON-n\xE9zetben az el\u0151n\xE9zet csak a l\xE1bakat mutatja (alap\xE9rt\xE9kekkel).":"In JSON view the preview shows only the pins (with default values).","Biztos? Kattints \xFAjra":"Sure? Click again","Biztos? {n} p\xE9ld\xE1ny is t\xF6rl\u0151dik":"Sure? {n} instance is deleted too||Sure? {n} instances are deleted too",Kapu:"Gate","Villamos elem":"Electrical element","Az alkatr\xE9sz egy l\xE1ba: logikai bemenet, \xE9s ide k\xF6tnek a villamos elemek is":"A pin of the part: a logic input, and electrical elements connect here too","Kimenet (l\xE1b)":"Output (pin)","Logikai kimenet: az ide k\xF6t\xF6tt jel hajtja a l\xE1bat":"Logic output: the signal connected here drives the pin",Kapuk:"Gates","{x} kapu":"{x} gate",Egy\u00E9b:"Other","Az \xF3rajel \xE9l\xE9n felveszi a D \xE9rt\xE9k\xE9t, egy\xE9bk\xE9nt megtartja":"Takes the value of D on the clock edge, otherwise holds it","\xC1lland\xF3 0":"Constant 0","Mindig 0":"Always 0","\xC1lland\xF3 1":"Constant 1","Mindig 1":"Always 1","Villamos elemek":"Electrical elements","Kivezet\xE9sei l\xE1bakhoz k\xF6thet\u0151k":"Its leads connect to pins","Szimul\xE1ci\xF3ban lenyomva a k\xE9t l\xE1b\xE1t \xF6sszek\xF6ti":"In the simulation, pressing it connects its two pins","lefut\xF3 \xE9l":"falling edge","felfut\xF3 \xE9l":"rising edge","nem k\xF6telez\u0151":"optional",Ki:"Out","azon.":"ID","Bemenetek sz\xE1ma":"Number of inputs","Erre a n\xE9vre a kifejez\xE9sek is hivatkozhatnak":"Expressions can refer to this name",\u00D3rajel:"Clock","A {r} (0-ra) \xE9s a {s} (1-re) bemenet nem k\xF6telez\u0151; 1 szintn\xE9l azonnal hat.":"The {r} (to 0) and {s} (to 1) inputs are optional; they act at once at level 1.",be\u00E1ll\u00EDt\u00E1s:"set",Elem:"Element","ESP32-szer\u0171 lap: a buszfunkci\xF3 b\xE1rmely GPIO-ra kioszthat\xF3; a k\xE9pess\xE9gek ekkor az alap\xE9rtelmezett l\xE1bak":"ESP32-like board: a bus function can be assigned to any GPIO; the capabilities are then the default pins","szabadon kioszthat\xF3 buszok":"freely assignable buses","A kivezet\xE9seit egy-egy {x} elemhez k\xF6sd (a l\xE1b kimeneti pontj\xE1t\xF3l h\xFAzva).":"Connect each lead to a {x} element (dragging from the pin's output point).","Szimul\xE1ci\xF3 k\xF6zben a gombot lenyomva a k\xE9t l\xE1b\xE1t \xF6sszek\xF6ti. Mindk\xE9t kivezet\xE9s\xE9t egy-egy {x} elemhez k\xF6sd.":"During the simulation, pressing the button connects its two pins. Connect both leads to a {x} element each.","Push-pull: 1-n\xE9l a t\xE1p fel\xE9, 0-n\xE1l a f\xF6ld fel\xE9 hajt. Nyitott drain: csak a f\xF6ld fel\xE9 (felh\xFAz\xF3 ellen\xE1ll\xE1s kell).":"Push-pull: drives toward the supply at 1, toward ground at 0. Open drain: only toward ground (needs a pull-up resistor).","nyitott drain":"open drain","\xC9rt\xE9k kifejez\xE9ssel":"Value as an expression","pl. !(A & B)":"e.g. !(A & B)","Jelek: ! NEM, & \xC9S, | VAGY, ^ KIZ\xC1R\xD3 VAGY, z\xE1r\xF3jel, 0/1. Enterre a diagram ebb\u0151l \xFAjra\xE9p\xFCl.":"Symbols: ! NOT, & AND, | OR, ^ XOR, parentheses, 0/1. On Enter the diagram is rebuilt from it.",Enged\u00E9lyez\u00E9s:"Enable","\xFCres = mindig hajt; pl. !OE":"empty = always drives; e.g. !OE","A kifejez\xE9st \xE1t\xEDrva (Enter) a kimenet el\u0151tti kapuk ebb\u0151l \xFAjra\xE9p\xFClnek.":"Editing the expression (Enter) rebuilds the gates before the output from it.","Elem t\xF6rl\xE9se":"Delete element","Bels\u0151 kapcsol\xE1s":"Internal circuit","+ Elem":"+ Element","A kijel\xF6lt elem vagy \xE9l t\xF6rl\xE9se (Delete)":"Delete the selected element or edge (Delete)","Az eg\xE9sz kapcsol\xE1s l\xE1tsz\xF3djon":"Show the whole circuit","Bels\u0151 kapcsol\xE1s v\xE1szna":"Internal circuit canvas","\xDCres. A {x} men\xFCb\u0151l rakj le bemenetet, kaput \xE9s kimenetet, majd h\xFAzz \xE9lt a kimeneti pontj\xE1t\xF3l a bemeneti pontig.":"Empty. From the {x} menu place an input, a gate and an output, then drag an edge from the output point to the input point.",Ellen\u00E1ll\u00E1s:"Resistor","1. v\xE9g":"end 1","2. v\xE9g":"end 2",Di\u00F3da:"Diode","Nyit\xF3fesz.":"Forward V",Fesz\u00FClts\u00E9gforr\u00E1s:"Voltage source",Fesz\u00FClts\u00E9g:"Voltage","N-MOSFET":"N-MOSFET",K\u00FCsz\u00F6b:"Threshold","Nyitott ell.":"On resistance",Kondenz\u00E1tor:"Capacitor","1. v\xE9g (+)":"end 1 (+)",Kapacit\u00E1s:"Capacitance","N\xE9vleges fesz.":"Rated voltage","DC motor":"DC motor","\xDCzemi ell.":"Operating resistance","NPN tranzisztor":"NPN transistor","Er\u0151s\xEDt\xE9s (\u03B2)":"Gain (\u03B2)","Vez\xE9rl\u0151lap (MCU)":"Controller board (MCU)",GND:"GND","t\xE1p be":"power in","USB 5V (ha van)":"USB 5V (if any)","Stab. min.":"Reg. min.","T\xE1p max.":"Supply max.","GPIO max.":"GPIO max.","NEM-\xC9S":"NAND","NEM-VAGY":"NOR",ER\u0150S\u00CDT\u0150:"BUFFER",\u00F3rajel:"clock",enged\u00E9lyez\u00E9s:"enable","1. l\xE1b":"pin 1","2. l\xE1b":"pin 2","Ezt nem lehet \xF6sszek\xF6tni.":"These cannot be connected.","Ennek az elemnek nincs kimenete.":"This element has no output.","Villamos elem \xE9s nyom\xF3gomb kivezet\xE9se csak l\xE1bhoz k\xF6thet\u0151.":"Leads of an electrical element or a push button connect only to a pin.","Bemenet {x}":"Input {x}","\xC1lland\xF3 {x}":"Constant {x}","T\xE1rol\xF3 {x}":"Register {x}","Kimenet {x}":"Output {x}","Bemenet: nincs l\xE1b kiv\xE1lasztva.":"Input: no pin selected.","Kapukb\xF3l \xE1ll\xF3 k\xF6r: a jel \xF6nmag\xE1ba fut vissza (t\xE1rol\xF3val szak\xEDthat\xF3 meg).":"A loop of gates: the signal feeds back into itself (a register can break it).","{g} kapu: a(z) {i}. bemenete nincs bek\xF6tve.":"{g} gate: input {i} is not connected.","Nincs ilyen (vagy nem egy\xE9rtelm\u0171) l\xE1b vagy t\xE1rol\xF3: {x}":"No such (or ambiguous) pin or register: {x}","Nyom\xF3gomb: mindk\xE9t l\xE1b\xE1t egy-egy l\xE1bhoz kell k\xF6tni.":"Push button: both its pins must be connected to a pin each.","Kattints: ugr\xE1s a mez\u0151h\xF6z":"Click: jump to the field","{a}: teljesen a panelon k\xEDv\xFCl esik":"{a}: lies completely off the board","{a}: a {b} csatlakoz\xF3nak kevesebb l\xE1ba van, mint a k\xE1belnek ({c}), \xEDgy nincs bedugva":"{a}: connector {b} has fewer pins than the cable ({c}), so it is not plugged in","{a}: a {b} l\xE1b sehova sincs k\xF6tve":"{a}: the {b} pin is not connected anywhere","\xDCtk\xF6z\xE9s a {a} lyukban: {b}":"Collision in hole {a}: {b}","{a} kif\xFArt lyukban van ({b}), nincs alatta r\xE9z: a l\xE1b sehov\xE1 sem csatlakozik":"{a} is in a drilled hole ({b}), there is no copper under it: the pin connects nowhere","Vezet\xE9kv\xE9g kif\xFArt lyukban ({a}:{b}): nincs alatta r\xE9z":"Wire end in a drilled hole ({a}:{b}): no copper under it","H\xEDd kif\xFArt lyukn\xE1l ({a}:{b}\u2013{c}:{d})":"Bridge at a drilled hole ({a}:{b}\u2013{c}:{d})","{a}: az A \xE9s B oldal k\xF6z\xF6s neten van, a gomb r\xF6vidre z\xE1rt":"{a}: sides A and B are on the same net, the button is shorted","{a}: az akku + \xE9s \u2212 p\xF3lusa \xF6ssze van k\xF6tve":"{a}: the battery's + and \u2212 terminals are connected","{a}: {b} \xF6ssze van k\xF6tve":"{a}: {b} are connected",\u00E9s:"and"," (egy szekci\xF3ba esnek)":" (they fall in one section)","Z\xE1rlat: GND \u2013 {a}":"Short circuit: GND \u2013 {a}","Z\xE1rlat: 3V3 \u2013 {a}":"Short circuit: 3V3 \u2013 {a}","{a} k\xF6z\xF6s neten van":"{a} are on the same net","{a} k\xF6zvetlen\xFCl {b}-re k\xF6tve":"{a} connected directly to {b}","\xD6ssze\xE9r\u0151 jelek: {a}":"Touching signals: {a}","{a} \xE9s {b} teste \xE1tfed":"The bodies of {a} and {b} overlap","{a}: {b} szekci\xF3ban t\xF6bb l\xE1b k\xF6z\xF6s szekci\xF3ba esik. A l\xE1bsor nem futhat szekci\xF3ir\xE1nyban, forgasd 90\xB0-kal.":"{a}: in {b} sections several pins share a section. The pin row cannot run along the sections; rotate it by 90\xB0.","Z\xE1rlat: {a} egy szekci\xF3ba esik":"Short circuit: {a} fall in one section","Vezet\xE9kv\xE9g a {a} lyukban egy alkatr\xE9szl\xE1bbal k\xF6z\xF6sen, ez nem el\xE9g stabil.":"A wire end shares hole {a} with a part pin, which is not stable enough.","Tedd \xE1t a {a} lyukba (ugyanaz a szekci\xF3).":"Move it to hole {a} (same section).","A szekci\xF3ban nincs szabad lyuk: h\xEDdd \xE1t egy oldalszomsz\xE9dos szekci\xF3ba, \xE9s onnan vezesd tov\xE1bb.":"The section has no free hole: bridge over to a neighboring section and continue from there.","{a} vezet\xE9kv\xE9g ugyanabban a {b} lyukban":"{a} wire ends in the same hole {b}","Kapcsolat nincs bek\xF6tve: {a}":"Connection not routed: {a}","{a}: csak vezet\xE9kkel k\xF6thet\u0151 be (nincs szabad h\xEDd\xFAt)":"{a}: can only be routed with a wire (no free bridge path)","{a}: egyik oldala sincs GPIO-ra k\xF6tve":"{a}: neither side is connected to a GPIO","{a}: a motor k\xF6zvetlen\xFCl GPIO-ra van k\xF6tve. Tranzisztor vagy MOSFET kell a meghajt\xE1s\xE1hoz.":"{a}: the motor is connected directly to a GPIO. It needs a transistor or MOSFET to drive it.","{a}: nincs visszacsap\xF3 di\xF3da a motoron. Tegy\xE9l egy di\xF3d\xE1t (pl. 1N5817) a motor kapcsaira, a kat\xF3dj\xE1val a + fel\xE9, k\xFCl\xF6nben kikapcsol\xE1skor a fesz\xFClts\xE9gt\xFCske t\xF6nkreteheti a tranzisztort.":"{a}: no flyback diode on the motor. Put a diode (e.g. 1N5817) across the motor terminals, cathode toward +, otherwise the voltage spike at switch-off can destroy the transistor.","{a}.{b}: nincs t\xE1pfesz\xFClts\xE9g":"{a}.{b}: no supply voltage","(a {a} nincs bek\xF6tve)":"({a} is not connected)","{a}.{b}: {c} V, t\xF6bb a megengedett {d} V-n\xE1l":"{a}.{b}: {c} V, more than the allowed {d} V","{a}.{b}: csak {c} V, legal\xE1bb {d} V kell":"{a}.{b}: only {c} V, at least {d} V is needed","{a}.{b} ({c}) \u2192 {d}: ez a l\xE1b nem {e}, \xEDgy a hardveres {f} nem haszn\xE1lhat\xF3 rajta, csak szoftveres. Alkalmas l\xE1bak: {g}":"{a}.{b} ({c}) \u2192 {d}: this pin is not {e}, so hardware {f} cannot be used on it, only software. Suitable pins: {g}","{a}: az {b}-l\xE1bai k\xFCl\xF6nb\xF6z\u0151 buszokra ker\xFCltek ({c}). Egy perif\xE9ri\xE1t egy buszra k\xF6ss.":"{a}: its {b} pins ended up on different buses ({c}). Connect one peripheral to one bus.","{a} ugyanazon a PWM-szeleten ({b}) van, csak azonos frekvenci\xE1val m\u0171k\xF6dhetnek (most: {c}).":"{a} are on the same PWM slice ({b}), they can only run at the same frequency (now: {c}).","{a}: anal\xF3g jel a {b}-n, de azon nincs ADC. Erre alkalmas: {c}":"{a}: analog signal on {b}, but it has no ADC. Suitable: {c}","{a}: ADC2-csatorna, bekapcsolt WiFi mellett nem m\xE9r. Anal\xF3g jelhez ink\xE1bb ADC1-es l\xE1bat v\xE1lassz: {b}":"{a}: ADC2 channel, it does not measure while WiFi is on. For an analog signal choose an ADC1 pin instead: {b}","{a}: az anal\xF3g m\xE9r\xE9shez \xE1ll\xEDtsd ADC m\xF3dba (most: {b})":"{a}: set it to ADC mode for analog measurement (now: {b})","Z\xE1rlat a VBUS-on ({a} A)":"Short circuit on VBUS ({a} A)","3V3 t\xFAlterhelve vagy z\xE1rlatos ({a} mA)":"3V3 overloaded or shorted ({a} mA)","{a}: {b} mA, kimenet z\xE1rlatban":"{a}: {b} mA, output shorted","{a}: {b} mA, sok (aj\xE1nlott max. ~{c} mA)":"{a}: {b} mA, too much (recommended max. ~{c} mA)","{a}: lebeg, am\xEDg a gomb nincs lenyomva{b}. Tegy\xE9l k\xFCls\u0151 felh\xFAz\xF3 ellen\xE1ll\xE1st (pl. 10 k\u03A9 a 3V3-ra), vagy v\xE1lassz m\xE1sik GPIO-t.":"{a}: floats while the button is not pressed{b}. Add an external pull-up resistor (e.g. 10 k\u03A9 to 3V3), or choose another GPIO.","(ezen a l\xE1bon nincs bels\u0151 felh\xFAz\xF3 ellen\xE1ll\xE1s)":"(this pin has no internal pull-up)","{a}: a t\xE1pbemeneten ({b}) csak {c} V van, a stabiliz\xE1tornak legal\xE1bb {d} V kell, \xEDgy nincs 3,3 V":"{a}: the power input ({b}) has only {c} V, the regulator needs at least {d} V, so there is no 3.3 V","{a}: {b} mA, el\u0151t\xE9t-ellen\xE1ll\xE1s kell":"{a}: {b} mA, it needs a series resistor","{a}: {b}A, t\xF6bb a megengedett {c}A-n\xE9l":"{a}: {b}A, more than the allowed {c}A","{a}: lebeg\u0151 bemenet: {b}. CMOS-bemenetet ne hagyj szabadon: k\xF6sd jelre, vagy a nem haszn\xE1ltat GND-re (vagy VCC-re).":"{a}: floating input: {b}. Do not leave a CMOS input open: connect it to a signal, or tie an unused one to GND (or VCC).","{a}.{b}: {c} mA kimeneti \xE1ram, t\xF6bb a megengedett {d}A-n\xE9l{e}":"{a}.{b}: {c} mA output current, more than the allowed {d}A{e}","(k\xE9t kimenet egym\xE1s ellen?)":"(two outputs fighting?)","{a}: {b} V, t\xF6bb a n\xE9vleges {c} V-n\xE1l":"{a}: {b} V, more than the rated {c} V","{a}: nincs \xE9rv\xE9nyes szerv\xF3jel. A jel l\xE1b\xE1t k\xF6sd egy PWM m\xF3d\xFA GPIO-ra: 50 Hz, 2,5\u201312,5 % kit\xF6lt\xE9s (7,5 % = k\xF6z\xE9p\xE1ll\xE1s).":"{a}: no valid servo signal. Connect the signal pin to a GPIO in PWM mode: 50 Hz, 2.5\u201312.5 % duty (7.5 % = center).","{a}: a b\xE1zis lebeg. Tegy\xE9l leh\xFAz\xF3 ellen\xE1ll\xE1st a B \xE9s az E k\xF6z\xE9 (pl. 10 k\u03A9), vagy k\xF6sd kimenetre.":"{a}: the base floats. Add a pull-down resistor between B and E (e.g. 10 k\u03A9), or connect it to an output.","{a}: {b}A kollektor\xE1ram, t\xF6bb a megengedett {c}A-n\xE9l":"{a}: {b}A collector current, more than the allowed {c}A","{a}: nem tel\xEDt\u0151dik (Uce {b} V, Ic {c}A = \u03B2\xB7Ib). Kapcsol\xF3nak kisebb b\xE1zisellen\xE1ll\xE1s kell: a b\xE1zis\xE1ram (most {d}A) legyen a k\xEDv\xE1nt kollektor\xE1ram kb. tizede.":"{a}: not saturated (Uce {b} V, Ic {c}A = \u03B2\xB7Ib). As a switch it needs a smaller base resistor: the base current (now {d}A) should be about a tenth of the desired collector current.","{a}: ford\xEDtva van bek\xF6tve ({b} V). Az elektrolit kondenz\xE1tor + l\xE1ba ker\xFClj\xF6n a magasabb fesz\xFClts\xE9gre.":"{a}: connected in reverse ({b} V). The electrolytic capacitor's + pin goes to the higher voltage.","{a}: a gate lebeg. Tegy\xE9l leh\xFAz\xF3 ellen\xE1ll\xE1st a G \xE9s az S k\xF6z\xE9 (pl. 100 k\u03A9), vagy k\xF6sd kimenetre.":"{a}: the gate floats. Add a pull-down resistor between G and S (e.g. 100 k\u03A9), or connect it to an output.","{a}: z\xE1rlat a t\xE1pbemeneten ({b} A)":"{a}: short circuit at the power input ({b} A)","{a}: a {b} USB-je a t\xE1pbemeneten ({c}) \xE1t k\xF6zvetlen\xFCl t\xF6lti az akkut ({d} A). Az akku \xE9s a t\xE1pbemenet k\xF6z\xE9 Schottky-di\xF3da kell.":"{a}: the USB of {b} charges the battery directly through the power input ({c}) ({d} A). A Schottky diode is needed between the battery and the power input.","{a}: {b} A t\xF6lt\u0151\xE1ram, sok":"{a}: {b} A charging current, too much","{a}: z\xE1rlat ({b} A)":"{a}: short circuit ({b} A)","{a}: az USB k\xF6zvetlen\xFCl t\xF6lti az akkut ({b} A). A VSYS el\xE9 Schottky-di\xF3da kell.":"{a}: the USB charges the battery directly ({b} A). A Schottky diode is needed in front of VSYS.","A l\xE1b nincs GPIO-ra k\xF6tve":"The pin is not connected to a GPIO","Nincs kiv\xE1lasztva l\xE1b":"No pin selected","Ezt a GPIO-t egy m\xE1sik blokk is haszn\xE1lja":"Another block uses this GPIO too","ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor sz\xE1m\xEDt a szintje, rossz szintn\xE9l a lap nem indul el vagy let\xF6lt\u0151 m\xF3dba ker\xFCl. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"strapping pin: its level matters at power-up; at the wrong level the board does not start or enters download mode. If you can, choose another GPIO.","a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja: felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"used by the serial port (USB-serial converter): it can interfere with uploading and serial output. If you can, choose another GPIO.","a be\xE9p\xEDtett USB haszn\xE1lja. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"used by the built-in USB. If you can, choose another GPIO.","a lap be\xE9p\xEDtett LED-je is ezen a l\xE1bon van.":"the board's built-in LED is on this pin too.","Nincs vez\xE9rl\u0151lap a tervben; a l\xE1bsz\xE1mok nem ismertek.":"No controller board in the design; pin numbers are unknown.","{a}: nincs Arduino-c\xE9lk\xF6rnyezet a le\xEDr\xE1s\xE1ban; az \xE1ltal\xE1nos Arduino-f\xFCggv\xE9nyekkel k\xE9sz\xFClt.":"{a}: its description has no Arduino target; made with the generic Arduino functions.","{a}: t\xF6bb blokk is haszn\xE1lja ({b}, {c}).":"{a}: used by several blocks ({b}, {c}).","0\u20133,3 V-os tartom\xE1ny":"0\u20133.3 V range","anal\xF3g bemenet: {a} \u2192 {b}":"analog input: {a} \u2192 {b}",ut\u00E1nfut\u00E1s:"off delay","felfut\xF3 \xE9l: impulzus":"rising edge: pulse","bekapcsol\xE1si k\xE9sleltet\xE9s":"on delay","indul\xE1skor nem l\xE9p":"does not step at start","felfut\xF3 \xE9l: k\xF6vetkez\u0151 sor":"rising edge: next row","Proofboard \u2013 gener\xE1lt program":"Proofboard \u2013 generated program","\xDCtemenk\xE9nt (20 ms) beolvassa a bemeneteket, kisz\xE1molja a blokkokat, \xE9s be\xE1ll\xEDtja a kimeneteket.":"Every tick (20 ms) it reads the inputs, computes the blocks and sets the outputs.","blokkok \xE9rt\xE9kei \xE9s \xE1llapota":"block values and state",Lap:"Board",alaplapkezel\u0151:"Boards Manager","A le\xEDr\xE1s nem objektum.":"The description is not an object.","Hi\xE1nyzik a n\xE9v.":"The name is missing.","Az el\u0151tag 1\u20136 karakter, bet\u0171vel kezd\u0151dik (pl. U, MOD, J).":"The prefix is 1\u20136 characters and starts with a letter (e.g. U, MOD, J).","Hi\xE1nyzik a l\xE1bk\xE9p r\xF6vid le\xEDr\xE1sa.":"The short footprint description is missing.","Legal\xE1bb egy l\xE1b kell.":"At least one pin is needed.","\xC9rv\xE9nytelen param\xE9terkulcs.":"Invalid parameter key.","K\xE9tszer szerepel: {a}":"Appears twice: {a}","Ismeretlen param\xE9tert\xEDpus: {a}":"Unknown parameter type: {a}","A v\xE1laszthat\xF3 t\xEDpushoz opci\xF3k kellenek.":"The select type needs options.","Hi\xE1nyzik az alap\xE9rt\xE9k.":"The default value is missing.","A l\xE1bak nem \xE9rt\xE9kelhet\u0151k ki: ":"The pins cannot be evaluated: ","Hi\xE1nyzik a l\xE1b azonos\xEDt\xF3ja.":"The pin ID is missing.","A l\xE1bak list\xE1ja alap\xE9rt\xE9kekkel \xFCres.":"With default values the pin list is empty.","{a}: a helye nem sz\xE1m.":"{a}: its position is not a number.","{a}: a l\xE1b csak eg\xE9sz lyukpoz\xEDci\xF3n lehet.":"{a}: a pin can only be at a whole hole position.","K\xE9tszer szerepel a l\xE1b: {a}":"The pin appears twice: {a}","{a} \xE9s {b} ugyanabban a lyukban ({c}).":"{a} and {b} are in the same hole ({c}).","{a}: {b} nem sz\xE1m.":"{a}: {b} is not a number.","{a}: a minim\xE1lis fesz\xFClts\xE9g nem lehet nagyobb a maxim\xE1lisn\xE1l.":"{a}: the minimum voltage cannot be higher than the maximum.","{a}: ismeretlen buszfunkci\xF3: {b} (lehet: {c})":"{a}: unknown bus function: {b} (allowed: {c})","{a}: fesz\xFClts\xE9gtartom\xE1ny csak t\xE1pbemenetn\xE9l (vin) sz\xE1m\xEDt.":"{a}: a voltage range only matters for a power input (vin).","Van t\xE1pbemenet, de nincs GND-l\xE1b: a t\xE1pfesz\xFClts\xE9g a panel f\xF6ldj\xE9hez k\xE9pest sz\xE1m\xEDt.":"There is a power input but no GND pin: the supply voltage is measured against the board's ground.","Egy csoportban legal\xE1bb k\xE9t l\xE1b kell.":"A group needs at least two pins.","Nincs ilyen l\xE1b: {a}":"No such pin: {a}","{a} t\xF6bb csoportban is szerepel.":"{a} appears in several groups.","Hi\xE1nyzik a(z) {a} kivezet\xE9s l\xE1ba.":"The pin of lead {a} is missing.","Egy elem k\xE9t kivezet\xE9se nem lehet ugyanaz a l\xE1b.":"Two leads of an element cannot be the same pin.","nem sz\xE1m":"not a number","{a}: nem \xE9rtelmezhet\u0151 \xE9rt\xE9k.":"{a}: not a valid value.","T\xE1rol\xF3 neve: bet\u0171vel kezd\u0151d\u0151 azonos\xEDt\xF3 kell (most: \u201E{a}\u201D).":"Register name: an identifier starting with a letter is needed (now: \u201C{a}\u201D).","K\xE9tszer szerepel a t\xE1rol\xF3: {a}":"The register appears twice: {a}","{a}: a t\xE1rol\xF3 neve nem lehet egy l\xE1b neve.":"{a}: a register name cannot be a pin name.","{a}: hi\xE1nyzik.":"{a}: missing.","{a}: nincs ilyen l\xE1b vagy t\xE1rol\xF3: {b}":"{a}: no such pin or register: {b}","{a}|{b} \xF3rajele":"{a}|clock of {b}","{a}|{b} k\xF6vetkez\u0151 \xE9rt\xE9ke (D)":"{a}|next value of {b} (D)","{a}|{b} t\xF6rl\xE9se":"{a}|reset of {b}","{a}|{b} be\xE1ll\xEDt\xE1sa":"{a}|set of {b}","{a}: az \xE9l rise vagy fall lehet.":"{a}: the edge can be rise or fall.","A logik\xE1hoz legal\xE1bb egy kimenet kell.":"The logic needs at least one output.","Nincs ilyen kimeneti l\xE1b: {a}":"No such output pin: {a}","{a}: k\xE9t kifejez\xE9s hajtja ugyanazt a kimenetet.":"{a}: two expressions drive the same output.","{a}: a t\xE1p- vagy GND-l\xE1b nem lehet kimenet.":"{a}: a power or GND pin cannot be an output.",kifejez\u00E9s:"expression","{a}: hi\xE1nyzik a kifejez\xE9s.":"{a}: the expression is missing.","{a} {b}: nincs ilyen (vagy nem egy\xE9rtelm\u0171) l\xE1b vagy t\xE1rol\xF3: {c}":"{a} {b}: no such (or ambiguous) pin or register: {c}","{a}: a kimenet t\xEDpusa pp vagy od lehet.":"{a}: the output type can be pp or od.","A csatlakoz\xF3 le\xEDr\xE1sa objektum.":"The connector description is an object.","A csatlakoz\xF3 l\xE1bsz\xE1m\xE1hoz eg\xE9sz (int) param\xE9ter kell.":"The connector's pin count needs an integer (int) parameter.","A csatlakoz\xF3 l\xE1bneveihez names t\xEDpus\xFA param\xE9ter kell.":"The connector's pin names need a parameter of type names.","A csatlakoz\xF3 l\xE1bainak list\xE1ja nem lehet \xFCres.":"The connector's pin list cannot be empty.","A csatlakoz\xF3ban nincs ilyen l\xE1b: {a}":"The connector has no such pin: {a}","A cs\xFAszk\xE1hoz nincs ilyen param\xE9ter: {a}":"The slider has no such parameter: {a}","A cs\xFAszka param\xE9tere ({a}) sz\xE1m legyen, min \xE9s max \xE9rt\xE9kkel.":"The slider's parameter ({a}) must be a number with min and max.","Ismeretlen vez\xE9rl\u0151.":"Unknown control.","Meg kell adni, mely l\xE1bak z\xE1r\xF3dnak \xF6ssze.":"You must give which pins close together.","Ismeretlen szerel\xE9s: {a} (board vagy off).":"Unknown mounting: {a} (board or off).","Nincs test (body r\xE9teg): az alkatr\xE9sz csak l\xE1bakk\xE9nt l\xE1tszik.":"No body (body layer): the part shows only as pins.","Hi\xE1nyzik a z\xE1r\xF3 z\xE1r\xF3jel":"The closing parenthesis is missing","Hi\xE1nyz\xF3 tag a kifejez\xE9s v\xE9g\xE9n":"A term is missing at the end of the expression","Itt nem \xE1llhat: \u201E{x}\u201D":"Not allowed here: \u201C{x}\u201D","\xDCres kifejez\xE9s":"Empty expression","F\xF6l\xF6sleges r\xE9sz: \u201E{x}\u201D":"Extra part: \u201C{x}\u201D",'Ez nem Proofboard alkatr\xE9szk\xF6nyvt\xE1r (hi\xE1nyzik a "format": "proofboard-parts").':'This is not a Proofboard part library ("format": "proofboard-parts" is missing).',"Raspberry Pi Pico W":"Raspberry Pi Pico W","2\xD720 l\xE1b, sort\xE1v 6":"2\xD720 pins, row spacing 6","Sort\xE1v (oszt\xE1s)":"Row spacing (pitch)","A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Adatlap szerint 17,78 mm = 7 oszt\xE1s, de t\xFCskesorral, foglalatban vagy adapterlapon m\xE1s is lehet (pl. 6 vagy 8). Vonalz\xF3val m\xE9rd le a saj\xE1todat.":"The distance of the two pin rows in holes (0 \u2192 {span}). The datasheet says 17.78 mm = 7 pitches, but with pin headers, a socket or an adapter board it can differ (e.g. 6 or 8). Measure yours with a ruler.","ESP32 DevKit V1 (DOIT, 30 l\xE1b)":"ESP32 DevKit V1 (DOIT, 30 pins)","2\xD715 l\xE1b, sort\xE1v 10":"2\xD715 pins, row spacing 10","\xC1ltal\xE1ban 25,4 mm = 10 oszt\xE1s (a lap 28 mm sz\xE9les). A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Vonalz\xF3val m\xE9rd le a saj\xE1todat: a lapok gy\xE1rt\xF3nk\xE9nt elt\xE9rhetnek.":"Usually 25.4 mm = 10 pitches (the board is 28 mm wide). The distance of the two pin rows in holes (0 \u2192 {span}). Measure yours with a ruler: boards differ between makers.","ESP32-WROOM-32 modul USB-soros \xE1talak\xEDt\xF3val. T\xE1p: USB (di\xF3d\xE1n \xE1t a VIN-re) vagy VIN 5\u201312 V (AMS1117 stabiliz\xE1tor, legal\xE1bb kb. 4,2 V kell), vagy k\xF6zvetlen\xFCl 3,3 V a 3V3 l\xE1bon. A GPIO34\u201339 csak bemenet, bels\u0151 felh\xFAz\xE1s n\xE9lk\xFCl; az ADC2-l\xE1bak bekapcsolt WiFi mellett nem m\xE9rnek.":"ESP32-WROOM-32 module with a USB-serial converter. Power: USB (to VIN through a diode) or VIN 5\u201312 V (AMS1117 regulator, needs at least about 4.2 V), or 3.3 V directly on the 3V3 pin. GPIO34\u201339 are input only, without internal pull-up; the ADC2 pins do not measure while WiFi is on.","ind\xEDt\xE1si (strapping) l\xE1b (MTDI): ha bekapcsol\xE1skor magas, a modul 1,8 V-os flasht felt\xE9telez, \xE9s nem indul el. Ne tegy\xE9l r\xE1 felh\xFAz\xE1st.":"strapping pin (MTDI): if it is high at power-up, the module assumes a 1.8 V flash and does not start. Do not put a pull-up on it.","ind\xEDt\xE1si (strapping) l\xE1b (MTDO): bekapcsol\xE1skor magasnak kell lennie (bels\u0151 felh\xFAz\xE1s). Ne h\xFAzd le gombbal vagy terhel\xE9ssel.":"strapping pin (MTDO): it must be high at power-up (internal pull-up). Do not pull it low with a button or a load.","ind\xEDt\xE1si (strapping) l\xE1b, \xE9s a be\xE9p\xEDtett k\xE9k LED is ezen van: a felt\xF6lt\xE9shez bekapcsol\xE1skor alacsony vagy lebeg\u0151 kell legyen. Ne tegy\xE9l r\xE1 felh\xFAz\xE1st.":"strapping pin, and the built-in blue LED is on it too: for uploading it must be low or floating at power-up. Do not put a pull-up on it.","ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor magasnak kell lennie (bels\u0151 felh\xFAz\xE1s). Ne h\xFAzd le.":"strapping pin: it must be high at power-up (internal pull-up). Do not pull it low.","TX0: a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja, felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"TX0: used by the serial port (USB-serial converter), it can interfere with uploading and serial output. If you can, choose another GPIO.","RX0: a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja, felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"RX0: used by the serial port (USB-serial converter), it can interfere with uploading and serial output. If you can, choose another GPIO.","ESP32-C3 SuperMini":"ESP32-C3 SuperMini","2\xD78 l\xE1b, sort\xE1v 6":"2\xD78 pins, row spacing 6","\xC1ltal\xE1ban 15,24 mm = 6 oszt\xE1s (a lap 18 mm sz\xE9les). A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Vonalz\xF3val m\xE9rd le a saj\xE1todat: a lapok gy\xE1rt\xF3nk\xE9nt elt\xE9rhetnek.":"Usually 15.24 mm = 6 pitches (the board is 18 mm wide). The distance of the two pin rows in holes (0 \u2192 {span}). Measure yours with a ruler: boards differ between makers.","ESP32-C3 (RISC-V, WiFi, BLE), nat\xEDv USB-C. T\xE1p: USB vagy az 5V l\xE1b (kb. 3,5\u20136 V, kis fesz\xFClts\xE9ges\xE9s\u0171 stabiliz\xE1tor), vagy 3,3 V a 3V3 l\xE1bon. Az 5V l\xE1b k\xF6zvetlen\xFCl az USB-hez csatlakozik, nincs di\xF3da: akkut ne k\xF6ss r\xE1 USB mellett. ADC: GPIO0\u20134 (ADC1), GPIO5 (ADC2).":"ESP32-C3 (RISC-V, WiFi, BLE), native USB-C. Power: USB or the 5V pin (about 3.5\u20136 V, low-dropout regulator), or 3.3 V on the 3V3 pin. The 5V pin connects directly to USB, with no diode: do not connect a battery to it while USB is plugged in. ADC: GPIO0\u20134 (ADC1), GPIO5 (ADC2).","ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor magasnak kell lennie. Ne h\xFAzd le gombbal vagy terhel\xE9ssel.":"strapping pin: it must be high at power-up. Do not pull it low with a button or a load.","ind\xEDt\xE1si (strapping) l\xE1b, \xE9s a be\xE9p\xEDtett k\xE9k LED is ezen van (alacsony szintre vil\xE1g\xEDt): bekapcsol\xE1skor magasnak kell lennie. Ne h\xFAzd le.":"strapping pin, and the built-in blue LED is on it too (lit when low): it must be high at power-up. Do not pull it low.","a lap BOOT gombja is ezen van (lenyomva a f\xF6ldre h\xFAz), \xE9s ind\xEDt\xE1si l\xE1b: ha bekapcsol\xE1skor alacsony, a lap let\xF6lt\u0151 m\xF3dba ker\xFCl. Gombnak j\xF3, ha indul\xE1skor nincs lenyomva.":"the board's BOOT button is on it too (pulls to ground when pressed), and it is a strapping pin: if it is low at power-up, the board enters download mode. Fine for a button if it is not pressed at start.","RX (UART0): ha a soros ki\xEDr\xE1s nem a nat\xEDv USB-n megy, a soros port haszn\xE1lja.":"RX (UART0): used by the serial port when serial output does not go over native USB.","TX (UART0): ha a soros ki\xEDr\xE1s nem a nat\xEDv USB-n megy, a soros port haszn\xE1lja.":"TX (UART0): used by the serial port when serial output does not go over native USB.","Nyom\xF3gomb 12 mm":"Push button 12 mm","A 0:0, 0:5 \xB7 B 2:0, 2:5":"A 0:0, 0:5 \xB7 B 2:0, 2:5","0:0 \u2013 0:4 (\xE1ll\xEDthat\xF3)":"0:0 \u2013 0:4 (adjustable)",\u03A9:"\u03A9","2. l\xE1b helye":"Pin 2 position","Az els\u0151 l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:4. Nagyobb t\xE1vols\xE1ggal a l\xE1b maga is \xE1thidalhat.":"Relative to the first pin (before rotation). Default: 0:4. With a larger distance the lead itself can act as a jumper.","\xC1tk\xF6t\u0151 huzal (0 \u03A9)":"Jumper wire (0 \u03A9)","0:0 \u2013 0:2 (\xE1ll\xEDthat\xF3)":"0:0 \u2013 0:2 (adjustable)","2. v\xE9g helye":"End 2 position","Egyenes dr\xF3t\xE1tk\xF6t\xE9s az alkatr\xE9szoldalon: a k\xE9t v\xE9ge egy h\xE1l\xF3zat.":"A straight wire jumper on the component side: both ends are one net.","LED 3 mm":"LED 3 mm","an\xF3d 0:0 \xB7 kat\xF3d 0:1 (\xE1ll\xEDthat\xF3)":"anode 0:0 \xB7 cathode 0:1 (adjustable)","{color.label}, nyit\xF3fesz\xFClts\xE9g {color.vf} V":"{color.label}, forward voltage {color.vf} V",lila:"purple","Kat\xF3d helye":"Cathode position","Az an\xF3dhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1.":"Relative to the anode (before rotation). Default: 0:1.","an\xF3d 0:0 \xB7 kat\xF3d 0:4 (\xE1ll\xEDthat\xF3)":"anode 0:0 \xB7 cathode 0:4 (adjustable)","Csak an\xF3dt\xF3l kat\xF3d fel\xE9 vezet, {kind.vf} V nyit\xF3fesz\xFClts\xE9g felett. A cs\xEDk a kat\xF3d oldal\xE1n van.":"Conducts only from anode to cathode, above a forward voltage of {kind.vf} V. The band is on the cathode side.","1N5817 Schottky (0,3 V, 1 A)":"1N5817 Schottky (0.3 V, 1 A)","1N4148 jeldi\xF3da (0,7 V, 0,2 A)":"1N4148 signal diode (0.7 V, 0.2 A)","1N4007 egyenir\xE1ny\xEDt\xF3 (0,7 V, 1 A)":"1N4007 rectifier (0.7 V, 1 A)","Az an\xF3dhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:4.":"Relative to the anode (before rotation). Default: 0:4.","N-MOSFET (2N7000)":"N-MOSFET (2N7000)","S 0:0 \xB7 G 0:1 \xB7 D 0:2 (TO-92)":"S 0:0 \xB7 G 0:1 \xB7 D 0:2 (TO-92)","K\xFCsz\xF6b (Vth)":"Threshold (Vth)","A D\u2013S akkor vezet, ha a gate a source-hoz k\xE9pest enn\xE9l magasabb.":"D\u2013S conducts when the gate is higher than this relative to the source.",V:"V","Nyitott ellen\xE1ll\xE1s":"On resistance","Max. \xE1ram":"Max. current","Kondenz\xE1tor (ker\xE1mia)":"Capacitor (ceramic)","0:0 \u2013 0:1 (\xE1ll\xEDthat\xF3)":"0:0 \u2013 0:1 (adjustable)","Egyen\xE1ramon szakad\xE1s. A szimul\xE1ci\xF3 a fesz\xFClts\xE9get \xE9s az id\u0151\xE1lland\xF3t (\u03C4 = R\xB7C) mutatja.":"An open circuit at DC. The simulation shows the voltage and the time constant (\u03C4 = R\xB7C).",F:"F","N\xE9vleges fesz\xFClts\xE9g":"Rated voltage","Az els\u0151 l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1.":"Relative to the first pin (before rotation). Default: 0:1.","Elektrolit kondenz\xE1tor":"Electrolytic capacitor","+ 0:0 \xB7 \u2212 0:1 (\xE1ll\xEDthat\xF3)":"+ 0:0 \xB7 \u2212 0:1 (adjustable)","Polarit\xE1sos: a + l\xE1b ker\xFClj\xF6n a magasabb fesz\xFClts\xE9gre. A cs\xEDk a \u2212 l\xE1b oldal\xE1n van.":"Polarized: the + pin goes to the higher voltage. The band is on the \u2212 pin side.","\u2212 l\xE1b helye":"\u2212 pin position","A + l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1.":"Relative to the + pin (before rotation). Default: 0:1.","TO-92, l\xE1bsorrend t\xEDpus szerint":"TO-92, pin order by type","A C\u2013E akkor vezet, ha a b\xE1zison \xE1ram folyik (Ube \u2248 0,65 V). Ic legfeljebb \u03B2\xB7Ib ({kind.beta}\xB7Ib); kapcsol\xF3k\xE9nt kb. t\xEDzszer annyi b\xE1zis\xE1ram kell, mint Ic/\u03B2.":"C\u2013E conducts when current flows into the base (Ube \u2248 0.65 V). Ic is at most \u03B2\xB7Ib ({kind.beta}\xB7Ib); as a switch it needs about ten times Ic/\u03B2 of base current.","BC547 (C-B-E, 100 mA)":"BC547 (C-B-E, 100 mA)","2N3904 (E-B-C, 200 mA)":"2N3904 (E-B-C, 200 mA)","2N2222A (E-B-C, 600 mA)":"2N2222A (E-B-C, 600 mA)","74HC00 n\xE9gy NAND kapu":"74HC00 quad NAND gate","DIP-14 \xB7 4\xD7 NAND":"DIP-14 \xB7 4\xD7 NAND","N\xE9gy k\xE9tbemenetes NAND kapu (nY = NEM(nA \xC9S nB)). T\xE1p 2\u20136 V; a nem haszn\xE1lt bemeneteket k\xF6sd GND-re.":"Four two-input NAND gates (nY = NOT(nA AND nB)). Supply 2\u20136 V; tie unused inputs to GND.","74HC74 kett\u0151s D t\xE1rol\xF3":"74HC74 dual D flip-flop","DIP-14 \xB7 2\xD7 D flip-flop":"DIP-14 \xB7 2\xD7 D flip-flop","K\xE9t D t\xE1rol\xF3: a CLK felfut\xF3 \xE9l\xE9n Q felveszi D \xE9rt\xE9k\xE9t. CLR = 0 t\xF6rli (Q = 0), PRE = 0 be\xE1ll\xEDtja (Q = 1), az \xF3rajelt\u0151l f\xFCggetlen\xFCl; haszn\xE1lat k\xF6zben mindkett\u0151t k\xF6sd VCC-re. Qn a Q neg\xE1ltja. T\xE1p 2\u20136 V.":"Two D flip-flops: on the rising edge of CLK, Q takes the value of D. CLR = 0 clears it (Q = 0), PRE = 0 sets it (Q = 1), regardless of the clock; in use, tie both to VCC. Qn is the inverse of Q. Supply 2\u20136 V.","74HC595 l\xE9ptet\u0151regiszter":"74HC595 shift register","DIP-16 \xB7 8 bit SIPO":"DIP-16 \xB7 8-bit SIPO","8 bites soros-p\xE1rhuzamos \xE1talak\xEDt\xF3: SRCLK felfut\xF3 \xE9l\xE9n a SER bit bel\xE9p, a t\xF6bbi eggyel tov\xE1bbl\xE9p; RCLK felfut\xF3 \xE9l\xE9n a 8 bit a QA\u2026QH kimenetekre ker\xFCl. OE = 0 enged\xE9lyezi a kimeneteket, SRCLR = 0 t\xF6rli a l\xE9ptet\u0151regisztert. QHs (QH') a k\xF6vetkez\u0151 595 SER bemenet\xE9re k\xF6thet\u0151. T\xE1p 2\u20136 V.":"8-bit serial-to-parallel converter: on the rising edge of SRCLK the SER bit shifts in and the rest move one step; on the rising edge of RCLK the 8 bits go to outputs QA\u2026QH. OE = 0 enables the outputs, SRCLR = 0 clears the shift register. QHs (QH') can go to the SER input of the next 595. Supply 2\u20136 V.","74HC139 kett\u0151s 2\u21924 dek\xF3der":"74HC139 dual 2\u21924 decoder","DIP-16 \xB7 2\xD7 (2\u21924)":"DIP-16 \xB7 2\xD7 (2\u21924)","K\xE9t 2\u21924 dek\xF3der: az A1 A0 bin\xE1ris sz\xE1m szerinti Y kimenet lesz 0 (akt\xEDv alacsony), a t\xF6bbi 1; ha E = 1, mind 1. T\xE1p 2\u20136 V.":"Two 2\u21924 decoders: the Y output selected by the binary number A1 A0 goes 0 (active low), the others 1; if E = 1, all are 1. Supply 2\u20136 V.","L\xE9ptet\u0151motor (28BYJ-48)":"Stepper motor (28BYJ-48)",K\u00FCls\u0151:"External","k\xFCls\u0151 \xB7 5 eres k\xE1bel (A B C D, k\xF6z\xF6s +)":"external \xB7 5-wire cable (A B C D, common +)",Tekercsellen\u00E1ll\u00E1s:"Coil resistance","5 V-os unipol\xE1ris l\xE9ptet\u0151motor, 64:1 \xE1tt\xE9tellel: f\xE9ll\xE9ptet\xE9sben 4096 l\xE9p\xE9s a kimen\u0151 tengely egy fordulata. A tekercseket egy meghajt\xF3 (pl. ULN2003) kapcsolja a f\xF6ld fel\xE9; a k\xF6z\xF6s vezet\xE9k (piros) a +5 V. A szimul\xE1ci\xF3 a tekercsek gerjeszt\xE9si sorrendj\xE9b\u0151l l\xE9pteti (A, AB, B, BC, C, CD, D, DA).":"5 V unipolar stepper motor with 64:1 gearing: in half-step mode, 4096 steps make one turn of the output shaft. A driver (e.g. ULN2003) switches the coils to ground; the common wire (red) is +5 V. The simulation steps it from the coil excitation order (A, AB, B, BC, C, CD, D, DA).","ULN2003 l\xE9ptet\u0151motor-meghajt\xF3":"ULN2003 stepper driver","IN1\u2013IN4 \xB7 t\xE1p \xB7 motorcsatlakoz\xF3":"IN1\u2013IN4 \xB7 power \xB7 motor connector","N\xE9gy Darlington-kapcsol\xF3: ha az INn bemenet magas (\u2265 kb. 2,2 V, a Pico 3,3 V-ja el\xE9g), a hozz\xE1 tartoz\xF3 kimenet (A\u2013D) a f\xF6ld fel\xE9 kapcsol, \xE9s a motor tekercs\xE9n \xE1t a k\xF6z\xF6s + fel\u0151l \xE1ram folyik. A VCC (+) a motor t\xE1pja, 5 V; a COM ezzel k\xF6z\xF6s.":"Four Darlington switches: when input INn is high (\u2265 about 2.2 V, the Pico's 3.3 V is enough), the matching output (A\u2013D) switches to ground and current flows from the common + through the motor coil. VCC (+) is the motor supply, 5 V; COM is shared with it.","DC motor (130-as)":"DC motor (type 130)","k\xFCls\u0151 \xB7 + \xE9s \u2212 kivezet\xE9s":"external \xB7 + and \u2212 leads","A motor a panel mellett \xE1ll; a kivezet\xE9seit vezet\xE9kkel (k\xE1bellel) k\xF6sd a panelra. Indukt\xEDv terhel\xE9s: GPIO-r\xF3l k\xF6zvetlen\xFCl nem hajthat\xF3, tranzisztor vagy MOSFET \xE9s visszacsap\xF3 di\xF3da kell.":"The motor sits next to the board; connect its leads to the board with wires (a cable). An inductive load: it cannot be driven directly from a GPIO, it needs a transistor or MOSFET and a flyback diode.","\xDCzemi ellen\xE1ll\xE1s":"Operating resistance","Egyszer\u0171s\xEDtett modell: forg\xE1s k\xF6zbeni \xE1ramfelv\xE9tel \u2248 U / R. A fordulat a fesz\xFClts\xE9ggel ar\xE1nyos.":"Simplified model: current while running \u2248 U / R. Speed is proportional to the voltage.","Szerv\xF3 (SG90)":"Servo (SG90)","k\xFCls\u0151 \xB7 GND, V+, jel k\xE1bel":"external \xB7 GND, V+, signal cable","\xC1ramfelv\xE9tel (ell.)":"Current draw (resistance)","A szerv\xF3t a jelvezet\xE9ken \xE9rkez\u0151 PWM vez\xE9rli: 50 Hz, 0,5\u20132,5 ms impulzus \u2192 0\u2013180\xB0. A Pico GPIO-j\xE1n \xE1ll\xEDtsd PWM m\xF3dba (50 Hz, 7,5 % = k\xF6z\xE9p\xE1ll\xE1s). T\xE1p: 4,8\u20136 V.":"The servo is driven by PWM on its signal wire: 50 Hz, 0.5\u20132.5 ms pulse \u2192 0\u2013180\xB0. Set the Pico GPIO to PWM mode (50 Hz, 7.5 % = center). Supply: 4.8\u20136 V.","T\xFCskesor 1\xD7N":"Pin header 1\xD7N",Csatlakoz\u00F3:"Connector","N l\xE1b egy sorban \xB7 csatlakoz\xF3":"N pins in a row \xB7 connector",L\u00E1bsz\u00E1m:"Pin count","Vessz\u0151vel, sorrendben (pl. GND,VCC,SDA,SCL). K\xFCls\u0151 alkatr\xE9sz csatlakoz\xF3j\xE1n\xE1l az alkatr\xE9sz l\xE1bneveit kapja.":"Comma-separated, in order (e.g. GND,VCC,SDA,SCL). As an external part's connector it gets the part's pin names.","Akku csatlakoz\xF3":"Battery connector","TP4056 t\xF6lt\u0151modul":"TP4056 charger module","IN 0:0, 0:6 \xB7 OUT/B 9:0\u20269:6 (k\xF6zel\xEDt\u0151)":"IN 0:0, 0:6 \xB7 OUT/B 9:0\u20269:6 (approximate)","Saj\xE1t USB":"Own USB","Egyszer\u0171s\xEDtett modell: a bemenetr\u0151l (5 V) a B+ fel\xE9 t\xF6lt, a B+ \xE9s az OUT+ k\xF6z\xF6s. A l\xE1bak a modul forrpontjainak k\xF6zel\xEDt\u0151 helyei, t\xFCskesorral rakd fel.":"Simplified model: it charges from the input (5 V) toward B+; B+ and OUT+ are shared. The pins are approximate positions of the module's pads; mount it with pin headers.","nincs bedugva":"not plugged in","5 V bedugva":"5 V plugged in","Nokia 5110 kijelz\u0151":"Nokia 5110 display","8 l\xE1b egy sorban \xB7 VCC 2,7\u20133,3 V":"8 pins in a row \xB7 VCC 2.7\u20133.3 V",'OLED kijelz\u0151 0,96" (SSD1306, I\xB2C)':'OLED display 0.96" (SSD1306, I\xB2C)',"GND \xB7 VCC \xB7 SCL \xB7 SDA egy sorban":"GND \xB7 VCC \xB7 SCL \xB7 SDA in a row","128\xD764 pontos OLED kijelz\u0151 I\xB2C-buszon (alapc\xEDm 0x3C). A modulon felh\xFAz\xF3 ellen\xE1ll\xE1sok vannak az SCL- \xE9s SDA-vonalon. T\xE1p 3,3\u20135 V; a kijelz\u0151 tartalm\xE1t a szimul\xE1ci\xF3 nem rajzolja ki.":"128\xD764 dot OLED display on the I\xB2C bus (default address 0x3C). The module has pull-up resistors on the SCL and SDA lines. Supply 3.3\u20135 V; the simulation does not draw the display content.","Joystick (KY-023)":"Joystick (KY-023)","GND \xB7 +5V \xB7 VRx \xB7 VRy \xB7 SW egy sorban":"GND \xB7 +5V \xB7 VRx \xB7 VRy \xB7 SW in a row","X \xE1ll\xE1s":"X position","\u2212100 % bal, +100 % jobb. Szimul\xE1ci\xF3 k\xF6zben cs\xFAszk\xE1val is \xE1ll\xEDthat\xF3.":"\u2212100 % left, +100 % right. It can also be set with a slider during the simulation.","Y \xE1ll\xE1s":"Y position","\u2212100 % le, +100 % fel.":"\u2212100 % down, +100 % up.",X:"X",Y:"Y","Csere: {x}":"Swap: {x}","{n} kapcsolat elveszett":"{n} connection lost||{n} connections lost","nem f\xE9r el a panelon, mozgasd":"does not fit on the board, move it","Mentve, {n} saj\xE1t alkatr\xE9sszel egy\xFCtt.":"Saved, together with {n} custom part.||Saved, together with {n} custom parts.","Mentve.":"Saved.","Mentve: {x}":"Saved: {x}","Panel: {c}\xD7{r} lyuk, {s}.":"Board: {c}\xD7{r} holes, {s}.","LED akkur\xF3l \u2013 k\xE9zi hidakkal":"LED from a battery \u2013 manual bridges","Akku, el\u0151t\xE9t-ellen\xE1ll\xE1s \xE9s LED, forraszt\xF3hidakkal bek\xF6tve.":"Battery, series resistor and LED, wired with solder bridges.","el\u0151t\xE9t-ellen\xE1ll\xE1s a LED-hez":"a series resistor for the LED","forraszt\xF3h\xEDd k\xE9zzel":"solder bridges by hand","a szimul\xE1ci\xF3 fesz\xFClts\xE9gei":"voltages in the simulation","K\xE9zi hidak\nA r\xE9z 3 lyukas szakaszokb\xF3l \xE1ll; a hidak (H\xEDd eszk\xF6z, B) k\xF6tik \xF6ssze a szomsz\xE9dos szakaszokat.\nAz \xE1ramk\xF6r: akku + \u2192 R1 \u2192 LED1 \u2192 akku \u2212.":`Manual bridges
75
75
  The copper is made of 3-hole sections; bridges (Bridge tool, B) connect neighboring sections.
76
76
  The circuit: battery + \u2192 R1 \u2192 LED1 \u2192 battery \u2212.`,"Pr\xF3b\xE1ld ki\nInd\xEDtsd a szimul\xE1ci\xF3t: a LED vil\xE1g\xEDt, kb. 6 mA folyik.\nT\xF6r\xF6lj ki egy hidat (E): a k\xF6r megszakad, a LED kialszik.":`Try it
77
77
  Start the simulation: the LED lights, about 6 mA flows.
@@ -132,37 +132,43 @@ In the simulation press the button repeatedly: the LED's brightness rises in ste
132
132
  Off delay: the output turns on at once at the button press and stays true for 2000 ms after release. The other choices of the Mode setting: on delay, pulse, filter.`,"Pr\xF3b\xE1ld ki\nSzimul\xE1ci\xF3ban nyomd meg \xE9s engedd el a gombot: a LED m\xE9g k\xE9t m\xE1sodpercig \xE9g. Az id\u0151t \xE9s a m\u0171k\xF6d\xE9st a blokk be\xE1ll\xEDt\xE1s\xE1ban m\xF3dos\xEDthatod.":`Try it
133
133
  In the simulation press and release the button: the LED stays on for two more seconds. You can change the time and the mode in the block's settings.`,"Saj\xE1t alkatr\xE9sz: XOR modul bels\u0151 kapcsol\xE1ssal":"Custom part: an XOR module with an internal circuit","Egy saj\xE1t \u201EXOR modul\u201D k\xE9t gombbal \xE9s egy LED-del. A modul m\u0171k\xF6d\xE9se az Alkatr\xE9sz-szerkeszt\u0151 M\u0171k\xF6d\xE9s f\xFCl\xE9n, diagramon l\xE1tszik.":"A custom \u201CXOR module\u201D with two buttons and an LED. The module's behavior is shown as a diagram on the Part editor's Behavior tab.","bels\u0151 kapcsol\xE1s diagramon":"internal circuit as a diagram","logika a szimul\xE1ci\xF3ban":"logic in the simulation","Saj\xE1t alkatr\xE9sz\nAz U1 egy saj\xE1t alkatr\xE9sz: l\xE1bai VCC, GND, A, B, Y. Jel\xF6ld ki, \xE9s a tulajdons\xE1gai k\xF6zt az \u201EAlkatr\xE9sz szerkeszt\xE9se\u201D gombbal nyisd meg: a M\u0171k\xF6d\xE9s f\xFCl\xF6n a bels\u0151 kapcsol\xE1s diagramja (L\xE1b \u2192 KIZ\xC1R\xD3 VAGY \u2192 Kimenet).":`Custom part
134
134
  U1 is a custom part with pins VCC, GND, A, B, Y. Select it and open it with the \u201CEdit part\u201D button in its properties: the Behavior tab shows the internal circuit diagram (Pin \u2192 XOR \u2192 Output).`,"Pr\xF3b\xE1ld ki\nSzimul\xE1ci\xF3ban a LED akkor vil\xE1g\xEDt, ha pontosan az egyik gomb van lenyomva. A szerkeszt\u0151ben a kaput \xC9S-re cser\xE9lve \xE9s mentve a panelon is \xFAgy m\u0171k\xF6dik.":`Try it
135
- In the simulation the LED lights when exactly one button is pressed. In the editor, change the gate to AND and save, and it works that way on the board too.`,"Minden k\xE9zi cs\xEDkv\xE1g\xE1s t\xF6rl\xE9se (az automatikusak maradnak)":"Delete every manual strip cut (automatic ones stay)","K\xE9zi v\xE1g\xE1sok t\xF6rl\xE9se":"Delete manual cuts","K\xE9zi v\xE1g\xE1sok t\xF6rl\xE9se ({n})":"Delete manual cuts ({n})",cs\u00EDkv\u00E1g\u00E1s:"strip cut","Cs\xEDkv\xE1g\xE1s: furat":"Strip cut: drilled hole","Cs\xEDkv\xE1g\xE1s: r\xE9s":"Strip cut: gap",automatikus:"automatic","Az automatikus cs\xEDkv\xE1g\xE1s tette ide, mert a cs\xEDkon k\xE9t k\xFCl\xF6nb\xF6z\u0151 h\xE1l\xF3zat l\xE1ba van. T\xF6rl\xE9s ut\xE1n ide nem ker\xFCl \xFAjra; ha lehet, a program a k\xE9t l\xE1b k\xF6z\xF6tt m\xE1shol v\xE1g.":"Placed by automatic strip cutting because the strip carries pins of two different nets. Once deleted it will not come back here; if possible, the program cuts elsewhere between the two pins.","{n} k\xE9zi v\xE1g\xE1s t\xF6r\xF6lve. Visszavon\xE1s: Ctrl+Z.":"{n} manual cut deleted. Undo: Ctrl+Z.||{n} manual cuts deleted. Undo: Ctrl+Z.","Automatikus v\xE1g\xE1s t\xF6r\xF6lve: ide nem ker\xFCl \xFAjra; ha kell, a program m\xE1shol v\xE1gja el a cs\xEDkot.":"Automatic cut deleted: it will not come back here; if needed, the program cuts the strip elsewhere.","Az agent dolgozik a terven \u2013 a k\xE9zi szerkeszt\xE9s addig sz\xFCnetel.":"The agent is working on the design \u2013 manual editing is paused until it finishes.",Agent:"Agent","Terv \xE1ttekint\xE9se":"Reviewing the design","Alkatr\xE9szek keres\xE9se":"Searching parts","Alkatr\xE9sz adatai":"Part details","Alkatr\xE9sz l\xE1bai":"Part pins",Lerak\u00E1s:"Placing",Param\u00E9terek:"Parameters",\u00DAtvonalak:"Routing","GPIO m\xF3d":"GPIO mode",Panelk\u00E9p:"Board image","Az API-kulcs \xE9rv\xE9nytelen vagy nincs jogosults\xE1ga. Ellen\u0151rizd a be\xE1ll\xEDt\xE1sokban.":"The API key is invalid or not authorised. Check it in the settings.","Az Anthropic-fi\xF3kodon nincs el\xE9g egyenleg. A console.anthropic.com oldalon t\xF6ltheted fel.":"Your Anthropic account has insufficient credit. You can top it up at console.anthropic.com.","T\xFAl sok k\xE9r\xE9s r\xF6vid id\u0151 alatt (sebess\xE9gkorl\xE1t). V\xE1rj egy kicsit, \xE9s pr\xF3b\xE1ld \xFAjra.":"Too many requests in a short time (rate limit). Wait a little and try again.","Az API most t\xFAlterhelt. Pr\xF3b\xE1ld \xFAjra kicsit k\xE9s\u0151bb.":"The API is overloaded right now. Try again a bit later.","Nem siker\xFClt el\xE9rni az API-t (h\xE1l\xF3zati hiba). Ellen\u0151rizd a kapcsolatot.":"Could not reach the API (network error). Check your connection.","Le\xE1ll\xEDtva.":"Stopped.","A feladat t\xFAl sok l\xE9p\xE9sb\u0151l \xE1llt, ez\xE9rt meg\xE1llt. \xCDrd meg, folytassa-e.":"The task took too many steps, so it stopped. Tell it whether to continue.","Hiba az API-h\xEDv\xE1sban: {x}":"API error: {x}","Agent m\xF3d":"Agent mode",Megbesz\u00E9l\u00E9s:"Discuss","Megbesz\xE9l\xE9s: az agent olvassa \xE9s elemzi a tervet, javasol, de nem m\xF3dos\xEDt":"Discuss: the agent reads and analyses the design and makes suggestions, but does not change it",Megval\u00F3s\u00EDt\u00E1s:"Build","Megval\xF3s\xEDt\xE1s: az agent m\xF3dos\xEDthatja a tervet (egy feladat egy l\xE9p\xE9sben visszavonhat\xF3)":"Build: the agent may change the design (each task can be undone in one step)","\xDAj besz\xE9lget\xE9s":"New conversation","API-kulcs \xE9s modell":"API key and model","Anthropic API-kulcs":"Anthropic API key",Modell:"Model","Megjegyz\xE9s ebben a b\xF6ng\xE9sz\u0151ben":"Remember in this browser","A kulcs csak ebben a b\xF6ng\xE9sz\u0151ben marad; a k\xE9r\xE9sek k\xF6zvetlen\xFCl az Anthropic API-hoz mennek, a haszn\xE1lat d\xEDj\xE1t a saj\xE1t fi\xF3kod fizeti. Kulcsot a {x} oldalon kaphatsz.":"The key stays in this browser only; requests go directly to the Anthropic API and usage is billed to your own account. You can get a key at {x}.","Kulcs t\xF6rl\xE9se":"Remove key","Mit \xE9p\xEDts\xFCnk? Pl. \u201ETegy\xE9l egy LED-et el\u0151t\xE9t-ellen\xE1ll\xE1ssal a GP15-re.\u201D":"What shall we build? E.g. \u201CAdd an LED with a series resistor on GP15.\u201D","Mit besz\xE9lj\xFCnk meg? Pl. \u201EMilyen tranzisztorral kapcsoljak egy 12 V-os ventil\xE1tort?\u201D":"What shall we discuss? E.g. \u201CWhich transistor should switch a 12 V fan?\u201D","\xDCzenet az agentnek":"Message to the agent",K\u00FCld\u00E9s:"Send","Dolgozik\u2026":"Working\u2026","\xCDrd le, mit szeretn\xE9l: az agent lerakja \xE9s bek\xF6ti az alkatr\xE9szeket, ellen\u0151rzi a Probl\xE9m\xE1kat, \xE9s szimul\xE1l. Nagyobb v\xE1ltoztat\xE1s el\u0151tt tervet mutat \xE9s r\xE1k\xE9rdez. Minden feladat egy l\xE9p\xE9sben visszavonhat\xF3.":"Describe what you want: the agent places and connects parts, checks the Problems and simulates. Before larger changes it shows a plan and asks. Every task can be undone in one step.","Megbesz\xE9l\xE9s m\xF3d: az agent l\xE1tja a tervet, sz\xE1mol, magyar\xE1z \xE9s javasol, de nem m\xF3dos\xEDt. \xC9p\xEDt\xE9shez v\xE1lts Megval\xF3s\xEDt\xE1s m\xF3dra.":"Discuss mode: the agent sees the design, calculates, explains and suggests, but does not change anything. Switch to Build mode to build.","Az agenthez saj\xE1t Anthropic API-kulcs kell. Add meg fent; a kulcs csak ebben a b\xF6ng\xE9sz\u0151ben t\xE1rol\xF3dik.":"The agent needs your own Anthropic API key. Enter it above; it is stored only in this browser.","{i} be / {o} ki token":"{i} in / {o} out tokens","A v\xE1ltoztat\xE1sok egy l\xE9p\xE9sben visszavonhat\xF3k (Ctrl+Z).":"The changes can be undone in one step (Ctrl+Z).","V\xE1lasz m\xE1sol\xE1sa (markdown)":"Copy reply (markdown)","Nem siker\xFClt m\xE1solni":"Could not copy",Projektjegyzet:"Project notes","Kor\xE1bbi besz\xE9lget\xE9sek":"Earlier conversations","Mit \xE9p\xEDt\xFCnk, \xE9s mire jutottunk? Pl. \u201EMotorvez\xE9rl\u0151 ESP32-C3-mal, 1 cell\xE1s akkur\xF3l; DRV8833 meghajt\xF3; IN1 = GPIO4, IN2 = GPIO5.\u201D":"What are we building and what have we decided? E.g. \u201CMotor controller with ESP32-C3, from a 1-cell battery; DRV8833 driver; IN1 = GPIO4, IN2 = GPIO5.\u201D","A terv r\xE9sze: az agent minden besz\xE9lget\xE9s elej\xE9n megkapja, \xE9s a fontos d\xF6nt\xE9seket ide jegyzi. Te is szerkesztheted.":"Part of the design: the agent receives it at the start of every conversation and records important decisions here. You can edit it too.","Ehhez a projekthez m\xE9g nincs mentett besz\xE9lget\xE9s.":"No saved conversations for this project yet.","{n} \xFCzenet":"{n} message||{n} messages","Besz\xE9lget\xE9s t\xF6rl\xE9se":"Delete conversation","{n} sor":"{n} line||{n} lines",\u00FCres:"empty","A besz\xE9lget\xE9s kor\xE1bbi r\xE9sze \xF6sszefoglalva (az agent az \xF6sszefoglal\xF3t l\xE1tja), hogy a k\xE9r\xE9sek ne dr\xE1guljanak.":"The earlier part of the conversation was summarized (the agent sees the summary) to keep requests from getting expensive.","A t\xF6m\xF6r\xEDt\xE9s \xE9s az agent nem mozd\xEDtja; k\xE9zzel tov\xE1bbra is mozgathat\xF3.":"Compaction and the agent leave it in place; you can still move it by hand.","R\xF6gz\xEDtett hely":"Fixed position","R\xF6gz\xEDt\xE9s be/ki":"Fix position on/off","Ter\xFClet: {x}":"Footprint: {x}","A terv \xE1ltal foglalt ter\xFClet: {r}\xD7{c} lyuk (a panel {a}%-a); az alkatr\xE9szek ennek {f}%-\xE1t t\xF6ltik ki.":"Area used by the design: {r}\xD7{c} holes ({a}% of the board); part bodies fill {f}% of it.","H\xFAzd az ar\xE1ny \xE1ll\xEDt\xE1s\xE1hoz, dupla kattint\xE1s: fele-fele":"Drag to adjust the ratio; double-click: half and half","A panel \xE9s a program ar\xE1nya":"Board / program ratio","Az alkatr\xE9szek k\xF6zelebb ker\xFClnek egym\xE1shoz, kisebb ter\xFCletre, r\xF6videbb bek\xF6t\xE9ssel":"Moves parts closer together: smaller area, shorter wiring","T\xF6m\xF6r\xEDt\xE9s\u2026":"Compact\u2026",T\u00F6m\u00F6r\u00EDt\u00E9s:"Compact layout","Az alkatr\xE9szek k\xF6zelebb ker\xFClnek egym\xE1shoz \xE9s a bek\xF6t\xF6tt l\xE1bakhoz. A panelon az el\u0151n\xE9zet l\xE1tszik, halv\xE1nyan az eredeti helyekkel.":"Parts move closer to each other and to the pins they connect to. The board shows a preview, with the original positions faded.",Szoross\u00E1g:"Tightness","Laza \u2013 k\xF6nny\u0171 forraszt\xE1s":"Loose \u2013 easy soldering","Szoros \u2013 kis panel":"Tight \u2013 small board","A vez\xE9rl\u0151lap a hely\xE9n marad":"Keep the controller board in place","A kezel\u0151szervek (gomb, cs\xFAszka, csatlakoz\xF3) a hely\xFCk\xF6n maradnak":"Keep controls (buttons, sliders, connectors) in place","Elforgat\xE1s is":"Allow rotation","Csak a kijel\xF6ltek":"Selected parts only","Visszavonhat\xF3 (Ctrl+Z).":"Can be undone (Ctrl+Z).","T\xF6m\xF6r\xEDtve: {n} alkatr\xE9sz mozdult. Visszavon\xE1s: Ctrl+Z.":"Compacted: {n} part moved. Undo: Ctrl+Z.||Compacted: {n} parts moved. Undo: Ctrl+Z.",r\u00F6gz\u00EDtett:"fixed",vez\u00E9rl\u0151lap:"controller board",kezel\u0151szerv:"control","k\xE9zzel bek\xF6tve":"wired by hand","panelon k\xEDv\xFCl":"off the board","nincs kijel\xF6lve":"not selected",Most:"Now",Ut\u00E1na:"After","Ter\xFClet (lyuk)":"Area (holes)",Hidak:"Bridges",Vezet\u00E9kek:"Wires",Bek\u00F6tve:"Connected","Mozdul: {x}":"Moves: {x}","Ezekkel a be\xE1ll\xEDt\xE1sokkal nincs jobb elrendez\xE9s.":"No better layout with these settings.","A hely\xE9n marad: {x}":"Stays in place: {x}","A terv szell\u0151s: az alkatr\xE9szek a foglalt ter\xFClet {f}%-\xE1t t\xF6ltik ki \u2013 t\xF6m\xF6r\xEDtve kisebb panel \xE9s r\xF6videbb bek\xF6t\xE9s lehet.":"The layout is sparse: parts fill {f}% of the used area \u2013 compacting could give a smaller board and shorter wiring.","T\xF6m\xF6r\xEDt\xE9s el\u0151n\xE9zete":"Compaction preview",R\u00F6gz\u00EDt\u00E9s:"Fix in place","Claude Desktop vagy Claude Code vez\xE9relheti a tervet, \xE9l\u0151ben (MCP)":"Let Claude Desktop or Claude Code work on the design, live (MCP)","Claude-kapcsolat\u2026":"Claude connection\u2026",Claude:"Claude","Claude-kapcsolat (MCP)":"Claude connection (MCP)","A Claude Desktopb\xF3l vagy a Claude Code-b\xF3l is tervezhetsz: a Claude a saj\xE1t el\u0151fizet\xE9seddel dolgozik (API-kulcs nem kell), a v\xE1ltoz\xE1sok itt jelennek meg \xE9l\u0151ben, \xE9s visszavonhat\xF3k.":"You can also design from Claude Desktop or Claude Code: Claude works with your own subscription (no API key needed), and the changes appear here live and can be undone.","1. A proofboard-mcp szerver hozz\xE1ad\xE1sa (egyszer)":"1. Add the proofboard-mcp server (once)",Kliens:"Client","Claude Desktop":"Claude Desktop","Claude Code":"Claude Code","Be\xE1ll\xEDt\xE1sok \u203A Fejleszt\u0151 \u203A Konfigur\xE1ci\xF3 szerkeszt\xE9se (claude_desktop_config.json), majd a Claude \xFAjraind\xEDt\xE1sa:":"Settings \u203A Developer \u203A Edit Config (claude_desktop_config.json), then restart Claude:","Termin\xE1lban:":"In a terminal:","2. Kapcsol\xF3d\xE1s":"2. Connect",Csatlakoz\u00E1s:"Connect","Csak olvas\xE1s: a Claude l\xE1tja \xE9s ellen\u0151rzi a tervet, de nem m\xF3dos\xEDthatja":"Read only: Claude can see and check the design but cannot change it","Csatlakoz\xE1s automatikusan, amikor megnyitom a Proofboardot":"Connect automatically when I open Proofboard",Halad\u00F3:"Advanced",Port:"Port","A szerveren: --port":"On the server: --port","Am\xEDg a Claude dolgozik, a k\xE9zi szerkeszt\xE9s sz\xFCnetel, \xE9s fent s\xE1v jelzi. Egy-egy munkamenet egy l\xE9p\xE9sben visszavonhat\xF3 (Ctrl+Z).":"While Claude is working, manual editing pauses and a bar at the top shows it. Each working session can be undone in one step (Ctrl+Z).","A Claude m\xF3dos\xEDtotta a tervet. Visszavon\xE1s: Ctrl+Z.":"Claude changed the design. Undo: Ctrl+Z.","A Claude dolgozik a terven \u2013 a k\xE9zi szerkeszt\xE9s addig sz\xFCnetel.":"Claude is working on the design \u2013 manual editing is paused.",Lev\u00E1laszt\u00E1s:"Disconnect","{n} alkatr\xE9sz":"{n} part||{n} parts","Kapcsol\xF3dva: {c}":"Connected: {c}","Kapcsol\xF3d\xE1s\u2026":"Connecting\u2026","V\xE1rakoz\xE1s a szerverre: fut a Claude, \xE9s be van \xE1ll\xEDtva a proofboard-mcp?":"Waiting for the server: is Claude running, with proofboard-mcp set up?","Nincs kapcsolat: {e}":"Not connected: {e}","Nincs kapcsolat.":"Not connected.","Claude dolgozik":"Claude is working","csak olvas\xE1s":"read only","Claude: v\xE1rakoz\xE1s":"Claude: waiting","Claude Desktop-b\u0151v\xEDtm\xE9ny let\xF6lt\xE9se":"Download the Claude Desktop extension","proofboard.mcpb":"proofboard.mcpb","Kattints dupl\xE1n a let\xF6lt\xF6tt f\xE1jlra, \xE9s a Claude Desktopban v\xE1laszd a Telep\xEDt\xE9st (vagy: Be\xE1ll\xEDt\xE1sok \u203A Desktop app \u203A Extensions \u203A Manage, \xE9s h\xFAzd oda a f\xE1jlt). Node.js nem kell hozz\xE1.":"Double-click the downloaded file and choose Install in Claude Desktop (or: Settings \u203A Desktop app \u203A Extensions \u203A Manage, and drop the file there). No Node.js needed.","K\xE9zi be\xE1ll\xEDt\xE1s (claude_desktop_config.json)":"Manual setup (claude_desktop_config.json)","Ehhez Node.js 18 vagy \xFAjabb kell; a f\xE1jl ut\xE1n a Claude-ot \xFAjra kell ind\xEDtani.":"Requires Node.js 18 or newer; restart Claude after editing the file.","Termin\xE1lban (Node.js 18 vagy \xFAjabb kell hozz\xE1):":"In a terminal (requires Node.js 18 or newer):","A szerver csak a saj\xE1t g\xE9peden figyel (127.0.0.1), \xE9s csak a Proofboard oldal\xE1r\xF3l fogad kapcsolatot.":"The server only listens on your own computer (127.0.0.1) and only accepts connections from the Proofboard page.",Alkatr\u00E9szle\u00EDr\u00E1s:"Part definition","Saj\xE1t alkatr\xE9sz ment\xE9se":"Save custom part"};var GC={en:hz},UC="hu";function gz(e,t,r=UC){let n=r==="hu"?e:GC[r][e]??e;if(n.includes("||")){let[o,s]=n.split("||");n=t&&Number(t.n)===1?o:s}return t?n.replace(/\{(\w+)\}/g,(o,s)=>s in t?String(t[s]):o):n}var Gt=(e,t)=>t?e.replace(/\{(\w+)\}/g,(r,n)=>n in t?String(t[n]):r):e,E=e=>e;var h5=new RegExp("\\p{L}","u");var sa=class extends Error{constructor(r,n,o,s){super(r);this.pos=n;this.key=o;this.params=s}};function Tp(e,t=Gt){return e instanceof sa?e.key?t(e.key,e.params):e.message:e instanceof Error?e.message:String(e)}var oa=(e,t,r)=>new sa(Gt(e,r),t,e,r),bz={AND:"&",OR:"|",XOR:"^",NOT:"!"},yz={"&":"&","*":"&","\xB7":"&","|":"|","+":"|","^":"^","!":"!","~":"!","\xAC":"!"};function qC(e){let t=[],r=0;for(;r<e.length;){let n=e[r];if(/\s/.test(n)){r++;continue}if(n==="("||n===")"){t.push({k:n,v:n,pos:r,end:r+1}),r++;continue}if(yz[n]){t.push({k:"op",v:yz[n],pos:r,end:r+1}),r++;continue}let o=/^#?[A-Za-z0-9_]+/.exec(e.slice(r));if(o){let s=o[0],a=s.toUpperCase();s[0]!=="#"&&bz[a]?t.push({k:"op",v:bz[a],pos:r,end:r+s.length}):t.push({k:"id",v:s,pos:r,end:r+s.length}),r+=s.length;continue}throw new sa(`Ismeretlen jel: \u201E${n}\u201D`,r)}return t.push({k:"end",v:"",pos:e.length,end:e.length}),t}function aa(e){let t=qC(e),r=0,n=()=>t[r],o=()=>t[r++],s=(p,m,b)=>{let f=[b()];for(;n().k==="op"&&n().v===m;)o(),f.push(b());return f.length===1?f[0]:{t:p,args:f.flatMap(h=>h.t===p?h.args:[h])}},a=()=>s("or","|",i),i=()=>s("xor","^",l),l=()=>s("and","&",c),c=()=>n().k==="op"&&n().v==="!"?(o(),{t:"not",a:c()}):u(),u=()=>{let p=o();if(p.k==="("){let m=a();if(n().k!==")")throw oa(E("Hi\xE1nyzik a z\xE1r\xF3 z\xE1r\xF3jel"),n().pos);return o(),m}if(p.k==="id")return p.v==="0"||p.v==="1"?{t:"const",v:+p.v}:{t:"var",name:p.v};throw p.k==="end"?oa(E("Hi\xE1nyz\xF3 tag a kifejez\xE9s v\xE9g\xE9n"),p.pos):oa(E("Itt nem \xE1llhat: \u201E{x}\u201D"),p.pos,{x:p.v})};if(t.length===1)throw oa(E("\xDCres kifejez\xE9s"),0);let d=a();if(n().k!=="end")throw oa(E("F\xF6l\xF6sleges r\xE9sz: \u201E{x}\u201D"),n().pos,{x:e.slice(n().pos)});return d}function Vn(e,t=[]){if(e.t==="var")t.includes(e.name)||t.push(e.name);else if(e.t==="not")Vn(e.a,t);else if(e.t!=="const")for(let r of e.args)Vn(r,t);return t}function yr(e,t){switch(e.t){case"var":return t(e.name);case"const":return e.v;case"not":{let r=yr(e.a,t);return r==="X"?"X":r?0:1}case"and":{let r=!1;for(let n of e.args){let o=yr(n,t);if(o===0)return 0;o==="X"&&(r=!0)}return r?"X":1}case"or":{let r=!1;for(let n of e.args){let o=yr(n,t);if(o===1)return 1;o==="X"&&(r=!0)}return r?"X":0}case"xor":{let r=0;for(let n of e.args){let o=yr(n,t);if(o==="X")return"X";r^=o}return r}}}function Pl(e,t){if(e.startsWith("#")){let n=e.slice(1);return t.some(o=>o.id===n)?n:null}let r=t.filter(n=>n.name===e);return r.length===1?r[0].id:r.length>1?null:t.some(n=>n.id===e)?e:null}function vz(e,t){let r=t.split(".");if(r.length>1&&e.$opt&&e.$opt[r[0]])return e.$opt[r[0]][r[1]];let n=e;for(let o of r){if(n==null)return;n=n[o]}return n}function zz(e,t){let r=String(e),n=0,o=()=>{for(;r[n]===" ";)n++},s=()=>{o();let l=r[n];if(l==="("){n++;let u=i();return o(),n++,u}if(l==="-")return n++,-s();if(l==="+")return n++,s();let c=/^(\d+\.?\d*(?:e-?\d+)?|\.\d+)/.exec(r.slice(n));if(c)return n+=c[0].length,parseFloat(c[0]);if(c=/^[A-Za-z_$][\w.]*/.exec(r.slice(n)),c){n+=c[0].length;let u=vz(t,c[0]);return typeof u=="number"?u:parseFloat(String(u))||0}throw new Error("Hib\xE1s kifejez\xE9s: "+r)},a=()=>{let l=s();for(;;)if(o(),r[n]==="*")n++,l*=s();else if(r[n]==="/")n++,l/=s();else return l},i=()=>{let l=a();for(;;)if(o(),r[n]==="+")n++,l+=a();else if(r[n]==="-")n++,l-=a();else return l};return i()}function kr(e){let t=+e;if(!isFinite(t))return"";if(t===0)return"0";let r=Math.abs(t);for(let[n,o]of[[1e9,"G"],[1e6,"M"],[1e3,"k"],[1,""],[.001,"m"],[1e-6,"\xB5"],[1e-9,"n"],[1e-12,"p"]])if(r>=n*.99995)return+(t/n).toPrecision(3)+o;return String(+t.toPrecision(3))}var kz={si:kr,fix1:e=>(+e).toFixed(1),fix2:e=>(+e).toFixed(2)};function $l(e,t){return String(e).replace(/\{([^}|]+)(?:\|(\w+))?\}/g,(r,n,o)=>{let s=n.trim(),a=/^[A-Za-z_$][\w.]*$/.test(s)?vz(t,s):zz(s,t);return o&&kz[o]?kz[o](a):a==null?"":String(typeof a=="number"?+a.toPrecision(12):a)})}function ve(e,t){return typeof e=="number"?e:e==null?0:zz($l(e,t),t)}function Io(e,t){let r=t.props||{},n={label:t.label,$opt:{}};for(let o of e.params||[]){if(o.type==="names"){let a=r[o.key]??o.default;n[o.key]=typeof a=="string"?a:"";continue}if(o.type==="span"){let a=Math.round(+(r.dr??o.default[0]))||0,i=Math.round(+(r.dc??o.default[1]))||0;!a&&!i&&([a,i]=o.default),n.dr=a,n.dc=i;continue}let s=r[o.key];if((s==null||s==="")&&(s=o.default),o.options){let a=o.options.find(i=>String(i.v)===String(s))||o.options.find(i=>String(i.v)===String(o.default))||o.options[0];n[o.key]=a.v,n.$opt[o.key]=a}else{let a=Number(s);isFinite(a)||(a=o.default),o.type==="int"&&(a=Math.round(a)),o.min!=null&&(a=Math.max(o.min,a)),o.max!=null&&(a=Math.min(o.max,a)),n[o.key]=a}}return n}function To(e,t){let r={};for(let c of t.params||[])c.type==="span"?(r.dr=c.default[0],r.dc=c.default[1]):r[c.key]=c.default;let n=new WeakMap,o=(c,u)=>{let d=$l(c.id,u),p=t.pinTable&&t.pinTable[d],m=c.name!=null?$l(c.name,u):p?p[0]:d,b={id:d,name:m,lr:ve(c.lr,u),lc:ve(c.lc,u),role:c.role||(p?p[1]:"h")};/^\d+$/.test(d)&&(b.num=+d);let f=c.caps||p&&p[2];return f&&f.length&&(b.caps=[...f]),c.fn&&(b.fn=c.fn),c.vmin!=null&&(b.vmin=ve(c.vmin,u)),c.vmax!=null&&(b.vmax=ve(c.vmax,u)),b},s=c=>{let u=JSON.stringify(c.props||{}),d=n.get(c);if(d&&d.key===u)return d.pins;let p=Io(t,c),m=[];for(let b of t.pins)if(b.repeat!=null){let f=Math.max(0,Math.round(ve(b.repeat,p)));for(let h=0;h<f;h++)m.push(o(b,{...p,i:h}))}else m.push(o(b,p));for(let b of t.params||[])b.type==="names"&&String(p[b.key]||"").split(",").forEach((f,h)=>{let g=f.trim();g&&m[h]&&(m[h].name=g)});return n.set(c,{key:u,pins:m}),m},a=()=>{let c=[];for(let u of t.groups||[])for(let d of u.slice(1))c.push([u[0],d]);return c},i=c=>{let u=t.bounds||{pad:.45},d=Io(t,c);if(u.r&&u.c)return{r0:ve(u.r[0],d),r1:ve(u.r[1],d),c0:ve(u.c[0],d),c1:ve(u.c[1],d)};let p=s(c),m=u.pad??.45,b=p.map(w=>w.lr),f=p.map(w=>w.lc),h=Math.min(...b)-m,g=Math.max(...b)+m,v=Math.min(...f)-m,_=Math.max(...f)+m;if(u.mid!=null){let w=(b[0]+b[b.length-1])/2,k=(f[0]+f[f.length-1])/2;h=Math.min(h,w-u.mid),g=Math.max(g,w+u.mid),v=Math.min(v,k-u.mid),_=Math.max(_,k+u.mid)}return{r0:h,r1:g,c0:v,c1:_}},l=(t.model||[]).some(c=>c.el==="mcu");return{type:e,def:t,name:t.name,fp:t.fp,prefix:t.prefix,cat:t.cat||"Egy\xE9b",props:r,pins:s,internal:a,bounds:i,mcu:l}}function _z(e){let t={};for(let[r,n]of Object.entries(e))t[r]=To(r,n);return t}var KC=new Set(["rect","circle","poly","line","text","axial","radial","link","dial"]),HC=new Set(["value","number","int","select","color","span","names"]),Cp={resistor:["a","b"],diode:["a","k"],source:["p","n"],nmos:["d","g","s"],capacitor:["a","b"],npn:["c","b","e"],motor:["a","b"],servo:["vp","gnd","sig"],logic:["vcc","gnd"],stepper:["com","a","b","c","d"],mcu:["gnd","vsys","v33"]},WC={resistor:["ohm"],diode:["vf","ron","imax"],source:["v","rint"],nmos:["vth","ron","imax"],capacitor:["f","vmax"],npn:["beta","vbe","vcesat","imax"],motor:["ohm","vnom"],servo:["ohm","pmin","pmax"],logic:["vih","vil","rout","imax"],stepper:["ohm","steps","rotor"],mcu:["vreg","vmax","igpio"]},wz=["i2c.sda","i2c.scl","spi.mosi","spi.miso","spi.sck","spi.cs","uart.rx","uart.tx"],Or=e=>!!e&&typeof e=="object"&&!Array.isArray(e);function ia(e,t=Gt){let r=[],n=(p,m)=>r.push({level:"error",path:p,msg:m}),o=(p,m)=>r.push({level:"warn",path:p,msg:m});if(!Or(e))return n("",t("A le\xEDr\xE1s nem objektum.")),r;let s=e;if((typeof s.name!="string"||!s.name.trim())&&n("name",t("Hi\xE1nyzik a n\xE9v.")),(typeof s.prefix!="string"||!/^[A-Za-z][A-Za-z0-9]{0,5}$/.test(s.prefix))&&n("prefix",t("Az el\u0151tag 1\u20136 karakter, bet\u0171vel kezd\u0151dik (pl. U, MOD, J).")),typeof s.fp!="string"&&o("fp",t("Hi\xE1nyzik a l\xE1bk\xE9p r\xF6vid le\xEDr\xE1sa.")),!Array.isArray(s.pins)||!s.pins.length)return n("pins",t("Legal\xE1bb egy l\xE1b kell.")),r;let a=new Set;(s.params||[]).forEach((p,m)=>{let b=`params[${m}]`;if(!Or(p)||typeof p.key!="string"||!/^[A-Za-z_]\w*$/.test(p.key)){n(b+".key",t("\xC9rv\xE9nytelen param\xE9terkulcs."));return}a.has(p.key)&&n(b+".key",t("K\xE9tszer szerepel: {a}",{a:p.key})),a.add(p.key),HC.has(p.type)||n(b+".type",t("Ismeretlen param\xE9tert\xEDpus: {a}",{a:String(p.type)})),(p.type==="select"||p.type==="color")&&(!Array.isArray(p.options)||!p.options.length)&&n(b+".options",t("A v\xE1laszthat\xF3 t\xEDpushoz opci\xF3k kellenek.")),p.default===void 0&&n(b+".default",t("Hi\xE1nyzik az alap\xE9rt\xE9k."))});let i=[];try{let p=To("_check",s),m={id:"_",type:"_check",label:(s.prefix||"X")+"1",r:0,c:0,rot:0,mir:!1,props:{...p.props}};i=p.pins(m),p.bounds(m)}catch(p){return n("pins",t("A l\xE1bak nem \xE9rt\xE9kelhet\u0151k ki: ")+(p instanceof Error?p.message:String(p))),r}s.pins.forEach((p,m)=>{(!Or(p)||typeof p.id!="string"||!p.id.trim())&&n(`pins[${m}].id`,t("Hi\xE1nyzik a l\xE1b azonos\xEDt\xF3ja."))}),i.length||n("pins",t("A l\xE1bak list\xE1ja alap\xE9rt\xE9kekkel \xFCres."));let l=new Set,c=new Map;i.forEach((p,m)=>{(!isFinite(p.lr)||!isFinite(p.lc))&&n(`pins[${m}]`,t("{a}: a helye nem sz\xE1m.",{a:p.id})),(Math.round(p.lr)!==p.lr||Math.round(p.lc)!==p.lc)&&n(`pins[${m}]`,t("{a}: a l\xE1b csak eg\xE9sz lyukpoz\xEDci\xF3n lehet.",{a:p.id})),l.has(p.id)&&n(`pins[${m}].id`,t("K\xE9tszer szerepel a l\xE1b: {a}",{a:p.id})),l.add(p.id);let b=p.lr+":"+p.lc;c.has(b)&&n(`pins[${m}]`,t("{a} \xE9s {b} ugyanabban a lyukban ({c}).",{a:p.id,b:c.get(b)??"",c:b})),c.set(b,p.id);for(let f of["vmin","vmax"])p[f]!=null&&!isFinite(p[f])&&n(`pins[${m}].${f}`,t("{a}: {b} nem sz\xE1m.",{a:p.id,b:f}));p.vmin!=null&&p.vmax!=null&&p.vmin>=p.vmax&&n(`pins[${m}]`,t("{a}: a minim\xE1lis fesz\xFClts\xE9g nem lehet nagyobb a maxim\xE1lisn\xE1l.",{a:p.id})),p.fn!=null&&!wz.includes(p.fn)&&o(`pins[${m}].fn`,t("{a}: ismeretlen buszfunkci\xF3: {b} (lehet: {c})",{a:p.id,b:p.fn,c:wz.join(", ")})),(p.vmin!=null||p.vmax!=null)&&p.role!=="vin"&&o(`pins[${m}]`,t("{a}: fesz\xFClts\xE9gtartom\xE1ny csak t\xE1pbemenetn\xE9l (vin) sz\xE1m\xEDt.",{a:p.id}))}),i.some(p=>p.role==="vin")&&!i.some(p=>p.role==="gnd")&&o("pins",t("Van t\xE1pbemenet, de nincs GND-l\xE1b: a t\xE1pfesz\xFClts\xE9g a panel f\xF6ldj\xE9hez k\xE9pest sz\xE1m\xEDt."));let u=new Map;(s.groups||[]).forEach((p,m)=>{if(!Array.isArray(p)||p.length<2){n(`groups[${m}]`,t("Egy csoportban legal\xE1bb k\xE9t l\xE1b kell."));return}for(let b of p)l.has(b)||n(`groups[${m}]`,t("Nincs ilyen l\xE1b: {a}",{a:b})),u.has(b)&&o(`groups[${m}]`,t("{a} t\xF6bb csoportban is szerepel.",{a:b})),u.set(b,m)});let d=(()=>{try{let p=To("_check",s);return Io(s,{label:"X1",props:{...p.props}})}catch{return{$opt:{}}}})();if((s.model||[]).forEach((p,m)=>{let b=`model[${m}]`;if(!Or(p)||!(p.el in Cp)){n(b+".el",`Ismeretlen modell-elem: ${Or(p)?String(p.el):"?"}`);return}let f=p;for(let g of Cp[p.el])typeof f[g]!="string"||!f[g]?n(`${b}.${g}`,t("Hi\xE1nyzik a(z) {a} kivezet\xE9s l\xE1ba.",{a:g})):l.has(f[g])||n(`${b}.${g}`,t("Nincs ilyen l\xE1b: {a}",{a:f[g]}));p.el==="mcu"&&f.vbus!=null&&(typeof f.vbus!="string"||!l.has(f.vbus))&&n(`${b}.vbus`,t("Nincs ilyen l\xE1b: {a}",{a:String(f.vbus)}));let h=Cp[p.el].map(g=>f[g]).filter(g=>typeof g=="string"&&g);new Set(h).size!==h.length&&n(b,t("Egy elem k\xE9t kivezet\xE9se nem lehet ugyanaz a l\xE1b."));for(let g of WC[p.el])if(f[g]!=null)try{let v=ve(f[g],d);if(!isFinite(v))throw new Error(t("nem sz\xE1m"))}catch{n(`${b}.${g}`,t("{a}: nem \xE9rtelmezhet\u0151 \xE9rt\xE9k.",{a:g}))}if(p.el==="logic"){let g=Array.isArray(f.outs)?f.outs:[],v=Array.isArray(f.regs)?f.regs:[],_=new Set;v.forEach((A,Z)=>{let D=`${b}.regs[${Z}]`,B=String(A.name??"");/^[A-Za-z_][A-Za-z0-9_]*$/.test(B)?_.has(B)?n(D,t("K\xE9tszer szerepel a t\xE1rol\xF3: {a}",{a:B})):i.some(K=>K.name===B)&&n(D,t("{a}: a t\xE1rol\xF3 neve nem lehet egy l\xE1b neve.",{a:B})):n(D,t("T\xE1rol\xF3 neve: bet\u0171vel kezd\u0151d\u0151 azonos\xEDt\xF3 kell (most: \u201E{a}\u201D).",{a:B})),_.add(B)});let w=A=>_.has(A)||!!Pl(A,i),k=(A,Z,D)=>{if(A==null||String(A).trim()===""){D&&n(Z.split("|")[0],t("{a}: hi\xE1nyzik.",{a:Z.split("|")[1]}));return}try{for(let B of Vn(aa(String(A))))w(B)||n(Z.split("|")[0],t("{a}: nincs ilyen l\xE1b vagy t\xE1rol\xF3: {b}",{a:Z.split("|")[1],b:B}))}catch(B){n(Z.split("|")[0],`${Z.split("|")[1]}: ${Tp(B,t)}`)}};v.forEach((A,Z)=>{let D=`${b}.regs[${Z}]`,B=String(A.name??"?");k(A.clk,t("{a}|{b} \xF3rajele",{a:D,b:B}),!0),k(A.d,t("{a}|{b} k\xF6vetkez\u0151 \xE9rt\xE9ke (D)",{a:D,b:B}),!0),k(A.reset,t("{a}|{b} t\xF6rl\xE9se",{a:D,b:B}),!1),k(A.set,t("{a}|{b} be\xE1ll\xEDt\xE1sa",{a:D,b:B}),!1),A.edge!=null&&A.edge!=="rise"&&A.edge!=="fall"&&n(D,t("{a}: az \xE9l rise vagy fall lehet.",{a:B}))}),g.length||n(`${b}.outs`,t("A logik\xE1hoz legal\xE1bb egy kimenet kell."));let P=new Set;g.forEach((A,Z)=>{let D=`${b}.outs[${Z}]`,B=String(A.pin??"");if(!l.has(B)){n(D,t("Nincs ilyen kimeneti l\xE1b: {a}",{a:B||"\u2013"}));return}let K=i.find(x=>x.id===B).name;P.has(B)&&n(D,t("{a}: k\xE9t kifejez\xE9s hajtja ugyanazt a kimenetet.",{a:K})),P.add(B),(B===f.vcc||B===f.gnd)&&n(D,t("{a}: a t\xE1p- vagy GND-l\xE1b nem lehet kimenet.",{a:K}));for(let[x,$]of[["expr",t("kifejez\xE9s")],["oe",t("enged\xE9lyez\xE9s")]]){if(A[x]==null||String(A[x]).trim()===""){x==="expr"&&n(D,t("{a}: hi\xE1nyzik a kifejez\xE9s.",{a:K}));continue}try{let F=aa(String(A[x]));for(let y of Vn(F))w(y)||n(D,t("{a} {b}: nincs ilyen (vagy nem egy\xE9rtelm\u0171) l\xE1b vagy t\xE1rol\xF3: {c}",{a:K,b:$,c:y}))}catch(F){n(D,`${K} ${$}: ${Tp(F,t)}`)}}A.type!=null&&A.type!=="pp"&&A.type!=="od"&&n(D,t("{a}: a kimenet t\xEDpusa pp vagy od lehet.",{a:K}))})}}),s.socket!=null){let p=(m,b)=>(s.params||[]).find(f=>f.key===m&&b.includes(f.type));if(!Or(s.socket))n("socket",t("A csatlakoz\xF3 le\xEDr\xE1sa objektum."));else if(s.socket.count!=null&&!p(s.socket.count,["int"])&&n("socket.count",t("A csatlakoz\xF3 l\xE1bsz\xE1m\xE1hoz eg\xE9sz (int) param\xE9ter kell.")),s.socket.names!=null&&!p(s.socket.names,["names"])&&n("socket.names",t("A csatlakoz\xF3 l\xE1bneveihez names t\xEDpus\xFA param\xE9ter kell.")),s.socket.pins!=null&&(!Array.isArray(s.socket.pins)||!s.socket.pins.length))n("socket.pins",t("A csatlakoz\xF3 l\xE1bainak list\xE1ja nem lehet \xFCres."));else for(let m of s.socket.pins||[])l.has(m)||n("socket.pins",t("A csatlakoz\xF3ban nincs ilyen l\xE1b: {a}",{a:m}))}return(s.controls||[]).forEach((p,m)=>{if(Or(p)&&p.kind==="slider"){let b=(s.params||[]).find(f=>f.key===p.key);b?(!["number","int","value"].includes(b.type)||b.min==null||b.max==null)&&n(`controls[${m}]`,t("A cs\xFAszka param\xE9tere ({a}) sz\xE1m legyen, min \xE9s max \xE9rt\xE9kkel.",{a:b.key})):n(`controls[${m}]`,t("A cs\xFAszk\xE1hoz nincs ilyen param\xE9ter: {a}",{a:String(p.key)}));return}if(!Or(p)||p.kind!=="press"){n(`controls[${m}]`,t("Ismeretlen vez\xE9rl\u0151."));return}(!Array.isArray(p.closes)||!p.closes.length)&&n(`controls[${m}]`,t("Meg kell adni, mely l\xE1bak z\xE1r\xF3dnak \xF6ssze.")),(p.closes||[]).forEach(b=>{for(let f of b)l.has(f)||n(`controls[${m}]`,t("Nincs ilyen l\xE1b: {a}",{a:f}))})}),(s.graphics||[]).forEach((p,m)=>{(!Or(p)||!KC.has(p.shape))&&n(`graphics[${m}].shape`,`Ismeretlen rajzelem: ${Or(p)?String(p.shape):"?"}`)}),s.mount!=null&&s.mount!=="board"&&s.mount!=="off"&&n("mount",t("Ismeretlen szerel\xE9s: {a} (board vagy off).",{a:String(s.mount)})),(s.graphics||[]).some(p=>(p.layer||"body")==="body")||o("graphics",t("Nincs test (body r\xE9teg): az alkatr\xE9sz csak l\xE1bakk\xE9nt l\xE1tszik.")),r}var la=e=>e.some(t=>t.level==="error");function xz(e,t){let r="c_"+(e.normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"").slice(0,24)||"alkatresz"),n=r,o=2;for(;t(n);)n=`${r}_${o++}`;return n}var Sz=e=>e.normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase();function JC(e,t){let r=Array.isArray(e.pins)?e.pins:[],n=[e.name,e.fp,e.cat||"",e.prefix,...t?[t(e.name),t(e.fp),e.cat?t(e.cat):""]:[],...r.flatMap(o=>[o.name!=null?String(o.name):"",o.role||"",o.fn||"",...o.caps||[]]),...Object.values(e.pinTable||{}).flatMap(o=>[o[0],o[1],...o[2]||[]]),...(e.model||[]).map(o=>o.el)];return Sz(n.filter(Boolean).join(" "))}function Pz(e,t,r){let n=Sz(t).split(/\s+/).filter(Boolean);if(!n.length)return!0;let o=JC(e,r);return n.every(s=>o.includes(s))}var $z={1:"GP0",2:"GP1",3:"GND",4:"GP2",5:"GP3",6:"GP4",7:"GP5",8:"GND",9:"GP6",10:"GP7",11:"GP8",12:"GP9",13:"GND",14:"GP10",15:"GP11",16:"GP12",17:"GP13",18:"GND",19:"GP14",20:"GP15",21:"GP16",22:"GP17",23:"GND",24:"GP18",25:"GP19",26:"GP20",27:"GP21",28:"GND",29:"GP22",30:"RUN",31:"GP26",32:"GP27",33:"AGND",34:"GP28",35:"ADC_VREF",36:"3V3",37:"3V3_EN",38:"GND",39:"VSYS",40:"VBUS"},Ez=e=>e==="GND"||e==="AGND"?"gnd":e==="3V3"?"p33":e==="VBUS"||e==="VSYS"?"pwr":/^GP\d/.test(e)?"gpio":"misc",YC={red:{vf:2,c:"#e03131",l:"piros"},orange:{vf:2,c:"#fd7e14",l:"narancs"},yellow:{vf:2.1,c:"#f2b705",l:"s\xE1rga"},green:{vf:2.2,c:"#2f9e44",l:"z\xF6ld"},blue:{vf:3,c:"#1c7ed6",l:"k\xE9k"},violet:{vf:3.2,c:"#9c36b5",l:"lila"},white:{vf:3,c:"#f1f3f5",l:"feh\xE9r"}},XC=new Set(["GP26","GP27","GP28"]),Rz={};function QC(e){let t=[`i2c${e>>1&1}.${e&1?"scl":"sda"}`,`spi${e>>3&1}.${["miso","cs","sck","mosi"][e&3]}`];return(e&3)<2&&t.push(`uart${(e>>2^e>>3)&1}.${e&1?"rx":"tx"}`),t.push(`pwm${e>>1&7}.${e&1?"b":"a"}`),t}for(let e in $z){let t=$z[e],r=/^GP(\d+)$/.exec(t),n=[...XC.has(t)?["adc"]:[],...r?QC(+r[1]):[]];Rz[e]=n.length?[t,Ez(t),n]:[t,Ez(t)]}var Az=Array.from({length:13},(e,t)=>{let r=Math.PI*t/12;return[+(.35-1.25*Math.sin(r)).toFixed(3),+(1+1.45*Math.cos(r)).toFixed(3)]});function El(e,t,r,n,o,s,a,i=[]){let l=e/2;return{name:t,fp:r,prefix:"U",cat:"Logika",pins:n.map((c,u)=>{let d=u+1,p=d<=l?3:0,m=d<=l?d-1:e-d,b=o(c);return b==="vin"?{id:String(d),name:c,lr:p,lc:m,role:b,vmin:2,vmax:6}:{id:String(d),name:c,lr:p,lc:m,role:b}}),bounds:{r:[-.4,3.4],c:[-.6,l-.4]},graphics:[{shape:"rect",layer:"body",r:[.45,2.55],c:[-.6,l-.4],fill:"#202124",stroke:"#000",width:1.2,xray:{stroke:"#333"}},{shape:"circle",layer:"detail",at:[1.5,-.6],rad:.32,fill:"#3c3f44"},{shape:"circle",layer:"detail",at:[2.15,-.1],rad:.1,fill:"#9aa0a6"},{shape:"text",layer:"detail",at:[1.5,(l-1)/2],text:"{label} \xB7 "+t.split(" ")[0],size:.42,min:7,color:"#c8ccd0",xray:{color:"#1d231f"}}],pinLabels:{mode:"name",off:.62,side:"in",minP:15,colors:{sig:"#dee2e6",out:"#ffd8a8",vin:"#ffc9d6",gnd:"#adb5bd"}},model:[{el:"logic",vcc:String(n.indexOf("VCC")+1),gnd:String(n.indexOf("GND")+1),outs:s.map(([c,u,d])=>({pin:String(n.indexOf(c)+1),expr:u,...d?{oe:d}:{}})),...i.length?{regs:i}:{},rout:50}],meta:{help:a}}}var Al=e=>t=>t==="VCC"?"vin":t==="GND"?"gnd":e.includes(t)?"out":"sig",eN=["1A","1B","1Y","2A","2B","2Y","GND","3Y","3A","3B","4Y","4A","4B","VCC"],Oz=["1Y","2Y","3Y","4Y"],tN=["1E","1A0","1A1","1Y0","1Y1","1Y2","1Y3","GND","2Y3","2Y2","2Y1","2Y0","2A1","2A0","2E","VCC"],rN=["1Y0","1Y1","1Y2","1Y3","2Y0","2Y1","2Y2","2Y3"],nN=["1CLR","1D","1CLK","1PRE","1Q","1Qn","GND","2Qn","2Q","2PRE","2CLK","2D","2CLR","VCC"],oN=["1Q","1Qn","2Q","2Qn"],Iz=e=>({name:"F"+e,clk:`${e}CLK`,d:`${e}D`,reset:`!${e}CLR`,set:`!${e}PRE`}),sN=["QB","QC","QD","QE","QF","QG","QH","GND","QHs","SRCLR","SRCLK","RCLK","OE","SER","QA","VCC"],aN=["QA","QB","QC","QD","QE","QF","QG","QH","QHs"],iN=[...[0,1,2,3,4,5,6,7].map(e=>({name:"S"+e,clk:"SRCLK",d:e?"S"+(e-1):"SER",reset:"!SRCLR"})),...[0,1,2,3,4,5,6,7].map(e=>({name:"R"+e,clk:"RCLK",d:"S"+e}))],Tz=e=>[0,1,2,3].map(t=>[`${e}Y${t}`,`!(!${e}E & ${t&2?"":"!"}${e}A1 & ${t&1?"":"!"}${e}A0)`]),_e=(e,...t)=>["GPIO"+e,"GPIO"+e,"gpio",t],Cz=(e,t)=>[...e.map(([r,n,o,s],a)=>({id:r,name:n,role:o,lr:0,lc:a,...s&&s.length?{caps:[...s]}:{}})),...t.map(([r,n,o,s],a)=>({id:r,name:n,role:o,lr:"{span}",lc:a,...s&&s.length?{caps:[...s]}:{}}))],jz=[["VIN","VIN","pwr"],["GND","GND","gnd"],_e(13,"adc2","spi2.mosi"),_e(12,"adc2","strap","spi2.miso"),_e(14,"adc2","spi2.sck"),_e(27,"adc2"),_e(26,"adc2","dac"),_e(25,"adc2","dac"),_e(33,"adc"),_e(32,"adc"),_e(35,"adc","in","nopull"),_e(34,"adc","in","nopull"),_e(39,"adc","in","nopull"),_e(36,"adc","in","nopull"),["EN","EN","misc"]],Mz=[["3V3","3V3","p33"],["GND2","GND","gnd"],_e(15,"adc2","strap","spi2.cs"),_e(2,"adc2","strap","led"),_e(4,"adc2"),_e(16,"uart2.rx"),_e(17,"uart2.tx"),_e(5,"strap","spi3.cs"),_e(18,"spi3.sck"),_e(19,"spi3.miso"),_e(21,"i2c0.sda"),_e(3,"uart0","uart0.rx"),_e(1,"uart0","uart0.tx"),_e(22,"i2c0.scl"),_e(23,"spi3.mosi")],Np={GPIO36:"VP",GPIO39:"VN",GPIO1:"TX0",GPIO3:"RX0",GPIO16:"RX2",GPIO17:"TX2"};for(let[,e]of[...jz,...Mz])/^GPIO\d+$/.test(e)&&!(e in Np)&&(Np[e]="D"+e.slice(4));var Dz=[["5V","5V","pwr"],["GND","GND","gnd"],["3V3","3V3","p33"],_e(4,"adc","spi2.sck"),_e(3,"adc"),_e(2,"adc","strap"),_e(1,"adc"),_e(0,"adc")],Lz=[_e(5,"adc2","spi2.miso"),_e(6,"spi2.mosi"),_e(7,"spi2.cs"),_e(8,"strap","led","i2c0.sda"),_e(9,"strap","i2c0.scl"),_e(10),_e(20,"uart0","uart0.rx"),_e(21,"uart0","uart0.tx")],Vz={};for(let[,e]of[...Dz,...Lz])/^GPIO\d+$/.test(e)&&(Vz[e]=e.slice(4));var Nz="A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Vonalz\xF3val m\xE9rd le a saj\xE1todat: a lapok gy\xE1rt\xF3nk\xE9nt elt\xE9rhetnek.",Fz="https://github.com/pioarduino/platform-espressif32/releases/download/stable/platform-espressif32.zip",lN={fqbn:"rp2040:rp2040:rpipicow",boardUrl:"https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json",pwmFreq:"analogWriteFreq({f});",pio:{platform:"https://github.com/maxgerhardt/platform-raspberrypi.git",board:"rpipicow",extra:["board_build.core = earlephilhower"]}},cN={fqbn:"esp32:esp32:esp32doit-devkit-v1",boardUrl:"https://espressif.github.io/arduino-esp32/package_esp32_index.json",pwmFreq:"analogWriteFrequency({pin}, {f});",pio:{platform:Fz,board:"esp32doit-devkit-v1"},mpyAtten:!0},uN={fqbn:"esp32:esp32:esp32c3",boardUrl:"https://espressif.github.io/arduino-esp32/package_esp32_index.json",pwmFreq:"analogWriteFrequency({pin}, {f});",pio:{platform:Fz,board:"esp32-c3-devkitm-1",extra:["build_flags = -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=1"]},mpyAtten:!0},Ir={pico:{name:"Raspberry Pi Pico W",fp:"2\xD720 l\xE1b, sort\xE1v 6",prefix:"PICO",cat:"Vez\xE9rl\u0151",params:[{key:"span",label:"Sort\xE1v (oszt\xE1s)",type:"int",default:6,min:3,max:16,step:1,geo:!0,help:"A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Adatlap szerint 17,78 mm = 7 oszt\xE1s, de t\xFCskesorral, foglalatban vagy adapterlapon m\xE1s is lehet (pl. 6 vagy 8). Vonalz\xF3val m\xE9rd le a saj\xE1todat."}],pinTable:Rz,pins:[{repeat:20,id:"{40-i}",lr:0,lc:"{i}"},{repeat:20,id:"{1+i}",lr:"{span}",lc:"{i}"}],groups:[["3","8","13","18","23","28","33","38"]],bounds:{r:[-.75,"{span}+0.75"],c:[-1.45,19.6]},graphics:[{shape:"rect",layer:"body",r:[-.75,"{span}+0.75"],c:[-.6,19.6],fill:"#1f6b4a",stroke:"#134a33",width:1.5,xray:{stroke:"#1f6b4a"}},{shape:"rect",layer:"detail",r:["{span}/2-1.1","{span}/2+1.1"],c:[-1.45,-.15],fill:"#b5bcc3",xray:{fill:null,stroke:"#6b7a72",dash:!0}},{shape:"rect",layer:"detail",r:["{span}/2-1.3","{span}/2+1.3"],c:[7.6,10.2],fill:"#1b1b1b"},{shape:"rect",layer:"detail",r:[.9,"{span}-0.9"],c:[13.4,18.4],fill:"#c3c8cd"},{shape:"text",layer:"detail",at:["{span}/2",4.6],text:"Pico W",size:.6,min:8,color:"#e8f3ec"},{shape:"text",layer:"detail",at:["{span}/2",11.6],text:"{label}",size:.42,color:"#bfe0cd"},{shape:"text",layer:"xray",at:["{span}/2",-1],text:"USB",size:.4,color:"#4d5a52"},{shape:"text",layer:"xray",at:["{span}/2",9.5],text:"{label} \xB7 Pico W",size:.55,min:8,color:"#1f6b4a"}],pinLabels:{mode:"name",inward:!0,onBody:!0,minP:13,rename:{ADC_VREF:"VREF"}},meta:{target:lN},model:[{el:"mcu",gnd:"38",vbus:"40",vsys:"39",v33:"36",vreg:1.8,vmax:5.5,igpio:.012}]},esp32:{name:"ESP32 DevKit V1 (DOIT, 30 l\xE1b)",fp:"2\xD715 l\xE1b, sort\xE1v 10",prefix:"ESP",cat:"Vez\xE9rl\u0151",params:[{key:"span",label:"Sort\xE1v (oszt\xE1s)",type:"int",default:10,min:3,max:16,step:1,geo:!0,help:"\xC1ltal\xE1ban 25,4 mm = 10 oszt\xE1s (a lap 28 mm sz\xE9les). "+Nz}],pins:Cz(jz,Mz),groups:[["GND","GND2"]],bounds:{r:[-.65,"{span}+0.65"],c:[-1.7,19.5]},graphics:[{shape:"rect",layer:"body",r:[-.65,"{span}+0.65"],c:[-1.2,19.5],fill:"#16365c",stroke:"#0c2038",width:1.5,xray:{stroke:"#16365c"}},{shape:"rect",layer:"detail",r:["{span}/2-0.9","{span}/2+0.9"],c:[-1.7,.4],fill:"#b5bcc3",xray:{fill:null,stroke:"#6b7a72",dash:!0}},{shape:"rect",layer:"detail",r:[.9,1.9],c:[1.2,2.4],fill:"#2b2f33"},{shape:"rect",layer:"detail",r:["{span}-1.9","{span}-0.9"],c:[1.2,2.4],fill:"#2b2f33"},{shape:"rect",layer:"detail",r:[.7,"{span}-0.7"],c:[9.6,19.3],fill:"#262a2e"},{shape:"rect",layer:"detail",r:[1,"{span}-1.0"],c:[9.9,16.6],fill:"#c9ced3",stroke:"#9aa1a8"},{shape:"text",layer:"detail",at:["{span}/2-0.6",13.2],text:"ESP32",size:.62,min:8,color:"#343a40"},{shape:"text",layer:"detail",at:["{span}/2+0.6",13.2],text:"WROOM-32",size:.36,min:6,color:"#495057"},{shape:"text",layer:"detail",at:["{span}/2",5.8],text:"{label}",size:.42,color:"#c5d6ea"},{shape:"text",layer:"xray",at:["{span}/2",-1],text:"USB",size:.4,color:"#4d5a52"},{shape:"text",layer:"xray",at:["{span}/2",9],text:"{label} \xB7 ESP32",size:.55,min:8,color:"#16365c"}],pinLabels:{mode:"name",inward:!0,onBody:!0,minP:13,rename:Np},meta:{target:cN,help:"ESP32-WROOM-32 modul USB-soros \xE1talak\xEDt\xF3val. T\xE1p: USB (di\xF3d\xE1n \xE1t a VIN-re) vagy VIN 5\u201312 V (AMS1117 stabiliz\xE1tor, legal\xE1bb kb. 4,2 V kell), vagy k\xF6zvetlen\xFCl 3,3 V a 3V3 l\xE1bon. A GPIO34\u201339 csak bemenet, bels\u0151 felh\xFAz\xE1s n\xE9lk\xFCl; az ADC2-l\xE1bak bekapcsolt WiFi mellett nem m\xE9rnek.",pinNotes:{GPIO12:"ind\xEDt\xE1si (strapping) l\xE1b (MTDI): ha bekapcsol\xE1skor magas, a modul 1,8 V-os flasht felt\xE9telez, \xE9s nem indul el. Ne tegy\xE9l r\xE1 felh\xFAz\xE1st.",GPIO15:"ind\xEDt\xE1si (strapping) l\xE1b (MTDO): bekapcsol\xE1skor magasnak kell lennie (bels\u0151 felh\xFAz\xE1s). Ne h\xFAzd le gombbal vagy terhel\xE9ssel.",GPIO2:"ind\xEDt\xE1si (strapping) l\xE1b, \xE9s a be\xE9p\xEDtett k\xE9k LED is ezen van: a felt\xF6lt\xE9shez bekapcsol\xE1skor alacsony vagy lebeg\u0151 kell legyen. Ne tegy\xE9l r\xE1 felh\xFAz\xE1st.",GPIO5:"ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor magasnak kell lennie (bels\u0151 felh\xFAz\xE1s). Ne h\xFAzd le.",GPIO1:"TX0: a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja, felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.",GPIO3:"RX0: a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja, felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t."}},model:[{el:"mcu",gnd:"GND",vsys:"VIN",v33:"3V3",vreg:4.2,vmax:12,igpio:.02,mux:"matrix"}]},esp32c3:{name:"ESP32-C3 SuperMini",fp:"2\xD78 l\xE1b, sort\xE1v 6",prefix:"ESP",cat:"Vez\xE9rl\u0151",params:[{key:"span",label:"Sort\xE1v (oszt\xE1s)",type:"int",default:6,min:3,max:16,step:1,geo:!0,help:"\xC1ltal\xE1ban 15,24 mm = 6 oszt\xE1s (a lap 18 mm sz\xE9les). "+Nz}],pins:Cz(Dz,Lz),bounds:{r:[-.6,"{span}+0.6"],c:[-1.1,8.2]},graphics:[{shape:"rect",layer:"body",r:[-.6,"{span}+0.6"],c:[-.7,8.2],fill:"#1d1f22",stroke:"#000",width:1.5,xray:{stroke:"#1d1f22"}},{shape:"rect",layer:"detail",r:["{span}/2-1.25","{span}/2+1.25"],c:[-1.1,.9],fill:"#c3c8cd",xray:{fill:null,stroke:"#6b7a72",dash:!0}},{shape:"rect",layer:"detail",r:["{span}/2-1.1","{span}/2+1.1"],c:[2.9,5.1],fill:"#3a3d41",stroke:"#55595e"},{shape:"rect",layer:"detail",r:["{span}/2-0.5","{span}/2+0.5"],c:[6.6,7.8],fill:"#e9ecef"},{shape:"circle",layer:"detail",at:["{span}/2+1.7",1.9],rad:.28,fill:"#4dabf7"},{shape:"text",layer:"detail",at:["{span}/2",4],text:"C3",size:.5,min:7,color:"#ced4da"},{shape:"text",layer:"label",at:["{span}+1.3",3.5],text:"{label} \xB7 C3 SuperMini",size:.42},{shape:"text",layer:"xray",at:["{span}/2",-1.5],text:"USB",size:.4,color:"#4d5a52"}],pinLabels:{mode:"name",inward:!0,onBody:!0,minP:13,rename:Vz},meta:{target:uN,help:"ESP32-C3 (RISC-V, WiFi, BLE), nat\xEDv USB-C. T\xE1p: USB vagy az 5V l\xE1b (kb. 3,5\u20136 V, kis fesz\xFClts\xE9ges\xE9s\u0171 stabiliz\xE1tor), vagy 3,3 V a 3V3 l\xE1bon. Az 5V l\xE1b k\xF6zvetlen\xFCl az USB-hez csatlakozik, nincs di\xF3da: akkut ne k\xF6ss r\xE1 USB mellett. ADC: GPIO0\u20134 (ADC1), GPIO5 (ADC2).",pinNotes:{GPIO2:"ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor magasnak kell lennie. Ne h\xFAzd le gombbal vagy terhel\xE9ssel.",GPIO8:"ind\xEDt\xE1si (strapping) l\xE1b, \xE9s a be\xE9p\xEDtett k\xE9k LED is ezen van (alacsony szintre vil\xE1g\xEDt): bekapcsol\xE1skor magasnak kell lennie. Ne h\xFAzd le.",GPIO9:"a lap BOOT gombja is ezen van (lenyomva a f\xF6ldre h\xFAz), \xE9s ind\xEDt\xE1si l\xE1b: ha bekapcsol\xE1skor alacsony, a lap let\xF6lt\u0151 m\xF3dba ker\xFCl. Gombnak j\xF3, ha indul\xE1skor nincs lenyomva.",GPIO20:"RX (UART0): ha a soros ki\xEDr\xE1s nem a nat\xEDv USB-n megy, a soros port haszn\xE1lja.",GPIO21:"TX (UART0): ha a soros ki\xEDr\xE1s nem a nat\xEDv USB-n megy, a soros port haszn\xE1lja."}},model:[{el:"mcu",gnd:"GND",vbus:"5V",vsys:"5V",v33:"3V3",vreg:3.5,vmax:6,igpio:.02,mux:"matrix"}]},button:{name:"Nyom\xF3gomb 12 mm",fp:"A 0:0, 0:5 \xB7 B 2:0, 2:5",prefix:"S",cat:"Bemenet",pins:[{id:"A1",lr:0,lc:0,role:"A"},{id:"A2",lr:0,lc:5,role:"A"},{id:"B1",lr:2,lc:0,role:"B"},{id:"B2",lr:2,lc:5,role:"B"}],groups:[["A1","A2"],["B1","B2"]],bounds:{r:[-1.36,3.36],c:[-.3,5.3]},controls:[{kind:"press",closes:[["A1","B1"]]}],graphics:[{shape:"line",layer:"lead",from:[0,0],to:[0,.7],width:.14},{shape:"line",layer:"lead",from:[0,5],to:[0,4.3],width:.14},{shape:"line",layer:"lead",from:[2,0],to:[2,.7],width:.14},{shape:"line",layer:"lead",from:[2,5],to:[2,4.3],width:.14},{shape:"rect",layer:"body",r:[-1.36,3.36],c:[.14,4.86],fill:"#2a2a2a",stroke:"#111",width:1,xray:{stroke:"#333"}},{shape:"rect",layer:"detail",r:[-1,3],c:[.5,4.5],fill:"#9aa3ab"},{shape:"circle",layer:"detail",at:[1,2.5],rad:1.35,fill:"#141414",pressed:{fill:"#4a4a4a",stroke:"accent",width:3},xray:{fill:null,stroke:"rgba(0,0,0,.4)",width:1.2,pressed:{stroke:"accent",width:3}}},{shape:"text",layer:"detail",at:[1,2.5],text:"{label}",size:.62,min:8,color:"#f1f3f5",pressed:{color:"#ffd8bf"},xray:{color:"#1d231f",pressed:{color:"#c2410c"}}}],pinLabels:{mode:"role",off:.62,colors:{A:"#1d4ed8",B:"#b45309"}}},res:{name:"Ellen\xE1ll\xE1s",fp:"0:0 \u2013 0:4 (\xE1ll\xEDthat\xF3)",prefix:"R",cat:"Passz\xEDv",params:[{key:"ohm",label:"\xC9rt\xE9k",type:"value",unit:"\u03A9",default:1e3,min:.01,max:1e9,series:"E12"},{key:"span",label:"2. l\xE1b helye",type:"span",default:[0,4],help:"Az els\u0151 l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:4. Nagyobb t\xE1vols\xE1ggal a l\xE1b maga is \xE1thidalhat."}],pins:[{id:"1",lr:0,lc:0,role:"r"},{id:"2",lr:"{dr}",lc:"{dc}",role:"r"}],bounds:{pad:.45},graphics:[{shape:"axial",layer:"body",from:"1",to:"2",len:2.3,w:.76,fill:"#d9bf8c",stroke:"#8a6d3b",bands:"{ohm}"},{shape:"text",layer:"label",between:["1","2"],perp:.95,text:"{label} {ohm|si}\u03A9",size:.42}],model:[{el:"resistor",a:"1",b:"2",ohm:"{ohm}"}]},jumper:{name:"\xC1tk\xF6t\u0151 huzal (0 \u03A9)",fp:"0:0 \u2013 0:2 (\xE1ll\xEDthat\xF3)",prefix:"JP",cat:"Passz\xEDv",params:[{key:"span",label:"2. v\xE9g helye",type:"span",default:[0,2],help:"Egyenes dr\xF3t\xE1tk\xF6t\xE9s az alkatr\xE9szoldalon: a k\xE9t v\xE9ge egy h\xE1l\xF3zat."}],pins:[{id:"1",lr:0,lc:0,role:"j"},{id:"2",lr:"{dr}",lc:"{dc}",role:"j"}],groups:[["1","2"]],bounds:{pad:.4},graphics:[{shape:"link",layer:"lead",from:"1",to:"2",width:.22,stroke:"#b8bec4",edge:"#5f676e"},{shape:"text",layer:"label",between:["1","2"],perp:.75,text:"{label}",size:.38}]},led:{name:"LED 3 mm",fp:"an\xF3d 0:0 \xB7 kat\xF3d 0:1 (\xE1ll\xEDthat\xF3)",prefix:"LED",cat:"F\xE9lvezet\u0151",params:[{key:"color",label:"Sz\xEDn",type:"color",default:"red",options:Object.entries(YC).map(([e,t])=>({v:e,label:t.l,hex:t.c,vf:t.vf})),help:"{color.label}, nyit\xF3fesz\xFClts\xE9g {color.vf} V"},{key:"span",label:"Kat\xF3d helye",type:"span",default:[0,1],help:"Az an\xF3dhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1."}],pins:[{id:"A",name:"an\xF3d +",lr:0,lc:0,role:"an"},{id:"K",name:"kat\xF3d \u2212",lr:"{dr}",lc:"{dc}",role:"ka"}],bounds:{pad:.3,mid:.7},graphics:[{shape:"radial",layer:"body",from:"A",to:"K",rad:.62,fill:"{color.hex}",glow:!0},{shape:"text",layer:"label",between:["A","K"],perp:1.15,text:"{label}",size:.42}],pinLabels:{mode:"sign",off:.72,plus:["an"]},model:[{el:"diode",a:"A",k:"K",vf:"{color.vf}",ron:15,light:!0}]},diode:{name:"Di\xF3da",fp:"an\xF3d 0:0 \xB7 kat\xF3d 0:4 (\xE1ll\xEDthat\xF3)",prefix:"D",cat:"F\xE9lvezet\u0151",params:[{key:"kind",label:"T\xEDpus",type:"select",default:"1N5817",options:[{v:"1N5817",label:"1N5817 Schottky (0,3 V, 1 A)",vf:.3,ron:.15,imax:1},{v:"1N4148",label:"1N4148 jeldi\xF3da (0,7 V, 0,2 A)",vf:.7,ron:2,imax:.2},{v:"1N4007",label:"1N4007 egyenir\xE1ny\xEDt\xF3 (0,7 V, 1 A)",vf:.7,ron:.3,imax:1}],help:"Csak an\xF3dt\xF3l kat\xF3d fel\xE9 vezet, {kind.vf} V nyit\xF3fesz\xFClts\xE9g felett. A cs\xEDk a kat\xF3d oldal\xE1n van."},{key:"span",label:"Kat\xF3d helye",type:"span",default:[0,4],help:"Az an\xF3dhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:4."}],pins:[{id:"A",name:"an\xF3d",lr:0,lc:0,role:"an"},{id:"K",name:"kat\xF3d",lr:"{dr}",lc:"{dc}",role:"ka"}],bounds:{pad:.45},graphics:[{shape:"axial",layer:"body",from:"A",to:"K",len:1.7,w:.62,fill:"#262626",stroke:"#000",stripe:{at:.8,color:"#d0d4d8"}},{shape:"text",layer:"label",between:["A","K"],perp:-.95,text:"{label} {kind}",size:.36}],pinLabels:{mode:"sign",off:.72,plus:["an"],plusText:"A",minusText:"K"},model:[{el:"diode",a:"A",k:"K",vf:"{kind.vf}",ron:"{kind.ron}",imax:"{kind.imax}"}]},nmos:{name:"N-MOSFET (2N7000)",fp:"S 0:0 \xB7 G 0:1 \xB7 D 0:2 (TO-92)",prefix:"Q",cat:"F\xE9lvezet\u0151",params:[{key:"vth",label:"K\xFCsz\xF6b (Vth)",type:"value",unit:"V",default:2.1,min:.2,max:10,step:.1,help:"A D\u2013S akkor vezet, ha a gate a source-hoz k\xE9pest enn\xE9l magasabb."},{key:"ron",label:"Nyitott ellen\xE1ll\xE1s",type:"value",unit:"\u03A9",default:5,min:.001,max:1e4,series:"E12"},{key:"imax",label:"Max. \xE1ram",type:"value",unit:"A",default:.2,min:.001,max:200,series:"E12"}],pins:[{id:"S",name:"S",lr:0,lc:0,role:"s"},{id:"G",name:"G",lr:0,lc:1,role:"g"},{id:"D",name:"D",lr:0,lc:2,role:"d"}],bounds:{r:[-.95,.5],c:[-.5,2.5]},graphics:[{shape:"poly",layer:"body",pts:Az,fill:"#1d1d1d",stroke:"#000",width:1,xray:{stroke:"#333"}},{shape:"text",layer:"label",at:[-1.35,1],text:"{label}",size:.4}],pinLabels:{mode:"name",off:.78,colors:{s:"#1f2328",g:"#1d4ed8",d:"#5c666e"}},model:[{el:"nmos",d:"D",g:"G",s:"S",vth:"{vth}",ron:"{ron}",imax:"{imax}"}]},cap:{name:"Kondenz\xE1tor (ker\xE1mia)",fp:"0:0 \u2013 0:1 (\xE1ll\xEDthat\xF3)",prefix:"C",cat:"Passz\xEDv",params:[{key:"f",label:"Kapacit\xE1s",type:"value",unit:"F",default:1e-7,min:1e-12,max:1,series:"E12",help:"Egyen\xE1ramon szakad\xE1s. A szimul\xE1ci\xF3 a fesz\xFClts\xE9get \xE9s az id\u0151\xE1lland\xF3t (\u03C4 = R\xB7C) mutatja."},{key:"volt",label:"N\xE9vleges fesz\xFClts\xE9g",type:"value",unit:"V",default:50,min:1,max:1e3,step:1},{key:"span",label:"2. l\xE1b helye",type:"span",default:[0,1],help:"Az els\u0151 l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1."}],pins:[{id:"1",lr:0,lc:0,role:"c"},{id:"2",lr:"{dr}",lc:"{dc}",role:"c"}],bounds:{pad:.3,mid:.6},graphics:[{shape:"radial",layer:"body",from:"1",to:"2",rad:.55,fill:"#d9902f"},{shape:"text",layer:"label",between:["1","2"],perp:1.05,text:"{label} {f|si}F",size:.4}],model:[{el:"capacitor",a:"1",b:"2",f:"{f}",vmax:"{volt}"}]},elko:{name:"Elektrolit kondenz\xE1tor",fp:"+ 0:0 \xB7 \u2212 0:1 (\xE1ll\xEDthat\xF3)",prefix:"C",cat:"Passz\xEDv",params:[{key:"f",label:"Kapacit\xE1s",type:"value",unit:"F",default:1e-5,min:1e-7,max:1,series:"E12",help:"Polarit\xE1sos: a + l\xE1b ker\xFClj\xF6n a magasabb fesz\xFClts\xE9gre. A cs\xEDk a \u2212 l\xE1b oldal\xE1n van."},{key:"volt",label:"N\xE9vleges fesz\xFClts\xE9g",type:"value",unit:"V",default:16,min:1,max:500,step:1},{key:"span",label:"\u2212 l\xE1b helye",type:"span",default:[0,1],help:"A + l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1."}],pins:[{id:"+",name:"+",lr:0,lc:0,role:"cp"},{id:"-",name:"\u2212",lr:"{dr}",lc:"{dc}",role:"cn"}],bounds:{pad:.45,mid:1},graphics:[{shape:"radial",layer:"body",from:"+",to:"-",rad:.95,fill:"#1d3f8f"},{shape:"text",layer:"label",between:["+","-"],perp:1.5,text:"{label} {f|si}F {volt|fix1}V",size:.38}],pinLabels:{mode:"sign",off:.72,plus:["cp"]},model:[{el:"capacitor",a:"+",b:"-",f:"{f}",vmax:"{volt}",polar:!0}]},npn:{name:"NPN tranzisztor",fp:"TO-92, l\xE1bsorrend t\xEDpus szerint",prefix:"Q",cat:"F\xE9lvezet\u0151",params:[{key:"kind",label:"T\xEDpus",type:"select",default:"BC547",geo:!0,options:[{v:"BC547",label:"BC547 (C-B-E, 100 mA)",beta:200,imax:.1,pc:0,pb:1,pe:2},{v:"2N3904",label:"2N3904 (E-B-C, 200 mA)",beta:150,imax:.2,pc:2,pb:1,pe:0},{v:"2N2222",label:"2N2222A (E-B-C, 600 mA)",beta:150,imax:.6,pc:2,pb:1,pe:0}],help:"A C\u2013E akkor vezet, ha a b\xE1zison \xE1ram folyik (Ube \u2248 0,65 V). Ic legfeljebb \u03B2\xB7Ib ({kind.beta}\xB7Ib); kapcsol\xF3k\xE9nt kb. t\xEDzszer annyi b\xE1zis\xE1ram kell, mint Ic/\u03B2."}],pins:[{id:"C",name:"C",lr:0,lc:"{kind.pc}",role:"col"},{id:"B",name:"B",lr:0,lc:"{kind.pb}",role:"base"},{id:"E",name:"E",lr:0,lc:"{kind.pe}",role:"emit"}],bounds:{r:[-.95,.5],c:[-.5,2.5]},graphics:[{shape:"poly",layer:"body",pts:Az,fill:"#1d1d1d",stroke:"#000",width:1,xray:{stroke:"#333"}},{shape:"text",layer:"label",at:[-1.35,1],text:"{label} {kind}",size:.36}],pinLabels:{mode:"name",off:.78,colors:{col:"#5c666e",base:"#1d4ed8",emit:"#1f2328"}},model:[{el:"npn",c:"C",b:"B",e:"E",beta:"{kind.beta}",vbe:.65,vcesat:.1,imax:"{kind.imax}"}]},hc00:El(14,"74HC00 n\xE9gy NAND kapu","DIP-14 \xB7 4\xD7 NAND",eN,Al(Oz),Oz.map(e=>[e,`!(${e[0]}A & ${e[0]}B)`]),"N\xE9gy k\xE9tbemenetes NAND kapu (nY = NEM(nA \xC9S nB)). T\xE1p 2\u20136 V; a nem haszn\xE1lt bemeneteket k\xF6sd GND-re."),hc74:El(14,"74HC74 kett\u0151s D t\xE1rol\xF3","DIP-14 \xB7 2\xD7 D flip-flop",nN,Al(oN),[["1Q","F1"],["1Qn","!F1"],["2Q","F2"],["2Qn","!F2"]],"K\xE9t D t\xE1rol\xF3: a CLK felfut\xF3 \xE9l\xE9n Q felveszi D \xE9rt\xE9k\xE9t. CLR = 0 t\xF6rli (Q = 0), PRE = 0 be\xE1ll\xEDtja (Q = 1), az \xF3rajelt\u0151l f\xFCggetlen\xFCl; haszn\xE1lat k\xF6zben mindkett\u0151t k\xF6sd VCC-re. Qn a Q neg\xE1ltja. T\xE1p 2\u20136 V.",[Iz("1"),Iz("2")]),hc595:El(16,"74HC595 l\xE9ptet\u0151regiszter","DIP-16 \xB7 8 bit SIPO",sN,Al(aN),[...["QA","QB","QC","QD","QE","QF","QG","QH"].map((e,t)=>[e,"R"+t,"!OE"]),["QHs","S7"]],"8 bites soros-p\xE1rhuzamos \xE1talak\xEDt\xF3: SRCLK felfut\xF3 \xE9l\xE9n a SER bit bel\xE9p, a t\xF6bbi eggyel tov\xE1bbl\xE9p; RCLK felfut\xF3 \xE9l\xE9n a 8 bit a QA\u2026QH kimenetekre ker\xFCl. OE = 0 enged\xE9lyezi a kimeneteket, SRCLR = 0 t\xF6rli a l\xE9ptet\u0151regisztert. QHs (QH') a k\xF6vetkez\u0151 595 SER bemenet\xE9re k\xF6thet\u0151. T\xE1p 2\u20136 V.",iN),hc139:El(16,"74HC139 kett\u0151s 2\u21924 dek\xF3der","DIP-16 \xB7 2\xD7 (2\u21924)",tN,Al(rN),[...Tz("1"),...Tz("2")],"K\xE9t 2\u21924 dek\xF3der: az A1 A0 bin\xE1ris sz\xE1m szerinti Y kimenet lesz 0 (akt\xEDv alacsony), a t\xF6bbi 1; ha E = 1, mind 1. T\xE1p 2\u20136 V."),stepper:{name:"L\xE9ptet\u0151motor (28BYJ-48)",fp:"k\xFCls\u0151 \xB7 5 eres k\xE1bel (A B C D, k\xF6z\xF6s +)",prefix:"M",cat:"K\xFCls\u0151",mount:"off",params:[{key:"ohm",label:"Tekercsellen\xE1ll\xE1s",type:"value",unit:"\u03A9",default:50,min:5,max:1e3,series:"E12",help:"5 V-os unipol\xE1ris l\xE9ptet\u0151motor, 64:1 \xE1tt\xE9tellel: f\xE9ll\xE9ptet\xE9sben 4096 l\xE9p\xE9s a kimen\u0151 tengely egy fordulata. A tekercseket egy meghajt\xF3 (pl. ULN2003) kapcsolja a f\xF6ld fel\xE9; a k\xF6z\xF6s vezet\xE9k (piros) a +5 V. A szimul\xE1ci\xF3 a tekercsek gerjeszt\xE9si sorrendj\xE9b\u0151l l\xE9pteti (A, AB, B, BC, C, CD, D, DA)."}],pins:[{id:"A",lr:0,lc:0,role:"coil"},{id:"B",lr:0,lc:1,role:"coil"},{id:"C",lr:0,lc:2,role:"coil"},{id:"D",lr:0,lc:3,role:"coil"},{id:"COM",name:"+",lr:0,lc:4,role:"mp"}],bounds:{r:[-8.2,.5],c:[-1.9,5.9]},graphics:[...[["A","#1c7ed6",.8],["B","#f783ac",1.4],["C","#fcc419",2],["D","#fd7e14",2.6],["COM","#e03131",3.2]].map(([e,t,r])=>({shape:"line",layer:"lead",from:e,to:[-1.4,r],width:.13,stroke:t})),{shape:"rect",layer:"body",r:[-5.1,-4],c:[-1.9,5.9],fill:"#ced4da",stroke:"#868e96",width:1.2},{shape:"circle",layer:"body",at:[-4.6,2],rad:3.1,fill:"#dee2e6",stroke:"#868e96",width:1.4,xray:{stroke:"#868e96"}},{shape:"rect",layer:"detail",r:[-2.1,-1.2],c:[.6,3.4],fill:"#1c5bbf"},{shape:"circle",layer:"detail",at:[-5.6,2],rad:1.2,fill:"#f1f3f5",stroke:"#adb5bd"},{shape:"dial",layer:"detail",at:[-5.6,2],rad:1.8,color:"#e8590c",width:.38},{shape:"text",layer:"label",at:[-8.6,2],text:"{label} 28BYJ-48",size:.4}],pinLabels:{mode:"name",off:.75},model:[{el:"stepper",com:"COM",a:"A",b:"B",c:"C",d:"D",ohm:"{ohm}",steps:4096,rotor:64}]},uln2003:{name:"ULN2003 l\xE9ptet\u0151motor-meghajt\xF3",fp:"IN1\u2013IN4 \xB7 t\xE1p \xB7 motorcsatlakoz\xF3",prefix:"U",cat:"Modul",pins:[...[1,2,3,4].map(e=>({id:"IN"+e,lr:0,lc:e-1,role:"sig"})),{id:"GND",lr:0,lc:5,role:"gnd"},{id:"VCC",lr:0,lc:6,role:"vin",vmin:4.5,vmax:12},...["A","B","C","D"].map((e,t)=>({id:e,lr:4,lc:t,role:"out"})),{id:"COM",name:"+",lr:4,lc:4,role:"pout"}],groups:[["VCC","COM"]],socket:{pins:["A","B","C","D","COM"]},bounds:{r:[-.8,4.8],c:[-.8,6.8]},graphics:[{shape:"rect",layer:"body",r:[-.8,4.8],c:[-.8,6.8],fill:"#1e6b45",stroke:"#0f3d27",width:1.2,xray:{stroke:"#1e6b45"}},{shape:"rect",layer:"detail",r:[1.4,2.6],c:[.6,4.4],fill:"#1b1b1b"},{shape:"rect",layer:"detail",r:[3.4,4.6],c:[-.5,4.5],fill:"#f8f9fa",stroke:"#adb5bd"},{shape:"text",layer:"detail",at:[2,2.5],text:"ULN2003",size:.42,min:7,color:"#dee2e6"},{shape:"text",layer:"label",at:[2,5.9],text:"{label}",size:.42}],pinLabels:{mode:"name",off:.62,side:"in",minP:15,colors:{sig:"#e9ecef",gnd:"#adb5bd",vin:"#ffc9d6",out:"#ffd8a8",pout:"#ffd8a8"}},meta:{help:"N\xE9gy Darlington-kapcsol\xF3: ha az INn bemenet magas (\u2265 kb. 2,2 V, a Pico 3,3 V-ja el\xE9g), a hozz\xE1 tartoz\xF3 kimenet (A\u2013D) a f\xF6ld fel\xE9 kapcsol, \xE9s a motor tekercs\xE9n \xE1t a k\xF6z\xF6s + fel\u0151l \xE1ram folyik. A VCC (+) a motor t\xE1pja, 5 V; a COM ezzel k\xF6z\xF6s."},model:[{el:"logic",vcc:"VCC",gnd:"GND",vih:.44,vil:.15,rout:15,imax:.5,outs:["A","B","C","D"].map((e,t)=>({pin:e,expr:"!IN"+(t+1),type:"od"}))}]},motor:{name:"DC motor (130-as)",fp:"k\xFCls\u0151 \xB7 + \xE9s \u2212 kivezet\xE9s",prefix:"M",cat:"K\xFCls\u0151",mount:"off",params:[{key:"vnom",label:"N\xE9vleges fesz\xFClts\xE9g",type:"value",unit:"V",default:3,min:1,max:24,step:.5,help:"A motor a panel mellett \xE1ll; a kivezet\xE9seit vezet\xE9kkel (k\xE1bellel) k\xF6sd a panelra. Indukt\xEDv terhel\xE9s: GPIO-r\xF3l k\xF6zvetlen\xFCl nem hajthat\xF3, tranzisztor vagy MOSFET \xE9s visszacsap\xF3 di\xF3da kell."},{key:"ohm",label:"\xDCzemi ellen\xE1ll\xE1s",type:"value",unit:"\u03A9",default:20,min:.5,max:1e3,series:"E12",help:"Egyszer\u0171s\xEDtett modell: forg\xE1s k\xF6zbeni \xE1ramfelv\xE9tel \u2248 U / R. A fordulat a fesz\xFClts\xE9ggel ar\xE1nyos."}],pins:[{id:"+",name:"+",lr:0,lc:0,role:"mp"},{id:"-",name:"\u2212",lr:0,lc:2,role:"mn"}],bounds:{r:[-5.9,.5],c:[-1.8,3.8]},graphics:[{shape:"line",layer:"lead",from:"+",to:[-1.2,.4],width:.12,stroke:"#b87333"},{shape:"line",layer:"lead",from:"-",to:[-1.2,1.6],width:.12,stroke:"#b87333"},{shape:"circle",layer:"body",at:[-3,1],rad:2.7,fill:"#b8bec4",stroke:"#6c757d",width:1.4,xray:{stroke:"#6c757d"}},{shape:"circle",layer:"detail",at:[-3,1],rad:2.1,fill:"#ced4da"},{shape:"dial",layer:"detail",at:[-3,1],rad:1.7,color:"#495057"},{shape:"circle",layer:"detail",at:[-3,1],rad:.35,fill:"#343a40"},{shape:"text",layer:"label",at:[-6.4,1],text:"{label} {vnom|fix1}V",size:.42}],pinLabels:{mode:"sign",off:.75,plus:["mp"]},model:[{el:"motor",a:"+",b:"-",ohm:"{ohm}",vnom:"{vnom}"}]},servo:{name:"Szerv\xF3 (SG90)",fp:"k\xFCls\u0151 \xB7 GND, V+, jel k\xE1bel",prefix:"SV",cat:"K\xFCls\u0151",mount:"off",params:[{key:"ohm",label:"\xC1ramfelv\xE9tel (ell.)",type:"value",unit:"\u03A9",default:100,min:5,max:1e4,series:"E12",help:"A szerv\xF3t a jelvezet\xE9ken \xE9rkez\u0151 PWM vez\xE9rli: 50 Hz, 0,5\u20132,5 ms impulzus \u2192 0\u2013180\xB0. A Pico GPIO-j\xE1n \xE1ll\xEDtsd PWM m\xF3dba (50 Hz, 7,5 % = k\xF6z\xE9p\xE1ll\xE1s). T\xE1p: 4,8\u20136 V."}],pins:[{id:"GND",lr:0,lc:0,role:"gnd"},{id:"V+",lr:0,lc:1,role:"vin",vmin:4.5,vmax:6.5},{id:"SIG",lr:0,lc:2,role:"sig"}],bounds:{r:[-12.2,.5],c:[-1.6,3.6]},graphics:[{shape:"line",layer:"lead",from:"GND",to:[-2.6,.6],width:.14,stroke:"#7b4b2a"},{shape:"line",layer:"lead",from:"V+",to:[-2.6,1],width:.14,stroke:"#e03131"},{shape:"line",layer:"lead",from:"SIG",to:[-2.6,1.4],width:.14,stroke:"#f08c00"},{shape:"rect",layer:"body",r:[-11.4,-2.6],c:[-.9,2.9],fill:"#1c5bbf",stroke:"#0f3a80",width:1.2,xray:{stroke:"#1c5bbf"}},{shape:"rect",layer:"detail",r:[-12.2,-11.4],c:[-1.6,3.6],fill:"#1c5bbf",stroke:"#0f3a80"},{shape:"rect",layer:"detail",r:[-2.6,-1.8],c:[-1.6,3.6],fill:"#1c5bbf",stroke:"#0f3a80"},{shape:"circle",layer:"detail",at:[-9.2,1],rad:1.1,fill:"#e9ecef",stroke:"#adb5bd"},{shape:"dial",layer:"detail",at:[-9.2,1],rad:3.2,color:"#f8f9fa",width:.55},{shape:"text",layer:"detail",at:[-5.4,1],text:"SG90",size:.55,min:7,color:"#dbe7ff"},{shape:"text",layer:"label",at:[1.3,1],text:"{label}",size:.42},{shape:"text",layer:"xray",at:[-6.5,1],text:"{label} \xB7 SG90",size:.5,min:8,color:"#1c5bbf"}],pinLabels:{mode:"name",off:-.75,colors:{gnd:"#5c3a1e",vin:"#c92a2a",sig:"#d9480f"}},model:[{el:"servo",vp:"V+",gnd:"GND",sig:"SIG",ohm:"{ohm}",pmin:.5,pmax:2.5}]},header:{name:"T\xFCskesor 1\xD7N",fp:"N l\xE1b egy sorban \xB7 csatlakoz\xF3",prefix:"J",cat:"Csatlakoz\xF3",params:[{key:"n",label:"L\xE1bsz\xE1m",type:"int",default:4,min:1,max:20,geo:!0},{key:"names",label:"L\xE1bnevek",type:"names",default:"",help:"Vessz\u0151vel, sorrendben (pl. GND,VCC,SDA,SCL). K\xFCls\u0151 alkatr\xE9sz csatlakoz\xF3j\xE1n\xE1l az alkatr\xE9sz l\xE1bneveit kapja."}],pins:[{repeat:"{n}",id:"{i+1}",lr:0,lc:"{i}",role:"h"}],bounds:{r:[-.5,.5],c:[-.5,"{n}-0.5"]},socket:{count:"n",names:"names"},graphics:[{shape:"rect",layer:"body",r:[-.5,.5],c:[-.5,"{n}-0.5"],fill:"#1d1d1d",stroke:"#000",width:1},{shape:"text",layer:"label",at:[0,"{n}-0.5+0.75"],text:"{label}",size:.42}],pinLabels:{mode:"name",off:-.8,named:!0}},bat:{name:"Akku csatlakoz\xF3",fp:"+ 0:0 \xB7 \u2212 0:1",prefix:"BAT",cat:"Csatlakoz\xF3",params:[{key:"volt",label:"Fesz\xFClts\xE9g",type:"value",unit:"V",default:3.7,min:.5,max:48,step:.1}],pins:[{id:"+",name:"+",lr:0,lc:0,role:"bp"},{id:"-",name:"\u2212",lr:0,lc:1,role:"bn"}],bounds:{r:[-1.3,.5],c:[-.6,1.6]},graphics:[{shape:"rect",layer:"body",r:[-1.25,.45],c:[-.55,1.55],fill:"#f4f1e8",stroke:"#7d7563",width:1.2},{shape:"text",layer:"label",at:[-.75,.5],text:"{label} {volt|fix1}V",size:.38}],pinLabels:{mode:"sign",off:.72,plus:["bp"]},model:[{el:"source",p:"+",n:"-",v:"{volt}",rint:.1}]},tp4056:{name:"TP4056 t\xF6lt\u0151modul",fp:"IN 0:0, 0:6 \xB7 OUT/B 9:0\u20269:6 (k\xF6zel\xEDt\u0151)",prefix:"U",cat:"Modul",params:[{key:"usb",label:"Saj\xE1t USB",type:"select",default:"off",options:[{v:"off",label:"nincs bedugva",volt:0,rint:1e9},{v:"on",label:"5 V bedugva",volt:5,rint:.1}],help:"Egyszer\u0171s\xEDtett modell: a bemenetr\u0151l (5 V) a B+ fel\xE9 t\xF6lt, a B+ \xE9s az OUT+ k\xF6z\xF6s. A l\xE1bak a modul forrpontjainak k\xF6zel\xEDt\u0151 helyei, t\xFCskesorral rakd fel."}],pins:[{id:"IN+",lr:0,lc:0,role:"vin",vmin:4,vmax:8},{id:"IN-",lr:0,lc:6,role:"gnd"},{id:"OUT+",lr:9,lc:0,role:"pout"},{id:"B+",lr:9,lc:2,role:"chg"},{id:"B-",lr:9,lc:4,role:"bn"},{id:"OUT-",lr:9,lc:6,role:"gnd"}],groups:[["B+","OUT+"],["IN-","OUT-"]],bounds:{r:[-1.5,9.6],c:[-.7,6.7]},graphics:[{shape:"rect",layer:"body",r:[-.6,9.6],c:[-.7,6.7],fill:"#1f4f9c",stroke:"#12325f",width:1.2,xray:{stroke:"#1f4f9c"}},{shape:"rect",layer:"detail",r:[-1.5,1.3],c:[1.9,4.1],fill:"#c3c8cd",stroke:"#868e96",xray:{fill:null,stroke:"#6b7a72",dash:!0}},{shape:"rect",layer:"detail",r:[3.3,5.3],c:[2.2,3.8],fill:"#1b1b1b"},{shape:"rect",layer:"detail",r:[6.3,7.3],c:[4.4,5.4],fill:"#1b1b1b"},{shape:"circle",layer:"detail",at:[2.6,5.5],rad:.28,fill:"#a61e1e"},{shape:"circle",layer:"detail",at:[4,5.5],rad:.28,fill:"#1c4fd1"},{shape:"text",layer:"detail",at:[6.2,2.2],text:"TP4056",size:.42,min:7,color:"#dbe7ff"},{shape:"text",layer:"label",at:[10.4,3],text:"{label}",size:.42},{shape:"text",layer:"xray",at:[4.5,3],text:"{label} \xB7 TP4056",size:.5,min:8,color:"#1f4f9c"}],pinLabels:{mode:"name",off:.7,colors:{vin:"#ffc9d6",gnd:"#e9ecef",pout:"#ffe3bf",chg:"#ffe3bf",bn:"#e9ecef"}},model:[{el:"source",p:"IN+",n:"IN-",v:"{usb.volt}",rint:"{usb.rint}",kind:"supply"},{el:"diode",a:"IN+",k:"B+",vf:.8,ron:1},{el:"resistor",a:"B-",b:"OUT-",ohm:.05}]},nokia5110:{name:"Nokia 5110 kijelz\u0151",fp:"8 l\xE1b egy sorban \xB7 VCC 2,7\u20133,3 V",prefix:"LCD",cat:"Modul",pins:["RST","CE","DC","DIN","CLK","VCC","BL","GND"].map((e,t)=>e==="VCC"?{id:e,lr:0,lc:t,role:"vin",vmin:2.7,vmax:3.6}:{id:e,lr:0,lc:t,role:e==="GND"?"gnd":"sig",...e==="DIN"?{fn:"spi.mosi"}:e==="CLK"?{fn:"spi.sck"}:{}}),bounds:{r:[-1.3,15.9],c:[-4.6,11.6]},graphics:[{shape:"rect",layer:"body",r:[-1.3,15.9],c:[-4.6,11.6],fill:"#b8282d",stroke:"#7d1a1e",width:1.2,xray:{stroke:"#b8282d"}},{shape:"rect",layer:"detail",r:[1.4,14.4],c:[-4,11],fill:"#d7dadd",stroke:"#9aa1a8"},{shape:"rect",layer:"detail",r:[2.4,13.3],c:[-3.4,10.4],fill:"#8f9f86",lit:{fill:"#c6efa4"},xray:{fill:null,stroke:"#9aa1a8",dash:!0}},{shape:"text",layer:"detail",at:[7.9,3.5],text:"NOKIA 5110",size:.8,min:8,color:"#2b3328"},{shape:"text",layer:"label",at:[15.1,3.5],text:"{label}",size:.45,color:"#ffe0e0",xray:{color:"#7d1a1e"}},{shape:"text",layer:"xray",at:[7.9,3.5],text:"{label} \xB7 Nokia 5110",size:.55,min:8,color:"#b8282d"}],pinLabels:{mode:"name",off:-.85,colors:{vin:"#ffd6e0",gnd:"#f1f3f5",sig:"#f8f9fa"}},model:[{el:"resistor",a:"VCC",b:"GND",ohm:1e4},{el:"diode",a:"BL",k:"GND",vf:2.6,ron:60,light:!0}]},ssd1306:{name:'OLED kijelz\u0151 0,96" (SSD1306, I\xB2C)',fp:"GND \xB7 VCC \xB7 SCL \xB7 SDA egy sorban",prefix:"OLED",cat:"Modul",pins:[{id:"GND",lr:0,lc:0,role:"gnd"},{id:"VCC",lr:0,lc:1,role:"vin",vmin:3,vmax:5.5},{id:"SCL",lr:0,lc:2,role:"sig",fn:"i2c.scl"},{id:"SDA",lr:0,lc:3,role:"sig",fn:"i2c.sda"}],bounds:{r:[-.8,10.4],c:[-3.4,6.4]},graphics:[{shape:"rect",layer:"body",r:[-.8,10.4],c:[-3.4,6.4],fill:"#1f4f8a",stroke:"#123155",width:1.2,xray:{stroke:"#1f4f8a"}},{shape:"rect",layer:"detail",r:[1.4,8.4],c:[-3,6],fill:"#111418",stroke:"#3d4450"},{shape:"rect",layer:"detail",r:[2.2,6.9],c:[-2.6,5.6],fill:"#0b0d10",lit:{fill:"#123049"},xray:{fill:null,stroke:"#3d4450",dash:!0}},{shape:"text",layer:"detail",at:[4.6,1.5],text:"128\xD764",size:.6,min:7,color:"#4dabf7"},{shape:"text",layer:"label",at:[9.5,1.5],text:"{label}",size:.45,color:"#d0ebff",xray:{color:"#1f4f8a"}}],pinLabels:{mode:"name",off:-.85,colors:{vin:"#ffd6e0",gnd:"#f1f3f5",sig:"#f8f9fa"}},meta:{help:"128\xD764 pontos OLED kijelz\u0151 I\xB2C-buszon (alapc\xEDm 0x3C). A modulon felh\xFAz\xF3 ellen\xE1ll\xE1sok vannak az SCL- \xE9s SDA-vonalon. T\xE1p 3,3\u20135 V; a kijelz\u0151 tartalm\xE1t a szimul\xE1ci\xF3 nem rajzolja ki."},model:[{el:"resistor",a:"VCC",b:"GND",ohm:330}]},joystick:{name:"Joystick (KY-023)",fp:"GND \xB7 +5V \xB7 VRx \xB7 VRy \xB7 SW egy sorban",prefix:"JS",cat:"Bemenet",params:[{key:"x",label:"X \xE1ll\xE1s",type:"number",unit:"%",default:0,min:-100,max:100,step:5,help:"\u2212100 % bal, +100 % jobb. Szimul\xE1ci\xF3 k\xF6zben cs\xFAszk\xE1val is \xE1ll\xEDthat\xF3."},{key:"y",label:"Y \xE1ll\xE1s",type:"number",unit:"%",default:0,min:-100,max:100,step:5,help:"\u2212100 % le, +100 % fel."}],pins:[{id:"GND",lr:0,lc:0,role:"gnd"},{id:"5V",name:"+5V",lr:0,lc:1,role:"vin",vmin:3,vmax:5.5},{id:"VRX",name:"VRx",lr:0,lc:2,role:"adc"},{id:"VRY",name:"VRy",lr:0,lc:3,role:"adc"},{id:"SW",lr:0,lc:4,role:"sig"}],bounds:{r:[-.8,12.6],c:[-2.6,6.6]},controls:[{kind:"press",closes:[["SW","GND"]]},{kind:"slider",key:"x",label:"X"},{kind:"slider",key:"y",label:"Y"}],graphics:[{shape:"rect",layer:"body",r:[-.8,12.6],c:[-2.6,6.6],fill:"#23272e",stroke:"#0f1114",width:1.2,xray:{stroke:"#333"}},{shape:"rect",layer:"detail",r:[3,11.4],c:[-1.9,5.9],fill:"#e9ecef",stroke:"#adb5bd"},{shape:"circle",layer:"detail",at:[7.2,2],rad:3,fill:"#343a40"},{shape:"circle",layer:"detail",at:["7.2-{y}/40","2+{x}/40"],rad:1.9,fill:"#495057",stroke:"#111",width:1.5,pressed:{fill:"#6c757d",stroke:"accent",width:3},xray:{fill:null,stroke:"rgba(0,0,0,.45)",width:1.2,pressed:{stroke:"accent",width:3}}},{shape:"text",layer:"detail",at:["7.2-{y}/40","2+{x}/40"],text:"{label}",size:.55,min:8,color:"#f1f3f5",xray:{color:"#1d231f"}}],pinLabels:{mode:"name",off:.85,colors:{gnd:"#e9ecef",vin:"#ffc9d6",adc:"#b2f2bb",sig:"#a5d8ff"}},model:[{el:"resistor",a:"5V",b:"VRX",ohm:"{5001-50*x}"},{el:"resistor",a:"VRX",b:"GND",ohm:"{5001+50*x}"},{el:"resistor",a:"5V",b:"VRY",ohm:"{5001-50*y}"},{el:"resistor",a:"VRY",b:"GND",ohm:"{5001+50*y}"}]}};var W=_z(Ir),Zz={},Bz=()=>Zz;function Co(e){for(let t of Object.keys(W))t in Ir||delete W[t];for(let[t,r]of[...Object.entries(Zz),...Object.entries(e||{})])try{W[t]=To(t,{cat:"Saj\xE1t",...r})}catch(n){console.warn("Saj\xE1t alkatr\xE9sz kihagyva:",t,n)}}var Ol=e=>Io(W[e.type].def,e),No=e=>(W[e.type].def.controls||[]).some(t=>t.kind==="press"),Ae=e=>W[e.type].def.mount==="off",ce=e=>!!(e&&W[e.type]&&W[e.type].mcu);var Ro=(e,t)=>e*1e5+t;function Gz(e,t){let r=new Map;for(let n of t){let o=Math.round(+n[0]),s=Math.round(+n[1]),a=+n[2]?1:0;s>=0&&s<e.cols&&o>=0&&o<e.rows&&(a===0&&(o>=e.rows-1||(o+1)%e.sec===0)||r.set(`${o}:${s}:${a}`,[o,s,a]))}return[...r.values()].sort((n,o)=>n[1]-o[1]||n[0]-o[0]||n[2]-o[2])}function Tr(e,t=[]){let r=Gz(e,t),n=new Set,o=new Set;for(let[d,p,m]of r)(m?o:n).add(Ro(d,p));let s=[],a=new Int32Array(e.rows*e.cols).fill(-1),i=[];for(let d=0;d<e.cols;d++){let p=[],m=-1,b=f=>{m>=0&&f>=m&&(p.push(s.length),s.push({c:d,r0:m,r1:f,drilled:!1})),m=-1};for(let f=0;f<e.rows;f++){if(o.has(Ro(f,d))){b(f-1),p.push(s.length),s.push({c:d,r0:f,r1:f,drilled:!0});continue}m<0&&(m=f),((f+1)%e.sec===0||n.has(Ro(f,d))||f===e.rows-1)&&b(f)}i.push(p)}s.forEach((d,p)=>{for(let m=d.r0;m<=d.r1;m++)a[m*e.cols+d.c]=p});let l=s.map(()=>[]),c=new Map;i.forEach(d=>d.forEach((p,m)=>c.set(p,m))),s.forEach((d,p)=>{if(d.drilled)return;let m=i[d.c],b=c.get(p),f=m[b-1],h=m[b+1];f!=null&&!s[f].drilled&&s[f].r1===d.r0-1&&d.r0%e.sec===0&&l[p].push({to:f,dir:0,br:[d.r0-1,d.c,d.r0,d.c]}),h!=null&&!s[h].drilled&&s[h].r0===d.r1+1&&s[h].r0%e.sec===0&&l[p].push({to:h,dir:1,br:[d.r1,d.c,d.r1+1,d.c]});for(let[g,v]of[[-1,2],[1,3]]){let _=d.c+g;if(!(_<0||_>=e.cols))for(let w of i[_]){let k=s[w];if(k.drilled||k.r1<d.r0||k.r0>d.r1)continue;let P=Math.max(k.r0,d.r0),A=Math.min(k.r1,d.r1),Z=P+(e.sec>>1)<=A?P+(e.sec>>1):P+(A-P+1>>1);l[p].push({to:w,dir:v,br:g<0?[Z,_,Z,d.c]:[Z,d.c,Z,_]})}}});let u=new Map;return l.forEach((d,p)=>d.forEach(m=>{u.has(p*s.length+m.to)||u.set(p*s.length+m.to,m)})),{N:s.length,segs:s,cuts:r,cell:(d,p)=>a[d*e.cols+p],drilled:(d,p)=>o.has(Ro(d,p)),adj:d=>l[d],edge:(d,p)=>u.get(d*s.length+p),holes:d=>{let p=s[d],m=[];for(let b=p.r0;b<=p.r1;b++)m.push([b,p.c]);return m}}}function Uz(e,t,r,n=[]){let o=Tr(e,t),s=new Set(n.filter(l=>!l[2]).map(l=>Ro(l[0],l[1]))),a=new Map;for(let l of r){if(l.r<0||l.c<0||l.r>=e.rows||l.c>=e.cols||o.drilled(l.r,l.c))continue;let c=o.cell(l.r,l.c);a.has(c)||a.set(c,[]),a.get(c).push(l)}let i=[];for(let[l,c]of a){let u=o.segs[l].c;c.sort((d,p)=>d.r-p.r);for(let d=0;d+1<c.length;d++){let p=c[d],m=c[d+1];if(p.net===m.net||p.r===m.r)continue;let b=p.r+m.r-1>>1,f=-1;for(let h=0;h<=m.r-p.r&&f<0;h++)for(let g of h?[b-h,b+h]:[b])if(g>=p.r&&g<m.r&&!s.has(Ro(g,u))){f=g;break}f>=0&&i.push([f,u,0])}}return Gz(e,i)}function It(e,t,r){let n=t,o=e.mir?-r:r;for(let s=0;s<(e.rot&3);s++){let a=n;n=o,o=-a}return[e.r+n,e.c+o]}function me(e){return W[e.type].pins(e).map(t=>{let[r,n]=It(e,t.lr,t.lc);return{...t,r,c:n,part:e}})}var vr=(e,t,r)=>t>=0&&r>=0&&t<e.rows&&r<e.cols;function Rp(e){let t=W[e.type]&&W[e.type].def.socket;if(!t)return[];let r=me(e);if(!t.pins)return r;let n=new Map(r.map(o=>[o.id,o]));return t.pins.map(o=>n.get(o)).filter(o=>!!o)}function jo(e,t){if(!t.plug||!Ae(t))return null;let r=e.parts.find(n=>n.id===t.plug);return!r||!W[r.type]||!W[r.type].def.socket?null:Rp(r).length>=W[t.type].pins(t).length?r:null}var dN=(e,t)=>e.parts.find(r=>r.plug===t.id&&jo(e,r)===t)||null;function jp(e,t){let r=jo(e,t);if(!r)return[];let n=me(t),o=Rp(r);return n.map((s,a)=>[s,o[a]])}function Il(e){let t=new Map;for(let r of e.parts)for(let[n,o]of jp(e,r))t.set(r.id+"."+n.id,o.part.id+"."+o.id);return r=>t.get(r)??r}function qz(e=W){for(let[t,r]of Object.entries(e))if(r.def.socket&&r.def.socket.count&&r.def.mount!=="off")return t;return null}function Kz(e,t,r){let n=e.board,o=new Set,s=[];for(let w of e.parts){if(Ae(w))continue;for(let A of me(w))o.add(A.r+":"+A.c);let k=W[w.type].bounds(w),P=[It(w,k.r0,k.c0),It(w,k.r1,k.c1)];s.push([Math.min(P[0][0],P[1][0]),Math.max(P[0][0],P[1][0]),Math.min(P[0][1],P[1][1]),Math.max(P[0][1],P[1][1])])}for(let w of e.wires)for(let k of[w.a,w.b])o.add(k[0]+":"+k[1]);let a=Tr(n,[...e.cuts||[],...e.auto&&e.auto.cuts||[]]),i=new Set;for(let w of e.parts)if(!Ae(w))for(let k of me(w))vr(n,k.r,k.c)&&i.add(a.cell(k.r,k.c));let l=(w,k)=>vr(n,w,k)&&!o.has(w+":"+k)&&!s.some(([P,A,Z,D])=>w>P-1&&w<A+1&&k>Z-1&&k<D+1),c=me(t),u=c.reduce((w,k)=>w+k.r,0)/c.length,d=c.reduce((w,k)=>w+k.c,0)/c.length,p=W[t.type].bounds(t),[m,b]=It(t,(p.r0+p.r1)/2,(p.c0+p.c1)/2),f=Math.hypot(u-m,d-b)||1,h=(u-m)/f,g=(d-b)/f,v=null,_=1/0;for(let w=0;w<n.rows;w++)for(let k=0;k<n.cols;k++)for(let P of[0,1]){let A=Array.from({length:r},(F,y)=>P?[w+y,k]:[w,k+y]);if(!A.every(([F,y])=>l(F,y)))continue;let Z=A.map(([F,y])=>a.cell(F,y));if(new Set(Z).size<r)continue;let D=P?w+(r-1)/2:w,B=P?k:k+(r-1)/2,K=Math.hypot(D-u,B-d)||1,x=((D-u)*h+(B-d)*g)/K,$=K+4*(1-x)+(P?.5:0)+40*Z.filter(F=>i.has(F)).length;$<_&&(_=$,v={r:w,c:k,rot:P?1:0})}return v}function Hz(e,t){let r=e.socket,n=W[t.type].pins(t);return{...r.count?{[r.count]:n.length}:{},...r.names?{[r.names]:n.map(o=>o.name).join(",")}:{}}}function Wz(e,t){let r=W[t.type].pins(t);for(let n of e.parts){if(Ae(n)||!W[n.type].def.socket||dN(e,n))continue;let o=Rp(n);if(o.length!==r.length)continue;if(r.every((a,i)=>{let l=t.id+"."+a.id,c=n.id+"."+o[i].id;return e.links.some(u=>u.a===l&&u.b===c||u.a===c&&u.b===l)}))return n}return null}function Jz(e){let t=Il(e),r=new Set;for(let n of e.links)n.b!=="GND"&&n.b!=="GPIO"&&t(n.a)===t(n.b)&&r.add(n.id);return r}var Ge=(e,t)=>!!(e&&e.caps&&e.caps.includes(t)),Tl=e=>Ge(e,"adc")||Ge(e,"adc2"),Mp=[["strap",E("ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor sz\xE1m\xEDt a szintje, rossz szintn\xE9l a lap nem indul el vagy let\xF6lt\u0151 m\xF3dba ker\xFCl. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.")],["uart0",E("a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja: felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.")],["usb",E("a be\xE9p\xEDtett USB haszn\xE1lja. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.")],["led",E("a lap be\xE9p\xEDtett LED-je is ezen a l\xE1bon van.")]],pN={"uart.rx":"uart.tx","uart.tx":"uart.rx"},Dp=e=>pN[e]||e;function Wr(e,t){let[r,n]=Dp(t).split("."),o=new RegExp("^"+r+"\\d+\\."+n+"$");return(e&&e.caps||[]).filter(s=>o.test(s))}function Fn(e){let t=(W[e.type].def.model||[]).find(r=>r.el==="mcu");return t&&t.el==="mcu"&&t.mux||"fixed"}function fN(e){let t=/^(i2c|spi|uart|pwm)(\d*)\.([a-z]+)$/.exec(e);return t?`${t[1].toUpperCase()}${t[2]} ${t[3].toUpperCase()}`:e.toUpperCase()}var Lp=e=>fN(e);var ca=(e,t)=>!e||!t||Wr(t,e).length?0:Fn(t.part)==="matrix"?10:16,ua=e=>e&&Mp.some(t=>Ge(e,t[0]))?10:0,Vp=(e,t)=>!!e&&ce(e.part)&&e.role==="gpio"&&(t?Ge(e,"adc"):!Ge(e,"in")),Zn=[["pullup",E("be, felh\xFAzva")],["pulldown",E("be, leh\xFAzva")],["float",E("be, lebeg\u0151")],["adc",E("anal\xF3g (ADC)")],["out_high",E("ki: 1")],["out_low",E("ki: 0")],["pwm",E("ki: PWM")]];function da(e,t){return t==="out_high"||t==="out_low"||t==="pwm"?!Ge(e,"in"):t==="pullup"||t==="pulldown"?!Ge(e,"nopull"):t==="adc"?Tl(e):t==="float"}function Yz(e,t){let r=t&&t.netPins.get(e.net)||[];return Tl(e)&&r.some(n=>n.role==="adc")?"adc":Ge(e,"nopull")?"float":"pullup"}var Xz="",Fp=null;function gn(e){let t=[...e.cuts||[],...e.auto&&e.auto.cuts||[]],r=e.board.rows+"x"+e.board.cols+"/"+e.board.sec+"|"+t.map(n=>n.join(",")).join(";");return(r!==Xz||!Fp)&&(Xz=r,Fp=Tr(e.board,t)),Fp}function Cr(e,t={}){let r=gn(e),n=r.N,o=(k,P)=>vr(e.board,k,P),s=(k,P)=>r.cell(k,P),a=t.hidden||(()=>!1),i=e.parts.map(k=>[k,me(k)]),l=0;for(let[,k]of i)for(let P of k)o(P.r,P.c)||l++;let c=new Int32Array(n+l);for(let k=0;k<n+l;k++)c[k]=k;let u=k=>{for(;c[k]!==k;)c[k]=c[c[k]],k=c[k];return k},d=(k,P)=>{k=u(k),P=u(P),k!==P&&(c[Math.max(k,P)]=Math.min(k,P))},p=e.auto.bridges.filter(k=>!a(k[4])),m=e.auto.wires.filter(k=>!a(k.links));for(let k of[...e.bridges,...p])o(k[0],k[1])&&o(k[2],k[3])&&d(s(k[0],k[1]),s(k[2],k[3]));let b=[],f=new Map,h=n;for(let[k,P]of i){let A={},Z=[];for(let D of P){let B=o(D.r,D.c),K=Object.assign(D,{on:B,s:B?s(D.r,D.c):h++,net:-1});A[K.id]=K,b.push(K),Z.push(K)}f.set(k.id,{pins:Z,map:A,out:Z.some(D=>!D.on)});for(let[D,B]of W[k.type].internal(k))d(A[D].s,A[B].s);if(t.pressed&&t.pressed(k)){for(let D of W[k.type].def.controls||[])if(D.kind==="press")for(let[B,K]of D.closes)A[B]&&A[K]&&d(A[B].s,A[K].s)}}for(let k of e.parts)for(let[P,A]of jp(e,k)){let Z=f.get(k.id).map[P.id],D=f.get(A.part.id).map[A.id];Z&&D&&d(Z.s,D.s)}let g=new Map;for(let k of b)k.on||g.set(k.r+":"+k.c,k.s);let v=k=>o(k[0],k[1])?s(k[0],k[1]):g.get(k[0]+":"+k[1]);for(let k of[...e.wires,...m]){let P=v(k.a),A=v(k.b);P!=null&&A!=null&&d(P,A)}for(let k of b)k.net=u(k.s);let _=new Map,w=new Map;for(let k of b)_.has(k.net)||_.set(k.net,[]),_.get(k.net).push(k);for(let k=0;k<n;k++){let P=u(k);w.set(P,(w.get(P)||0)+1)}return{N:n,find:u,sid:s,pins:b,byPart:f,netPins:_,netSecs:w}}var bn=e=>ce(e.part)?`${e.part.label}.${e.name}`:`${e.part.label}.${e.id}`;function it(e,t){let r=t.indexOf(".");if(r<0)return null;let n=e.parts.find(o=>o.id===t.slice(0,r));return n&&me(n).find(o=>o.id===t.slice(r+1))||null}function zr(e){let t={},r=o=>t[o]===o?o:t[o]=r(t[o]);W[e.type].pins(e).forEach(o=>t[o.id]=o.id);for(let[o,s]of W[e.type].internal(e))t[r(o)]=r(s);let n={};for(let o in t)n[o]=r(o);return n}function Zp(e){if(!e)return[];let t=zr(e.part),r=t[e.id];return me(e.part).filter(n=>t[n.id]===r)}function Cl(e){if(!e)return"?";let t=Zp(e);return t.length<2?bn(e):e.part.type==="button"?`${e.part.label}.${e.role}`:ce(e.part)&&e.role==="gnd"?`${e.part.label}.GND`:`${e.part.label}.${t.map(r=>r.id).join("/")}`}function Mo(e,t){let r=it(e,t.a),n=t.b==="GND"?"GND":t.b==="GPIO"?"GPIO":Cl(it(e,t.b));return`${Cl(r)} \u2192 ${n}`}function Do(e,t){let r=new Map,n=o=>{let s=o.indexOf("."),a=t.byPart.get(o.slice(0,s)),i=a&&a.map[o.slice(s+1)];return!i||!i.on&&!Ae(i.part)?-1:i.net};for(let o of e.links){let s=n(o.a),a=!1,i=null;if(s>=0){let d=t.netPins.get(s)||[];if(o.b==="GND")a=d.some(p=>ce(p.part)&&p.role==="gnd");else if(o.b==="GPIO"){let p=(it(e,o.a)||{role:""}).role==="adc";i=d.find(m=>ce(m.part)&&m.role==="gpio"&&(!p||Ge(m,"adc"))),a=!!i}else a=n(o.b)===s}let l=e.auto.bridges.filter(d=>(d[4]||[]).includes(o.id)).length,c=e.auto.wires.some(d=>(d.links||[]).includes(o.id)),u=d=>{let p=it(e,d);return!!p&&Ae(p.part)&&!jo(e,p.part)};r.set(o.id,{ok:a,gpio:i?i.name:null,gpioRef:i?i.part.id+"."+i.id:null,nb:l,wire:c,cable:u(o.a)||u(o.b)})}return r}var Qz={gnd:E("f\xF6ld"),vin:E("t\xE1pbemenet"),pwr:E("t\xE1p"),p33:E("3,3 V"),gpio:"GPIO",sig:E("jel"),adc:E("anal\xF3g jel"),out:E("kimenet"),pout:E("t\xE1pkimenet"),A:E("kapcsol\xF3 A"),B:E("kapcsol\xF3 B"),base:E("b\xE1zis"),col:E("kollektor"),emit:E("emitter"),g:E("gate"),d:E("drain"),s:E("source"),an:E("an\xF3d"),ka:E("kat\xF3d"),cp:"+",cn:"\u2212",bp:"+",bn:"\u2212",coil:E("tekercs"),chg:E("t\xF6lt\xE9s"),r:E("ellen\xE1ll\xE1s"),c:E("kondenz\xE1tor"),j:E("\xE1tk\xF6t\xE9s"),h:E("t\xFCske")},e_=new Set(["gnd","vin"]);function t_(e,t,r){let n=zr(r),o=t.byPart.get(r.id),s=[],a=new Set;for(let i of me(r)){let l=n[i.id];if(a.has(l))continue;a.add(l);let c=me(r).filter(h=>n[h.id]===l),u=new Set(c.map(h=>r.id+"."+h.id)),d=e.links.find(h=>u.has(h.a)||u.has(h.b))||null,p=d?u.has(d.a)?d.b:d.a:null,m=o&&o.map[i.id],b=!!m&&(m.on||Ae(r)),f=b&&m?[...new Set((t.netPins.get(m.net)||[]).filter(h=>h.part!==r||n[h.id]!==l).map(h=>Cl(h)))]:[];s.push({ref:r.id+"."+i.id,label:Cl(i),name:c.map(h=>h.name).filter((h,g,v)=>v.indexOf(h)===g).join("/"),role:i.role,link:d,target:p,net:f,on:b,floating:!d&&!f.length})}return s}function Bp(e,t){let r=new Float64Array(e*e),n=new Float64Array(e);for(let{a:s,b:a,g:i,E:l,cp:c=s,cn:u=a}of t)s>=0&&(c>=0&&(r[s*e+c]+=i),u>=0&&(r[s*e+u]-=i),n[s]+=i*l),a>=0&&(c>=0&&(r[a*e+c]-=i),u>=0&&(r[a*e+u]+=i),n[a]-=i*l);for(let s=0;s<e;s++){let a=s,i=Math.abs(r[s*e+s]);for(let l=s+1;l<e;l++){let c=Math.abs(r[l*e+s]);c>i&&(i=c,a=l)}if(!(i<1e-30)){if(a!==s){for(let c=0;c<e;c++){let u=r[s*e+c];r[s*e+c]=r[a*e+c],r[a*e+c]=u}let l=n[s];n[s]=n[a],n[a]=l}for(let l=s+1;l<e;l++){let c=r[l*e+s]/r[s*e+s];if(c){for(let u=s;u<e;u++)r[l*e+u]-=c*r[s*e+u];n[l]-=c*n[s]}}}}let o=new Float64Array(e);for(let s=e-1;s>=0;s--){let a=n[s];for(let i=s+1;i<e;i++)a-=r[s*e+i]*o[i];o[s]=r[s*e+s]?a/r[s*e+s]:0}return o}var Nl=new Map,Up=new Map;function s_(){Nl.clear(),Up.clear()}function pa(e,t,r,n,o){let s=e.gpio[t.id+"."+r];return n?s&&da(n,s)?s:Yz(n,o):s||"pullup"}var fa=(e,t)=>Object.assign({duty:50,freq:1e3},(e.pwm||{})[t]||{}),mN=25,Gp=20,r_=1;function qp(e,t,r){let n=[];for(let d of e.parts)for(let p of t.byPart.get(d.id).pins)p.role==="gpio"&&pa(e,d,p.id,p,t)==="pwm"&&n.push({key:d.id+"."+p.id,q:p,...fa(e,d.id+"."+p.id)});let o=r.slow,s=o?n.filter(d=>+d.freq>=mN):n,a=o||new Set,l=[0,...[...new Set(s.map(d=>Math.max(0,Math.min(100,+d.duty||0))))].filter(d=>d>0&&d<100).sort((d,p)=>d-p),100],c=()=>{let d=[];for(let p=0;p+1<l.length;p++){let m=l[p],b=(l[p+1]-m)/100;b<=0||d.push({w:b,o:vN(e,t,new Set([...a,...s.filter(f=>f.duty>m).map(f=>f.key)]))})}return kN(d)},u=c();for(let d=0;d<16&&bN(u);d++)u=c();u.pwm=new Map(n.map(d=>[d.q.net,d])),gN(u,r.running);for(let d of u.servos){let p=u.pwm.get(d.sigNet);d.pulse=p?p.duty/100/Math.max(1e-9,p.freq)*1e3:null;let m=!!p&&p.freq>=40&&p.freq<=400&&d.pulse>=d.pmin-.2&&d.pulse<=d.pmax+.2;d.angle=m?Math.max(0,Math.min(180,(d.pulse-d.pmin)/(d.pmax-d.pmin)*180)):null}return u}var hN={1:0,3:1,2:2,6:3,4:4,12:5,8:6,9:7};function gN(e,t){for(let r of e.steppers){let n=Up.get(r.p.id)||{pos:0,phase:null},o=[r.ua,r.ub,r.uc,r.ud].reduce((a,i,l)=>a|(i>1.5?1<<l:0),0),s=hN[o];if(t&&s!=null){if(n.phase!=null){let a=(s-n.phase+8)%8;a>=1&&a<=3?n.pos+=a:a>=5&&(n.pos-=8-a)}n.phase=s}Up.set(r.p.id,n),r.pattern=o,r.pos=n.pos,r.coils="ABCD".split("").filter((a,i)=>o&1<<i).join(""),r.angle=n.pos*360/r.steps,r.rotorAngle=n.pos*360/(r.steps/r.rotor)}}function bN(e){let t=!1;for(let r of e.logics){if(!r.regs.length)continue;let n=Nl.get(r.p.id)||{regs:{},clk:{}},o={};for(let s of r.regs){let a=n.clk[s.name],i=s.clk;n.clk[s.name]=i;let l=s.edge==="fall"?a===1&&i===0:a===0&&i===1;o[s.name]=s.async!=null?s.async:l?s.d:s.name in n.regs?n.regs[s.name]:s.val}for(let s in o)o[s]!==n.regs[s]&&(t=!0);n.regs=o,Nl.set(r.p.id,n)}return t}var n_={gpios:new Set(["I"]),srcI:new Set(["I"])},o_={off:0,sat:1,act:2},yN=["leds","picos","gpios","bats","srcI","fets","caps","bjts","motors","servos","logics","steppers"];function kN(e){if(e.length===1)return e[0].o;let t=e[0].o,r={...t,netV:new Map,floating:new Set};for(let{w:n,o}of e){for(let[s,a]of o.netV)r.netV.set(s,(r.netV.get(s)||0)+n*a);for(let s of o.floating)r.floating.add(s)}for(let n of yN){let o=t[n].map((s,a)=>{let i={...s};for(let l in s){let c=s[l],u=e.map(({w:d,o:p})=>[d,p[n][a][l]]);typeof c=="number"&&u.every(([,d])=>d===c)?i[l]=c:typeof c=="number"?i[l]=n_[n]&&n_[n].has(l)?u.reduce((d,[,p])=>Math.abs(p)>Math.abs(d)?p:d,0):u.reduce((d,[p,m])=>d+p*(typeof m=="number"?m:0),0):typeof c=="boolean"?i[l]=u.some(([,d])=>d):l==="st"&&(i[l]=u.reduce((d,[,p])=>o_[p]>o_[d]?p:d,c))}return i});r[n]=o}return r}function vN(e,t,r){let n=new Map,o=x=>(n.has(x)||n.set(x,n.size),n.get(x));for(let x of t.pins)x.net>=0&&o(x.net);for(let x of e.parts)for(let $ of W[x.type].def.model||[])$.el==="mcu"&&!$.vbus&&o("usb:"+x.id);let s=n.size,a=[],i=[],l=[],c=[],u=[],d=[],p=[],m=[],b=[],f=[],h=[];for(let x of e.parts){let $=t.byPart.get(x.id),F=$.map,y=j=>n.get(F[j].net),L=W[x.type].def.model;if(!L)continue;let Y=Ol(x),Oe=j=>j!=null?ve(j,Y):null;for(let j of L)if(j.el==="mcu")a.push({p:x,gnd:y(j.gnd),vbus:j.vbus?y(j.vbus):n.get("usb:"+x.id),vsys:y(j.vsys),v33:y(j.v33),vsysPin:F[j.vsys],vreg:ve(j.vreg??1.8,Y),vmax:Oe(j.vmax),igpio:ve(j.igpio??.012,Y),gp:$.pins.filter(ee=>ee.role==="gpio").map(ee=>({q:ee,node:n.get(ee.net),mode:pa(e,x,ee.id,ee,t)})),reg:!1,d:!1});else if(j.el==="diode")i.push({p:x,a:y(j.a),k:y(j.k),vf:ve(j.vf,Y),ron:Math.max(.001,ve(j.ron??15,Y)),imax:Oe(j.imax),light:!!j.light,on:!1});else if(j.el==="resistor")l.push({p:x,a:y(j.a),b:y(j.b),g:1/Math.max(.001,ve(j.ohm,Y))});else if(j.el==="source")c.push({p:x,a:y(j.p),b:y(j.n),E:ve(j.v,Y),g:1/Math.max(.001,ve(j.rint??.1,Y)),kind:j.kind||"battery"});else if(j.el==="capacitor")d.push({p:x,a:y(j.a),b:y(j.b),f:ve(j.f,Y),vmax:Oe(j.vmax),polar:!!j.polar});else if(j.el==="npn")p.push({p:x,c:y(j.c),b:y(j.b),e:y(j.e),beta:Math.max(1,ve(j.beta,Y)),vbe:ve(j.vbe??.65,Y),vcesat:ve(j.vcesat??.1,Y),imax:Oe(j.imax),be:!1,st:"off",ic:0});else if(j.el==="motor")m.push({p:x,a:y(j.a),b:y(j.b),g:1/Math.max(.001,ve(j.ohm,Y)),vnom:Math.max(.1,ve(j.vnom,Y))});else if(j.el==="stepper")h.push({p:x,com:y(j.com),coils:[y(j.a),y(j.b),y(j.c),y(j.d)],g:1/Math.max(.001,ve(j.ohm,Y)),steps:Math.max(1,ve(j.steps??4096,Y)),rotor:Math.max(1,ve(j.rotor??64,Y))});else if(j.el==="servo")b.push({p:x,vp:y(j.vp),gnd:y(j.gnd),sigNet:F[j.sig].net,g:1/Math.max(.001,ve(j.ohm,Y)),pmin:ve(j.pmin??.5,Y),pmax:ve(j.pmax??2.5,Y)});else if(j.el==="logic"){let ee=$.pins,G=Pe=>{try{return Pe&&String(Pe).trim()?aa(String(Pe)):null}catch{return null}},ue=new Map,we=[],X=(Nl.get(x.id)||{regs:{}}).regs,xe=[];for(let Pe of j.regs||[]){let ct=G(Pe.clk),Ue=G(Pe.d);!ct||!Ue||xe.push({name:Pe.name,clk:ct,d:Ue,reset:G(Pe.reset),set:G(Pe.set),edge:Pe.edge==="fall"?"fall":"rise",stored:X[Pe.name]??Pe.init??0,eff:"X"})}let mt=new Set(xe.map(Pe=>Pe.name)),nt=Pe=>{if(Pe)for(let ct of Vn(Pe)){if(ue.has(ct)||mt.has(ct))continue;let Ue=Pl(ct,ee);if(!Ue)continue;let Yt=F[Ue];ue.set(ct,{q:Yt,node:y(Ue),open:(t.netPins.get(Yt.net)||[]).length<=1&&(t.netSecs.get(Yt.net)||0)<=1})}};for(let Pe of j.outs||[]){let ct=G(Pe.expr),Ue=G(Pe.oe);!ct||!F[Pe.pin]||(we.push({p:x,pin:F[Pe.pin],node:y(Pe.pin),ast:ct,oe:Ue,type:Pe.type==="od"?"od":"pp",st:"z"}),nt(ct),nt(Ue))}for(let Pe of xe)nt(Pe.clk),nt(Pe.d),nt(Pe.reset),nt(Pe.set);f.push({p:x,vcc:y(j.vcc),gnd:y(j.gnd),ins:ue,outs:we,regs:xe,vih:ve(j.vih??.7,Y),vil:ve(j.vil??.3,Y),g:1/Math.max(1,ve(j.rout??50,Y)),imax:ve(j.imax??.025,Y),vdd:0})}else j.el==="nmos"&&u.push({p:x,d:y(j.d),g:y(j.g),s:y(j.s),vth:ve(j.vth,Y),ron:Math.max(.001,ve(j.ron,Y)),imax:Oe(j.imax),on:!1})}let g=new Float64Array(s),v=[];for(let x=0;x<60;x++){v=[];let $=(y,L,Y,Oe,j,ee,G,ue)=>v.push(G==null?{a:y,b:L,g:Y,E:Oe,kind:j,ref:ee}:{a:y,b:L,g:Y,E:Oe,kind:j,ref:ee,cp:G,cn:ue});for(let y=0;y<s;y++)$(y,-1,1e-9,0,"leak");for(let y of a)if($(y.gnd,-1,1e4,0,"gref",y),e.settings.usb&&$(y.vbus,y.gnd,10,5,"vbus",y),y.vbus!==y.vsys&&$(y.vbus,y.vsys,y.d?5:1e-9,y.d?.3:0,"pdiode",y),y.reg){$(y.v33,y.gnd,10,3.3,"v33",y);for(let L of y.gp){let Y=L.mode==="pwm"?r&&r.has(y.p.id+"."+L.q.id)?"out_high":"out_low":L.mode;Y==="pullup"?$(L.node,y.v33,2e-5,0,"pull",L):Y==="pulldown"?$(L.node,y.gnd,2e-5,0,"pull",L):Y==="out_high"?$(L.node,y.gnd,1/40,3.3,"gout",L):Y==="out_low"&&$(L.node,y.gnd,1/40,0,"gout",L)}}for(let y of l)$(y.a,y.b,y.g,0,"res",y);for(let y of m)$(y.a,y.b,y.g,0,"motor",y);for(let y of f)for(let L of y.outs)L.st===1?$(L.node,y.vcc,y.g,0,"lout",L):L.st===0&&$(L.node,y.gnd,y.g,0,"lout",L);for(let y of b)$(y.vp,y.gnd,y.g,0,"servo",y);for(let y of h)for(let L of y.coils)$(y.com,L,y.g,0,"coil",y);for(let y of i)$(y.a,y.k,y.on?1/y.ron:1e-9,y.on?y.vf:0,"led",y);for(let y of c)$(y.a,y.b,y.g,y.E,"bat",y);for(let y of u)$(y.d,y.s,y.on?1/y.ron:1e-9,0,"fet",y);for(let y of p)$(y.b,y.e,y.be?1/Gp:1e-9,y.be?y.vbe:0,"bjt_be",y),y.st==="sat"?$(y.c,y.e,1/r_,y.vcesat,"bjt_ce",y):y.st==="act"&&$(y.c,y.e,y.beta/Gp,y.vbe,"bjt_ce",y,y.b,y.e);g=Bp(s,v);let F=!1;for(let y of i){let L=g[y.a]-g[y.k];!y.on&&L>y.vf+1e-4?(y.on=!0,F=!0):y.on&&L<y.vf&&(y.on=!1,F=!0)}for(let y of u){let L=g[y.g]-g[y.s]>y.vth;L!==y.on&&(y.on=L,F=!0)}for(let y of f){let L=g[y.vcc]-g[y.gnd];y.vdd=L;let Y=G=>{let ue=y.ins.get(G);if(!ue||ue.open)return"X";let we=g[ue.node]-g[y.gnd];return we>=y.vih*L?1:we<=y.vil*L?0:"X"},Oe=new Map(y.regs.map(G=>[G.name,G])),j=G=>Oe.has(G)?Oe.get(G).stored:Y(G);for(let G of y.regs){let ue=G.reset?yr(G.reset,j):0,we=G.set?yr(G.set,j):0;G.async=L<1?null:ue===1?0:we===1?1:null,G.eff=L<1?"X":G.async??G.stored}let ee=G=>Oe.has(G)?Oe.get(G).eff:Y(G);y.lvl=ee;for(let G of y.outs){let ue="z";if(L>=1&&(G.oe?yr(G.oe,ee):1)===1){let X=yr(G.ast,ee);ue=X==="X"?"z":G.type==="od"?X?"z":0:X}ue!==G.st&&(G.st=ue,F=!0)}}for(let y of p){let L=g[y.b]-g[y.e],Y=g[y.c]-g[y.e];!y.be&&L>y.vbe+1e-4?(y.be=!0,F=!0):y.be&&L<y.vbe&&(y.be=!1,F=!0);let Oe=y.beta*(y.be?Math.max(0,(L-y.vbe)/Gp):0);y.be?y.st==="off"?(y.st="act",F=!0):y.st==="sat"?(Y-y.vcesat)/r_>Oe*1.02+1e-9&&(y.st="act",F=!0):Y<y.vcesat-.01&&(y.st="sat",F=!0):y.st!=="off"&&(y.st="off",F=!0)}for(let y of a){if(y.vbus===y.vsys)y.d=!!e.settings.usb;else{let Y=g[y.vbus]-g[y.vsys];!y.d&&Y>.3001?(y.d=!0,F=!0):y.d&&Y<.3&&(y.d=!1,F=!0)}let L=g[y.vsys]-g[y.gnd]>y.vreg;L!==y.reg&&(y.reg=L,F=!0)}if(!F)break}let _=x=>x!=null&&x>=0?g[x]:0,w=x=>x.g*(_(x.cp??x.a)-_(x.cn??x.b)-x.E),k=Array.from({length:s},()=>[]),P=new Set;for(let x of v)x.kind==="leak"||x.g<1e-6||x.cp!=null||(x.a>=0&&x.b>=0&&(k[x.a].push(x.b),k[x.b].push(x.a)),["gref","vbus","v33","gout","bat"].includes(x.kind)&&(x.a>=0&&P.add(x.a),x.b>=0&&P.add(x.b)));let A=new Uint8Array(s),Z=[...P];for(Z.forEach(x=>A[x]=1);Z.length;){let x=Z.pop();for(let $ of k[x])A[$]||(A[$]=1,Z.push($))}let D=new Map,B=new Set;for(let[x,$]of n)D.set(x,g[$]),A[$]||B.add(x);let K={netV:D,floating:B,leds:[],picos:[],gpios:[],bats:[],srcI:[],fets:[],caps:[],bjts:[],motors:[],servos:[],logics:[],steppers:[]};for(let x of h){let $=x.coils.map(F=>g[x.com]-g[F]);K.steppers.push({p:x.p,steps:x.steps,rotor:x.rotor,ua:$[0],ub:$[1],uc:$[2],ud:$[3],I:$.reduce((F,y)=>F+Math.max(0,y),0)*x.g})}for(let x of f){let $=g[x.gnd],F=y=>{if(y.open||!A[y.node])return"X";let L=g[y.node]-$;return L>=x.vih*x.vdd?1:L<=x.vil*x.vdd?0:"X"};K.logics.push({p:x.p,vdd:x.vdd,imax:x.imax,ins:[...x.ins].map(([y,L])=>({name:y,lv:x.vdd>=1?F(L):"X",open:L.open||!A[L.node]})),outs:x.outs.map(y=>{let L=v.find(Y=>Y.kind==="lout"&&Y.ref===y);return{name:y.pin.name,st:y.st,I:L?Math.abs(w(L)):0}}),regs:x.regs.map(y=>({name:y.name,val:y.eff,clk:x.vdd>=1&&x.lvl?yr(y.clk,x.lvl):"X",d:x.vdd>=1&&x.lvl?yr(y.d,x.lvl):"X",async:y.async??null,edge:y.edge}))})}for(let x of m){let $=g[x.a]-g[x.b];K.motors.push({p:x.p,U:$,I:$*x.g,vnom:x.vnom,speed:Math.max(-1.5,Math.min(1.5,$/x.vnom))})}for(let x of b){let $=g[x.vp]-g[x.gnd];K.servos.push({p:x.p,U:$,I:$*x.g,sigNet:x.sigNet,pmin:x.pmin,pmax:x.pmax})}for(let x of d){let $=g[x.a]-g[x.b],F=Bp(s,[...v,{a:x.a,b:x.b,g:1e-9,E:-1e6}]),y=Math.abs(F[x.a]-F[x.b]-$)/.001;K.caps.push({p:x.p,U:$,f:x.f,vmax:x.vmax,polar:x.polar,R:y,tau:y<1e8?y*x.f:null,float:!A[x.a]||!A[x.b]})}for(let x of p){let $=v.find(y=>y.kind==="bjt_be"&&y.ref===x),F=v.find(y=>y.kind==="bjt_ce"&&y.ref===x);K.bjts.push({p:x.p,st:x.st,ib:$?Math.max(0,w($)):0,ic:F?w(F):0,vbe:g[x.b]-g[x.e],vce:g[x.c]-g[x.e],beta:x.beta,imax:x.imax,floatBase:!A[x.b]})}for(let x of v){if(x.kind==="led"){let $=x.ref;K.leds.push({p:$.p,I:Math.max(0,w(x)),on:$.on,light:$.light,imax:$.imax})}if(x.kind==="fet"){let $=x.ref;K.fets.push({p:$.p,on:$.on,vgs:g[$.g]-g[$.s],I:w(x),imax:$.imax,floatGate:!A[$.g]})}if(x.kind==="bat"){let $=x.ref;K.bats.push({p:$.p,I:w(x),kind:$.kind,node:x.a})}x.kind==="vbus"&&K.srcI.push({kind:"vbus",pc:x.ref,I:-w(x)}),x.kind==="v33"&&K.srcI.push({kind:"v33",pc:x.ref,I:-w(x)})}for(let x of a){K.picos.push({p:x.p,powered:x.reg,usb:e.settings.usb,feeds:x.d,vsys:x.vsys,vsysName:x.vsysPin.name,Usys:g[x.vsys]-g[x.gnd],vreg:x.vreg,vmax:x.vmax,igpio:x.igpio});for(let $ of x.gp){let F=v.find(y=>y.kind==="gout"&&y.ref===$);K.gpios.push({p:x.p,q:$.q,mode:$.mode,V:g[$.node]-g[x.gnd],I:F?-w(F):0,float:!A[$.node],powered:x.reg})}}return K}var a_=e=>e.powered?e.float?"?":e.mode==="adc"?"A":e.mode==="pwm"?"P":e.V>=2?"1":e.V<=.8?"0":"?":"\u2013";var zN=e=>e.settings.autoCut??e.board.sec>=e.board.rows;function _N(e){let t=(u,d)=>vr(e.board,u,d),r=new Map,n=u=>{for(;r.has(u)&&r.get(u)!==u;)u=r.get(u);return u},o=(u,d)=>{u=n(u),d=n(d),u!==d&&r.set(u,d)},s=[];for(let u of e.parts){if(Ae(u))continue;let d=zr(u);for(let p of me(u))t(p.r,p.c)&&s.push({q:p,key:ce(p.part)&&p.role==="gnd"?"GND":u.id+":"+d[p.id]})}let a=Il(e),i=u=>{let d=it(e,a(u));return d?ce(d.part)&&d.role==="gnd"?"GND":d.part.id+":"+zr(d.part)[d.id]:null},l=Tr(e.board,e.cuts||[]),c=new Set(e.links.filter(u=>u.b!=="GPIO"&&u.b!=="GND").map(u=>[u.a,u.b]).flat());for(let u of e.links){let d=i(u.a);if(d)if(u.b==="GND")o(d,"GND");else if(u.b==="GPIO"){let p=it(e,a(u.a)),m=it(e,u.a);if(!p||!m||!t(p.r,p.c))continue;let b=m.role==="adc",f=l.cell(p.r,p.c),h=s.map(_=>_.q).filter(_=>Vp(_,b)&&!c.has(_.part.id+"."+_.id)&&l.cell(_.r,_.c)===f).sort((_,w)=>ua(_)+ca(m.fn,_)-ua(w)-ca(m.fn,w)||Math.abs(_.r-p.r)-Math.abs(w.r-p.r)),g=u.gpio?h.find(_=>_.part.id+"."+_.id===u.gpio):void 0,v=g||h[0];if(v){let _=v.part.id+"."+v.id;c.add(_),u.gpio=_,o(d,i(_))}}else{let p=i(u.b);p&&o(d,p)}}return Uz(e.board,e.cuts||[],s.map(u=>({r:u.q.r,c:u.q.c,net:n(u.key)})),e.cutBan||[])}function Lo(e,t={}){let r=(S,R)=>vr(e.board,S,R);if(zN(e)){let S=JSON.stringify(e.auto.cuts||[]);e.auto.cuts=_N(e),JSON.stringify(e.auto.cuts)!==S&&(t={...t,full:!0})}else e.auto.cuts=[];let n=gn(e),o=n.N,s=(S,R)=>n.cell(S,R),a=[];for(let S of e.parts)for(let R of me(S))r(R.r,R.c)&&a.push(R);let i=new Map(a.map(S=>[S.part.id+"."+S.id,S])),l=Il(e),c=new Map,u=[],d=e.links.map(S=>{let R=l(S.a),V=S.b==="GND"||S.b==="GPIO"?S.b:l(S.b);if(R===S.a&&V===S.b)return S;R!==S.a&&c.set(R,S.a),V!==S.b&&c.set(V,S.b);let z={...S,a:R,b:V};return u.push([z,S]),z}),p=S=>c.has(S)?it(e,c.get(S)):i.get(S),m=d.filter(S=>i.has(S.a)&&(S.b==="GND"||S.b==="GPIO"||i.has(S.b))),b=new Set(m.map(S=>S.id)),f=new Set(a.map(S=>S.r+":"+S.c)),h=new Map(e.parts.map(S=>[S.id,zr(S)])),g=S=>r(S[0],S[1])&&r(S[2],S[3]),v=S=>i.get(S);function _(S,R){let V=new Int32Array(o),z=new Int32Array(o).fill(1),O=new Uint8Array(o);for(let N=0;N<o;N++)V[N]=N;let T=N=>{for(;V[N]!==N;)V[N]=V[V[N]],N=V[N];return N},M=(N,H)=>{if(N=T(N),H=T(H),N!==H){if(N>H){let Q=N;N=H,H=Q}V[H]=N,z[N]+=z[H]}};for(let N of[...e.bridges,...S])if(g(N)){let H=s(N[0],N[1]),Q=s(N[2],N[3]);O[H]=O[Q]=1,M(H,Q)}for(let N of[...e.wires,...R])if(r(N.a[0],N.a[1])&&r(N.b[0],N.b[1])){let H=s(N.a[0],N.a[1]),Q=s(N.b[0],N.b[1]);O[H]=O[Q]=1,M(H,Q)}for(let N of a)O[s(N.r,N.c)]=1;for(let N of e.parts){let H={};for(let Q of me(N))H[Q.id]=Q;for(let[Q,pe]of W[N.type].internal(N))r(H[Q].r,H[Q].c)&&r(H[pe].r,H[pe].c)&&M(s(H[Q].r,H[Q].c),s(H[pe].r,H[pe].c))}return{par:V,sz:z,used:O,find:T,uni:M,bridges:S.map(N=>[N[0],N[1],N[2],N[3],[...N[4]]]),wires:R.map(N=>({...N,links:[...N.links]})),wireEnds:new Set([...e.wires,...R].flatMap(N=>[N.a.join(":"),N.b.join(":")]))}}let w=S=>{let R=new Map;for(let V of a){let z=S.find(s(V.r,V.c));R.has(z)||R.set(z,[]),R.get(z).push(V)}return R},k=S=>!!S&&S.some(R=>ce(R.part)&&R.role==="gnd"),P=(S,R,V)=>!!S&&S.length===1&&ce(S[0].part)&&S[0].role==="gpio"&&V.sz[R]===1,A=S=>(p(S.a)||{role:""}).role==="adc",Z=new Set(m.filter(S=>S.b!=="GND"&&S.b!=="GPIO").flatMap(S=>[S.a,S.b])),D=(S,R)=>{let V=v(R.a);return S.find(s(V.r,V.c))};function B(S,R,V){if(R.b==="GND")return T=>k(V.get(T));if(R.b==="GPIO"){let T=A(R),M=T;if(!T){let N=0,H=new Set;for(let pe of a){if(!Ge(pe,"adc")||pe.role!=="gpio")continue;let te=S.find(s(pe.r,pe.c));!H.has(te)&&P(V.get(te),te,S)&&(H.add(te),N++)}let Q=m.filter(pe=>pe.b==="GPIO"&&A(pe)&&!K(S,pe,V)).length;M=N>Q}return N=>{let H=V.get(N);if(!P(H,N,S))return!1;let Q=H[0];return Z.has(Q.part.id+"."+Q.id)?!1:T?Ge(Q,"adc"):Ge(Q,"in")?!1:Ge(Q,"adc")?M:!0}}let z=v(R.b),O=S.find(s(z.r,z.c));return T=>T===O}function K(S,R,V){let z=D(S,R);if(R.b==="GPIO"){let O=A(R);return(V.get(z)||[]).some(T=>ce(T.part)&&T.role==="gpio"&&(!O||Ge(T,"adc")))}return B(S,R,V)(z)}let x=new Map;for(let S of m){let R=v(S.a),V=R.part.id+":"+h.get(R.part.id)[R.id],z=S.b==="GND"?"GND":S.b==="GPIO"?"G"+S.id:null;z&&!x.has(V)&&x.set(V,z)}let $=S=>{let R=S.filter(M=>ce(M.part)),V=R.some(M=>M.role==="gnd"),z=new Set(V?["GND"]:[]);for(let M of S){let N=x.get(M.part.id+":"+h.get(M.part.id)[M.id]);N&&z.add(N)}if(z.size>1)return!0;let O=new Set(R.filter(M=>M.role!=="gnd").map(M=>M.part.id+"."+M.id));if(V&&O.size||O.size>1)return!0;let T=new Map;for(let M of S){if(ce(M.part))continue;let N=h.get(M.part.id)[M.id];if(T.has(M.part.id)&&T.get(M.part.id)!==N)return!0;T.set(M.part.id,N)}return!1},F=(S,R)=>n.edge(S,R).br,y=(S,R,V)=>{let z=p(V.a);if(!z||!z.fn||V.b!=="GPIO")return null;let O=z.fn.split(".")[0],T=[];for(let M of m){if(M===V||M.b!=="GPIO")continue;let N=p(M.a);if(!N||N.part!==z.part||!N.fn||N.fn.split(".")[0]!==O)continue;let H=(R.get(D(S,M))||[]).find(Q=>ce(Q.part)&&Q.role==="gpio");H&&T.push(new Set(Wr(H,N.fn).map(Q=>Q.split(".")[0])))}return T.length?T.slice(1).reduce((M,N)=>new Set([...M].filter(H=>N.has(H))),T[0]):null};function L(S,R){let V=w(S),z=D(S,R),O=y(S,V,R),T=(p(R.a)||{fn:void 0}).fn;if(K(S,R,V))return{ok:!0,n:0};let M=B(S,R,V),N=R.b==="GPIO"&&!A(R),H=-1;if(R.b==="GPIO"&&R.gpio&&i.has(R.gpio)){let ne=v(R.gpio);H=S.find(s(ne.r,ne.c))}let Q=new Float64Array(o*5).fill(1e9),pe=new Int32Array(o*5).fill(-1),te=[],ae=(ne,Ee)=>{te.push([ne,Ee]);let qe=te.length-1;for(;qe>0;){let yt=qe-1>>1;if(te[yt][0]<=te[qe][0])break;[te[yt],te[qe]]=[te[qe],te[yt]],qe=yt}},re=()=>{let ne=te[0],Ee=te.pop();if(te.length){te[0]=Ee;let qe=0;for(;;){let yt=2*qe+1,kt=yt+1,vt=qe;if(yt<te.length&&te[yt][0]<te[vt][0]&&(vt=yt),kt<te.length&&te[kt][0]<te[vt][0]&&(vt=kt),vt===qe)break;[te[vt],te[qe]]=[te[qe],te[vt]],qe=vt}}return ne};for(let ne=0;ne<o;ne++)S.find(ne)===z&&(Q[ne*5+4]=0,ae(0,ne*5+4));let Me=null,ot=1e9;for(;te.length;){let[ne,Ee]=re();if(ne>Q[Ee])continue;if(ne>=ot)break;let qe=Ee/5|0,yt=Ee%5;for(let kt of n.adj(qe)){let vt=kt.dir,Tt=kt.to,wr=S.find(Tt);if(wr===z)continue;let Gn=1+(yt!==4&&yt!==vt?.6:0);if(S.used[Tt]||S.sz[wr]>1){if(M(wr)){let Un=(V.get(wr)||[])[0],U_=!!O&&O.size>0&&!!Un&&Fn(Un.part)!=="matrix"&&!Wr(Un,T||"").some(q_=>O.has(q_.split(".")[0])),df=ne+Gn+(H>=0&&wr!==H?14:0)+(N&&Ge(Un,"adc")?12:0)+(R.b==="GPIO"&&wr!==H?ua(Un)+ca(T,Un)+(U_?12:0):0);df<ot&&(ot=df,Me={s:Ee,n:Tt})}continue}let Yr=Tt*5+vt,Zl=ne+Gn;Zl<Q[Yr]&&(Q[Yr]=Zl,pe[Yr]=Ee,ae(Zl,Yr))}}if(!Me)return{ok:!1};let dt=[Me.n],$e=Me.s;for(;$e>=0;)dt.push($e/5|0),$e=pe[$e];for(let ne=0;ne+1<dt.length;ne++){let Ee=F(dt[ne],dt[ne+1]);S.bridges.push([Ee[0],Ee[1],Ee[2],Ee[3],[R.id]])}for(let ne of dt)S.used[ne]=1;for(let ne=0;ne+1<dt.length;ne++)S.uni(dt[ne],dt[ne+1]);return{ok:!0,n:dt.length-1}}let Y=S=>{let R=v(S.a);if(S.b!=="GND"&&S.b!=="GPIO"){let O=v(S.b);return Math.abs(R.r-O.r)/3+Math.abs(R.c-O.c)}let V=S.b==="GPIO"&&A(S),z=1e9;for(let O of a)(S.b==="GND"?ce(O.part)&&O.role==="gnd":Vp(O,V))&&(z=Math.min(z,Math.abs(R.r-O.r)/3+Math.abs(R.c-O.c)));return z},Oe=S=>S.b==="GND"?2:S.b==="GPIO"?A(S)?.5:1:0,j=(S,R)=>Oe(S)-Oe(R)||Y(R)-Y(S);function ee(){let S=[...m].sort(j),R=7,V=()=>(R=R*16807%2147483647)/2147483647,z=null,O=-1;for(let T=0;T<60;T++){let M=_([],[]),N=[],H=0;for(let te of S){let ae=L(M,te);ae.ok?H+=ae.n||0:N.push(te)}let Q=0;{let te=w(M);for(let ae of m){let re=p(ae.a);if(!re||!re.fn||ae.b!=="GPIO")continue;let Me=(te.get(D(M,ae))||[]).find(dt=>ce(dt.part)&&dt.role==="gpio");if(!Me||Fn(Me.part)==="matrix")continue;if(!Wr(Me,re.fn).length){Q++;continue}let ot=y(M,te,ae);(ot&&ot.size===0||ot&&!Wr(Me,re.fn).some(dt=>ot.has(dt.split(".")[0])))&&Q++}}let pe=N.length*1e4+Q*300+H;if((!z||pe<z.score)&&(z={score:pe,S:M,fails:N}),!N.length&&O<0&&(O=T),O>=0&&T>=O+14)break;if(N.length&&(S=[...N,...S.filter(te=>!N.includes(te))]),T>8||O>=0){for(let te=S.length-1;te>0;te--)if(V()<.3){let ae=V()*(te+1)|0;[S[te],S[ae]]=[S[ae],S[te]]}}}return z||{S:_([],[]),fails:[]}}function G(){let S=e.auto.bridges.filter(g).map(T=>[T[0],T[1],T[2],T[3],[...T[4]||[]]]),R=e.auto.wires.map(T=>({...T,links:[...T.links||[]]})),V=new Set;if(t.moved)for(let T of m)[T.a,T.b].some(M=>t.moved.has(M.split(".")[0]))&&V.add(T.id);for(let T=0;T<10;T++){let M=re=>re.filter(Me=>b.has(Me)&&!V.has(Me));S=S.map(re=>(re[4]=M(re[4]),re)).filter(re=>re[4].length),R=R.map(re=>(re.links=M(re.links),re)).filter(re=>re.links.length);let N=_(S,R),H=w(N),Q=new Set,pe=!1;for(let[re,Me]of H)$(Me)&&Q.add(re);let te=re=>{for(let Me of re)V.has(Me)||(V.add(Me),pe=!0)};for(let re of S)Q.has(N.find(s(re[0],re[1])))&&te(re[4]);for(let re of R)Q.has(N.find(s(re.a[0],re.a[1])))&&te(re.links);let ae=new Set([...S.flatMap(re=>re[4]),...R.flatMap(re=>re.links)]);for(let re of m)ae.has(re.id)&&!K(N,re,H)&&te([re.id]);if(!pe)break}let z=_(S,R),O=[];for(let T of m.filter(M=>!K(z,M,w(z))).sort(j))L(z,T).ok||O.push(T);return{S:z,fails:O}}let ue=t.full||!e.auto.bridges.length&&!e.auto.wires.length?ee():G();if(ue.fails.length&&!t.full){let S=ee();S.fails.length<ue.fails.length&&(ue=S)}let we=ue.S,X=S=>n.segs[S].drilled?[]:n.holes(S).filter(([R,V])=>{let z=R+":"+V;return!f.has(z)&&!we.wireEnds.has(z)});for(let S of ue.fails){let R=D(we,S),V=w(we),z=B(we,S,V),O=[],T=[];for(let H=0;H<o;H++){let Q=we.find(H);Q===R?O.push(H):z(Q)&&T.push(H)}let M=null,N=1e9;for(let H of O)for(let Q of X(H))for(let pe of T)for(let te of X(pe)){let ae=Math.hypot(Q[0]-te[0],Q[1]-te[1]);ae<N&&(N=ae,M=[Q,te,pe])}M&&(we.wires.push({a:M[0],b:M[1],color:"#7048e8",links:[S.id]}),we.wireEnds.add(M[0].join(":")),we.wireEnds.add(M[1].join(":")),we.uni(R,M[2]))}let xe=new Map;for(let S of e.parts)if(Ae(S))for(let R of me(S))xe.set(S.id+"."+R.id,R);let mt=d.filter(S=>xe.has(S.a)||xe.has(S.b)).sort((S,R)=>Oe(S)-Oe(R)),nt=new Set,Pe=e.parts.filter(S=>!Ae(S)).map(S=>{let R=W[S.type].bounds(S),V=[It(S,R.r0,R.c0),It(S,R.r1,R.c1)];return[Math.min(V[0][0],V[1][0]),Math.max(V[0][0],V[1][0]),Math.min(V[0][1],V[1][1]),Math.max(V[0][1],V[1][1])]}),ct=S=>Pe.some(([R,V,z,O])=>S[0]>R&&S[0]<V&&S[1]>z&&S[1]<O),Ue=new Set(["p33","pwr","bp","chg","pout","vin","mp"]);for(let S of mt){let R=xe.get(S.a)||xe.get(S.b),V=xe.has(S.a)?S.b:S.a;if(xe.has(V)){let ae=xe.get(V);we.wires.push({a:[R.r,R.c],b:[ae.r,ae.c],color:"#495057",links:[S.id]});continue}let z=i.get(V),O=V==="GND"||R.role==="gnd"||z&&z.role==="gnd"?"#212529":Ue.has(R.role)||z&&Ue.has(z.role)?"#c92a2a":"#e8590c",T=w(we),M,N=-1;if(V==="GND")M=ae=>k(T.get(ae));else if(V==="GPIO"){let ae=R.role==="adc";if(S.gpio&&i.has(S.gpio)){let re=v(S.gpio);N=we.find(s(re.r,re.c))}M=re=>{let Me=T.get(re);if(nt.has(re)||!P(Me,re,we))return!1;let ot=Me[0];return Z.has(ot.part.id+"."+ot.id)?!1:ae?Ge(ot,"adc"):!Ge(ot,"in")}}else{let ae=i.get(V);if(!ae)continue;let re=we.find(s(ae.r,ae.c));M=Me=>Me===re}let H=null,Q=1e9;for(let ae=0;ae<o;ae++){let re=we.find(ae);if(!M(re))continue;let Me=(T.get(re)||[])[0],ot=V==="GPIO"&&R.role!=="adc"&&Ge(Me,"adc")?6:0,dt=re===N?-1e4:0,$e=V==="GPIO"?ua(Me)+ca(R.fn,Me):0;for(let ne of X(ae)){let Ee=Math.hypot(ne[0]-R.r,ne[1]-R.c)+ot+dt+$e+(ct(ne)?20:0);Ee<Q&&(Q=Ee,H={h:ne,r:re})}}{let ae=V!=="GND"&&V!=="GPIO"?i.get(V):null;if(ae&&!ce(ae.part)){let re=X(s(ae.r,ae.c)).some(ot=>!ct(ot)),Me=Math.hypot(ae.r-R.r,ae.c-R.c)+(re?3:-5);Me<Q&&!we.wireEnds.has(ae.r+":"+ae.c)&&(Q=Me,H={h:[ae.r,ae.c],r:we.find(s(ae.r,ae.c))})}}if(!H)continue;let pe=H.h,te=H.r;if(we.wires.push({a:[R.r,R.c],b:pe,color:O,links:[S.id]}),we.wireEnds.add(pe.join(":")),V==="GPIO"){nt.add(te);let ae=(T.get(te)||[]).find(re=>re.role==="gpio");ae&&(S.gpio=ae.part.id+"."+ae.id)}}e.auto={bridges:we.bridges,wires:we.wires,cuts:e.auto.cuts||[]};let Yt=w(we);for(let S of m){if(S.b!=="GPIO"||mt.includes(S))continue;let R=A(S),V=(Yt.get(D(we,S))||[]).find(z=>ce(z.part)&&z.role==="gpio"&&(!R||Ge(z,"adc")));V&&(S.gpio=V.part.id+"."+V.id)}for(let[S,R]of u)R.gpio=S.gpio}function l_(e){let t=W[e.type].bounds(e),r=[[t.r0,t.c0],[t.r0,t.c1],[t.r1,t.c0],[t.r1,t.c1]].map(([s,a])=>It(e,s,a)),n=r.map(s=>s[0]),o=r.map(s=>s[1]);return{r0:Math.round(Math.min(...n)),r1:Math.round(Math.max(...n)),c0:Math.round(Math.min(...o)),c1:Math.round(Math.max(...o))}}function ma(e){let t=e.board,r=(f,h)=>Math.max(0,Math.min(h-1,f)),n=1/0,o=-1/0,s=1/0,a=-1/0,i=0,l=0,c=0,u=(f,h)=>{f=r(f,t.rows),h=r(h,t.cols),n=Math.min(n,f),o=Math.max(o,f),s=Math.min(s,h),a=Math.max(a,h)};for(let f of e.parts){if(Ae(f))continue;let h=l_(f),g={r0:r(h.r0,t.rows),r1:r(h.r1,t.rows),c0:r(h.c0,t.cols),c1:r(h.c1,t.cols)};l++,f.fixed&&c++,i+=(g.r1-g.r0+1)*(g.c1-g.c0+1),u(g.r0,g.c0),u(g.r1,g.c1)}for(let f of[...e.bridges,...e.auto.bridges])u(f[0],f[1]),u(f[2],f[3]);for(let f of[...e.wires,...e.auto.wires])for(let h of[f.a,f.b])h[0]>=0&&h[0]<t.rows&&h[1]>=0&&h[1]<t.cols&&u(h[0],h[1]);let d=t.rows*t.cols;if(n===1/0)return{box:null,rows:0,cols:0,area:0,boardArea:d,partArea:0,fill:0,parts:l,fixed:c};let p=o-n+1,m=a-s+1,b=p*m;return{box:{r0:n,r1:o,c0:s,c1:a},rows:p,cols:m,area:b,boardArea:d,partArea:i,fill:Math.min(1,i/b),parts:l,fixed:c}}var i_=e=>JSON.parse(JSON.stringify(e)),wN=(e,t)=>Math.abs(e.r-t.r)/3+Math.abs(e.c-t.c);function Rl(e){let t=Do(e,Cr(e)),r=0;for(let n of t.values())n.ok&&r++;return{stats:ma(e),links:e.links.length,linksOk:r,bridges:e.bridges.length+e.auto.bridges.length,wires:e.wires.length+e.auto.wires.length,cuts:(e.cuts||[]).length+(e.auto.cuts||[]).length}}var Kp=e=>{e.settings.autoRoute&&e.links.length&&Lo(e,{full:!0})};function c_(e,t={}){let r=Math.max(0,Math.min(1,t.strength??.5)),n=r<.34?2:r<.67?1:0,o=.25-.22*r,s=.02+.1*r,a=Math.round(4+8*r),i=t.keepMcu!==!1,l=t.keepControls!==!1,c=t.rotate!==!1,u=t.maxPasses??40,d=t.only?new Set(t.only):null,p=i_(e);Kp(p);let m=Rl(e),b=Rl(p),f=m.linksOk>=b.linksOk?m:b,h=p.board,g=(z,O)=>z>=0&&O>=0&&z<h.rows&&O<h.cols,v=Tr(h,p.cuts||[]),_=(z,O)=>g(z,O)&&!v.drilled(z,O)?v.cell(z,O):-1,w=new Map,k=z=>{let O=w.get(z);if(O==null||O===z)return w.set(z,z),z;let T=k(O);return w.set(z,T),T},P=(z,O)=>{let T=k(z),M=k(O);T!==M&&w.set(T,M)};for(let z of p.parts){let O=zr(z);for(let T in O)P(z.id+"."+T,z.id+"."+O[T]);for(let T of me(z))ce(z)&&T.role==="gnd"&&P(z.id+"."+T.id,"GND")}for(let z of p.links)z.b==="GND"?P(z.a,"GND"):z.b==="GPIO"?z.gpio&&P(z.a,z.gpio):P(z.a,z.b);let A=(z,O)=>k(z+"."+O),Z={},D=z=>!!((W[z.type].def.controls||[]).length||W[z.type].def.socket);for(let z of p.parts){let O=Ae(z)?"off":z.fixed?"fixed":i&&ce(z)?"mcu":l&&D(z)?"control":d&&!d.has(z.id)?"scope":null;O&&(Z[z.id]=O)}let B=new Set;for(let z of p.bridges)B.add(_(z[0],z[1])),B.add(_(z[2],z[3]));for(let z of p.wires)for(let O of[z.a,z.b])B.add(_(O[0],O[1]));let K=new Map;for(let z of p.parts)if(!Ae(z))for(let O of me(z)){let T=_(O.r,O.c);T<0||(K.has(T)||K.set(T,[]),K.get(T).push({pid:z.id,net:A(z.id,O.id)}))}for(let z of p.parts)if(!(Z[z.id]||Ae(z)))for(let O of me(z)){let T=_(O.r,O.c);if(T<0)continue;let M=A(z.id,O.id);if(B.has(T)&&T>=0||(K.get(T)||[]).some(N=>N.pid!==z.id&&N.net!==M)){Z[z.id]="manual";break}}let x=p.parts.filter(z=>!Z[z.id]),$={};for(let z in Z){let O=p.parts.find(T=>T.id===z);$[O.label]=Z[z]}if(!x.length)return{moves:[],before:f,after:f,kept:$};let F=z=>{let O=it(p,z);return O?Zp(O).map(T=>({pid:O.part.id,pin:T.id})):[]},y=z=>p.parts.filter(O=>ce(O)).flatMap(O=>me(O).filter(T=>T.role===z&&g(T.r,T.c)).map(T=>({pid:O.id,pin:T.id}))),L=p.links.map(z=>[F(z.a),z.b==="GND"?y("gnd"):z.b==="GPIO"?z.gpio?F(z.gpio):y("gpio"):F(z.b)]),Y=new Map;L.forEach(([z,O],T)=>{for(let M of[...z,...O]){Y.has(M.pid)||Y.set(M.pid,[]);let N=Y.get(M.pid);N.includes(T)||N.push(T)}});let Oe=new Map,j=new Map,ee=z=>{let O=l_(z),T=me(z);return{r0:Math.min(O.r0,...T.map(M=>M.r)),r1:Math.max(O.r1,...T.map(M=>M.r)),c0:Math.min(O.c0,...T.map(M=>M.c)),c1:Math.max(O.c1,...T.map(M=>M.c))}},G=z=>{Oe.set(z.id,new Map(me(z).map(O=>[O.id,{r:O.r,c:O.c}]))),Ae(z)||j.set(z.id,ee(z))};for(let z of p.parts)G(z);let ue=(z,O)=>{let T=N=>(O&&N.pid===O.pid?O.pins:Oe.get(N.pid)).get(N.pin),M=1/0;for(let N of L[z][0]){let H=T(N);if(H)for(let Q of L[z][1]){if(Q.pid===N.pid&&Q.pin===N.pin)continue;let pe=T(Q);pe&&(M=Math.min(M,wN(H,pe)))}}return M===1/0?0:M},we=new Map(x.map(z=>[z.id,{r:z.r,c:z.c,rot:z.rot}])),X=new Map;for(let z of x){let O=c?[0,1,2,3]:[z.rot];X.set(z.id,O.map(T=>{let M={...z,r:0,c:0,rot:T};return{rot:T,pins:me(M).map(N=>({id:N.id,r:N.r,c:N.c})),rect:ee(M)}}))}let xe=z=>{let O=1/0,T=-1/0,M=1/0,N=-1/0;for(let[$e,ne]of j)$e!==z.id&&(O=Math.min(O,ne.r0),T=Math.max(T,ne.r1),M=Math.min(M,ne.c0),N=Math.max(N,ne.c1));let H=[...j].filter(([$e])=>$e!==z.id).map($e=>$e[1]),Q=Y.get(z.id)||[],pe=we.get(z.id),te=($e,ne,Ee)=>{let qe=new Map($e.pins.map(Tt=>[Tt.id,{r:Tt.r+ne,c:Tt.c+Ee}])),yt=0;for(let Tt of Q)yt+=ue(Tt,{pid:z.id,pins:qe});let kt={r0:Math.min(O,$e.rect.r0+ne),r1:Math.max(T,$e.rect.r1+ne),c0:Math.min(M,$e.rect.c0+Ee),c1:Math.max(N,$e.rect.c1+Ee)},vt=(kt.r1-kt.r0+1)*(kt.c1-kt.c0+1);return yt+s*vt+o*(Math.abs(ne-pe.r)+Math.abs(Ee-pe.c)+($e.rot!==pe.rot?2:0))},ae=X.get(z.id).find($e=>$e.rot===z.rot)||X.get(z.id)[0],re=te(ae,z.r,z.c),Me=new Set,ot=[],dt=($e,ne,Ee)=>{let qe=$e.rot+":"+ne+":"+Ee;Me.has(qe)||(Me.add(qe),ot.push([te($e,ne,Ee),$e,ne,Ee]))};for(let $e of X.get(z.id)){for(let ne=-a;ne<=a;ne++)for(let Ee=-a;Ee<=a;Ee++)dt($e,z.r+ne,z.c+Ee);if(Q.length<=8)for(let ne of Q)for(let Ee of[0,1]){let qe=L[ne][Ee].filter(kt=>kt.pid===z.id),yt=L[ne][1-Ee].filter(kt=>kt.pid!==z.id);for(let kt of qe){let vt=$e.pins.find(Tt=>Tt.id===kt.pin);if(vt)for(let Tt of yt){let wr=Oe.get(Tt.pid).get(Tt.pin);if(wr)for(let Gn=-4;Gn<=4;Gn++)for(let Yr=-3;Yr<=3;Yr++)dt($e,wr.r+Gn-vt.r,wr.c+Yr-vt.c)}}}}ot.sort(($e,ne)=>$e[0]-ne[0]||$e[2]-ne[2]||$e[3]-ne[3]||$e[1].rot-ne[1].rot);for(let[$e,ne,Ee,qe]of ot){if($e>=re-1e-6)return!1;if(mt(z,ne,Ee,qe,H))return z.r=Ee,z.c=qe,z.rot=ne.rot,G(z),!0}return!1},mt=(z,O,T,M,N)=>{let H={r0:O.rect.r0+T,r1:O.rect.r1+T,c0:O.rect.c0+M,c1:O.rect.c1+M};if(H.r0<0||H.c0<0||H.r1>=h.rows||H.c1>=h.cols)return!1;for(let pe of N)if(H.r0-n<=pe.r1&&pe.r0<=H.r1+n&&H.c0-n<=pe.c1&&pe.c0<=H.c1+n)return!1;let Q=new Map;for(let pe of O.pins){let te=_(pe.r+T,pe.c+M);if(te<0)return!1;let ae=A(z.id,pe.id);if(Q.has(te)&&Q.get(te)!==ae||(Q.set(te,ae),B.has(te)))return!1;for(let re of K.get(te)||[])if(re.pid!==z.id&&re.net!==ae)return!1}return!0},nt=(z,O)=>{for(let T of me(z)){let M=_(T.r,T.c);M<0||(O?(K.has(M)||K.set(M,[]),K.get(M).push({pid:z.id,net:A(z.id,T.id)})):K.set(M,(K.get(M)||[]).filter(N=>N.pid!==z.id)))}},Pe=.05+.6*r,ct=z=>z.bridges+Pe*z.stats.area,Ue=()=>{let z=i_(p);Kp(z);let O=Rl(z);return O.linksOk>=f.linksOk&&O.wires<=f.wires&&ct(O)<ct(f)-1e-9},Yt=[],S=()=>new Map(x.map(z=>[z.id,{r:z.r,c:z.c,rot:z.rot}])),R=z=>{for(let O of x){nt(O,!1);let T=z.get(O.id);O.r=T.r,O.c=T.c,O.rot=T.rot,G(O),nt(O,!0)}};Yt.push(S());for(let z=0;z<u;z++){let O=M=>(Y.get(M.id)||[]).reduce((N,H)=>N+ue(H),0),T=0;for(let M of[...x].sort((N,H)=>O(H)-O(N)||N.id.localeCompare(H.id)))nt(M,!1),xe(M)&&T++,nt(M,!0);if(!T)break;Yt.push(S())}if(Yt.length>1&&!Ue()){let z=0,O=Yt.length-1;for(;O-z>1;){let T=z+O>>1;R(Yt[T]),T>0&&Ue()?z=T:O=T}R(Yt[z])}let V=[];for(let z of x){let O=we.get(z.id);(O.r!==z.r||O.c!==z.c||O.rot!==z.rot)&&V.push({id:z.id,label:z.label,from:O,to:{r:z.r,c:z.c,rot:z.rot}})}return Kp(p),{moves:V,before:f,after:V.length?Rl(p):f,kept:$}}function u_(e,t){let r=0;for(let n of t.moves){let o=e.parts.find(s=>s.id===n.id);o&&(o.r=n.to.r,o.c=n.to.c,o.rot=n.to.rot,r++)}return r>0}var xN=.21;function SN(e,t,r,n){let o=gn(e),s=o.segs[o.cell(t,r)];if(s.drilled)return null;for(let a=s.r0;a<=s.r1;a++){if(a===t||!vr(e.board,a,r))continue;let i=a+":"+r;if(!n.has(i)&&!e.wires.some(l=>l.a[0]===a&&l.a[1]===r||l.b[0]===a&&l.b[1]===r))return i}return null}function d_(e,{A0:t,AS:r,SIM:n,linkState:o,tr:s=Gt}){let a=[],i=(f,h,g)=>a.push({sev:f,msg:h,holes:g||[]}),l=(f,h)=>vr(e.board,f,h),c=f=>[[f.r,f.c]],u=e.parts.some(f=>ce(f));for(let f of e.parts){let h=t.byPart.get(f.id);!Ae(f)&&h.pins.every(g=>!g.on)&&i("warn",s("{a}: teljesen a panelon k\xEDv\xFCl esik",{a:f.label}),[])}for(let f of e.parts)if(f.plug&&!jo(e,f)){let h=e.parts.find(g=>g.id===f.plug);h&&i("warn",s("{a}: a {b} csatlakoz\xF3nak kevesebb l\xE1ba van, mint a k\xE1belnek ({c}), \xEDgy nincs bedugva",{a:f.label,b:h.label,c:W[f.type].pins(f).length}),me(h).map(g=>[g.r,g.c]))}for(let f of e.parts){if(ce(f))continue;let h=t_(e,t,f);if(h.some(g=>!g.floating))for(let g of h)g.floating&&g.on&&e_.has(g.role)&&i("info",s("{a}: a {b} l\xE1b sehova sincs k\xF6tve",{a:g.label,b:s(Qz[g.role])}),(()=>{let v=it(e,g.ref);return v?c(v):[]})())}let d=new Map;for(let f of t.pins){if(!f.on)continue;let h=f.r+":"+f.c;d.has(h)||d.set(h,[]),d.get(h).push(f)}for(let[f,h]of d)h.length>1&&i("err",s("\xDCtk\xF6z\xE9s a {a} lyukban: {b}",{a:f,b:h.map(bn).join(", ")}),c(h[0]));{let f=gn(e);for(let[h,g]of d){let v=g[0];f.drilled(v.r,v.c)&&i("err",s("{a} kif\xFArt lyukban van ({b}), nincs alatta r\xE9z: a l\xE1b sehov\xE1 sem csatlakozik",{a:bn(v),b:h}),c(v))}for(let h of e.wires)for(let g of[h.a,h.b])l(g[0],g[1])&&f.drilled(g[0],g[1])&&i("warn",s("Vezet\xE9kv\xE9g kif\xFArt lyukban ({a}:{b}): nincs alatta r\xE9z",{a:g[0],b:g[1]}),[g]);for(let h of e.bridges)(f.drilled(h[0],h[1])||f.drilled(h[2],h[3]))&&i("warn",s("H\xEDd kif\xFArt lyukn\xE1l ({a}:{b}\u2013{c}:{d})",{a:h[0],b:h[1],c:h[2],d:h[3]}),[[h[0],h[1]]])}for(let f of e.parts){if(ce(f))continue;let h=t.byPart.get(f.id),g={},v=k=>g[k]===k?k:g[k]=v(g[k]);h.pins.forEach(k=>g[k.id]=k.id);for(let[k,P]of W[f.type].internal(f))g[v(k)]=v(P);let _=new Map;for(let k of h.pins){let P=v(k.id);_.has(k.net)||_.set(k.net,new Map);let A=_.get(k.net);A.has(P)||A.set(P,k)}let w=(W[f.type].def.model||[]).some(k=>k.el==="logic");for(let[,k]of _)if(k.size>1){let P=[...k.values()];if(w){let D=new Set(P.map(B=>B.role));if(!(D.has("vin")&&D.has("gnd")))continue}let A=P.some((D,B)=>P.some((K,x)=>x>B&&D.s===K.s)),Z=f.type==="button"?s("{a}: az A \xE9s B oldal k\xF6z\xF6s neten van, a gomb r\xF6vidre z\xE1rt",{a:f.label}):f.type==="bat"?s("{a}: az akku + \xE9s \u2212 p\xF3lusa \xF6ssze van k\xF6tve",{a:f.label}):s("{a}: {b} \xF6ssze van k\xF6tve",{a:f.label,b:P.map(D=>D.name).join(" "+s("\xE9s")+" ")});A&&(Z+=s(" (egy szekci\xF3ba esnek)")),i(f.type==="button"||f.type==="bat"?"err":"warn",Z,P.map(D=>[D.r,D.c]))}}let p=[];for(let[,f]of t.netPins){let h=f.filter(P=>ce(P.part)),g=new Map;h.forEach(P=>{let A=P.part.id+"."+(P.role==="gnd"?"GND":P.id);g.has(A)||g.set(A,P)});let v=[...g.values()];if(v.length>1&&v.some((A,Z)=>v.some((D,B)=>B>Z&&A.s===D.s&&A.part===D.part))){p.push(v);continue}let _=new Set;for(let P of f)ce(P.part)?P.role==="gnd"?_.add("GND"):P.role==="p33"?_.add("3V3"):P.role==="pwr"&&_.add(P.name):(P.role==="bp"||P.role==="chg"||P.role==="pout")&&_.add("BAT+");let w=f.map(P=>[P.r,P.c]);_.has("GND")&&_.size>1?i("err",s("Z\xE1rlat: GND \u2013 {a}",{a:[..._].filter(P=>P!=="GND").join(", ")}),w):_.has("3V3")&&_.size>1&&i("err",s("Z\xE1rlat: 3V3 \u2013 {a}",{a:[..._].filter(P=>P!=="3V3").join(", ")}),w);let k=v.filter(P=>P.role==="gpio");k.length>1&&i("warn",s("{a} k\xF6z\xF6s neten van",{a:k.map(P=>P.name).join(", ")}),w),k.length&&_.size&&i("warn",s("{a} k\xF6zvetlen\xFCl {b}-re k\xF6tve",{a:k.map(P=>P.name).join(", "),b:[..._].join("/")}),w)}{let f=new Map;for(let h of e.links){if(h.b!=="GND"&&h.b!=="GPIO")continue;let g=it(e,h.a);if(!g)continue;let v=g.part.id+":"+zr(g.part)[g.id];f.has(v)||f.set(v,{sg:h.b==="GND"?"GND":"G"+h.id,q:g})}for(let[,h]of t.netPins){let g=new Map;h.some(v=>ce(v.part)&&v.role==="gnd")&&g.set("GND",null);for(let v of h){let _=f.get(v.part.id+":"+zr(v.part)[v.id]);_&&!g.has(_.sg)&&g.set(_.sg,_.q)}if(g.size>1){let v=[...g.entries()].map(([,_])=>_?bn(_):"GND");i("err",s("\xD6ssze\xE9r\u0151 jelek: {a}",{a:v.join(" \xB7 ")}),h.map(_=>[_.r,_.c]))}else{let v=new Map;for(let w of h)w.part.type==="button"&&w.role==="A"&&v.set(w.part.id,w);let _=h.find(w=>ce(w.part)&&w.role==="gpio");_&&v.size>1&&i("warn",`${[...v.values()].map(w=>w.part.label).join(", ")} ugyanazon a GPIO-n (${_.name})`,[...v.values()].map(w=>[w.r,w.c]))}}}{let f=g=>{let v=W[g.type].bounds(g),_=[[v.r0,v.c0],[v.r0,v.c1],[v.r1,v.c0],[v.r1,v.c1]].map(([P,A])=>It(g,P,A)),w=_.map(P=>P[0]),k=_.map(P=>P[1]);return[Math.min(...w)+.25,Math.max(...w)-.25,Math.min(...k)+.25,Math.max(...k)-.25]},h=e.parts.filter(g=>!Ae(g)).map(g=>[g,f(g)]);for(let g=0;g<h.length;g++)for(let v=g+1;v<h.length;v++){let[_,w]=h[g],[k,P]=h[v];w[0]<P[1]&&P[0]<w[1]&&w[2]<P[3]&&P[2]<w[3]&&i("warn",s("{a} \xE9s {b} teste \xE1tfed",{a:_.label,b:k.label}),[[_.r,_.c],[k.r,k.c]])}}if(p.length>3){let f=p[0][0].part;i("err",s("{a}: {b} szekci\xF3ban t\xF6bb l\xE1b k\xF6z\xF6s szekci\xF3ba esik. A l\xE1bsor nem futhat szekci\xF3ir\xE1nyban, forgasd 90\xB0-kal.",{a:f.label,b:p.length}),p.flatMap(h=>h.map(g=>[g.r,g.c])))}else for(let f of p)i("err",s("Z\xE1rlat: {a} egy szekci\xF3ba esik",{a:f.map(bn).join(" \xB7 ")}),f.map(h=>[h.r,h.c]));let m=new Set(t.pins.map(f=>f.r+":"+f.c)),b=new Map;e.wires.forEach(f=>{for(let h of[f.a,f.b]){if(!l(h[0],h[1]))continue;let g=h[0]+":"+h[1];if(b.set(g,(b.get(g)||0)+1),m.has(g)){let v=SN(e,h[0],h[1],m);i("warn",s("Vezet\xE9kv\xE9g a {a} lyukban egy alkatr\xE9szl\xE1bbal k\xF6z\xF6sen, ez nem el\xE9g stabil.",{a:g})+" "+(v?s("Tedd \xE1t a {a} lyukba (ugyanaz a szekci\xF3).",{a:v}):s("A szekci\xF3ban nincs szabad lyuk: h\xEDdd \xE1t egy oldalszomsz\xE9dos szekci\xF3ba, \xE9s onnan vezesd tov\xE1bb.")),[h])}}});for(let[f,h]of b)if(h>1){let[g,v]=f.split(":").map(Number);i("warn",s("{a} vezet\xE9kv\xE9g ugyanabban a {b} lyukban",{a:h,b:f}),[[g,v]])}for(let f of e.links){let h=o.get(f.id);if(h&&!h.ok){let g=it(e,f.a);i("warn",s("Kapcsolat nincs bek\xF6tve: {a}",{a:Mo(e,f)}),g?c(g):[])}else if(h&&h.wire&&!h.cable){let g=it(e,f.a);i("warn",s("{a}: csak vezet\xE9kkel k\xF6thet\u0151 be (nincs szabad h\xEDd\xFAt)",{a:Mo(e,f)}),g?c(g):[])}}if(u)for(let f of e.parts){if(f.type!=="button"||e.links.some(v=>v.a.startsWith(f.id+".")))continue;let h=t.byPart.get(f.id).map;["A1","B1"].some(v=>(t.netPins.get(h[v].net)||[]).some(_=>ce(_.part)&&_.role==="gpio"))||i("warn",s("{a}: egyik oldala sincs GPIO-ra k\xF6tve",{a:f.label}),c(h.A1))}n&&PN(e,r,t,n,i,s);for(let f of e.parts)for(let h of W[f.type].def.model||[]){if(h.el!=="motor")continue;let g=t.byPart.get(f.id).map,v=g[h.a].net,_=g[h.b].net,w=t.netPins.get(v)||[],k=t.netPins.get(_)||[];if(w.length<2||k.length<2)continue;(w.some(A=>A.role==="gpio")||k.some(A=>A.role==="gpio"))&&i("err",s("{a}: a motor k\xF6zvetlen\xFCl GPIO-ra van k\xF6tve. Tranzisztor vagy MOSFET kell a meghajt\xE1s\xE1hoz.",{a:f.label}),[]),e.parts.some(A=>(W[A.type].def.model||[]).some(Z=>{if(Z.el!=="diode")return!1;let D=t.byPart.get(A.id).map,B=D[Z.a].net,K=D[Z.k].net;return B===v&&K===_||B===_&&K===v}))||i("warn",s("{a}: nincs visszacsap\xF3 di\xF3da a motoron. Tegy\xE9l egy di\xF3d\xE1t (pl. 1N5817) a motor kapcsaira, a kat\xF3dj\xE1val a + fel\xE9, k\xFCl\xF6nben kikapcsol\xE1skor a fesz\xFClts\xE9gt\xFCske t\xF6nkreteheti a tranzisztort.",{a:f.label}),[])}if(n)for(let f of e.parts){let h=r.byPart.get(f.id),g=h.pins.filter(k=>k.role==="vin");if(!g.length)continue;let v=h.pins.find(k=>k.role==="gnd"),_=W[f.type].def.model||[],w=k=>n.floating.has(k.net)?null:n.netV.get(k.net)??null;for(let k of g){let P=_.some(B=>B.el==="source"&&B.p===k.id),A=w(k),Z=v?w(v):0,D=A==null||Z==null?null:A-Z;D==null||D<.5?P||i("warn",s("{a}.{b}: nincs t\xE1pfesz\xFClts\xE9g",{a:f.label,b:k.name})+(A!=null&&v&&Z==null?" "+s("(a {a} nincs bek\xF6tve)",{a:v.name}):""),c(k)):k.vmax!=null&&D>k.vmax+.05?i("err",s("{a}.{b}: {c} V, t\xF6bb a megengedett {d} V-n\xE1l",{a:f.label,b:k.name,c:D.toFixed(2),d:k.vmax}),c(k)):k.vmin!=null&&D<k.vmin-.05&&i("warn",s("{a}.{b}: csak {c} V, legal\xE1bb {d} V kell",{a:f.label,b:k.name,c:D.toFixed(2),d:k.vmin}),c(k))}}for(let f of e.parts){if(!ce(f))continue;let h=(W[f.type].def.meta||{}).pinNotes||{};for(let g of t.byPart.get(f.id).pins){if(g.role!=="gpio"||!g.on||!((t.netPins.get(g.net)||[]).length>1||(t.netSecs.get(g.net)||0)>1))continue;let _=Mp.find(w=>Ge(g,w[0]));_&&i("warn",`${f.label}.${g.name}: ${s(h[g.name]||_[1])}`,c(g))}}for(let f of e.parts){if(ce(f))continue;let h=new Map;for(let g of t.byPart.get(f.id).pins){if(!g.fn)continue;let v=(t.netPins.get(g.net)||[]).find(P=>ce(P.part)&&P.role==="gpio");if(!v)continue;let _=Wr(v,g.fn),w=g.fn.split(".")[0],k=Lp(Dp(g.fn));if(!_.length){if(Fn(v.part)!=="matrix"){let P=[...new Set(me(v.part).filter(A=>A.role==="gpio"&&Wr(A,g.fn).length).map(A=>A.name))];i("warn",s("{a}.{b} ({c}) \u2192 {d}: ez a l\xE1b nem {e}, \xEDgy a hardveres {f} nem haszn\xE1lhat\xF3 rajta, csak szoftveres. Alkalmas l\xE1bak: {g}",{a:f.label,b:g.name,c:Lp(g.fn),d:v.name,e:k,f:w.toUpperCase(),g:P.slice(0,8).join(", ")}),c(v))}continue}h.has(w)||h.set(w,[]),h.get(w).push({q:g,g:v,b:new Set(_.map(P=>P.split(".")[0]))})}for(let[g,v]of h){if(v.length<2||Fn(v[0].g.part)==="matrix")continue;v.slice(1).reduce((w,k)=>new Set([...w].filter(P=>k.b.has(P))),new Set(v[0].b)).size||i("warn",s("{a}: az {b}-l\xE1bai k\xFCl\xF6nb\xF6z\u0151 buszokra ker\xFCltek ({c}). Egy perif\xE9ri\xE1t egy buszra k\xF6ss.",{a:f.label,b:g.toUpperCase(),c:v.map(w=>`${w.q.name} \u2192 ${w.g.name}: ${[...w.b].map(k=>k.toUpperCase()).join("/")}`).join(", ")}),v.map(w=>c(w.g)[0]))}}{let f=new Map;for(let h of e.parts)if(ce(h))for(let g of t.byPart.get(h.id).pins){if(g.role!=="gpio"||pa(e,h,g.id,g,t)!=="pwm")continue;let v=(g.caps||[]).find(w=>/^pwm\d+\.[ab]$/.test(w));if(!v)continue;let _=h.id+":"+v.split(".")[0];f.has(_)||f.set(_,[]),f.get(_).push({q:g,f:fa(e,h.id+"."+g.id).freq,c:v})}for(let[,h]of f){if(h.length<2)continue;[...new Set(h.map(v=>+v.f))].length>1&&i("warn",s("{a} ugyanazon a PWM-szeleten ({b}) van, csak azonos frekvenci\xE1val m\u0171k\xF6dhetnek (most: {c}).",{a:h.map(v=>v.q.name).join(" "+s("\xE9s")+" "),b:h[0].c.split(".")[0].toUpperCase(),c:h.map(v=>v.f+" Hz").join(", ")}),h.map(v=>c(v.q)[0]))}}for(let[,f]of t.netPins){let h=f.filter(g=>g.role==="adc");if(h.length)for(let g of f.filter(v=>v.role==="gpio")){let v=h.map(bn).join(", "),_=()=>[...new Set(me(g.part).filter(w=>Ge(w,"adc")).map(w=>w.name))].join(", ")||"\u2013";if(!Tl(g))i("warn",s("{a}: anal\xF3g jel a {b}-n, de azon nincs ADC. Erre alkalmas: {c}",{a:v,b:g.name,c:_()}),c(g));else{Ge(g,"adc")||i("warn",s("{a}: ADC2-csatorna, bekapcsolt WiFi mellett nem m\xE9r. Anal\xF3g jelhez ink\xE1bb ADC1-es l\xE1bat v\xE1lassz: {b}",{a:g.name,b:_()}),c(g));let w=pa(e,g.part,g.id,g,t);w!=="adc"&&w!=="float"&&i("warn",s("{a}: az anal\xF3g m\xE9r\xE9shez \xE1ll\xEDtsd ADC m\xF3dba (most: {b})",{a:g.name,b:s(Zn.find(k=>k[0]===w)[1])}),c(g))}}}{let f=ma(e);f.parts>=3&&e.links.length>=2&&f.fill<xN&&f.area>=.25*f.boardArea&&a.push({sev:"info",msg:s("A terv szell\u0151s: az alkatr\xE9szek a foglalt ter\xFClet {f}%-\xE1t t\xF6ltik ki \u2013 t\xF6m\xF6r\xEDtve kisebb panel \xE9s r\xF6videbb bek\xF6t\xE9s lehet.",{f:Math.round(f.fill*100)}),holes:[],act:"compact"})}return a}function PN(e,t,r,n,o,s){for(let a of n.srcI)a.kind==="vbus"&&a.I>1&&o("err",s("Z\xE1rlat a VBUS-on ({a} A)",{a:a.I.toFixed(1)}),[]),a.kind==="v33"&&a.I>.3&&o("err",s("3V3 t\xFAlterhelve vagy z\xE1rlatos ({a} mA)",{a:(a.I*1e3).toFixed(0)}),[]);for(let a of n.gpios){let i=Math.abs(a.I)*1e3,l=Math.round(((n.picos.find(c=>c.p===a.p)||{igpio:0}).igpio||.012)*1e3);i>50?o("err",s("{a}: {b} mA, kimenet z\xE1rlatban",{a:a.q.name,b:i.toFixed(0)}),[[a.q.r,a.q.c]]):i>l&&o("warn",s("{a}: {b} mA, sok (aj\xE1nlott max. ~{c} mA)",{a:a.q.name,b:i.toFixed(1),c:l}),[[a.q.r,a.q.c]]),a.powered&&a.float&&(a.mode==="float"||a.mode==="adc")&&(t.netPins.get(t.pins.find(u=>u.part===a.p&&u.id===a.q.id).net)||[]).some(u=>No(u.part))&&o("warn",s("{a}: lebeg, am\xEDg a gomb nincs lenyomva{b}. Tegy\xE9l k\xFCls\u0151 felh\xFAz\xF3 ellen\xE1ll\xE1st (pl. 10 k\u03A9 a 3V3-ra), vagy v\xE1lassz m\xE1sik GPIO-t.",{a:a.q.name,b:Ge(a.q,"nopull")?" "+s("(ezen a l\xE1bon nincs bels\u0151 felh\xFAz\xF3 ellen\xE1ll\xE1s)"):""}),[[a.q.r,a.q.c]])}for(let a of n.picos){let i=r.byPart.get(a.p.id).pins.find(c=>c.name===a.vsysName),l=i?[[i.r,i.c]]:[];a.vmax!=null&&a.Usys>a.vmax+.05?o("err",s("{a}.{b}: {c} V, t\xF6bb a megengedett {d} V-n\xE1l",{a:a.p.label,b:a.vsysName,c:a.Usys.toFixed(2),d:a.vmax}),l):!a.powered&&a.Usys>.5&&o("warn",s("{a}: a t\xE1pbemeneten ({b}) csak {c} V van, a stabiliz\xE1tornak legal\xE1bb {d} V kell, \xEDgy nincs 3,3 V",{a:a.p.label,b:a.vsysName,c:a.Usys.toFixed(2),d:a.vreg}),l)}for(let a of n.leds)a.light&&a.I>.03?o("warn",s("{a}: {b} mA, el\u0151t\xE9t-ellen\xE1ll\xE1s kell",{a:a.p.label,b:(a.I*1e3).toFixed(0)}),[]):!a.light&&a.imax&&a.I>a.imax&&o("warn",s("{a}: {b}A, t\xF6bb a megengedett {c}A-n\xE9l",{a:a.p.label,b:kr(a.I),c:kr(a.imax)}),[]);for(let a of n.logics){if(a.vdd<1)continue;let i=a.ins.filter(l=>l.open).map(l=>l.name);i.length&&o("warn",s("{a}: lebeg\u0151 bemenet: {b}. CMOS-bemenetet ne hagyj szabadon: k\xF6sd jelre, vagy a nem haszn\xE1ltat GND-re (vagy VCC-re).",{a:a.p.label,b:i.join(", ")}),[]);for(let l of a.outs)l.I>a.imax&&o("warn",s("{a}.{b}: {c} mA kimeneti \xE1ram, t\xF6bb a megengedett {d}A-n\xE9l{e}",{a:a.p.label,b:l.name,c:(l.I*1e3).toFixed(0),d:kr(a.imax),e:a.imax<.1?" "+s("(k\xE9t kimenet egym\xE1s ellen?)"):""}),[])}for(let a of n.motors)Math.abs(a.U)>a.vnom*1.25&&o("warn",s("{a}: {b} V, t\xF6bb a n\xE9vleges {c} V-n\xE1l",{a:a.p.label,b:Math.abs(a.U).toFixed(2),c:a.vnom}),[]);for(let a of n.servos)a.U>3&&a.angle==null&&o("warn",s("{a}: nincs \xE9rv\xE9nyes szerv\xF3jel. A jel l\xE1b\xE1t k\xF6sd egy PWM m\xF3d\xFA GPIO-ra: 50 Hz, 2,5\u201312,5 % kit\xF6lt\xE9s (7,5 % = k\xF6z\xE9p\xE1ll\xE1s).",{a:a.p.label}),[]);for(let a of n.bjts){let i=a.p.label;a.floatBase&&o("warn",s("{a}: a b\xE1zis lebeg. Tegy\xE9l leh\xFAz\xF3 ellen\xE1ll\xE1st a B \xE9s az E k\xF6z\xE9 (pl. 10 k\u03A9), vagy k\xF6sd kimenetre.",{a:i}),[]),a.imax&&Math.abs(a.ic)>a.imax?o("warn",s("{a}: {b}A kollektor\xE1ram, t\xF6bb a megengedett {c}A-n\xE9l",{a:i,b:kr(Math.abs(a.ic)),c:kr(a.imax)}),[]):a.st==="act"&&a.ic>.001&&o("warn",s("{a}: nem tel\xEDt\u0151dik (Uce {b} V, Ic {c}A = \u03B2\xB7Ib). Kapcsol\xF3nak kisebb b\xE1zisellen\xE1ll\xE1s kell: a b\xE1zis\xE1ram (most {d}A) legyen a k\xEDv\xE1nt kollektor\xE1ram kb. tizede.",{a:i,b:a.vce.toFixed(2),c:kr(a.ic),d:kr(a.ib)}),[])}for(let a of n.caps)a.float||(a.polar&&a.U<-.5?o("err",s("{a}: ford\xEDtva van bek\xF6tve ({b} V). Az elektrolit kondenz\xE1tor + l\xE1ba ker\xFClj\xF6n a magasabb fesz\xFClts\xE9gre.",{a:a.p.label,b:a.U.toFixed(2)}),[]):a.vmax!=null&&Math.abs(a.U)>a.vmax&&o("err",s("{a}: {b} V, t\xF6bb a n\xE9vleges {c} V-n\xE1l",{a:a.p.label,b:Math.abs(a.U).toFixed(2),c:a.vmax}),[]));for(let a of n.fets)a.floatGate&&o("warn",s("{a}: a gate lebeg. Tegy\xE9l leh\xFAz\xF3 ellen\xE1ll\xE1st a G \xE9s az S k\xF6z\xE9 (pl. 100 k\u03A9), vagy k\xF6sd kimenetre.",{a:a.p.label}),[]),a.imax&&Math.abs(a.I)>a.imax&&o("warn",s("{a}: {b}A, t\xF6bb a megengedett {c}A-n\xE9l",{a:a.p.label,b:kr(Math.abs(a.I)),c:kr(a.imax)}),[]);for(let a of n.bats){if(a.kind==="supply"){a.I<-2&&o("err",s("{a}: z\xE1rlat a t\xE1pbemeneten ({b} A)",{a:a.p.label,b:(-a.I).toFixed(1)}),[]);continue}let i=t.byPart.get(a.p.id).pins,l=n.picos.find(d=>d.feeds&&d.vsys===a.node),u=!!!l&&i.some(d=>(t.netPins.get(d.net)||[]).some(p=>p.role==="chg"&&p.part!==a.p));if(l&&a.I>.1){o("err",s("{a}: a {b} USB-je a t\xE1pbemeneten ({c}) \xE1t k\xF6zvetlen\xFCl t\xF6lti az akkut ({d} A). Az akku \xE9s a t\xE1pbemenet k\xF6z\xE9 Schottky-di\xF3da kell.",{a:a.p.label,b:l.p.label,c:l.vsysName,d:a.I.toFixed(1)}),[]);continue}if(u&&a.I>0){a.I>1.2&&o("warn",s("{a}: {b} A t\xF6lt\u0151\xE1ram, sok",{a:a.p.label,b:a.I.toFixed(1)}),[]);continue}a.I>2?o("err",s("{a}: z\xE1rlat ({b} A)",{a:a.p.label,b:a.I.toFixed(1)}),[]):a.I>.1?o("err",s("{a}: az USB k\xF6zvetlen\xFCl t\xF6lti az akkut ({b} A). A VSYS el\xE9 Schottky-di\xF3da kell.",{a:a.p.label,b:a.I.toFixed(1)}),[]):a.I<-2&&o("err",s("{a}: z\xE1rlat ({b} A)",{a:a.p.label,b:(-a.I).toFixed(1)}),[])}}var Ut=e=>typeof e=="number"?e>.5:!!e,Hp=e=>typeof e=="boolean"?e?1:0:typeof e=="number"&&isFinite(e)?e:0,bt=(e,t)=>{let r=Number(e);return isFinite(r)?r:t},Fe=(e,t)=>({id:e,label:t,kind:"bool"}),Bn=(e,t)=>({id:e,label:t,kind:"num"}),jl=(e=E("L\xE1b"))=>({key:"pin",label:e,type:"pin",default:""}),p_={half:["1000","1100","0100","0110","0010","0011","0001","1001"],full:["1100","0110","0011","1001"],wave:["1000","0100","0010","0001"],count:Array.from({length:16},(e,t)=>t.toString(2).padStart(4,"0").split("").reverse().join(""))},Jp=4,$N=[["half",E("f\xE9ll\xE9ptet\xE9s (8 l\xE9p\xE9s)")],["full",E("teljes l\xE9p\xE9s, k\xE9t tekercs (4)")],["wave",E("egy tekercs (4)")],["count",E("bin\xE1ris sz\xE1ml\xE1l\xF3 (16)")],["custom",E("saj\xE1t minta")]];function Yp(e,t){let r=e==="custom"?String(t||"").split(/[\s,;]+/).filter(n=>/^[01]{1,8}$/.test(n)):p_[String(e)]||p_.half;return r.length||(r=["0"]),r.map(n=>n.slice(0,Jp).padEnd(Jp,"0"))}var EN=[["off",E("Ut\xE1nfut\xE1s (ki k\xE9sleltetve)")],["on",E("Bekapcsol\xE1si k\xE9sleltet\xE9s")],["pulse",E("Impulzus")],["filter",E("Sz\u0171r\xE9s (mindk\xE9t v\xE1ltoz\xE1s)")]],Wp=(e,t,r)=>{let n=!!e[t];return e[t]=r,r&&!n};E("Bemenet"),E("Logika"),E("Id\u0151"),E("Kimenet");var Jr={in:{label:E("Digit\xE1lis bemenet"),cat:"Bemenet",help:E("Egy l\xE1b szintje (pl. nyom\xF3gomb). Felh\xFAz\xE1ssal a lenyomott gomb alacsony szintet ad, ez\xE9rt az \u201Eakt\xEDv\u201D alapb\xF3l az alacsony."),ins:[],outs:[Fe("v",E("akt\xEDv"))],params:[jl(),{key:"pull",label:E("Felh\xFAz\xE1s"),type:"select",default:"pullup",options:[["pullup",E("fel (3,3 V)")],["pulldown",E("le (GND)")],["float",E("nincs")]]},{key:"active",label:E("Akt\xEDv"),type:"select",default:"low",options:[["low",E("alacsony szinten")],["high",E("magas szinten")]]}],eval:e=>{let t=e.read(e.p.pin),r=t?t.level:null;return{v:r==null?!1:e.p.active==="high"==(r===1)}},gpio:e=>({ref:e.pin,mode:String(e.pull||"pullup")})},adc:{label:E("Anal\xF3g bemenet"),cat:"Bemenet",help:E("Egy ADC-k\xE9pes l\xE1b fesz\xFClts\xE9ge 0\u20261 k\xF6z\xF6tt (0 V \u2192 0, 3,3 V \u2192 1), pl. potm\xE9ter vagy joystick."),ins:[],outs:[Bn("v",E("\xE9rt\xE9k"))],params:[jl()],eval:e=>{let t=e.read(e.p.pin);return{v:t?Math.max(0,Math.min(1,t.V/3.3)):0}},gpio:e=>({ref:e.pin,mode:"adc"})},const:{label:E("\xC1lland\xF3"),cat:"Bemenet",help:E("R\xF6gz\xEDtett sz\xE1m (0\u20261 k\xF6z\xF6tt PWM-kit\xF6lt\xE9shez, vagy \xF6sszehasonl\xEDt\xE1shoz)."),ins:[],outs:[Bn("v",E("\xE9rt\xE9k"))],params:[{key:"value",label:E("\xC9rt\xE9k"),type:"number",default:1}],eval:e=>({v:bt(e.p.value,1)})},not:{label:E("NEM"),cat:"Logika",help:E("Megford\xEDtja a jelet."),ins:[Fe("a",E("be"))],outs:[Fe("v",E("ki"))],params:[],eval:e=>({v:!Ut(e.in.a)})},and:{label:E("\xC9S"),cat:"Logika",help:E("Akkor igaz, ha mindk\xE9t bemenet igaz."),ins:[Fe("a",E("A")),Fe("b",E("B"))],outs:[Fe("v",E("ki"))],params:[],eval:e=>({v:Ut(e.in.a)&&Ut(e.in.b)})},or:{label:E("VAGY"),cat:"Logika",help:E("Akkor igaz, ha legal\xE1bb az egyik bemenet igaz."),ins:[Fe("a",E("A")),Fe("b",E("B"))],outs:[Fe("v",E("ki"))],params:[],eval:e=>({v:Ut(e.in.a)||Ut(e.in.b)})},xor:{label:E("KIZ\xC1R\xD3 VAGY"),cat:"Logika",help:E("Akkor igaz, ha pontosan az egyik bemenet igaz."),ins:[Fe("a",E("A")),Fe("b",E("B"))],outs:[Fe("v",E("ki"))],params:[],eval:e=>({v:Ut(e.in.a)!==Ut(e.in.b)})},compare:{label:E("\xD6sszehasonl\xEDt\xE1s"),cat:"Logika",help:E("Igaz, ha a bemenet nagyobb (vagy kisebb) a hat\xE1rn\xE1l, pl. \u201Ea potm\xE9ter f\xE9ln\xE9l tov\xE1bb van tekerve\u201D."),ins:[Bn("a",E("\xE9rt\xE9k"))],outs:[Fe("v",E("igaz"))],params:[{key:"op",label:E("Felt\xE9tel"),type:"select",default:">",options:[[">",E("nagyobb, mint")],["<",E("kisebb, mint")]]},{key:"value",label:E("Hat\xE1r"),type:"number",default:.5}],eval:e=>({v:e.p.op==="<"?Hp(e.in.a)<bt(e.p.value,.5):Hp(e.in.a)>bt(e.p.value,.5)})},blink:{label:E("\xDCtemad\xF3"),cat:"Id\u0151",help:E("N\xE9gysz\xF6gjel: peri\xF3dusonk\xE9nt a kit\xF6lt\xE9s ar\xE1ny\xE1ban igaz (villog\xF3 LED)."),ins:[],outs:[Fe("v",E("ki"))],params:[{key:"period",label:E("Peri\xF3dus"),type:"number",default:1e3,min:20,unit:"ms"},{key:"duty",label:E("Kit\xF6lt\xE9s"),type:"number",default:50,min:0,max:100,unit:"%"}],eval:e=>{let t=Math.max(20,bt(e.p.period,1e3));return{v:e.t%t<t*Math.max(0,Math.min(100,bt(e.p.duty,50)))/100}}},toggle:{label:E("V\xE1lt\xF3kapcsol\xF3"),cat:"Id\u0151",help:E("Minden felfut\xF3 \xE9lre (pl. gombnyom\xE1sra) \xE1tv\xE1lt: be, ki, be\u2026"),ins:[Fe("a",E("v\xE1lt\xE1s"))],outs:[Fe("v",E("\xE1llapot"))],params:[],eval:e=>(Wp(e.st,"a",Ut(e.in.a))&&(e.st.v=!e.st.v),{v:!!e.st.v})},counter:{label:E("Sz\xE1ml\xE1l\xF3"),cat:"Id\u0151",help:E("Felfut\xF3 \xE9lenk\xE9nt eggyel n\u0151, a hat\xE1rn\xE1l el\xF6lr\u0151l kezdi; a t\xF6rl\xE9s lenull\xE1zza. Az \u201Ear\xE1ny\u201D 0\u20261 k\xF6z\xF6tt (PWM-hez)."),ins:[Fe("a",E("sz\xE1mol")),Fe("r",E("t\xF6rl\xE9s"))],outs:[Bn("n",E("\xE9rt\xE9k")),Bn("f",E("ar\xE1ny"))],params:[{key:"max",label:E("L\xE9p\xE9ssz\xE1m"),type:"number",default:4,min:1}],eval:e=>{let t=Math.max(1,Math.round(bt(e.p.max,4))),r=bt(e.st.n,0);return Wp(e.st,"a",Ut(e.in.a))&&(r=(r+1)%t),Ut(e.in.r)&&(r=0),e.st.n=r,{n:r,f:t>1?r/(t-1):0}}},delay:{label:E("Id\u0151z\xEDt\u0151"),cat:"Id\u0151",help:E("K\xE9sleltet\xE9s vagy ut\xE1nfut\xE1s a megadott id\u0151vel. Ut\xE1nfut\xE1s: azonnal bekapcsol, \xE9s a bemenet megsz\u0171n\xE9se ut\xE1n m\xE9g ennyi ideig igaz (l\xE9pcs\u0151h\xE1zi vil\xE1g\xEDt\xE1s). Bekapcsol\xE1si k\xE9sleltet\xE9s: csak akkor kapcsol be, ha a bemenet ennyi ideig folyamatosan igaz. Impulzus: felfut\xF3 \xE9lre ennyi ideig igaz. Sz\u0171r\xE9s: mindk\xE9t v\xE1ltoz\xE1st csak akkor adja tov\xE1bb, ha ennyi ideig tart (perg\xE9smentes\xEDt\xE9s)."),ins:[Fe("a",E("be"))],outs:[Fe("v",E("ki"))],params:[{key:"mode",label:E("M\u0171k\xF6d\xE9s"),type:"select",default:"off",legacy:"filter",options:EN},{key:"ms",label:E("Id\u0151"),type:"number",default:500,min:0,unit:"ms"}],eval:e=>{let t=Ut(e.in.a),r=Math.max(0,bt(e.p.ms,500)),n=e.t,o=e.st;switch(e.p.mode){case"off":return t&&(o.at=n),{v:t||o.at!==void 0&&n-bt(o.at,0)<r};case"on":return o.last!==t&&(o.last=t,o.at=n),{v:t&&n-bt(o.at,0)>=r};case"pulse":{let s=o.at!==void 0&&n-bt(o.at,0)<r;return Wp(o,"a",t)&&!s&&(o.at=n),{v:o.at!==void 0&&n-bt(o.at,0)<r}}default:return o.last!==t&&(o.last=t,o.at=n),n-bt(o.at,0)>=r&&(o.v=t),{v:!!o.v}}}},seq:{label:E("Sorozat"),cat:"Id\u0151",help:E("Minden felfut\xF3 \xE9lre (pl. \xFCtemad\xF3t\xF3l) a minta k\xF6vetkez\u0151 sora ker\xFCl az A\u2013D kimenetekre: l\xE9ptet\u0151motor tekercsei, fut\xF3f\xE9ny, sz\xE1ml\xE1l\xF3. A \u201Evissza\u201D bemenet (vagy az ir\xE1ny) visszafel\xE9 l\xE9ptet."),ins:[Fe("a",E("l\xE9p\xE9s")),Fe("r",E("vissza"))],outs:[Fe("c0",E("A")),Fe("c1",E("B")),Fe("c2",E("C")),Fe("c3",E("D")),Bn("n",E("sor"))],params:[{key:"preset",label:E("Minta"),type:"select",default:"half",options:$N},{key:"custom",label:E("Saj\xE1t minta (sorok sz\xF3k\xF6zzel)"),type:"text",default:"10 01",when:{key:"preset",is:"custom"}},{key:"dir",label:E("Ir\xE1ny"),type:"select",default:"fwd",options:[["fwd",E("el\u0151re")],["back",E("vissza")]]}],eval:e=>{let t=Yp(e.p.preset,e.p.custom),r=t.length,n=bt(e.st.i,0),o=e.st.a===void 0?!0:!!e.st.a,s=Ut(e.in.a);e.st.a=s,s&&!o&&(n+=e.p.dir==="back"!==Ut(e.in.r)?-1:1),n=(n%r+r)%r,e.st.i=n;let a=t[n];return{c0:a[0]==="1",c1:a[1]==="1",c2:a[2]==="1",c3:a[3]==="1",n}}},out:{label:E("Digit\xE1lis kimenet"),cat:"Kimenet",help:E("Igaz \u2192 a l\xE1b magas (3,3 V), hamis \u2192 alacsony (pl. LED, rel\xE9, MOSFET kapuja)."),ins:[Fe("a",E("be"))],outs:[],params:[jl()],eval:()=>({}),gpio:(e,t)=>({ref:e.pin,mode:Ut(t.a)?"out_high":"out_low"})},pwm:{label:E("PWM kimenet"),cat:"Kimenet",help:E("Kit\xF6lt\xE9s: LED f\xE9nyereje, motor fordulatsz\xE1ma. Ha a bemenet nincs bek\xF6tve, a be\xE1ll\xEDtott kit\xF6lt\xE9s \xE9rv\xE9nyes; bek\xF6tve a bemenet (0\u20261) adja, pl. \xC1lland\xF3 0,3 = 30 % vagy potm\xE9ter. Logikai jel (pl. \xDCtemad\xF3) 0 % vagy 100 %. Szerv\xF3hoz 50 Hz \xE9s 2,5\u202612,5 %."),ins:[Bn("a",E("kit\xF6lt\xE9s"))],outs:[],params:[jl(),{key:"duty",label:E("Kit\xF6lt\xE9s (bemenet n\xE9lk\xFCl)"),type:"number",default:50,min:0,max:100,unit:"%"},{key:"freq",label:E("Frekvencia"),type:"number",default:1e3,min:1,unit:"Hz"}],eval:()=>({}),gpio:(e,t)=>({ref:e.pin,mode:"pwm",pwm:{duty:Math.round(Math.max(0,Math.min(1,t.a===void 0?bt(e.duty,50)/100:Hp(t.a)))*1e3)/10,freq:Math.max(1,bt(e.freq,1e3))}})}};function f_(e){let t=e;if(!t||!Array.isArray(t.nodes))return;let r=[];for(let i of t.nodes){if(!i||typeof i.id!="string"||typeof i.type!="string"||!Jr[i.type])continue;let l=Jr[i.type],c={};for(let u of l.params)c[u.key]=i.props?.[u.key]??(u.legacy!==void 0?u.legacy:u.default);r.push({id:i.id,type:i.type,x:bt(i.x,0),y:bt(i.y,0),props:c})}let n=new Map(r.map(i=>[i.id,i])),o=(i,l)=>{if(typeof i!="string")return!1;let c=i.lastIndexOf("."),u=n.get(i.slice(0,c));return!!u&&Jr[u.type][l].some(d=>d.id===i.slice(c+1))},s=[],a=new Set;for(let i of Array.isArray(t.edges)?t.edges:[])!i||typeof i.id!="string"||!o(i.from,"outs")||!o(i.to,"ins")||a.has(i.to)||(a.add(i.to),s.push({id:i.id,from:i.from,to:i.to}));return{nodes:r,edges:s}}function Xp(e,t,r){if(typeof r!="string"||!r)return null;let n=it(e,r);if(!n)return null;if(ce(n.part)&&n.role==="gpio")return n.part.id+"."+n.id;let o=t.byPart.get(n.part.id),s=o&&o.map[n.id];if(!s)return null;let a=(t.netPins.get(s.net)||[]).find(i=>ce(i.part)&&i.role==="gpio");return a?a.part.id+"."+a.id:null}var m_=()=>({st:new Map,vals:new Map});function h_(e,t,r,n,o,s){let a={gpio:{},pwm:{},errors:new Map},i=new Map(r.edges.map(f=>[f.to,f.from])),l=new Map(r.nodes.map(f=>[f.id,new Set(r.edges.filter(h=>h.to.startsWith(f.id+".")).map(h=>h.from.slice(0,h.from.lastIndexOf("."))))])),c=[],u=new Set,d=!0;for(;d;){d=!1;for(let f of r.nodes)!u.has(f.id)&&[...l.get(f.id)].every(h=>u.has(h)||h===f.id)&&(c.push(f.id),u.add(f.id),d=!0)}for(let f of r.nodes)u.has(f.id)||c.push(f.id);let p=new Map(r.nodes.map(f=>[f.id,f])),m=(f,h)=>{let g=Xp(e,t,f);return g||a.errors.set(h,typeof f=="string"&&f?E("A l\xE1b nincs GPIO-ra k\xF6tve"):E("Nincs kiv\xE1lasztva l\xE1b")),g},b=f=>{let h={};for(let g of Jr[f.type].ins){let v=i.get(f.id+"."+g.id);h[g.id]=v?n.vals.get(v):void 0}return h};for(let f of c){let h=p.get(f),g=Jr[h.type];n.st.has(f)||n.st.set(f,{});let v=g.eval({in:b(h),p:h.props,st:n.st.get(f),t:o,read:_=>{let w=m(_,f);return w?s(w):null}});for(let[_,w]of Object.entries(v))n.vals.set(f+"."+_,w)}for(let f of r.nodes){let h=Jr[f.type];if(!h.gpio)continue;let g=h.gpio(f.props,b(f));if(!g)continue;let v=m(g.ref,f.id);v&&(a.gpio[v]&&a.gpio[v]!==g.mode&&a.errors.set(f.id,E("Ezt a GPIO-t egy m\xE1sik blokk is haszn\xE1lja")),a.gpio[v]=g.mode,g.pwm&&(a.pwm[v]=g.pwm))}return a}var g_=(e,t)=>t?{...e,gpio:{...e.gpio,...t.gpio},pwm:{...e.pwm||{},...t.pwm}}:e,ha=(e,t)=>{let r=1;for(;t.has(e+r);)r++;let n=e+r;return t.add(n),n};function AN(e,t,r={x:40,y:40},n={}){let o=e?{nodes:[...e.nodes],edges:[...e.edges]}:{nodes:[],edges:[]},s=new Set(o.nodes.map(u=>u.id)),a=new Set(o.edges.map(u=>u.id)),i=ha("n",s),l=ha("n",s),c=[0,1,2,3].map(()=>ha("n",s));return o.nodes.push({id:i,type:"blink",x:r.x,y:r.y+40,props:{period:n.period??250,duty:50}}),o.nodes.push({id:l,type:"seq",x:r.x+230,y:r.y,props:{preset:n.preset??"half",custom:n.custom??"10 01",dir:n.dir??"fwd"}}),o.edges.push({id:ha("e",a),from:i+".v",to:l+".a"}),c.forEach((u,d)=>{o.nodes.push({id:u,type:"out",x:r.x+460,y:r.y+d*90,props:{pin:t[d]||""}}),o.edges.push({id:ha("e",a),from:`${l}.c${d}`,to:u+".a"})}),{prog:o,ids:[i,l,...c]}}function b_(e,t){let r=(e.pins||[]).slice(0,Jp);if(!r.some(Boolean))return t;let n=t&&t.nodes.length?Math.max(...t.nodes.map(i=>i.y))+160:40,{prog:o,ids:s}=AN(t,r,{x:40,y:n},{period:Math.max(20,Math.round(1e3/Math.max(.5,e.rate||4))),preset:e.preset,custom:e.custom,dir:e.dir<0?"back":"fwd"}),a=new Set(s.slice(2).filter((i,l)=>!r[l]));return{nodes:o.nodes.filter(i=>!a.has(i.id)),edges:o.edges.filter(i=>!a.has(i.to.slice(0,i.to.lastIndexOf("."))))}}var y_=e=>/^[A-Za-z_]\w*$/.test(e)?e:"n_"+e.replace(/\W/g,"_"),Nr=(e,t)=>{let r=Number(e);return isFinite(r)?r:t},ga=e=>Number.isInteger(e)?String(e):String(+e.toFixed(6));function ON(e,t,r){let n=r.props.pin,o=Xp(e,t,n);if(!o)return null;let s=it(e,o),a=it(e,String(n)),i=s&&/(\d+)$/.exec(s.name);return!s||!i?null:{gpio:+i[1],name:s.name,ref:a?`${a.part.label}.${a.name}`:String(n)}}function k_(e,t,r,n,o=Gt){let s=n==="micropython",a=[],i=e.parts.find($=>ce($))||null,l=i&&(W[i.type].def.meta||{}).target||null,c=i?W[i.type].def.name:null;i?!l&&!s&&a.push(o("{a}: nincs Arduino-c\xE9lk\xF6rnyezet a le\xEDr\xE1s\xE1ban; az \xE1ltal\xE1nos Arduino-f\xFCggv\xE9nyekkel k\xE9sz\xFClt.",{a:c??""})):a.push(o("Nincs vez\xE9rl\u0151lap a tervben; a l\xE1bsz\xE1mok nem ismertek."));let u=new Map(r.nodes.map($=>[$.id,new Set(r.edges.filter(F=>F.to.startsWith($.id+".")).map(F=>F.from.slice(0,F.from.lastIndexOf("."))))])),d=[],p=new Set;for(let $=!0;$;){$=!1;for(let F of r.nodes)!p.has(F.id)&&[...u.get(F.id)].every(y=>p.has(y)||y===F.id)&&(d.push(F),p.add(F.id),$=!0)}for(let $ of r.nodes)p.has($.id)||d.push($);let m=new Map(r.edges.map($=>[$.to,$.from])),b=$=>{let F=$.lastIndexOf(".");return`${y_($.slice(0,F))}_${$.slice(F+1)}`},f=($,F,y)=>{let L=m.get($.id+"."+F);if(!L)return y==="bool"?s?"False":"false":"0";let Y=L.lastIndexOf("."),Oe=r.nodes.find(G=>G.id===L.slice(0,Y)),j=Jr[Oe.type].outs.find(G=>G.id===L.slice(Y+1)).kind,ee=b(L);return j===y?ee:y==="bool"?`(${ee} > 0.5)`:s?`(1 if ${ee} else 0)`:`(${ee} ? 1.0f : 0.0f)`},h=s?"True":"true",g=s?"False":"false",v=s?"not ":"!",_=s?" and ":" && ",w=s?" or ":" || ",k=[],P=[],A=[],Z=new Map;for(let $ of d){let F=Jr[$.type],y=y_($.id),L=$.props,Y=[],Oe=[],j=[],ee=X=>b($.id+"."+X);for(let X of F.outs)Oe.push(s?`${ee(X.id)} = ${X.kind==="bool"?g:"0"}`:`${X.kind==="bool"?"bool":"float"} ${ee(X.id)} = ${X.kind==="bool"?g:"0"};`);let G=null;if(F.params.some(X=>X.type==="pin")){if(G=ON(e,t,$),!G){a.push(`${F.label} (${$.id}): ${L.pin?"a l\xE1b nincs GPIO-ra k\xF6tve":"nincs kiv\xE1lasztva l\xE1b"}; kimaradt.`);continue}Z.has(G.gpio)&&Z.get(G.gpio)!==$.id&&a.push(o("{a}: t\xF6bb blokk is haszn\xE1lja ({b}, {c}).",{a:G.name,b:Z.get(G.gpio)??"",c:$.id})),Z.set(G.gpio,$.id)}let ue=X=>s?`# ${X}`:`// ${X}`;switch($.type){case"in":{let X=L.pull==="pulldown"?s?"Pin.PULL_DOWN":"INPUT_PULLDOWN":L.pull==="float"?s?"None":"INPUT":s?"Pin.PULL_UP":"INPUT_PULLUP",xe=L.active==="high"?1:0;Y.push(s?`${y}_pin = Pin(${G.gpio}, Pin.IN, ${X}) ${ue(`${G.ref} \u2192 ${G.name}`)}`:`pinMode(${G.gpio}, ${X}); ${ue(`${G.ref} \u2192 ${G.name}`)}`),j.push(s?`${ee("v")} = ${y}_pin.value() == ${xe}`:`${ee("v")} = digitalRead(${G.gpio}) == ${xe?"HIGH":"LOW"};`);break}case"adc":s?Y.push(`${y}_adc = ADC(Pin(${G.gpio})) ${ue(`${G.ref} \u2192 ${G.name}`)}`,...l&&l.mpyAtten?[`${y}_adc.atten(ADC.ATTN_11DB) ${ue(o("0\u20133,3 V-os tartom\xE1ny"))}`]:[]):Y.push(ue(o("anal\xF3g bemenet: {a} \u2192 {b}",{a:G.ref,b:G.name}))),j.push(s?`${ee("v")} = ${y}_adc.read_u16() / 65535`:`${ee("v")} = analogRead(${G.gpio}) / 4095.0f;`);break;case"const":j.push(s?`${ee("v")} = ${ga(Nr(L.value,1))}`:`${ee("v")} = ${ga(Nr(L.value,1))};`);break;case"not":j.push(s?`${ee("v")} = ${v}${f($,"a","bool")}`:`${ee("v")} = ${v}${f($,"a","bool")};`);break;case"and":case"or":case"xor":{let X=f($,"a","bool"),xe=f($,"b","bool"),mt=$.type==="and"?X+_+xe:$.type==="or"?X+w+xe:`${X} != ${xe}`;j.push(s?`${ee("v")} = ${mt}`:`${ee("v")} = ${mt};`);break}case"compare":j.push(s?`${ee("v")} = ${f($,"a","num")} ${L.op==="<"?"<":">"} ${ga(Nr(L.value,.5))}`:`${ee("v")} = ${f($,"a","num")} ${L.op==="<"?"<":">"} ${ga(Nr(L.value,.5))}f;`);break;case"blink":{let X=Math.max(20,Math.round(Nr(L.period,1e3))),xe=Math.round(X*Math.max(0,Math.min(100,Nr(L.duty,50)))/100);j.push(s?`${ee("v")} = t % ${X} < ${xe}`:`${ee("v")} = t % ${X} < ${xe};`);break}case"toggle":Oe.push(s?`${y}_elozo = False`:`bool ${y}_elozo = false;`),j.push(...s?[`_be = ${f($,"a","bool")}`,`if _be and not ${y}_elozo: ${ue(o("felfut\xF3 \xE9l"))}`,` ${ee("v")} = not ${ee("v")}`,`${y}_elozo = _be`]:[`{ bool be = ${f($,"a","bool")};`,` if (be && !${y}_elozo) ${ee("v")} = !${ee("v")}; ${ue(o("felfut\xF3 \xE9l"))}`,` ${y}_elozo = be; }`]);break;case"counter":{let X=Math.max(1,Math.round(Nr(L.max,4)));Oe.push(s?`${y}_elozo = False`:`bool ${y}_elozo = false;`,s?`${y}_db = 0`:`int ${y}_db = 0;`),j.push(...s?[`_be = ${f($,"a","bool")}`,`if _be and not ${y}_elozo:`,` ${y}_db = (${y}_db + 1) % ${X}`,`${y}_elozo = _be`,`if ${f($,"r","bool")}:`,` ${y}_db = 0`,`${ee("n")} = ${y}_db`,`${ee("f")} = ${X>1?`${y}_db / ${X-1}`:"0"}`]:[`{ bool be = ${f($,"a","bool")};`,` if (be && !${y}_elozo) ${y}_db = (${y}_db + 1) % ${X};`,` ${y}_elozo = be;`,` if (${f($,"r","bool")}) ${y}_db = 0; }`,`${ee("n")} = ${y}_db;`,`${ee("f")} = ${X>1?`${y}_db / ${X-1}.0f`:"0"};`]);break}case"delay":{let X=Math.max(0,Math.round(Nr(L.ms,500))),xe=String(L.mode??"filter"),mt=f($,"a","bool");if(xe==="off")Oe.push(s?`${y}_mikor = -${X}`:`long ${y}_mikor = -${X};`),j.push(...s?[`_be = ${mt}`,"if _be:",` ${y}_mikor = t`,`${ee("v")} = _be or t - ${y}_mikor < ${X} ${ue(o("ut\xE1nfut\xE1s"))}`]:[`{ bool be = ${mt};`,` if (be) ${y}_mikor = (long)t;`,` ${ee("v")} = be || (long)t - ${y}_mikor < ${X}; } ${ue(o("ut\xE1nfut\xE1s"))}`]);else if(xe==="pulse")Oe.push(s?`${y}_mikor = -${X}`:`long ${y}_mikor = -${X};`,s?`${y}_elozo = False`:`bool ${y}_elozo = false;`),j.push(...s?[`_be = ${mt}`,`if _be and not ${y}_elozo and t - ${y}_mikor >= ${X}: ${ue(o("felfut\xF3 \xE9l: impulzus"))}`,` ${y}_mikor = t`,`${y}_elozo = _be`,`${ee("v")} = t - ${y}_mikor < ${X}`]:[`{ bool be = ${mt};`,` if (be && !${y}_elozo && (long)t - ${y}_mikor >= ${X}) ${y}_mikor = (long)t; ${ue(o("felfut\xF3 \xE9l: impulzus"))}`,` ${y}_elozo = be;`,` ${ee("v")} = (long)t - ${y}_mikor < ${X}; }`]);else{Oe.push(s?`${y}_utolso = None`:`int ${y}_utolso = -1;`,s?`${y}_mikor = 0`:`unsigned long ${y}_mikor = 0;`);let nt=xe==="on";j.push(...s?[`_be = ${mt}`,`if _be != ${y}_utolso:`,` ${y}_utolso = _be`,` ${y}_mikor = t`,...nt?[`${ee("v")} = _be and t - ${y}_mikor >= ${X} ${ue(o("bekapcsol\xE1si k\xE9sleltet\xE9s"))}`]:[`if t - ${y}_mikor >= ${X}:`,` ${ee("v")} = _be`]]:[`{ bool be = ${mt};`,` if ((int)be != ${y}_utolso) { ${y}_utolso = be; ${y}_mikor = t; }`,nt?` ${ee("v")} = be && t - ${y}_mikor >= ${X}; } ${ue(o("bekapcsol\xE1si k\xE9sleltet\xE9s"))}`:` if (t - ${y}_mikor >= ${X}) ${ee("v")} = be; }`])}break}case"seq":{let X=Yp(L.preset,L.custom),xe=X.length,mt=L.dir==="back";Oe.push(...s?[`${y}_minta = [${X.map(Ue=>`'${Ue}'`).join(", ")}]`,`${y}_i = 0`,`${y}_elozo = True ${ue(o("indul\xE1skor nem l\xE9p"))}`]:[`const char* ${y}_minta[${xe}] = {${X.map(Ue=>`"${Ue}"`).join(", ")}};`,`int ${y}_i = 0;`,`bool ${y}_elozo = true; ${ue(o("indul\xE1skor nem l\xE9p"))}`]);let nt=f($,"r","bool"),Pe=f($,"a","bool"),ct=mt?s?`1 if ${nt} else -1`:`${nt} ? 1 : -1`:s?`-1 if ${nt} else 1`:`${nt} ? -1 : 1`;j.push(...s?[`_be = ${Pe}`,`if _be and not ${y}_elozo: ${ue(o("felfut\xF3 \xE9l: k\xF6vetkez\u0151 sor"))}`,` ${y}_i = (${y}_i + (${ct})) % ${xe}`,`${y}_elozo = _be`,...[0,1,2,3].map(Ue=>`${ee("c"+Ue)} = ${y}_minta[${y}_i][${Ue}] == '1'`),`${ee("n")} = ${y}_i`]:[`{ bool be = ${Pe};`,` if (be && !${y}_elozo) ${y}_i = (${y}_i + (${ct}) + ${xe}) % ${xe}; ${ue(o("felfut\xF3 \xE9l: k\xF6vetkez\u0151 sor"))}`,` ${y}_elozo = be; }`,...[0,1,2,3].map(Ue=>`${ee("c"+Ue)} = ${y}_minta[${y}_i][${Ue}] == '1';`),`${ee("n")} = ${y}_i;`]);break}case"out":Y.push(s?`${y}_pin = Pin(${G.gpio}, Pin.OUT) ${ue(`${G.ref} \u2192 ${G.name}`)}`:`pinMode(${G.gpio}, OUTPUT); ${ue(`${G.ref} \u2192 ${G.name}`)}`),j.push(s?`${y}_pin.value(1 if ${f($,"a","bool")} else 0)`:`digitalWrite(${G.gpio}, ${f($,"a","bool")} ? HIGH : LOW);`);break;case"pwm":{let X=Math.max(1,Math.round(Nr(L.freq,1e3)));s?Y.push(`${y}_pwm = PWM(Pin(${G.gpio})) ${ue(`${G.ref} \u2192 ${G.name}`)}`,`${y}_pwm.freq(${X})`):Y.push(`pinMode(${G.gpio}, OUTPUT); ${ue(`${G.ref} \u2192 ${G.name}`)}`,(l?l.pwmFreq:"analogWriteFreq({f});").replace("{pin}",String(G.gpio)).replace("{f}",String(X)));let xe=m.has($.id+".a")?f($,"a","num"):ga(Math.max(0,Math.min(100,Nr(L.duty,50)))/100);j.push(s?`${y}_pwm.duty_u16(int(max(0, min(1, ${xe})) * 65535))`:`analogWrite(${G.gpio}, (int)(constrain(${xe}, 0.0f, 1.0f) * 255));`);break}}let we=ue(`${$.id} \xB7 ${o(F.label)}`);k.push([$.id,Y]),P.push([$.id,Oe]),A.push([$.id,j.length?[we,...j]:[]])}let D={},B=[],K=($,F,y)=>{if(!F.length)return;let L=B.length+1;for(let Y of F)B.push(y+Y);$&&(D[$]=D[$]||[]).push([L,B.length])},x=o("Proofboard \u2013 gener\xE1lt program")+(c?` (${c})`:"");if(s){K(null,[`# ${x}`,"# "+o("\xDCtemenk\xE9nt (20 ms) beolvassa a bemeneteket, kisz\xE1molja a blokkokat, \xE9s be\xE1ll\xEDtja a kimeneteket."),"from machine import Pin, ADC, PWM","import time","","# --- "+o("l\xE1bak")+" ---"],"");for(let[$,F]of k)K($,F,"");K(null,["","# --- "+o("blokkok \xE9rt\xE9kei \xE9s \xE1llapota")+" ---"],"");for(let[$,F]of P)K($,F,"");K(null,["","kezdet = time.ticks_ms()","while True:"," t = time.ticks_diff(time.ticks_ms(), kezdet)"],"");for(let[$,F]of A)K($,F," ");K(null,[" time.sleep_ms(20)"],"")}else{K(null,[`// ${x}`,"// "+o("\xDCtemenk\xE9nt (20 ms) beolvassa a bemeneteket, kisz\xE1molja a blokkokat, \xE9s be\xE1ll\xEDtja a kimeneteket."),...l?[`// ${o("Lap")}: ${l.fqbn}${l.boardUrl?` (${o("alaplapkezel\u0151")}: ${l.boardUrl})`:""}`]:[],"","// --- "+o("blokkok \xE9rt\xE9kei \xE9s \xE1llapota")+" ---"],"");for(let[$,F]of P)K($,F,"");K(null,["","void setup() {"," analogReadResolution(12);"],"");for(let[$,F]of k)K($,F," ");K(null,["}","","void loop() {"," unsigned long t = millis();"],"");for(let[$,F]of A)K($,F," ");K(null,[" delay(20);","}"],"")}return{lang:n,file:s?"main.py":"proofboard.ino",code:B.join(`
135
+ In the simulation the LED lights when exactly one button is pressed. In the editor, change the gate to AND and save, and it works that way on the board too.`,"Minden k\xE9zi cs\xEDkv\xE1g\xE1s t\xF6rl\xE9se (az automatikusak maradnak)":"Delete every manual strip cut (automatic ones stay)","K\xE9zi v\xE1g\xE1sok t\xF6rl\xE9se":"Delete manual cuts","K\xE9zi v\xE1g\xE1sok t\xF6rl\xE9se ({n})":"Delete manual cuts ({n})",cs\u00EDkv\u00E1g\u00E1s:"strip cut","Cs\xEDkv\xE1g\xE1s: furat":"Strip cut: drilled hole","Cs\xEDkv\xE1g\xE1s: r\xE9s":"Strip cut: gap",automatikus:"automatic","Az automatikus cs\xEDkv\xE1g\xE1s tette ide, mert a cs\xEDkon k\xE9t k\xFCl\xF6nb\xF6z\u0151 h\xE1l\xF3zat l\xE1ba van. T\xF6rl\xE9s ut\xE1n ide nem ker\xFCl \xFAjra; ha lehet, a program a k\xE9t l\xE1b k\xF6z\xF6tt m\xE1shol v\xE1g.":"Placed by automatic strip cutting because the strip carries pins of two different nets. Once deleted it will not come back here; if possible, the program cuts elsewhere between the two pins.","{n} k\xE9zi v\xE1g\xE1s t\xF6r\xF6lve. Visszavon\xE1s: Ctrl+Z.":"{n} manual cut deleted. Undo: Ctrl+Z.||{n} manual cuts deleted. Undo: Ctrl+Z.","Automatikus v\xE1g\xE1s t\xF6r\xF6lve: ide nem ker\xFCl \xFAjra; ha kell, a program m\xE1shol v\xE1gja el a cs\xEDkot.":"Automatic cut deleted: it will not come back here; if needed, the program cuts the strip elsewhere.","Az agent dolgozik a terven \u2013 a k\xE9zi szerkeszt\xE9s addig sz\xFCnetel.":"The agent is working on the design \u2013 manual editing is paused until it finishes.",Agent:"Agent","Terv \xE1ttekint\xE9se":"Reviewing the design","Alkatr\xE9szek keres\xE9se":"Searching parts","Alkatr\xE9sz adatai":"Part details","Alkatr\xE9sz l\xE1bai":"Part pins",Lerak\u00E1s:"Placing",Param\u00E9terek:"Parameters",\u00DAtvonalak:"Routing","GPIO m\xF3d":"GPIO mode",Panelk\u00E9p:"Board image","Az API-kulcs \xE9rv\xE9nytelen vagy nincs jogosults\xE1ga. Ellen\u0151rizd a be\xE1ll\xEDt\xE1sokban.":"The API key is invalid or not authorised. Check it in the settings.","Az Anthropic-fi\xF3kodon nincs el\xE9g egyenleg. A console.anthropic.com oldalon t\xF6ltheted fel.":"Your Anthropic account has insufficient credit. You can top it up at console.anthropic.com.","T\xFAl sok k\xE9r\xE9s r\xF6vid id\u0151 alatt (sebess\xE9gkorl\xE1t). V\xE1rj egy kicsit, \xE9s pr\xF3b\xE1ld \xFAjra.":"Too many requests in a short time (rate limit). Wait a little and try again.","Az API most t\xFAlterhelt. Pr\xF3b\xE1ld \xFAjra kicsit k\xE9s\u0151bb.":"The API is overloaded right now. Try again a bit later.","Nem siker\xFClt el\xE9rni az API-t (h\xE1l\xF3zati hiba). Ellen\u0151rizd a kapcsolatot.":"Could not reach the API (network error). Check your connection.","Le\xE1ll\xEDtva.":"Stopped.","A feladat t\xFAl sok l\xE9p\xE9sb\u0151l \xE1llt, ez\xE9rt meg\xE1llt. \xCDrd meg, folytassa-e.":"The task took too many steps, so it stopped. Tell it whether to continue.","Hiba az API-h\xEDv\xE1sban: {x}":"API error: {x}","Agent m\xF3d":"Agent mode",Megbesz\u00E9l\u00E9s:"Discuss","Megbesz\xE9l\xE9s: az agent olvassa \xE9s elemzi a tervet, javasol, de nem m\xF3dos\xEDt":"Discuss: the agent reads and analyses the design and makes suggestions, but does not change it",Megval\u00F3s\u00EDt\u00E1s:"Build","Megval\xF3s\xEDt\xE1s: az agent m\xF3dos\xEDthatja a tervet (egy feladat egy l\xE9p\xE9sben visszavonhat\xF3)":"Build: the agent may change the design (each task can be undone in one step)","\xDAj besz\xE9lget\xE9s":"New conversation","API-kulcs \xE9s modell":"API key and model","Anthropic API-kulcs":"Anthropic API key",Modell:"Model","Megjegyz\xE9s ebben a b\xF6ng\xE9sz\u0151ben":"Remember in this browser","A kulcs csak ebben a b\xF6ng\xE9sz\u0151ben marad; a k\xE9r\xE9sek k\xF6zvetlen\xFCl az Anthropic API-hoz mennek, a haszn\xE1lat d\xEDj\xE1t a saj\xE1t fi\xF3kod fizeti. Kulcsot a {x} oldalon kaphatsz.":"The key stays in this browser only; requests go directly to the Anthropic API and usage is billed to your own account. You can get a key at {x}.","Kulcs t\xF6rl\xE9se":"Remove key","Mit \xE9p\xEDts\xFCnk? Pl. \u201ETegy\xE9l egy LED-et el\u0151t\xE9t-ellen\xE1ll\xE1ssal a GP15-re.\u201D":"What shall we build? E.g. \u201CAdd an LED with a series resistor on GP15.\u201D","Mit besz\xE9lj\xFCnk meg? Pl. \u201EMilyen tranzisztorral kapcsoljak egy 12 V-os ventil\xE1tort?\u201D":"What shall we discuss? E.g. \u201CWhich transistor should switch a 12 V fan?\u201D","\xDCzenet az agentnek":"Message to the agent",K\u00FCld\u00E9s:"Send","Dolgozik\u2026":"Working\u2026","\xCDrd le, mit szeretn\xE9l: az agent lerakja \xE9s bek\xF6ti az alkatr\xE9szeket, ellen\u0151rzi a Probl\xE9m\xE1kat, \xE9s szimul\xE1l. Nagyobb v\xE1ltoztat\xE1s el\u0151tt tervet mutat \xE9s r\xE1k\xE9rdez. Minden feladat egy l\xE9p\xE9sben visszavonhat\xF3.":"Describe what you want: the agent places and connects parts, checks the Problems and simulates. Before larger changes it shows a plan and asks. Every task can be undone in one step.","Megbesz\xE9l\xE9s m\xF3d: az agent l\xE1tja a tervet, sz\xE1mol, magyar\xE1z \xE9s javasol, de nem m\xF3dos\xEDt. \xC9p\xEDt\xE9shez v\xE1lts Megval\xF3s\xEDt\xE1s m\xF3dra.":"Discuss mode: the agent sees the design, calculates, explains and suggests, but does not change anything. Switch to Build mode to build.","Az agenthez saj\xE1t Anthropic API-kulcs kell. Add meg fent; a kulcs csak ebben a b\xF6ng\xE9sz\u0151ben t\xE1rol\xF3dik.":"The agent needs your own Anthropic API key. Enter it above; it is stored only in this browser.","{i} be / {o} ki token":"{i} in / {o} out tokens","A v\xE1ltoztat\xE1sok egy l\xE9p\xE9sben visszavonhat\xF3k (Ctrl+Z).":"The changes can be undone in one step (Ctrl+Z).","V\xE1lasz m\xE1sol\xE1sa (markdown)":"Copy reply (markdown)","Nem siker\xFClt m\xE1solni":"Could not copy",Projektjegyzet:"Project notes","Kor\xE1bbi besz\xE9lget\xE9sek":"Earlier conversations","Mit \xE9p\xEDt\xFCnk, \xE9s mire jutottunk? Pl. \u201EMotorvez\xE9rl\u0151 ESP32-C3-mal, 1 cell\xE1s akkur\xF3l; DRV8833 meghajt\xF3; IN1 = GPIO4, IN2 = GPIO5.\u201D":"What are we building and what have we decided? E.g. \u201CMotor controller with ESP32-C3, from a 1-cell battery; DRV8833 driver; IN1 = GPIO4, IN2 = GPIO5.\u201D","A terv r\xE9sze: az agent minden besz\xE9lget\xE9s elej\xE9n megkapja, \xE9s a fontos d\xF6nt\xE9seket ide jegyzi. Te is szerkesztheted.":"Part of the design: the agent receives it at the start of every conversation and records important decisions here. You can edit it too.","Ehhez a projekthez m\xE9g nincs mentett besz\xE9lget\xE9s.":"No saved conversations for this project yet.","{n} \xFCzenet":"{n} message||{n} messages","Besz\xE9lget\xE9s t\xF6rl\xE9se":"Delete conversation","{n} sor":"{n} line||{n} lines",\u00FCres:"empty","A besz\xE9lget\xE9s kor\xE1bbi r\xE9sze \xF6sszefoglalva (az agent az \xF6sszefoglal\xF3t l\xE1tja), hogy a k\xE9r\xE9sek ne dr\xE1guljanak.":"The earlier part of the conversation was summarized (the agent sees the summary) to keep requests from getting expensive.","A t\xF6m\xF6r\xEDt\xE9s \xE9s az agent nem mozd\xEDtja; k\xE9zzel tov\xE1bbra is mozgathat\xF3.":"Compaction and the agent leave it in place; you can still move it by hand.","R\xF6gz\xEDtett hely":"Fixed position","R\xF6gz\xEDt\xE9s be/ki":"Fix position on/off","Ter\xFClet: {x}":"Footprint: {x}","A terv \xE1ltal foglalt ter\xFClet: {r}\xD7{c} lyuk (a panel {a}%-a); az alkatr\xE9szek ennek {f}%-\xE1t t\xF6ltik ki.":"Area used by the design: {r}\xD7{c} holes ({a}% of the board); part bodies fill {f}% of it.","H\xFAzd az ar\xE1ny \xE1ll\xEDt\xE1s\xE1hoz, dupla kattint\xE1s: fele-fele":"Drag to adjust the ratio; double-click: half and half","A panel \xE9s a program ar\xE1nya":"Board / program ratio","Az alkatr\xE9szek k\xF6zelebb ker\xFClnek egym\xE1shoz, kisebb ter\xFCletre, r\xF6videbb bek\xF6t\xE9ssel":"Moves parts closer together: smaller area, shorter wiring","T\xF6m\xF6r\xEDt\xE9s\u2026":"Compact\u2026",T\u00F6m\u00F6r\u00EDt\u00E9s:"Compact layout","Az alkatr\xE9szek k\xF6zelebb ker\xFClnek egym\xE1shoz \xE9s a bek\xF6t\xF6tt l\xE1bakhoz. A panelon az el\u0151n\xE9zet l\xE1tszik, halv\xE1nyan az eredeti helyekkel.":"Parts move closer to each other and to the pins they connect to. The board shows a preview, with the original positions faded.",Szoross\u00E1g:"Tightness","Laza \u2013 k\xF6nny\u0171 forraszt\xE1s":"Loose \u2013 easy soldering","Szoros \u2013 kis panel":"Tight \u2013 small board","A vez\xE9rl\u0151lap a hely\xE9n marad":"Keep the controller board in place","A kezel\u0151szervek (gomb, cs\xFAszka, csatlakoz\xF3) a hely\xFCk\xF6n maradnak":"Keep controls (buttons, sliders, connectors) in place","Elforgat\xE1s is":"Allow rotation","Csak a kijel\xF6ltek":"Selected parts only","Visszavonhat\xF3 (Ctrl+Z).":"Can be undone (Ctrl+Z).","T\xF6m\xF6r\xEDtve: {n} alkatr\xE9sz mozdult. Visszavon\xE1s: Ctrl+Z.":"Compacted: {n} part moved. Undo: Ctrl+Z.||Compacted: {n} parts moved. Undo: Ctrl+Z.",r\u00F6gz\u00EDtett:"fixed",vez\u00E9rl\u0151lap:"controller board",kezel\u0151szerv:"control","k\xE9zzel bek\xF6tve":"wired by hand","panelon k\xEDv\xFCl":"off the board","nincs kijel\xF6lve":"not selected",Most:"Now",Ut\u00E1na:"After","Ter\xFClet (lyuk)":"Area (holes)",Hidak:"Bridges",Vezet\u00E9kek:"Wires",Bek\u00F6tve:"Connected","Mozdul: {x}":"Moves: {x}","Ezekkel a be\xE1ll\xEDt\xE1sokkal nincs jobb elrendez\xE9s.":"No better layout with these settings.","A hely\xE9n marad: {x}":"Stays in place: {x}","A terv szell\u0151s: az alkatr\xE9szek a foglalt ter\xFClet {f}%-\xE1t t\xF6ltik ki \u2013 t\xF6m\xF6r\xEDtve kisebb panel \xE9s r\xF6videbb bek\xF6t\xE9s lehet.":"The layout is sparse: parts fill {f}% of the used area \u2013 compacting could give a smaller board and shorter wiring.","T\xF6m\xF6r\xEDt\xE9s el\u0151n\xE9zete":"Compaction preview",R\u00F6gz\u00EDt\u00E9s:"Fix in place","Claude Desktop vagy Claude Code vez\xE9relheti a tervet, \xE9l\u0151ben (MCP)":"Let Claude Desktop or Claude Code work on the design, live (MCP)","Claude-kapcsolat\u2026":"Claude connection\u2026",Claude:"Claude","Claude-kapcsolat (MCP)":"Claude connection (MCP)","A Claude Desktopb\xF3l vagy a Claude Code-b\xF3l is tervezhetsz: a Claude a saj\xE1t el\u0151fizet\xE9seddel dolgozik (API-kulcs nem kell), a v\xE1ltoz\xE1sok itt jelennek meg \xE9l\u0151ben, \xE9s visszavonhat\xF3k.":"You can also design from Claude Desktop or Claude Code: Claude works with your own subscription (no API key needed), and the changes appear here live and can be undone.","1. A proofboard-mcp szerver hozz\xE1ad\xE1sa (egyszer)":"1. Add the proofboard-mcp server (once)",Kliens:"Client","Claude Desktop":"Claude Desktop","Claude Code":"Claude Code","Be\xE1ll\xEDt\xE1sok \u203A Fejleszt\u0151 \u203A Konfigur\xE1ci\xF3 szerkeszt\xE9se (claude_desktop_config.json), majd a Claude \xFAjraind\xEDt\xE1sa:":"Settings \u203A Developer \u203A Edit Config (claude_desktop_config.json), then restart Claude:","Termin\xE1lban:":"In a terminal:","2. Kapcsol\xF3d\xE1s":"2. Connect",Csatlakoz\u00E1s:"Connect","Csak olvas\xE1s: a Claude l\xE1tja \xE9s ellen\u0151rzi a tervet, de nem m\xF3dos\xEDthatja":"Read only: Claude can see and check the design but cannot change it","Csatlakoz\xE1s automatikusan, amikor megnyitom a Proofboardot":"Connect automatically when I open Proofboard",Halad\u00F3:"Advanced",Port:"Port","A szerveren: --port":"On the server: --port","Am\xEDg a Claude dolgozik, a k\xE9zi szerkeszt\xE9s sz\xFCnetel, \xE9s fent s\xE1v jelzi. Egy-egy munkamenet egy l\xE9p\xE9sben visszavonhat\xF3 (Ctrl+Z).":"While Claude is working, manual editing pauses and a bar at the top shows it. Each working session can be undone in one step (Ctrl+Z).","A Claude m\xF3dos\xEDtotta a tervet. Visszavon\xE1s: Ctrl+Z.":"Claude changed the design. Undo: Ctrl+Z.","A Claude dolgozik a terven \u2013 a k\xE9zi szerkeszt\xE9s addig sz\xFCnetel.":"Claude is working on the design \u2013 manual editing is paused.",Lev\u00E1laszt\u00E1s:"Disconnect","{n} alkatr\xE9sz":"{n} part||{n} parts","Kapcsol\xF3dva: {c}":"Connected: {c}","Kapcsol\xF3d\xE1s\u2026":"Connecting\u2026","V\xE1rakoz\xE1s a szerverre: fut a Claude, \xE9s be van \xE1ll\xEDtva a proofboard-mcp?":"Waiting for the server: is Claude running, with proofboard-mcp set up?","Nincs kapcsolat: {e}":"Not connected: {e}","Nincs kapcsolat.":"Not connected.","Claude dolgozik":"Claude is working","csak olvas\xE1s":"read only","Claude: v\xE1rakoz\xE1s":"Claude: waiting","Claude Desktop-b\u0151v\xEDtm\xE9ny let\xF6lt\xE9se":"Download the Claude Desktop extension","proofboard.mcpb":"proofboard.mcpb","Kattints dupl\xE1n a let\xF6lt\xF6tt f\xE1jlra, \xE9s a Claude Desktopban v\xE1laszd a Telep\xEDt\xE9st (vagy: Be\xE1ll\xEDt\xE1sok \u203A Desktop app \u203A Extensions \u203A Manage, \xE9s h\xFAzd oda a f\xE1jlt). Node.js nem kell hozz\xE1.":"Double-click the downloaded file and choose Install in Claude Desktop (or: Settings \u203A Desktop app \u203A Extensions \u203A Manage, and drop the file there). No Node.js needed.","K\xE9zi be\xE1ll\xEDt\xE1s (claude_desktop_config.json)":"Manual setup (claude_desktop_config.json)","Ehhez Node.js 18 vagy \xFAjabb kell; a f\xE1jl ut\xE1n a Claude-ot \xFAjra kell ind\xEDtani.":"Requires Node.js 18 or newer; restart Claude after editing the file.","Termin\xE1lban (Node.js 18 vagy \xFAjabb kell hozz\xE1):":"In a terminal (requires Node.js 18 or newer):","A szerver csak a saj\xE1t g\xE9peden figyel (127.0.0.1), \xE9s csak a Proofboard oldal\xE1r\xF3l fogad kapcsolatot.":"The server only listens on your own computer (127.0.0.1) and only accepts connections from the Proofboard page.",Alkatr\u00E9szle\u00EDr\u00E1s:"Part definition","Saj\xE1t alkatr\xE9sz ment\xE9se":"Save custom part",Blokkt\u00EDpusok:"Block types","Blokk felv\xE9tele":"Add block","Blokk be\xE1ll\xEDt\xE1sa":"Block settings","Blokkok \xF6sszek\xF6t\xE9se":"Connect blocks","Blokkok sz\xE9tk\xF6t\xE9se":"Disconnect blocks","Program elrendez\xE9se":"Arrange program","Program futtat\xE1sa":"Run program"};var oN={en:wz},sN="hu";function xz(e,t,r=sN){let n=r==="hu"?e:oN[r][e]??e;if(n.includes("||")){let[o,s]=n.split("||");n=t&&Number(t.n)===1?o:s}return t?n.replace(/\{(\w+)\}/g,(o,s)=>s in t?String(t[s]):o):n}var Ut=(e,t)=>t?e.replace(/\{(\w+)\}/g,(r,n)=>n in t?String(t[n]):r):e,E=e=>e;var I5=new RegExp("\\p{L}","u");var ca=class extends Error{constructor(r,n,o,s){super(r);this.pos=n;this.key=o;this.params=s}};function Lp(e,t=Ut){return e instanceof ca?e.key?t(e.key,e.params):e.message:e instanceof Error?e.message:String(e)}var la=(e,t,r)=>new ca(Ut(e,r),t,e,r),Sz={AND:"&",OR:"|",XOR:"^",NOT:"!"},Pz={"&":"&","*":"&","\xB7":"&","|":"|","+":"|","^":"^","!":"!","~":"!","\xAC":"!"};function aN(e){let t=[],r=0;for(;r<e.length;){let n=e[r];if(/\s/.test(n)){r++;continue}if(n==="("||n===")"){t.push({k:n,v:n,pos:r,end:r+1}),r++;continue}if(Pz[n]){t.push({k:"op",v:Pz[n],pos:r,end:r+1}),r++;continue}let o=/^#?[A-Za-z0-9_]+/.exec(e.slice(r));if(o){let s=o[0],a=s.toUpperCase();s[0]!=="#"&&Sz[a]?t.push({k:"op",v:Sz[a],pos:r,end:r+s.length}):t.push({k:"id",v:s,pos:r,end:r+s.length}),r+=s.length;continue}throw new ca(`Ismeretlen jel: \u201E${n}\u201D`,r)}return t.push({k:"end",v:"",pos:e.length,end:e.length}),t}function ua(e){let t=aN(e),r=0,n=()=>t[r],o=()=>t[r++],s=(f,g,h)=>{let p=[h()];for(;n().k==="op"&&n().v===g;)o(),p.push(h());return p.length===1?p[0]:{t:f,args:p.flatMap(m=>m.t===f?m.args:[m])}},a=()=>s("or","|",i),i=()=>s("xor","^",c),c=()=>s("and","&",l),l=()=>n().k==="op"&&n().v==="!"?(o(),{t:"not",a:l()}):u(),u=()=>{let f=o();if(f.k==="("){let g=a();if(n().k!==")")throw la(E("Hi\xE1nyzik a z\xE1r\xF3 z\xE1r\xF3jel"),n().pos);return o(),g}if(f.k==="id")return f.v==="0"||f.v==="1"?{t:"const",v:+f.v}:{t:"var",name:f.v};throw f.k==="end"?la(E("Hi\xE1nyz\xF3 tag a kifejez\xE9s v\xE9g\xE9n"),f.pos):la(E("Itt nem \xE1llhat: \u201E{x}\u201D"),f.pos,{x:f.v})};if(t.length===1)throw la(E("\xDCres kifejez\xE9s"),0);let d=a();if(n().k!=="end")throw la(E("F\xF6l\xF6sleges r\xE9sz: \u201E{x}\u201D"),n().pos,{x:e.slice(n().pos)});return d}function Bn(e,t=[]){if(e.t==="var")t.includes(e.name)||t.push(e.name);else if(e.t==="not")Bn(e.a,t);else if(e.t!=="const")for(let r of e.args)Bn(r,t);return t}function zr(e,t){switch(e.t){case"var":return t(e.name);case"const":return e.v;case"not":{let r=zr(e.a,t);return r==="X"?"X":r?0:1}case"and":{let r=!1;for(let n of e.args){let o=zr(n,t);if(o===0)return 0;o==="X"&&(r=!0)}return r?"X":1}case"or":{let r=!1;for(let n of e.args){let o=zr(n,t);if(o===1)return 1;o==="X"&&(r=!0)}return r?"X":0}case"xor":{let r=0;for(let n of e.args){let o=zr(n,t);if(o==="X")return"X";r^=o}return r}}}function Ol(e,t){if(e.startsWith("#")){let n=e.slice(1);return t.some(o=>o.id===n)?n:null}let r=t.filter(n=>n.name===e);return r.length===1?r[0].id:r.length>1?null:t.some(n=>n.id===e)?e:null}function Ez(e,t){let r=t.split(".");if(r.length>1&&e.$opt&&e.$opt[r[0]])return e.$opt[r[0]][r[1]];let n=e;for(let o of r){if(n==null)return;n=n[o]}return n}function Az(e,t){let r=String(e),n=0,o=()=>{for(;r[n]===" ";)n++},s=()=>{o();let c=r[n];if(c==="("){n++;let u=i();return o(),n++,u}if(c==="-")return n++,-s();if(c==="+")return n++,s();let l=/^(\d+\.?\d*(?:e-?\d+)?|\.\d+)/.exec(r.slice(n));if(l)return n+=l[0].length,parseFloat(l[0]);if(l=/^[A-Za-z_$][\w.]*/.exec(r.slice(n)),l){n+=l[0].length;let u=Ez(t,l[0]);return typeof u=="number"?u:parseFloat(String(u))||0}throw new Error("Hib\xE1s kifejez\xE9s: "+r)},a=()=>{let c=s();for(;;)if(o(),r[n]==="*")n++,c*=s();else if(r[n]==="/")n++,c/=s();else return c},i=()=>{let c=a();for(;;)if(o(),r[n]==="+")n++,c+=a();else if(r[n]==="-")n++,c-=a();else return c};return i()}function _r(e){let t=+e;if(!isFinite(t))return"";if(t===0)return"0";let r=Math.abs(t);for(let[n,o]of[[1e9,"G"],[1e6,"M"],[1e3,"k"],[1,""],[.001,"m"],[1e-6,"\xB5"],[1e-9,"n"],[1e-12,"p"]])if(r>=n*.99995)return+(t/n).toPrecision(3)+o;return String(+t.toPrecision(3))}var $z={si:_r,fix1:e=>(+e).toFixed(1),fix2:e=>(+e).toFixed(2)};function Il(e,t){return String(e).replace(/\{([^}|]+)(?:\|(\w+))?\}/g,(r,n,o)=>{let s=n.trim(),a=/^[A-Za-z_$][\w.]*$/.test(s)?Ez(t,s):Az(s,t);return o&&$z[o]?$z[o](a):a==null?"":String(typeof a=="number"?+a.toPrecision(12):a)})}function ve(e,t){return typeof e=="number"?e:e==null?0:Az(Il(e,t),t)}function Co(e,t){let r=t.props||{},n={label:t.label,$opt:{}};for(let o of e.params||[]){if(o.type==="names"){let a=r[o.key]??o.default;n[o.key]=typeof a=="string"?a:"";continue}if(o.type==="span"){let a=Math.round(+(r.dr??o.default[0]))||0,i=Math.round(+(r.dc??o.default[1]))||0;!a&&!i&&([a,i]=o.default),n.dr=a,n.dc=i;continue}let s=r[o.key];if((s==null||s==="")&&(s=o.default),o.options){let a=o.options.find(i=>String(i.v)===String(s))||o.options.find(i=>String(i.v)===String(o.default))||o.options[0];n[o.key]=a.v,n.$opt[o.key]=a}else{let a=Number(s);isFinite(a)||(a=o.default),o.type==="int"&&(a=Math.round(a)),o.min!=null&&(a=Math.max(o.min,a)),o.max!=null&&(a=Math.min(o.max,a)),n[o.key]=a}}return n}function No(e,t){let r={};for(let l of t.params||[])l.type==="span"?(r.dr=l.default[0],r.dc=l.default[1]):r[l.key]=l.default;let n=new WeakMap,o=(l,u)=>{let d=Il(l.id,u),f=t.pinTable&&t.pinTable[d],g=l.name!=null?Il(l.name,u):f?f[0]:d,h={id:d,name:g,lr:ve(l.lr,u),lc:ve(l.lc,u),role:l.role||(f?f[1]:"h")};/^\d+$/.test(d)&&(h.num=+d);let p=l.caps||f&&f[2];return p&&p.length&&(h.caps=[...p]),l.fn&&(h.fn=l.fn),l.vmin!=null&&(h.vmin=ve(l.vmin,u)),l.vmax!=null&&(h.vmax=ve(l.vmax,u)),h},s=l=>{let u=JSON.stringify(l.props||{}),d=n.get(l);if(d&&d.key===u)return d.pins;let f=Co(t,l),g=[];for(let h of t.pins)if(h.repeat!=null){let p=Math.max(0,Math.round(ve(h.repeat,f)));for(let m=0;m<p;m++)g.push(o(h,{...f,i:m}))}else g.push(o(h,f));for(let h of t.params||[])h.type==="names"&&String(f[h.key]||"").split(",").forEach((p,m)=>{let b=p.trim();b&&g[m]&&(g[m].name=b)});return n.set(l,{key:u,pins:g}),g},a=()=>{let l=[];for(let u of t.groups||[])for(let d of u.slice(1))l.push([u[0],d]);return l},i=l=>{let u=t.bounds||{pad:.45},d=Co(t,l);if(u.r&&u.c)return{r0:ve(u.r[0],d),r1:ve(u.r[1],d),c0:ve(u.c[0],d),c1:ve(u.c[1],d)};let f=s(l),g=u.pad??.45,h=f.map(z=>z.lr),p=f.map(z=>z.lc),m=Math.min(...h)-g,b=Math.max(...h)+g,v=Math.min(...p)-g,_=Math.max(...p)+g;if(u.mid!=null){let z=(h[0]+h[h.length-1])/2,k=(p[0]+p[p.length-1])/2;m=Math.min(m,z-u.mid),b=Math.max(b,z+u.mid),v=Math.min(v,k-u.mid),_=Math.max(_,k+u.mid)}return{r0:m,r1:b,c0:v,c1:_}},c=(t.model||[]).some(l=>l.el==="mcu");return{type:e,def:t,name:t.name,fp:t.fp,prefix:t.prefix,cat:t.cat||"Egy\xE9b",props:r,pins:s,internal:a,bounds:i,mcu:c}}function Oz(e){let t={};for(let[r,n]of Object.entries(e))t[r]=No(r,n);return t}var iN=new Set(["rect","circle","poly","line","text","axial","radial","link","dial"]),lN=new Set(["value","number","int","select","color","span","names"]),Vp={resistor:["a","b"],diode:["a","k"],source:["p","n"],nmos:["d","g","s"],capacitor:["a","b"],npn:["c","b","e"],motor:["a","b"],servo:["vp","gnd","sig"],logic:["vcc","gnd"],stepper:["com","a","b","c","d"],mcu:["gnd","vsys","v33"]},cN={resistor:["ohm"],diode:["vf","ron","imax"],source:["v","rint"],nmos:["vth","ron","imax"],capacitor:["f","vmax"],npn:["beta","vbe","vcesat","imax"],motor:["ohm","vnom"],servo:["ohm","pmin","pmax"],logic:["vih","vil","rout","imax"],stepper:["ohm","steps","rotor"],mcu:["vreg","vmax","igpio"]},Iz=["i2c.sda","i2c.scl","spi.mosi","spi.miso","spi.sck","spi.cs","uart.rx","uart.tx"],Tr=e=>!!e&&typeof e=="object"&&!Array.isArray(e);function da(e,t=Ut){let r=[],n=(f,g)=>r.push({level:"error",path:f,msg:g}),o=(f,g)=>r.push({level:"warn",path:f,msg:g});if(!Tr(e))return n("",t("A le\xEDr\xE1s nem objektum.")),r;let s=e;if((typeof s.name!="string"||!s.name.trim())&&n("name",t("Hi\xE1nyzik a n\xE9v.")),(typeof s.prefix!="string"||!/^[A-Za-z][A-Za-z0-9]{0,5}$/.test(s.prefix))&&n("prefix",t("Az el\u0151tag 1\u20136 karakter, bet\u0171vel kezd\u0151dik (pl. U, MOD, J).")),typeof s.fp!="string"&&o("fp",t("Hi\xE1nyzik a l\xE1bk\xE9p r\xF6vid le\xEDr\xE1sa.")),!Array.isArray(s.pins)||!s.pins.length)return n("pins",t("Legal\xE1bb egy l\xE1b kell.")),r;let a=new Set;(s.params||[]).forEach((f,g)=>{let h=`params[${g}]`;if(!Tr(f)||typeof f.key!="string"||!/^[A-Za-z_]\w*$/.test(f.key)){n(h+".key",t("\xC9rv\xE9nytelen param\xE9terkulcs."));return}a.has(f.key)&&n(h+".key",t("K\xE9tszer szerepel: {a}",{a:f.key})),a.add(f.key),lN.has(f.type)||n(h+".type",t("Ismeretlen param\xE9tert\xEDpus: {a}",{a:String(f.type)})),(f.type==="select"||f.type==="color")&&(!Array.isArray(f.options)||!f.options.length)&&n(h+".options",t("A v\xE1laszthat\xF3 t\xEDpushoz opci\xF3k kellenek.")),f.default===void 0&&n(h+".default",t("Hi\xE1nyzik az alap\xE9rt\xE9k."))});let i=[];try{let f=No("_check",s),g={id:"_",type:"_check",label:(s.prefix||"X")+"1",r:0,c:0,rot:0,mir:!1,props:{...f.props}};i=f.pins(g),f.bounds(g)}catch(f){return n("pins",t("A l\xE1bak nem \xE9rt\xE9kelhet\u0151k ki: ")+(f instanceof Error?f.message:String(f))),r}s.pins.forEach((f,g)=>{(!Tr(f)||typeof f.id!="string"||!f.id.trim())&&n(`pins[${g}].id`,t("Hi\xE1nyzik a l\xE1b azonos\xEDt\xF3ja."))}),i.length||n("pins",t("A l\xE1bak list\xE1ja alap\xE9rt\xE9kekkel \xFCres."));let c=new Set,l=new Map;i.forEach((f,g)=>{(!isFinite(f.lr)||!isFinite(f.lc))&&n(`pins[${g}]`,t("{a}: a helye nem sz\xE1m.",{a:f.id})),(Math.round(f.lr)!==f.lr||Math.round(f.lc)!==f.lc)&&n(`pins[${g}]`,t("{a}: a l\xE1b csak eg\xE9sz lyukpoz\xEDci\xF3n lehet.",{a:f.id})),c.has(f.id)&&n(`pins[${g}].id`,t("K\xE9tszer szerepel a l\xE1b: {a}",{a:f.id})),c.add(f.id);let h=f.lr+":"+f.lc;l.has(h)&&n(`pins[${g}]`,t("{a} \xE9s {b} ugyanabban a lyukban ({c}).",{a:f.id,b:l.get(h)??"",c:h})),l.set(h,f.id);for(let p of["vmin","vmax"])f[p]!=null&&!isFinite(f[p])&&n(`pins[${g}].${p}`,t("{a}: {b} nem sz\xE1m.",{a:f.id,b:p}));f.vmin!=null&&f.vmax!=null&&f.vmin>=f.vmax&&n(`pins[${g}]`,t("{a}: a minim\xE1lis fesz\xFClts\xE9g nem lehet nagyobb a maxim\xE1lisn\xE1l.",{a:f.id})),f.fn!=null&&!Iz.includes(f.fn)&&o(`pins[${g}].fn`,t("{a}: ismeretlen buszfunkci\xF3: {b} (lehet: {c})",{a:f.id,b:f.fn,c:Iz.join(", ")})),(f.vmin!=null||f.vmax!=null)&&f.role!=="vin"&&o(`pins[${g}]`,t("{a}: fesz\xFClts\xE9gtartom\xE1ny csak t\xE1pbemenetn\xE9l (vin) sz\xE1m\xEDt.",{a:f.id}))}),i.some(f=>f.role==="vin")&&!i.some(f=>f.role==="gnd")&&o("pins",t("Van t\xE1pbemenet, de nincs GND-l\xE1b: a t\xE1pfesz\xFClts\xE9g a panel f\xF6ldj\xE9hez k\xE9pest sz\xE1m\xEDt."));let u=new Map;(s.groups||[]).forEach((f,g)=>{if(!Array.isArray(f)||f.length<2){n(`groups[${g}]`,t("Egy csoportban legal\xE1bb k\xE9t l\xE1b kell."));return}for(let h of f)c.has(h)||n(`groups[${g}]`,t("Nincs ilyen l\xE1b: {a}",{a:h})),u.has(h)&&o(`groups[${g}]`,t("{a} t\xF6bb csoportban is szerepel.",{a:h})),u.set(h,g)});let d=(()=>{try{let f=No("_check",s);return Co(s,{label:"X1",props:{...f.props}})}catch{return{$opt:{}}}})();if((s.model||[]).forEach((f,g)=>{let h=`model[${g}]`;if(!Tr(f)||!(f.el in Vp)){n(h+".el",`Ismeretlen modell-elem: ${Tr(f)?String(f.el):"?"}`);return}let p=f;for(let b of Vp[f.el])typeof p[b]!="string"||!p[b]?n(`${h}.${b}`,t("Hi\xE1nyzik a(z) {a} kivezet\xE9s l\xE1ba.",{a:b})):c.has(p[b])||n(`${h}.${b}`,t("Nincs ilyen l\xE1b: {a}",{a:p[b]}));f.el==="mcu"&&p.vbus!=null&&(typeof p.vbus!="string"||!c.has(p.vbus))&&n(`${h}.vbus`,t("Nincs ilyen l\xE1b: {a}",{a:String(p.vbus)}));let m=Vp[f.el].map(b=>p[b]).filter(b=>typeof b=="string"&&b);new Set(m).size!==m.length&&n(h,t("Egy elem k\xE9t kivezet\xE9se nem lehet ugyanaz a l\xE1b."));for(let b of cN[f.el])if(p[b]!=null)try{let v=ve(p[b],d);if(!isFinite(v))throw new Error(t("nem sz\xE1m"))}catch{n(`${h}.${b}`,t("{a}: nem \xE9rtelmezhet\u0151 \xE9rt\xE9k.",{a:b}))}if(f.el==="logic"){let b=Array.isArray(p.outs)?p.outs:[],v=Array.isArray(p.regs)?p.regs:[],_=new Set;v.forEach((A,G)=>{let L=`${h}.regs[${G}]`,M=String(A.name??"");/^[A-Za-z_][A-Za-z0-9_]*$/.test(M)?_.has(M)?n(L,t("K\xE9tszer szerepel a t\xE1rol\xF3: {a}",{a:M})):i.some(B=>B.name===M)&&n(L,t("{a}: a t\xE1rol\xF3 neve nem lehet egy l\xE1b neve.",{a:M})):n(L,t("T\xE1rol\xF3 neve: bet\u0171vel kezd\u0151d\u0151 azonos\xEDt\xF3 kell (most: \u201E{a}\u201D).",{a:M})),_.add(M)});let z=A=>_.has(A)||!!Ol(A,i),k=(A,G,L)=>{if(A==null||String(A).trim()===""){L&&n(G.split("|")[0],t("{a}: hi\xE1nyzik.",{a:G.split("|")[1]}));return}try{for(let M of Bn(ua(String(A))))z(M)||n(G.split("|")[0],t("{a}: nincs ilyen l\xE1b vagy t\xE1rol\xF3: {b}",{a:G.split("|")[1],b:M}))}catch(M){n(G.split("|")[0],`${G.split("|")[1]}: ${Lp(M,t)}`)}};v.forEach((A,G)=>{let L=`${h}.regs[${G}]`,M=String(A.name??"?");k(A.clk,t("{a}|{b} \xF3rajele",{a:L,b:M}),!0),k(A.d,t("{a}|{b} k\xF6vetkez\u0151 \xE9rt\xE9ke (D)",{a:L,b:M}),!0),k(A.reset,t("{a}|{b} t\xF6rl\xE9se",{a:L,b:M}),!1),k(A.set,t("{a}|{b} be\xE1ll\xEDt\xE1sa",{a:L,b:M}),!1),A.edge!=null&&A.edge!=="rise"&&A.edge!=="fall"&&n(L,t("{a}: az \xE9l rise vagy fall lehet.",{a:M}))}),b.length||n(`${h}.outs`,t("A logik\xE1hoz legal\xE1bb egy kimenet kell."));let x=new Set;b.forEach((A,G)=>{let L=`${h}.outs[${G}]`,M=String(A.pin??"");if(!c.has(M)){n(L,t("Nincs ilyen kimeneti l\xE1b: {a}",{a:M||"\u2013"}));return}let B=i.find(S=>S.id===M).name;x.has(M)&&n(L,t("{a}: k\xE9t kifejez\xE9s hajtja ugyanazt a kimenetet.",{a:B})),x.add(M),(M===p.vcc||M===p.gnd)&&n(L,t("{a}: a t\xE1p- vagy GND-l\xE1b nem lehet kimenet.",{a:B}));for(let[S,$]of[["expr",t("kifejez\xE9s")],["oe",t("enged\xE9lyez\xE9s")]]){if(A[S]==null||String(A[S]).trim()===""){S==="expr"&&n(L,t("{a}: hi\xE1nyzik a kifejez\xE9s.",{a:B}));continue}try{let Z=ua(String(A[S]));for(let y of Bn(Z))z(y)||n(L,t("{a} {b}: nincs ilyen (vagy nem egy\xE9rtelm\u0171) l\xE1b vagy t\xE1rol\xF3: {c}",{a:B,b:$,c:y}))}catch(Z){n(L,`${B} ${$}: ${Lp(Z,t)}`)}}A.type!=null&&A.type!=="pp"&&A.type!=="od"&&n(L,t("{a}: a kimenet t\xEDpusa pp vagy od lehet.",{a:B}))})}}),s.socket!=null){let f=(g,h)=>(s.params||[]).find(p=>p.key===g&&h.includes(p.type));if(!Tr(s.socket))n("socket",t("A csatlakoz\xF3 le\xEDr\xE1sa objektum."));else if(s.socket.count!=null&&!f(s.socket.count,["int"])&&n("socket.count",t("A csatlakoz\xF3 l\xE1bsz\xE1m\xE1hoz eg\xE9sz (int) param\xE9ter kell.")),s.socket.names!=null&&!f(s.socket.names,["names"])&&n("socket.names",t("A csatlakoz\xF3 l\xE1bneveihez names t\xEDpus\xFA param\xE9ter kell.")),s.socket.pins!=null&&(!Array.isArray(s.socket.pins)||!s.socket.pins.length))n("socket.pins",t("A csatlakoz\xF3 l\xE1bainak list\xE1ja nem lehet \xFCres."));else for(let g of s.socket.pins||[])c.has(g)||n("socket.pins",t("A csatlakoz\xF3ban nincs ilyen l\xE1b: {a}",{a:g}))}return(s.controls||[]).forEach((f,g)=>{if(Tr(f)&&f.kind==="slider"){let h=(s.params||[]).find(p=>p.key===f.key);h?(!["number","int","value"].includes(h.type)||h.min==null||h.max==null)&&n(`controls[${g}]`,t("A cs\xFAszka param\xE9tere ({a}) sz\xE1m legyen, min \xE9s max \xE9rt\xE9kkel.",{a:h.key})):n(`controls[${g}]`,t("A cs\xFAszk\xE1hoz nincs ilyen param\xE9ter: {a}",{a:String(f.key)}));return}if(!Tr(f)||f.kind!=="press"){n(`controls[${g}]`,t("Ismeretlen vez\xE9rl\u0151."));return}(!Array.isArray(f.closes)||!f.closes.length)&&n(`controls[${g}]`,t("Meg kell adni, mely l\xE1bak z\xE1r\xF3dnak \xF6ssze.")),(f.closes||[]).forEach(h=>{for(let p of h)c.has(p)||n(`controls[${g}]`,t("Nincs ilyen l\xE1b: {a}",{a:p}))})}),(s.graphics||[]).forEach((f,g)=>{(!Tr(f)||!iN.has(f.shape))&&n(`graphics[${g}].shape`,`Ismeretlen rajzelem: ${Tr(f)?String(f.shape):"?"}`)}),s.mount!=null&&s.mount!=="board"&&s.mount!=="off"&&n("mount",t("Ismeretlen szerel\xE9s: {a} (board vagy off).",{a:String(s.mount)})),(s.graphics||[]).some(f=>(f.layer||"body")==="body")||o("graphics",t("Nincs test (body r\xE9teg): az alkatr\xE9sz csak l\xE1bakk\xE9nt l\xE1tszik.")),r}var pa=e=>e.some(t=>t.level==="error");function Tz(e,t){let r="c_"+(e.normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"").slice(0,24)||"alkatresz"),n=r,o=2;for(;t(n);)n=`${r}_${o++}`;return n}var Cz=e=>e.normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase();function uN(e,t){let r=Array.isArray(e.pins)?e.pins:[],n=[e.name,e.fp,e.cat||"",e.prefix,...t?[t(e.name),t(e.fp),e.cat?t(e.cat):""]:[],...r.flatMap(o=>[o.name!=null?String(o.name):"",o.role||"",o.fn||"",...o.caps||[]]),...Object.values(e.pinTable||{}).flatMap(o=>[o[0],o[1],...o[2]||[]]),...(e.model||[]).map(o=>o.el)];return Cz(n.filter(Boolean).join(" "))}function Nz(e,t,r){let n=Cz(t).split(/\s+/).filter(Boolean);if(!n.length)return!0;let o=uN(e,r);return n.every(s=>o.includes(s))}var Rz={1:"GP0",2:"GP1",3:"GND",4:"GP2",5:"GP3",6:"GP4",7:"GP5",8:"GND",9:"GP6",10:"GP7",11:"GP8",12:"GP9",13:"GND",14:"GP10",15:"GP11",16:"GP12",17:"GP13",18:"GND",19:"GP14",20:"GP15",21:"GP16",22:"GP17",23:"GND",24:"GP18",25:"GP19",26:"GP20",27:"GP21",28:"GND",29:"GP22",30:"RUN",31:"GP26",32:"GP27",33:"AGND",34:"GP28",35:"ADC_VREF",36:"3V3",37:"3V3_EN",38:"GND",39:"VSYS",40:"VBUS"},jz=e=>e==="GND"||e==="AGND"?"gnd":e==="3V3"?"p33":e==="VBUS"||e==="VSYS"?"pwr":/^GP\d/.test(e)?"gpio":"misc",dN={red:{vf:2,c:"#e03131",l:"piros"},orange:{vf:2,c:"#fd7e14",l:"narancs"},yellow:{vf:2.1,c:"#f2b705",l:"s\xE1rga"},green:{vf:2.2,c:"#2f9e44",l:"z\xF6ld"},blue:{vf:3,c:"#1c7ed6",l:"k\xE9k"},violet:{vf:3.2,c:"#9c36b5",l:"lila"},white:{vf:3,c:"#f1f3f5",l:"feh\xE9r"}},pN=new Set(["GP26","GP27","GP28"]),Zz={};function fN(e){let t=[`i2c${e>>1&1}.${e&1?"scl":"sda"}`,`spi${e>>3&1}.${["miso","cs","sck","mosi"][e&3]}`];return(e&3)<2&&t.push(`uart${(e>>2^e>>3)&1}.${e&1?"rx":"tx"}`),t.push(`pwm${e>>1&7}.${e&1?"b":"a"}`),t}for(let e in Rz){let t=Rz[e],r=/^GP(\d+)$/.exec(t),n=[...pN.has(t)?["adc"]:[],...r?fN(+r[1]):[]];Zz[e]=n.length?[t,jz(t),n]:[t,jz(t)]}var Mz=Array.from({length:13},(e,t)=>{let r=Math.PI*t/12;return[+(.35-1.25*Math.sin(r)).toFixed(3),+(1+1.45*Math.cos(r)).toFixed(3)]});function Tl(e,t,r,n,o,s,a,i=[]){let c=e/2;return{name:t,fp:r,prefix:"U",cat:"Logika",pins:n.map((l,u)=>{let d=u+1,f=d<=c?3:0,g=d<=c?d-1:e-d,h=o(l);return h==="vin"?{id:String(d),name:l,lr:f,lc:g,role:h,vmin:2,vmax:6}:{id:String(d),name:l,lr:f,lc:g,role:h}}),bounds:{r:[-.4,3.4],c:[-.6,c-.4]},graphics:[{shape:"rect",layer:"body",r:[.45,2.55],c:[-.6,c-.4],fill:"#202124",stroke:"#000",width:1.2,xray:{stroke:"#333"}},{shape:"circle",layer:"detail",at:[1.5,-.6],rad:.32,fill:"#3c3f44"},{shape:"circle",layer:"detail",at:[2.15,-.1],rad:.1,fill:"#9aa0a6"},{shape:"text",layer:"detail",at:[1.5,(c-1)/2],text:"{label} \xB7 "+t.split(" ")[0],size:.42,min:7,color:"#c8ccd0",xray:{color:"#1d231f"}}],pinLabels:{mode:"name",off:.62,side:"in",minP:15,colors:{sig:"#dee2e6",out:"#ffd8a8",vin:"#ffc9d6",gnd:"#adb5bd"}},model:[{el:"logic",vcc:String(n.indexOf("VCC")+1),gnd:String(n.indexOf("GND")+1),outs:s.map(([l,u,d])=>({pin:String(n.indexOf(l)+1),expr:u,...d?{oe:d}:{}})),...i.length?{regs:i}:{},rout:50}],meta:{help:a}}}var Cl=e=>t=>t==="VCC"?"vin":t==="GND"?"gnd":e.includes(t)?"out":"sig",mN=["1A","1B","1Y","2A","2B","2Y","GND","3Y","3A","3B","4Y","4A","4B","VCC"],Dz=["1Y","2Y","3Y","4Y"],hN=["1E","1A0","1A1","1Y0","1Y1","1Y2","1Y3","GND","2Y3","2Y2","2Y1","2Y0","2A1","2A0","2E","VCC"],gN=["1Y0","1Y1","1Y2","1Y3","2Y0","2Y1","2Y2","2Y3"],bN=["1CLR","1D","1CLK","1PRE","1Q","1Qn","GND","2Qn","2Q","2PRE","2CLK","2D","2CLR","VCC"],yN=["1Q","1Qn","2Q","2Qn"],Lz=e=>({name:"F"+e,clk:`${e}CLK`,d:`${e}D`,reset:`!${e}CLR`,set:`!${e}PRE`}),kN=["QB","QC","QD","QE","QF","QG","QH","GND","QHs","SRCLR","SRCLK","RCLK","OE","SER","QA","VCC"],vN=["QA","QB","QC","QD","QE","QF","QG","QH","QHs"],zN=[...[0,1,2,3,4,5,6,7].map(e=>({name:"S"+e,clk:"SRCLK",d:e?"S"+(e-1):"SER",reset:"!SRCLR"})),...[0,1,2,3,4,5,6,7].map(e=>({name:"R"+e,clk:"RCLK",d:"S"+e}))],Vz=e=>[0,1,2,3].map(t=>[`${e}Y${t}`,`!(!${e}E & ${t&2?"":"!"}${e}A1 & ${t&1?"":"!"}${e}A0)`]),_e=(e,...t)=>["GPIO"+e,"GPIO"+e,"gpio",t],Fz=(e,t)=>[...e.map(([r,n,o,s],a)=>({id:r,name:n,role:o,lr:0,lc:a,...s&&s.length?{caps:[...s]}:{}})),...t.map(([r,n,o,s],a)=>({id:r,name:n,role:o,lr:"{span}",lc:a,...s&&s.length?{caps:[...s]}:{}}))],Gz=[["VIN","VIN","pwr"],["GND","GND","gnd"],_e(13,"adc2","spi2.mosi"),_e(12,"adc2","strap","spi2.miso"),_e(14,"adc2","spi2.sck"),_e(27,"adc2"),_e(26,"adc2","dac"),_e(25,"adc2","dac"),_e(33,"adc"),_e(32,"adc"),_e(35,"adc","in","nopull"),_e(34,"adc","in","nopull"),_e(39,"adc","in","nopull"),_e(36,"adc","in","nopull"),["EN","EN","misc"]],Uz=[["3V3","3V3","p33"],["GND2","GND","gnd"],_e(15,"adc2","strap","spi2.cs"),_e(2,"adc2","strap","led"),_e(4,"adc2"),_e(16,"uart2.rx"),_e(17,"uart2.tx"),_e(5,"strap","spi3.cs"),_e(18,"spi3.sck"),_e(19,"spi3.miso"),_e(21,"i2c0.sda"),_e(3,"uart0","uart0.rx"),_e(1,"uart0","uart0.tx"),_e(22,"i2c0.scl"),_e(23,"spi3.mosi")],Fp={GPIO36:"VP",GPIO39:"VN",GPIO1:"TX0",GPIO3:"RX0",GPIO16:"RX2",GPIO17:"TX2"};for(let[,e]of[...Gz,...Uz])/^GPIO\d+$/.test(e)&&!(e in Fp)&&(Fp[e]="D"+e.slice(4));var qz=[["5V","5V","pwr"],["GND","GND","gnd"],["3V3","3V3","p33"],_e(4,"adc","spi2.sck"),_e(3,"adc"),_e(2,"adc","strap"),_e(1,"adc"),_e(0,"adc")],Kz=[_e(5,"adc2","spi2.miso"),_e(6,"spi2.mosi"),_e(7,"spi2.cs"),_e(8,"strap","led","i2c0.sda"),_e(9,"strap","i2c0.scl"),_e(10),_e(20,"uart0","uart0.rx"),_e(21,"uart0","uart0.tx")],Hz={};for(let[,e]of[...qz,...Kz])/^GPIO\d+$/.test(e)&&(Hz[e]=e.slice(4));var Bz="A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Vonalz\xF3val m\xE9rd le a saj\xE1todat: a lapok gy\xE1rt\xF3nk\xE9nt elt\xE9rhetnek.",Wz="https://github.com/pioarduino/platform-espressif32/releases/download/stable/platform-espressif32.zip",_N={fqbn:"rp2040:rp2040:rpipicow",boardUrl:"https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json",pwmFreq:"analogWriteFreq({f});",pio:{platform:"https://github.com/maxgerhardt/platform-raspberrypi.git",board:"rpipicow",extra:["board_build.core = earlephilhower"]}},wN={fqbn:"esp32:esp32:esp32doit-devkit-v1",boardUrl:"https://espressif.github.io/arduino-esp32/package_esp32_index.json",pwmFreq:"analogWriteFrequency({pin}, {f});",pio:{platform:Wz,board:"esp32doit-devkit-v1"},mpyAtten:!0},xN={fqbn:"esp32:esp32:esp32c3",boardUrl:"https://espressif.github.io/arduino-esp32/package_esp32_index.json",pwmFreq:"analogWriteFrequency({pin}, {f});",pio:{platform:Wz,board:"esp32-c3-devkitm-1",extra:["build_flags = -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=1"]},mpyAtten:!0},Cr={pico:{name:"Raspberry Pi Pico W",fp:"2\xD720 l\xE1b, sort\xE1v 6",prefix:"PICO",cat:"Vez\xE9rl\u0151",params:[{key:"span",label:"Sort\xE1v (oszt\xE1s)",type:"int",default:6,min:3,max:16,step:1,geo:!0,help:"A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Adatlap szerint 17,78 mm = 7 oszt\xE1s, de t\xFCskesorral, foglalatban vagy adapterlapon m\xE1s is lehet (pl. 6 vagy 8). Vonalz\xF3val m\xE9rd le a saj\xE1todat."}],pinTable:Zz,pins:[{repeat:20,id:"{40-i}",lr:0,lc:"{i}"},{repeat:20,id:"{1+i}",lr:"{span}",lc:"{i}"}],groups:[["3","8","13","18","23","28","33","38"]],bounds:{r:[-.75,"{span}+0.75"],c:[-1.45,19.6]},graphics:[{shape:"rect",layer:"body",r:[-.75,"{span}+0.75"],c:[-.6,19.6],fill:"#1f6b4a",stroke:"#134a33",width:1.5,xray:{stroke:"#1f6b4a"}},{shape:"rect",layer:"detail",r:["{span}/2-1.1","{span}/2+1.1"],c:[-1.45,-.15],fill:"#b5bcc3",xray:{fill:null,stroke:"#6b7a72",dash:!0}},{shape:"rect",layer:"detail",r:["{span}/2-1.3","{span}/2+1.3"],c:[7.6,10.2],fill:"#1b1b1b"},{shape:"rect",layer:"detail",r:[.9,"{span}-0.9"],c:[13.4,18.4],fill:"#c3c8cd"},{shape:"text",layer:"detail",at:["{span}/2",4.6],text:"Pico W",size:.6,min:8,color:"#e8f3ec"},{shape:"text",layer:"detail",at:["{span}/2",11.6],text:"{label}",size:.42,color:"#bfe0cd"},{shape:"text",layer:"xray",at:["{span}/2",-1],text:"USB",size:.4,color:"#4d5a52"},{shape:"text",layer:"xray",at:["{span}/2",9.5],text:"{label} \xB7 Pico W",size:.55,min:8,color:"#1f6b4a"}],pinLabels:{mode:"name",inward:!0,onBody:!0,minP:13,rename:{ADC_VREF:"VREF"}},meta:{target:_N},model:[{el:"mcu",gnd:"38",vbus:"40",vsys:"39",v33:"36",vreg:1.8,vmax:5.5,igpio:.012}]},esp32:{name:"ESP32 DevKit V1 (DOIT, 30 l\xE1b)",fp:"2\xD715 l\xE1b, sort\xE1v 10",prefix:"ESP",cat:"Vez\xE9rl\u0151",params:[{key:"span",label:"Sort\xE1v (oszt\xE1s)",type:"int",default:10,min:3,max:16,step:1,geo:!0,help:"\xC1ltal\xE1ban 25,4 mm = 10 oszt\xE1s (a lap 28 mm sz\xE9les). "+Bz}],pins:Fz(Gz,Uz),groups:[["GND","GND2"]],bounds:{r:[-.65,"{span}+0.65"],c:[-1.7,19.5]},graphics:[{shape:"rect",layer:"body",r:[-.65,"{span}+0.65"],c:[-1.2,19.5],fill:"#16365c",stroke:"#0c2038",width:1.5,xray:{stroke:"#16365c"}},{shape:"rect",layer:"detail",r:["{span}/2-0.9","{span}/2+0.9"],c:[-1.7,.4],fill:"#b5bcc3",xray:{fill:null,stroke:"#6b7a72",dash:!0}},{shape:"rect",layer:"detail",r:[.9,1.9],c:[1.2,2.4],fill:"#2b2f33"},{shape:"rect",layer:"detail",r:["{span}-1.9","{span}-0.9"],c:[1.2,2.4],fill:"#2b2f33"},{shape:"rect",layer:"detail",r:[.7,"{span}-0.7"],c:[9.6,19.3],fill:"#262a2e"},{shape:"rect",layer:"detail",r:[1,"{span}-1.0"],c:[9.9,16.6],fill:"#c9ced3",stroke:"#9aa1a8"},{shape:"text",layer:"detail",at:["{span}/2-0.6",13.2],text:"ESP32",size:.62,min:8,color:"#343a40"},{shape:"text",layer:"detail",at:["{span}/2+0.6",13.2],text:"WROOM-32",size:.36,min:6,color:"#495057"},{shape:"text",layer:"detail",at:["{span}/2",5.8],text:"{label}",size:.42,color:"#c5d6ea"},{shape:"text",layer:"xray",at:["{span}/2",-1],text:"USB",size:.4,color:"#4d5a52"},{shape:"text",layer:"xray",at:["{span}/2",9],text:"{label} \xB7 ESP32",size:.55,min:8,color:"#16365c"}],pinLabels:{mode:"name",inward:!0,onBody:!0,minP:13,rename:Fp},meta:{target:wN,help:"ESP32-WROOM-32 modul USB-soros \xE1talak\xEDt\xF3val. T\xE1p: USB (di\xF3d\xE1n \xE1t a VIN-re) vagy VIN 5\u201312 V (AMS1117 stabiliz\xE1tor, legal\xE1bb kb. 4,2 V kell), vagy k\xF6zvetlen\xFCl 3,3 V a 3V3 l\xE1bon. A GPIO34\u201339 csak bemenet, bels\u0151 felh\xFAz\xE1s n\xE9lk\xFCl; az ADC2-l\xE1bak bekapcsolt WiFi mellett nem m\xE9rnek.",pinNotes:{GPIO12:"ind\xEDt\xE1si (strapping) l\xE1b (MTDI): ha bekapcsol\xE1skor magas, a modul 1,8 V-os flasht felt\xE9telez, \xE9s nem indul el. Ne tegy\xE9l r\xE1 felh\xFAz\xE1st.",GPIO15:"ind\xEDt\xE1si (strapping) l\xE1b (MTDO): bekapcsol\xE1skor magasnak kell lennie (bels\u0151 felh\xFAz\xE1s). Ne h\xFAzd le gombbal vagy terhel\xE9ssel.",GPIO2:"ind\xEDt\xE1si (strapping) l\xE1b, \xE9s a be\xE9p\xEDtett k\xE9k LED is ezen van: a felt\xF6lt\xE9shez bekapcsol\xE1skor alacsony vagy lebeg\u0151 kell legyen. Ne tegy\xE9l r\xE1 felh\xFAz\xE1st.",GPIO5:"ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor magasnak kell lennie (bels\u0151 felh\xFAz\xE1s). Ne h\xFAzd le.",GPIO1:"TX0: a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja, felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.",GPIO3:"RX0: a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja, felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t."}},model:[{el:"mcu",gnd:"GND",vsys:"VIN",v33:"3V3",vreg:4.2,vmax:12,igpio:.02,mux:"matrix"}]},esp32c3:{name:"ESP32-C3 SuperMini",fp:"2\xD78 l\xE1b, sort\xE1v 6",prefix:"ESP",cat:"Vez\xE9rl\u0151",params:[{key:"span",label:"Sort\xE1v (oszt\xE1s)",type:"int",default:6,min:3,max:16,step:1,geo:!0,help:"\xC1ltal\xE1ban 15,24 mm = 6 oszt\xE1s (a lap 18 mm sz\xE9les). "+Bz}],pins:Fz(qz,Kz),bounds:{r:[-.6,"{span}+0.6"],c:[-1.1,8.2]},graphics:[{shape:"rect",layer:"body",r:[-.6,"{span}+0.6"],c:[-.7,8.2],fill:"#1d1f22",stroke:"#000",width:1.5,xray:{stroke:"#1d1f22"}},{shape:"rect",layer:"detail",r:["{span}/2-1.25","{span}/2+1.25"],c:[-1.1,.9],fill:"#c3c8cd",xray:{fill:null,stroke:"#6b7a72",dash:!0}},{shape:"rect",layer:"detail",r:["{span}/2-1.1","{span}/2+1.1"],c:[2.9,5.1],fill:"#3a3d41",stroke:"#55595e"},{shape:"rect",layer:"detail",r:["{span}/2-0.5","{span}/2+0.5"],c:[6.6,7.8],fill:"#e9ecef"},{shape:"circle",layer:"detail",at:["{span}/2+1.7",1.9],rad:.28,fill:"#4dabf7"},{shape:"text",layer:"detail",at:["{span}/2",4],text:"C3",size:.5,min:7,color:"#ced4da"},{shape:"text",layer:"label",at:["{span}+1.3",3.5],text:"{label} \xB7 C3 SuperMini",size:.42},{shape:"text",layer:"xray",at:["{span}/2",-1.5],text:"USB",size:.4,color:"#4d5a52"}],pinLabels:{mode:"name",inward:!0,onBody:!0,minP:13,rename:Hz},meta:{target:xN,help:"ESP32-C3 (RISC-V, WiFi, BLE), nat\xEDv USB-C. T\xE1p: USB vagy az 5V l\xE1b (kb. 3,5\u20136 V, kis fesz\xFClts\xE9ges\xE9s\u0171 stabiliz\xE1tor), vagy 3,3 V a 3V3 l\xE1bon. Az 5V l\xE1b k\xF6zvetlen\xFCl az USB-hez csatlakozik, nincs di\xF3da: akkut ne k\xF6ss r\xE1 USB mellett. ADC: GPIO0\u20134 (ADC1), GPIO5 (ADC2).",pinNotes:{GPIO2:"ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor magasnak kell lennie. Ne h\xFAzd le gombbal vagy terhel\xE9ssel.",GPIO8:"ind\xEDt\xE1si (strapping) l\xE1b, \xE9s a be\xE9p\xEDtett k\xE9k LED is ezen van (alacsony szintre vil\xE1g\xEDt): bekapcsol\xE1skor magasnak kell lennie. Ne h\xFAzd le.",GPIO9:"a lap BOOT gombja is ezen van (lenyomva a f\xF6ldre h\xFAz), \xE9s ind\xEDt\xE1si l\xE1b: ha bekapcsol\xE1skor alacsony, a lap let\xF6lt\u0151 m\xF3dba ker\xFCl. Gombnak j\xF3, ha indul\xE1skor nincs lenyomva.",GPIO20:"RX (UART0): ha a soros ki\xEDr\xE1s nem a nat\xEDv USB-n megy, a soros port haszn\xE1lja.",GPIO21:"TX (UART0): ha a soros ki\xEDr\xE1s nem a nat\xEDv USB-n megy, a soros port haszn\xE1lja."}},model:[{el:"mcu",gnd:"GND",vbus:"5V",vsys:"5V",v33:"3V3",vreg:3.5,vmax:6,igpio:.02,mux:"matrix"}]},button:{name:"Nyom\xF3gomb 12 mm",fp:"A 0:0, 0:5 \xB7 B 2:0, 2:5",prefix:"S",cat:"Bemenet",pins:[{id:"A1",lr:0,lc:0,role:"A"},{id:"A2",lr:0,lc:5,role:"A"},{id:"B1",lr:2,lc:0,role:"B"},{id:"B2",lr:2,lc:5,role:"B"}],groups:[["A1","A2"],["B1","B2"]],bounds:{r:[-1.36,3.36],c:[-.3,5.3]},controls:[{kind:"press",closes:[["A1","B1"]]}],graphics:[{shape:"line",layer:"lead",from:[0,0],to:[0,.7],width:.14},{shape:"line",layer:"lead",from:[0,5],to:[0,4.3],width:.14},{shape:"line",layer:"lead",from:[2,0],to:[2,.7],width:.14},{shape:"line",layer:"lead",from:[2,5],to:[2,4.3],width:.14},{shape:"rect",layer:"body",r:[-1.36,3.36],c:[.14,4.86],fill:"#2a2a2a",stroke:"#111",width:1,xray:{stroke:"#333"}},{shape:"rect",layer:"detail",r:[-1,3],c:[.5,4.5],fill:"#9aa3ab"},{shape:"circle",layer:"detail",at:[1,2.5],rad:1.35,fill:"#141414",pressed:{fill:"#4a4a4a",stroke:"accent",width:3},xray:{fill:null,stroke:"rgba(0,0,0,.4)",width:1.2,pressed:{stroke:"accent",width:3}}},{shape:"text",layer:"detail",at:[1,2.5],text:"{label}",size:.62,min:8,color:"#f1f3f5",pressed:{color:"#ffd8bf"},xray:{color:"#1d231f",pressed:{color:"#c2410c"}}}],pinLabels:{mode:"role",off:.62,colors:{A:"#1d4ed8",B:"#b45309"}}},res:{name:"Ellen\xE1ll\xE1s",fp:"0:0 \u2013 0:4 (\xE1ll\xEDthat\xF3)",prefix:"R",cat:"Passz\xEDv",params:[{key:"ohm",label:"\xC9rt\xE9k",type:"value",unit:"\u03A9",default:1e3,min:.01,max:1e9,series:"E12"},{key:"span",label:"2. l\xE1b helye",type:"span",default:[0,4],help:"Az els\u0151 l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:4. Nagyobb t\xE1vols\xE1ggal a l\xE1b maga is \xE1thidalhat."}],pins:[{id:"1",lr:0,lc:0,role:"r"},{id:"2",lr:"{dr}",lc:"{dc}",role:"r"}],bounds:{pad:.45},graphics:[{shape:"axial",layer:"body",from:"1",to:"2",len:2.3,w:.76,fill:"#d9bf8c",stroke:"#8a6d3b",bands:"{ohm}"},{shape:"text",layer:"label",between:["1","2"],perp:.95,text:"{label} {ohm|si}\u03A9",size:.42}],model:[{el:"resistor",a:"1",b:"2",ohm:"{ohm}"}]},jumper:{name:"\xC1tk\xF6t\u0151 huzal (0 \u03A9)",fp:"0:0 \u2013 0:2 (\xE1ll\xEDthat\xF3)",prefix:"JP",cat:"Passz\xEDv",params:[{key:"span",label:"2. v\xE9g helye",type:"span",default:[0,2],help:"Egyenes dr\xF3t\xE1tk\xF6t\xE9s az alkatr\xE9szoldalon: a k\xE9t v\xE9ge egy h\xE1l\xF3zat."}],pins:[{id:"1",lr:0,lc:0,role:"j"},{id:"2",lr:"{dr}",lc:"{dc}",role:"j"}],groups:[["1","2"]],bounds:{pad:.4},graphics:[{shape:"link",layer:"lead",from:"1",to:"2",width:.22,stroke:"#b8bec4",edge:"#5f676e"},{shape:"text",layer:"label",between:["1","2"],perp:.75,text:"{label}",size:.38}]},led:{name:"LED 3 mm",fp:"an\xF3d 0:0 \xB7 kat\xF3d 0:1 (\xE1ll\xEDthat\xF3)",prefix:"LED",cat:"F\xE9lvezet\u0151",params:[{key:"color",label:"Sz\xEDn",type:"color",default:"red",options:Object.entries(dN).map(([e,t])=>({v:e,label:t.l,hex:t.c,vf:t.vf})),help:"{color.label}, nyit\xF3fesz\xFClts\xE9g {color.vf} V"},{key:"span",label:"Kat\xF3d helye",type:"span",default:[0,1],help:"Az an\xF3dhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1."}],pins:[{id:"A",name:"an\xF3d +",lr:0,lc:0,role:"an"},{id:"K",name:"kat\xF3d \u2212",lr:"{dr}",lc:"{dc}",role:"ka"}],bounds:{pad:.3,mid:.7},graphics:[{shape:"radial",layer:"body",from:"A",to:"K",rad:.62,fill:"{color.hex}",glow:!0},{shape:"text",layer:"label",between:["A","K"],perp:1.15,text:"{label}",size:.42}],pinLabels:{mode:"sign",off:.72,plus:["an"]},model:[{el:"diode",a:"A",k:"K",vf:"{color.vf}",ron:15,light:!0}]},diode:{name:"Di\xF3da",fp:"an\xF3d 0:0 \xB7 kat\xF3d 0:4 (\xE1ll\xEDthat\xF3)",prefix:"D",cat:"F\xE9lvezet\u0151",params:[{key:"kind",label:"T\xEDpus",type:"select",default:"1N5817",options:[{v:"1N5817",label:"1N5817 Schottky (0,3 V, 1 A)",vf:.3,ron:.15,imax:1},{v:"1N4148",label:"1N4148 jeldi\xF3da (0,7 V, 0,2 A)",vf:.7,ron:2,imax:.2},{v:"1N4007",label:"1N4007 egyenir\xE1ny\xEDt\xF3 (0,7 V, 1 A)",vf:.7,ron:.3,imax:1}],help:"Csak an\xF3dt\xF3l kat\xF3d fel\xE9 vezet, {kind.vf} V nyit\xF3fesz\xFClts\xE9g felett. A cs\xEDk a kat\xF3d oldal\xE1n van."},{key:"span",label:"Kat\xF3d helye",type:"span",default:[0,4],help:"Az an\xF3dhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:4."}],pins:[{id:"A",name:"an\xF3d",lr:0,lc:0,role:"an"},{id:"K",name:"kat\xF3d",lr:"{dr}",lc:"{dc}",role:"ka"}],bounds:{pad:.45},graphics:[{shape:"axial",layer:"body",from:"A",to:"K",len:1.7,w:.62,fill:"#262626",stroke:"#000",stripe:{at:.8,color:"#d0d4d8"}},{shape:"text",layer:"label",between:["A","K"],perp:-.95,text:"{label} {kind}",size:.36}],pinLabels:{mode:"sign",off:.72,plus:["an"],plusText:"A",minusText:"K"},model:[{el:"diode",a:"A",k:"K",vf:"{kind.vf}",ron:"{kind.ron}",imax:"{kind.imax}"}]},nmos:{name:"N-MOSFET (2N7000)",fp:"S 0:0 \xB7 G 0:1 \xB7 D 0:2 (TO-92)",prefix:"Q",cat:"F\xE9lvezet\u0151",params:[{key:"vth",label:"K\xFCsz\xF6b (Vth)",type:"value",unit:"V",default:2.1,min:.2,max:10,step:.1,help:"A D\u2013S akkor vezet, ha a gate a source-hoz k\xE9pest enn\xE9l magasabb."},{key:"ron",label:"Nyitott ellen\xE1ll\xE1s",type:"value",unit:"\u03A9",default:5,min:.001,max:1e4,series:"E12"},{key:"imax",label:"Max. \xE1ram",type:"value",unit:"A",default:.2,min:.001,max:200,series:"E12"}],pins:[{id:"S",name:"S",lr:0,lc:0,role:"s"},{id:"G",name:"G",lr:0,lc:1,role:"g"},{id:"D",name:"D",lr:0,lc:2,role:"d"}],bounds:{r:[-.95,.5],c:[-.5,2.5]},graphics:[{shape:"poly",layer:"body",pts:Mz,fill:"#1d1d1d",stroke:"#000",width:1,xray:{stroke:"#333"}},{shape:"text",layer:"label",at:[-1.35,1],text:"{label}",size:.4}],pinLabels:{mode:"name",off:.78,colors:{s:"#1f2328",g:"#1d4ed8",d:"#5c666e"}},model:[{el:"nmos",d:"D",g:"G",s:"S",vth:"{vth}",ron:"{ron}",imax:"{imax}"}]},cap:{name:"Kondenz\xE1tor (ker\xE1mia)",fp:"0:0 \u2013 0:1 (\xE1ll\xEDthat\xF3)",prefix:"C",cat:"Passz\xEDv",params:[{key:"f",label:"Kapacit\xE1s",type:"value",unit:"F",default:1e-7,min:1e-12,max:1,series:"E12",help:"Egyen\xE1ramon szakad\xE1s. A szimul\xE1ci\xF3 a fesz\xFClts\xE9get \xE9s az id\u0151\xE1lland\xF3t (\u03C4 = R\xB7C) mutatja."},{key:"volt",label:"N\xE9vleges fesz\xFClts\xE9g",type:"value",unit:"V",default:50,min:1,max:1e3,step:1},{key:"span",label:"2. l\xE1b helye",type:"span",default:[0,1],help:"Az els\u0151 l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1."}],pins:[{id:"1",lr:0,lc:0,role:"c"},{id:"2",lr:"{dr}",lc:"{dc}",role:"c"}],bounds:{pad:.3,mid:.6},graphics:[{shape:"radial",layer:"body",from:"1",to:"2",rad:.55,fill:"#d9902f"},{shape:"text",layer:"label",between:["1","2"],perp:1.05,text:"{label} {f|si}F",size:.4}],model:[{el:"capacitor",a:"1",b:"2",f:"{f}",vmax:"{volt}"}]},elko:{name:"Elektrolit kondenz\xE1tor",fp:"+ 0:0 \xB7 \u2212 0:1 (\xE1ll\xEDthat\xF3)",prefix:"C",cat:"Passz\xEDv",params:[{key:"f",label:"Kapacit\xE1s",type:"value",unit:"F",default:1e-5,min:1e-7,max:1,series:"E12",help:"Polarit\xE1sos: a + l\xE1b ker\xFClj\xF6n a magasabb fesz\xFClts\xE9gre. A cs\xEDk a \u2212 l\xE1b oldal\xE1n van."},{key:"volt",label:"N\xE9vleges fesz\xFClts\xE9g",type:"value",unit:"V",default:16,min:1,max:500,step:1},{key:"span",label:"\u2212 l\xE1b helye",type:"span",default:[0,1],help:"A + l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1."}],pins:[{id:"+",name:"+",lr:0,lc:0,role:"cp"},{id:"-",name:"\u2212",lr:"{dr}",lc:"{dc}",role:"cn"}],bounds:{pad:.45,mid:1},graphics:[{shape:"radial",layer:"body",from:"+",to:"-",rad:.95,fill:"#1d3f8f"},{shape:"text",layer:"label",between:["+","-"],perp:1.5,text:"{label} {f|si}F {volt|fix1}V",size:.38}],pinLabels:{mode:"sign",off:.72,plus:["cp"]},model:[{el:"capacitor",a:"+",b:"-",f:"{f}",vmax:"{volt}",polar:!0}]},npn:{name:"NPN tranzisztor",fp:"TO-92, l\xE1bsorrend t\xEDpus szerint",prefix:"Q",cat:"F\xE9lvezet\u0151",params:[{key:"kind",label:"T\xEDpus",type:"select",default:"BC547",geo:!0,options:[{v:"BC547",label:"BC547 (C-B-E, 100 mA)",beta:200,imax:.1,pc:0,pb:1,pe:2},{v:"2N3904",label:"2N3904 (E-B-C, 200 mA)",beta:150,imax:.2,pc:2,pb:1,pe:0},{v:"2N2222",label:"2N2222A (E-B-C, 600 mA)",beta:150,imax:.6,pc:2,pb:1,pe:0}],help:"A C\u2013E akkor vezet, ha a b\xE1zison \xE1ram folyik (Ube \u2248 0,65 V). Ic legfeljebb \u03B2\xB7Ib ({kind.beta}\xB7Ib); kapcsol\xF3k\xE9nt kb. t\xEDzszer annyi b\xE1zis\xE1ram kell, mint Ic/\u03B2."}],pins:[{id:"C",name:"C",lr:0,lc:"{kind.pc}",role:"col"},{id:"B",name:"B",lr:0,lc:"{kind.pb}",role:"base"},{id:"E",name:"E",lr:0,lc:"{kind.pe}",role:"emit"}],bounds:{r:[-.95,.5],c:[-.5,2.5]},graphics:[{shape:"poly",layer:"body",pts:Mz,fill:"#1d1d1d",stroke:"#000",width:1,xray:{stroke:"#333"}},{shape:"text",layer:"label",at:[-1.35,1],text:"{label} {kind}",size:.36}],pinLabels:{mode:"name",off:.78,colors:{col:"#5c666e",base:"#1d4ed8",emit:"#1f2328"}},model:[{el:"npn",c:"C",b:"B",e:"E",beta:"{kind.beta}",vbe:.65,vcesat:.1,imax:"{kind.imax}"}]},hc00:Tl(14,"74HC00 n\xE9gy NAND kapu","DIP-14 \xB7 4\xD7 NAND",mN,Cl(Dz),Dz.map(e=>[e,`!(${e[0]}A & ${e[0]}B)`]),"N\xE9gy k\xE9tbemenetes NAND kapu (nY = NEM(nA \xC9S nB)). T\xE1p 2\u20136 V; a nem haszn\xE1lt bemeneteket k\xF6sd GND-re."),hc74:Tl(14,"74HC74 kett\u0151s D t\xE1rol\xF3","DIP-14 \xB7 2\xD7 D flip-flop",bN,Cl(yN),[["1Q","F1"],["1Qn","!F1"],["2Q","F2"],["2Qn","!F2"]],"K\xE9t D t\xE1rol\xF3: a CLK felfut\xF3 \xE9l\xE9n Q felveszi D \xE9rt\xE9k\xE9t. CLR = 0 t\xF6rli (Q = 0), PRE = 0 be\xE1ll\xEDtja (Q = 1), az \xF3rajelt\u0151l f\xFCggetlen\xFCl; haszn\xE1lat k\xF6zben mindkett\u0151t k\xF6sd VCC-re. Qn a Q neg\xE1ltja. T\xE1p 2\u20136 V.",[Lz("1"),Lz("2")]),hc595:Tl(16,"74HC595 l\xE9ptet\u0151regiszter","DIP-16 \xB7 8 bit SIPO",kN,Cl(vN),[...["QA","QB","QC","QD","QE","QF","QG","QH"].map((e,t)=>[e,"R"+t,"!OE"]),["QHs","S7"]],"8 bites soros-p\xE1rhuzamos \xE1talak\xEDt\xF3: SRCLK felfut\xF3 \xE9l\xE9n a SER bit bel\xE9p, a t\xF6bbi eggyel tov\xE1bbl\xE9p; RCLK felfut\xF3 \xE9l\xE9n a 8 bit a QA\u2026QH kimenetekre ker\xFCl. OE = 0 enged\xE9lyezi a kimeneteket, SRCLR = 0 t\xF6rli a l\xE9ptet\u0151regisztert. QHs (QH') a k\xF6vetkez\u0151 595 SER bemenet\xE9re k\xF6thet\u0151. T\xE1p 2\u20136 V.",zN),hc139:Tl(16,"74HC139 kett\u0151s 2\u21924 dek\xF3der","DIP-16 \xB7 2\xD7 (2\u21924)",hN,Cl(gN),[...Vz("1"),...Vz("2")],"K\xE9t 2\u21924 dek\xF3der: az A1 A0 bin\xE1ris sz\xE1m szerinti Y kimenet lesz 0 (akt\xEDv alacsony), a t\xF6bbi 1; ha E = 1, mind 1. T\xE1p 2\u20136 V."),stepper:{name:"L\xE9ptet\u0151motor (28BYJ-48)",fp:"k\xFCls\u0151 \xB7 5 eres k\xE1bel (A B C D, k\xF6z\xF6s +)",prefix:"M",cat:"K\xFCls\u0151",mount:"off",params:[{key:"ohm",label:"Tekercsellen\xE1ll\xE1s",type:"value",unit:"\u03A9",default:50,min:5,max:1e3,series:"E12",help:"5 V-os unipol\xE1ris l\xE9ptet\u0151motor, 64:1 \xE1tt\xE9tellel: f\xE9ll\xE9ptet\xE9sben 4096 l\xE9p\xE9s a kimen\u0151 tengely egy fordulata. A tekercseket egy meghajt\xF3 (pl. ULN2003) kapcsolja a f\xF6ld fel\xE9; a k\xF6z\xF6s vezet\xE9k (piros) a +5 V. A szimul\xE1ci\xF3 a tekercsek gerjeszt\xE9si sorrendj\xE9b\u0151l l\xE9pteti (A, AB, B, BC, C, CD, D, DA)."}],pins:[{id:"A",lr:0,lc:0,role:"coil"},{id:"B",lr:0,lc:1,role:"coil"},{id:"C",lr:0,lc:2,role:"coil"},{id:"D",lr:0,lc:3,role:"coil"},{id:"COM",name:"+",lr:0,lc:4,role:"mp"}],bounds:{r:[-8.2,.5],c:[-1.9,5.9]},graphics:[...[["A","#1c7ed6",.8],["B","#f783ac",1.4],["C","#fcc419",2],["D","#fd7e14",2.6],["COM","#e03131",3.2]].map(([e,t,r])=>({shape:"line",layer:"lead",from:e,to:[-1.4,r],width:.13,stroke:t})),{shape:"rect",layer:"body",r:[-5.1,-4],c:[-1.9,5.9],fill:"#ced4da",stroke:"#868e96",width:1.2},{shape:"circle",layer:"body",at:[-4.6,2],rad:3.1,fill:"#dee2e6",stroke:"#868e96",width:1.4,xray:{stroke:"#868e96"}},{shape:"rect",layer:"detail",r:[-2.1,-1.2],c:[.6,3.4],fill:"#1c5bbf"},{shape:"circle",layer:"detail",at:[-5.6,2],rad:1.2,fill:"#f1f3f5",stroke:"#adb5bd"},{shape:"dial",layer:"detail",at:[-5.6,2],rad:1.8,color:"#e8590c",width:.38},{shape:"text",layer:"label",at:[-8.6,2],text:"{label} 28BYJ-48",size:.4}],pinLabels:{mode:"name",off:.75},model:[{el:"stepper",com:"COM",a:"A",b:"B",c:"C",d:"D",ohm:"{ohm}",steps:4096,rotor:64}]},uln2003:{name:"ULN2003 l\xE9ptet\u0151motor-meghajt\xF3",fp:"IN1\u2013IN4 \xB7 t\xE1p \xB7 motorcsatlakoz\xF3",prefix:"U",cat:"Modul",pins:[...[1,2,3,4].map(e=>({id:"IN"+e,lr:0,lc:e-1,role:"sig"})),{id:"GND",lr:0,lc:5,role:"gnd"},{id:"VCC",lr:0,lc:6,role:"vin",vmin:4.5,vmax:12},...["A","B","C","D"].map((e,t)=>({id:e,lr:4,lc:t,role:"out"})),{id:"COM",name:"+",lr:4,lc:4,role:"pout"}],groups:[["VCC","COM"]],socket:{pins:["A","B","C","D","COM"]},bounds:{r:[-.8,4.8],c:[-.8,6.8]},graphics:[{shape:"rect",layer:"body",r:[-.8,4.8],c:[-.8,6.8],fill:"#1e6b45",stroke:"#0f3d27",width:1.2,xray:{stroke:"#1e6b45"}},{shape:"rect",layer:"detail",r:[1.4,2.6],c:[.6,4.4],fill:"#1b1b1b"},{shape:"rect",layer:"detail",r:[3.4,4.6],c:[-.5,4.5],fill:"#f8f9fa",stroke:"#adb5bd"},{shape:"text",layer:"detail",at:[2,2.5],text:"ULN2003",size:.42,min:7,color:"#dee2e6"},{shape:"text",layer:"label",at:[2,5.9],text:"{label}",size:.42}],pinLabels:{mode:"name",off:.62,side:"in",minP:15,colors:{sig:"#e9ecef",gnd:"#adb5bd",vin:"#ffc9d6",out:"#ffd8a8",pout:"#ffd8a8"}},meta:{help:"N\xE9gy Darlington-kapcsol\xF3: ha az INn bemenet magas (\u2265 kb. 2,2 V, a Pico 3,3 V-ja el\xE9g), a hozz\xE1 tartoz\xF3 kimenet (A\u2013D) a f\xF6ld fel\xE9 kapcsol, \xE9s a motor tekercs\xE9n \xE1t a k\xF6z\xF6s + fel\u0151l \xE1ram folyik. A VCC (+) a motor t\xE1pja, 5 V; a COM ezzel k\xF6z\xF6s."},model:[{el:"logic",vcc:"VCC",gnd:"GND",vih:.44,vil:.15,rout:15,imax:.5,outs:["A","B","C","D"].map((e,t)=>({pin:e,expr:"!IN"+(t+1),type:"od"}))}]},motor:{name:"DC motor (130-as)",fp:"k\xFCls\u0151 \xB7 + \xE9s \u2212 kivezet\xE9s",prefix:"M",cat:"K\xFCls\u0151",mount:"off",params:[{key:"vnom",label:"N\xE9vleges fesz\xFClts\xE9g",type:"value",unit:"V",default:3,min:1,max:24,step:.5,help:"A motor a panel mellett \xE1ll; a kivezet\xE9seit vezet\xE9kkel (k\xE1bellel) k\xF6sd a panelra. Indukt\xEDv terhel\xE9s: GPIO-r\xF3l k\xF6zvetlen\xFCl nem hajthat\xF3, tranzisztor vagy MOSFET \xE9s visszacsap\xF3 di\xF3da kell."},{key:"ohm",label:"\xDCzemi ellen\xE1ll\xE1s",type:"value",unit:"\u03A9",default:20,min:.5,max:1e3,series:"E12",help:"Egyszer\u0171s\xEDtett modell: forg\xE1s k\xF6zbeni \xE1ramfelv\xE9tel \u2248 U / R. A fordulat a fesz\xFClts\xE9ggel ar\xE1nyos."}],pins:[{id:"+",name:"+",lr:0,lc:0,role:"mp"},{id:"-",name:"\u2212",lr:0,lc:2,role:"mn"}],bounds:{r:[-5.9,.5],c:[-1.8,3.8]},graphics:[{shape:"line",layer:"lead",from:"+",to:[-1.2,.4],width:.12,stroke:"#b87333"},{shape:"line",layer:"lead",from:"-",to:[-1.2,1.6],width:.12,stroke:"#b87333"},{shape:"circle",layer:"body",at:[-3,1],rad:2.7,fill:"#b8bec4",stroke:"#6c757d",width:1.4,xray:{stroke:"#6c757d"}},{shape:"circle",layer:"detail",at:[-3,1],rad:2.1,fill:"#ced4da"},{shape:"dial",layer:"detail",at:[-3,1],rad:1.7,color:"#495057"},{shape:"circle",layer:"detail",at:[-3,1],rad:.35,fill:"#343a40"},{shape:"text",layer:"label",at:[-6.4,1],text:"{label} {vnom|fix1}V",size:.42}],pinLabels:{mode:"sign",off:.75,plus:["mp"]},model:[{el:"motor",a:"+",b:"-",ohm:"{ohm}",vnom:"{vnom}"}]},servo:{name:"Szerv\xF3 (SG90)",fp:"k\xFCls\u0151 \xB7 GND, V+, jel k\xE1bel",prefix:"SV",cat:"K\xFCls\u0151",mount:"off",params:[{key:"ohm",label:"\xC1ramfelv\xE9tel (ell.)",type:"value",unit:"\u03A9",default:100,min:5,max:1e4,series:"E12",help:"A szerv\xF3t a jelvezet\xE9ken \xE9rkez\u0151 PWM vez\xE9rli: 50 Hz, 0,5\u20132,5 ms impulzus \u2192 0\u2013180\xB0. A Pico GPIO-j\xE1n \xE1ll\xEDtsd PWM m\xF3dba (50 Hz, 7,5 % = k\xF6z\xE9p\xE1ll\xE1s). T\xE1p: 4,8\u20136 V."}],pins:[{id:"GND",lr:0,lc:0,role:"gnd"},{id:"V+",lr:0,lc:1,role:"vin",vmin:4.5,vmax:6.5},{id:"SIG",lr:0,lc:2,role:"sig"}],bounds:{r:[-12.2,.5],c:[-1.6,3.6]},graphics:[{shape:"line",layer:"lead",from:"GND",to:[-2.6,.6],width:.14,stroke:"#7b4b2a"},{shape:"line",layer:"lead",from:"V+",to:[-2.6,1],width:.14,stroke:"#e03131"},{shape:"line",layer:"lead",from:"SIG",to:[-2.6,1.4],width:.14,stroke:"#f08c00"},{shape:"rect",layer:"body",r:[-11.4,-2.6],c:[-.9,2.9],fill:"#1c5bbf",stroke:"#0f3a80",width:1.2,xray:{stroke:"#1c5bbf"}},{shape:"rect",layer:"detail",r:[-12.2,-11.4],c:[-1.6,3.6],fill:"#1c5bbf",stroke:"#0f3a80"},{shape:"rect",layer:"detail",r:[-2.6,-1.8],c:[-1.6,3.6],fill:"#1c5bbf",stroke:"#0f3a80"},{shape:"circle",layer:"detail",at:[-9.2,1],rad:1.1,fill:"#e9ecef",stroke:"#adb5bd"},{shape:"dial",layer:"detail",at:[-9.2,1],rad:3.2,color:"#f8f9fa",width:.55},{shape:"text",layer:"detail",at:[-5.4,1],text:"SG90",size:.55,min:7,color:"#dbe7ff"},{shape:"text",layer:"label",at:[1.3,1],text:"{label}",size:.42},{shape:"text",layer:"xray",at:[-6.5,1],text:"{label} \xB7 SG90",size:.5,min:8,color:"#1c5bbf"}],pinLabels:{mode:"name",off:-.75,colors:{gnd:"#5c3a1e",vin:"#c92a2a",sig:"#d9480f"}},model:[{el:"servo",vp:"V+",gnd:"GND",sig:"SIG",ohm:"{ohm}",pmin:.5,pmax:2.5}]},header:{name:"T\xFCskesor 1\xD7N",fp:"N l\xE1b egy sorban \xB7 csatlakoz\xF3",prefix:"J",cat:"Csatlakoz\xF3",params:[{key:"n",label:"L\xE1bsz\xE1m",type:"int",default:4,min:1,max:20,geo:!0},{key:"names",label:"L\xE1bnevek",type:"names",default:"",help:"Vessz\u0151vel, sorrendben (pl. GND,VCC,SDA,SCL). K\xFCls\u0151 alkatr\xE9sz csatlakoz\xF3j\xE1n\xE1l az alkatr\xE9sz l\xE1bneveit kapja."}],pins:[{repeat:"{n}",id:"{i+1}",lr:0,lc:"{i}",role:"h"}],bounds:{r:[-.5,.5],c:[-.5,"{n}-0.5"]},socket:{count:"n",names:"names"},graphics:[{shape:"rect",layer:"body",r:[-.5,.5],c:[-.5,"{n}-0.5"],fill:"#1d1d1d",stroke:"#000",width:1},{shape:"text",layer:"label",at:[0,"{n}-0.5+0.75"],text:"{label}",size:.42}],pinLabels:{mode:"name",off:-.8,named:!0}},bat:{name:"Akku csatlakoz\xF3",fp:"+ 0:0 \xB7 \u2212 0:1",prefix:"BAT",cat:"Csatlakoz\xF3",params:[{key:"volt",label:"Fesz\xFClts\xE9g",type:"value",unit:"V",default:3.7,min:.5,max:48,step:.1}],pins:[{id:"+",name:"+",lr:0,lc:0,role:"bp"},{id:"-",name:"\u2212",lr:0,lc:1,role:"bn"}],bounds:{r:[-1.3,.5],c:[-.6,1.6]},graphics:[{shape:"rect",layer:"body",r:[-1.25,.45],c:[-.55,1.55],fill:"#f4f1e8",stroke:"#7d7563",width:1.2},{shape:"text",layer:"label",at:[-.75,.5],text:"{label} {volt|fix1}V",size:.38}],pinLabels:{mode:"sign",off:.72,plus:["bp"]},model:[{el:"source",p:"+",n:"-",v:"{volt}",rint:.1}]},tp4056:{name:"TP4056 t\xF6lt\u0151modul",fp:"IN 0:0, 0:6 \xB7 OUT/B 9:0\u20269:6 (k\xF6zel\xEDt\u0151)",prefix:"U",cat:"Modul",params:[{key:"usb",label:"Saj\xE1t USB",type:"select",default:"off",options:[{v:"off",label:"nincs bedugva",volt:0,rint:1e9},{v:"on",label:"5 V bedugva",volt:5,rint:.1}],help:"Egyszer\u0171s\xEDtett modell: a bemenetr\u0151l (5 V) a B+ fel\xE9 t\xF6lt, a B+ \xE9s az OUT+ k\xF6z\xF6s. A l\xE1bak a modul forrpontjainak k\xF6zel\xEDt\u0151 helyei, t\xFCskesorral rakd fel."}],pins:[{id:"IN+",lr:0,lc:0,role:"vin",vmin:4,vmax:8},{id:"IN-",lr:0,lc:6,role:"gnd"},{id:"OUT+",lr:9,lc:0,role:"pout"},{id:"B+",lr:9,lc:2,role:"chg"},{id:"B-",lr:9,lc:4,role:"bn"},{id:"OUT-",lr:9,lc:6,role:"gnd"}],groups:[["B+","OUT+"],["IN-","OUT-"]],bounds:{r:[-1.5,9.6],c:[-.7,6.7]},graphics:[{shape:"rect",layer:"body",r:[-.6,9.6],c:[-.7,6.7],fill:"#1f4f9c",stroke:"#12325f",width:1.2,xray:{stroke:"#1f4f9c"}},{shape:"rect",layer:"detail",r:[-1.5,1.3],c:[1.9,4.1],fill:"#c3c8cd",stroke:"#868e96",xray:{fill:null,stroke:"#6b7a72",dash:!0}},{shape:"rect",layer:"detail",r:[3.3,5.3],c:[2.2,3.8],fill:"#1b1b1b"},{shape:"rect",layer:"detail",r:[6.3,7.3],c:[4.4,5.4],fill:"#1b1b1b"},{shape:"circle",layer:"detail",at:[2.6,5.5],rad:.28,fill:"#a61e1e"},{shape:"circle",layer:"detail",at:[4,5.5],rad:.28,fill:"#1c4fd1"},{shape:"text",layer:"detail",at:[6.2,2.2],text:"TP4056",size:.42,min:7,color:"#dbe7ff"},{shape:"text",layer:"label",at:[10.4,3],text:"{label}",size:.42},{shape:"text",layer:"xray",at:[4.5,3],text:"{label} \xB7 TP4056",size:.5,min:8,color:"#1f4f9c"}],pinLabels:{mode:"name",off:.7,colors:{vin:"#ffc9d6",gnd:"#e9ecef",pout:"#ffe3bf",chg:"#ffe3bf",bn:"#e9ecef"}},model:[{el:"source",p:"IN+",n:"IN-",v:"{usb.volt}",rint:"{usb.rint}",kind:"supply"},{el:"diode",a:"IN+",k:"B+",vf:.8,ron:1},{el:"resistor",a:"B-",b:"OUT-",ohm:.05}]},nokia5110:{name:"Nokia 5110 kijelz\u0151",fp:"8 l\xE1b egy sorban \xB7 VCC 2,7\u20133,3 V",prefix:"LCD",cat:"Modul",pins:["RST","CE","DC","DIN","CLK","VCC","BL","GND"].map((e,t)=>e==="VCC"?{id:e,lr:0,lc:t,role:"vin",vmin:2.7,vmax:3.6}:{id:e,lr:0,lc:t,role:e==="GND"?"gnd":"sig",...e==="DIN"?{fn:"spi.mosi"}:e==="CLK"?{fn:"spi.sck"}:{}}),bounds:{r:[-1.3,15.9],c:[-4.6,11.6]},graphics:[{shape:"rect",layer:"body",r:[-1.3,15.9],c:[-4.6,11.6],fill:"#b8282d",stroke:"#7d1a1e",width:1.2,xray:{stroke:"#b8282d"}},{shape:"rect",layer:"detail",r:[1.4,14.4],c:[-4,11],fill:"#d7dadd",stroke:"#9aa1a8"},{shape:"rect",layer:"detail",r:[2.4,13.3],c:[-3.4,10.4],fill:"#8f9f86",lit:{fill:"#c6efa4"},xray:{fill:null,stroke:"#9aa1a8",dash:!0}},{shape:"text",layer:"detail",at:[7.9,3.5],text:"NOKIA 5110",size:.8,min:8,color:"#2b3328"},{shape:"text",layer:"label",at:[15.1,3.5],text:"{label}",size:.45,color:"#ffe0e0",xray:{color:"#7d1a1e"}},{shape:"text",layer:"xray",at:[7.9,3.5],text:"{label} \xB7 Nokia 5110",size:.55,min:8,color:"#b8282d"}],pinLabels:{mode:"name",off:-.85,colors:{vin:"#ffd6e0",gnd:"#f1f3f5",sig:"#f8f9fa"}},model:[{el:"resistor",a:"VCC",b:"GND",ohm:1e4},{el:"diode",a:"BL",k:"GND",vf:2.6,ron:60,light:!0}]},ssd1306:{name:'OLED kijelz\u0151 0,96" (SSD1306, I\xB2C)',fp:"GND \xB7 VCC \xB7 SCL \xB7 SDA egy sorban",prefix:"OLED",cat:"Modul",pins:[{id:"GND",lr:0,lc:0,role:"gnd"},{id:"VCC",lr:0,lc:1,role:"vin",vmin:3,vmax:5.5},{id:"SCL",lr:0,lc:2,role:"sig",fn:"i2c.scl"},{id:"SDA",lr:0,lc:3,role:"sig",fn:"i2c.sda"}],bounds:{r:[-.8,10.4],c:[-3.4,6.4]},graphics:[{shape:"rect",layer:"body",r:[-.8,10.4],c:[-3.4,6.4],fill:"#1f4f8a",stroke:"#123155",width:1.2,xray:{stroke:"#1f4f8a"}},{shape:"rect",layer:"detail",r:[1.4,8.4],c:[-3,6],fill:"#111418",stroke:"#3d4450"},{shape:"rect",layer:"detail",r:[2.2,6.9],c:[-2.6,5.6],fill:"#0b0d10",lit:{fill:"#123049"},xray:{fill:null,stroke:"#3d4450",dash:!0}},{shape:"text",layer:"detail",at:[4.6,1.5],text:"128\xD764",size:.6,min:7,color:"#4dabf7"},{shape:"text",layer:"label",at:[9.5,1.5],text:"{label}",size:.45,color:"#d0ebff",xray:{color:"#1f4f8a"}}],pinLabels:{mode:"name",off:-.85,colors:{vin:"#ffd6e0",gnd:"#f1f3f5",sig:"#f8f9fa"}},meta:{help:"128\xD764 pontos OLED kijelz\u0151 I\xB2C-buszon (alapc\xEDm 0x3C). A modulon felh\xFAz\xF3 ellen\xE1ll\xE1sok vannak az SCL- \xE9s SDA-vonalon. T\xE1p 3,3\u20135 V; a kijelz\u0151 tartalm\xE1t a szimul\xE1ci\xF3 nem rajzolja ki."},model:[{el:"resistor",a:"VCC",b:"GND",ohm:330}]},joystick:{name:"Joystick (KY-023)",fp:"GND \xB7 +5V \xB7 VRx \xB7 VRy \xB7 SW egy sorban",prefix:"JS",cat:"Bemenet",params:[{key:"x",label:"X \xE1ll\xE1s",type:"number",unit:"%",default:0,min:-100,max:100,step:5,help:"\u2212100 % bal, +100 % jobb. Szimul\xE1ci\xF3 k\xF6zben cs\xFAszk\xE1val is \xE1ll\xEDthat\xF3."},{key:"y",label:"Y \xE1ll\xE1s",type:"number",unit:"%",default:0,min:-100,max:100,step:5,help:"\u2212100 % le, +100 % fel."}],pins:[{id:"GND",lr:0,lc:0,role:"gnd"},{id:"5V",name:"+5V",lr:0,lc:1,role:"vin",vmin:3,vmax:5.5},{id:"VRX",name:"VRx",lr:0,lc:2,role:"adc"},{id:"VRY",name:"VRy",lr:0,lc:3,role:"adc"},{id:"SW",lr:0,lc:4,role:"sig"}],bounds:{r:[-.8,12.6],c:[-2.6,6.6]},controls:[{kind:"press",closes:[["SW","GND"]]},{kind:"slider",key:"x",label:"X"},{kind:"slider",key:"y",label:"Y"}],graphics:[{shape:"rect",layer:"body",r:[-.8,12.6],c:[-2.6,6.6],fill:"#23272e",stroke:"#0f1114",width:1.2,xray:{stroke:"#333"}},{shape:"rect",layer:"detail",r:[3,11.4],c:[-1.9,5.9],fill:"#e9ecef",stroke:"#adb5bd"},{shape:"circle",layer:"detail",at:[7.2,2],rad:3,fill:"#343a40"},{shape:"circle",layer:"detail",at:["7.2-{y}/40","2+{x}/40"],rad:1.9,fill:"#495057",stroke:"#111",width:1.5,pressed:{fill:"#6c757d",stroke:"accent",width:3},xray:{fill:null,stroke:"rgba(0,0,0,.45)",width:1.2,pressed:{stroke:"accent",width:3}}},{shape:"text",layer:"detail",at:["7.2-{y}/40","2+{x}/40"],text:"{label}",size:.55,min:8,color:"#f1f3f5",xray:{color:"#1d231f"}}],pinLabels:{mode:"name",off:.85,colors:{gnd:"#e9ecef",vin:"#ffc9d6",adc:"#b2f2bb",sig:"#a5d8ff"}},model:[{el:"resistor",a:"5V",b:"VRX",ohm:"{5001-50*x}"},{el:"resistor",a:"VRX",b:"GND",ohm:"{5001+50*x}"},{el:"resistor",a:"5V",b:"VRY",ohm:"{5001-50*y}"},{el:"resistor",a:"VRY",b:"GND",ohm:"{5001+50*y}"}]}};var W=Oz(Cr),Jz={},Yz=()=>Jz;function Ro(e){for(let t of Object.keys(W))t in Cr||delete W[t];for(let[t,r]of[...Object.entries(Jz),...Object.entries(e||{})])try{W[t]=No(t,{cat:"Saj\xE1t",...r})}catch(n){console.warn("Saj\xE1t alkatr\xE9sz kihagyva:",t,n)}}var Nl=e=>Co(W[e.type].def,e),Jr=e=>(W[e.type].def.controls||[]).some(t=>t.kind==="press"),Ae=e=>W[e.type].def.mount==="off",ce=e=>!!(e&&W[e.type]&&W[e.type].mcu);var jo=(e,t)=>e*1e5+t;function Xz(e,t){let r=new Map;for(let n of t){let o=Math.round(+n[0]),s=Math.round(+n[1]),a=+n[2]?1:0;s>=0&&s<e.cols&&o>=0&&o<e.rows&&(a===0&&(o>=e.rows-1||(o+1)%e.sec===0)||r.set(`${o}:${s}:${a}`,[o,s,a]))}return[...r.values()].sort((n,o)=>n[1]-o[1]||n[0]-o[0]||n[2]-o[2])}function Nr(e,t=[]){let r=Xz(e,t),n=new Set,o=new Set;for(let[d,f,g]of r)(g?o:n).add(jo(d,f));let s=[],a=new Int32Array(e.rows*e.cols).fill(-1),i=[];for(let d=0;d<e.cols;d++){let f=[],g=-1,h=p=>{g>=0&&p>=g&&(f.push(s.length),s.push({c:d,r0:g,r1:p,drilled:!1})),g=-1};for(let p=0;p<e.rows;p++){if(o.has(jo(p,d))){h(p-1),f.push(s.length),s.push({c:d,r0:p,r1:p,drilled:!0});continue}g<0&&(g=p),((p+1)%e.sec===0||n.has(jo(p,d))||p===e.rows-1)&&h(p)}i.push(f)}s.forEach((d,f)=>{for(let g=d.r0;g<=d.r1;g++)a[g*e.cols+d.c]=f});let c=s.map(()=>[]),l=new Map;i.forEach(d=>d.forEach((f,g)=>l.set(f,g))),s.forEach((d,f)=>{if(d.drilled)return;let g=i[d.c],h=l.get(f),p=g[h-1],m=g[h+1];p!=null&&!s[p].drilled&&s[p].r1===d.r0-1&&d.r0%e.sec===0&&c[f].push({to:p,dir:0,br:[d.r0-1,d.c,d.r0,d.c]}),m!=null&&!s[m].drilled&&s[m].r0===d.r1+1&&s[m].r0%e.sec===0&&c[f].push({to:m,dir:1,br:[d.r1,d.c,d.r1+1,d.c]});for(let[b,v]of[[-1,2],[1,3]]){let _=d.c+b;if(!(_<0||_>=e.cols))for(let z of i[_]){let k=s[z];if(k.drilled||k.r1<d.r0||k.r0>d.r1)continue;let x=Math.max(k.r0,d.r0),A=Math.min(k.r1,d.r1),G=x+(e.sec>>1)<=A?x+(e.sec>>1):x+(A-x+1>>1);c[f].push({to:z,dir:v,br:b<0?[G,_,G,d.c]:[G,d.c,G,_]})}}});let u=new Map;return c.forEach((d,f)=>d.forEach(g=>{u.has(f*s.length+g.to)||u.set(f*s.length+g.to,g)})),{N:s.length,segs:s,cuts:r,cell:(d,f)=>a[d*e.cols+f],drilled:(d,f)=>o.has(jo(d,f)),adj:d=>c[d],edge:(d,f)=>u.get(d*s.length+f),holes:d=>{let f=s[d],g=[];for(let h=f.r0;h<=f.r1;h++)g.push([h,f.c]);return g}}}function Qz(e,t,r,n=[]){let o=Nr(e,t),s=new Set(n.filter(c=>!c[2]).map(c=>jo(c[0],c[1]))),a=new Map;for(let c of r){if(c.r<0||c.c<0||c.r>=e.rows||c.c>=e.cols||o.drilled(c.r,c.c))continue;let l=o.cell(c.r,c.c);a.has(l)||a.set(l,[]),a.get(l).push(c)}let i=[];for(let[c,l]of a){let u=o.segs[c].c;l.sort((d,f)=>d.r-f.r);for(let d=0;d+1<l.length;d++){let f=l[d],g=l[d+1];if(f.net===g.net||f.r===g.r)continue;let h=f.r+g.r-1>>1,p=-1;for(let m=0;m<=g.r-f.r&&p<0;m++)for(let b of m?[h-m,h+m]:[h])if(b>=f.r&&b<g.r&&!s.has(jo(b,u))){p=b;break}p>=0&&i.push([p,u,0])}}return Xz(e,i)}function Tt(e,t,r){let n=t,o=e.mir?-r:r;for(let s=0;s<(e.rot&3);s++){let a=n;n=o,o=-a}return[e.r+n,e.c+o]}function me(e){return W[e.type].pins(e).map(t=>{let[r,n]=Tt(e,t.lr,t.lc);return{...t,r,c:n,part:e}})}var wr=(e,t,r)=>t>=0&&r>=0&&t<e.rows&&r<e.cols;function Bp(e){let t=W[e.type]&&W[e.type].def.socket;if(!t)return[];let r=me(e);if(!t.pins)return r;let n=new Map(r.map(o=>[o.id,o]));return t.pins.map(o=>n.get(o)).filter(o=>!!o)}function Mo(e,t){if(!t.plug||!Ae(t))return null;let r=e.parts.find(n=>n.id===t.plug);return!r||!W[r.type]||!W[r.type].def.socket?null:Bp(r).length>=W[t.type].pins(t).length?r:null}var SN=(e,t)=>e.parts.find(r=>r.plug===t.id&&Mo(e,r)===t)||null;function Zp(e,t){let r=Mo(e,t);if(!r)return[];let n=me(t),o=Bp(r);return n.map((s,a)=>[s,o[a]])}function Rl(e){let t=new Map;for(let r of e.parts)for(let[n,o]of Zp(e,r))t.set(r.id+"."+n.id,o.part.id+"."+o.id);return r=>t.get(r)??r}function e_(e=W){for(let[t,r]of Object.entries(e))if(r.def.socket&&r.def.socket.count&&r.def.mount!=="off")return t;return null}function t_(e,t,r){let n=e.board,o=new Set,s=[];for(let z of e.parts){if(Ae(z))continue;for(let A of me(z))o.add(A.r+":"+A.c);let k=W[z.type].bounds(z),x=[Tt(z,k.r0,k.c0),Tt(z,k.r1,k.c1)];s.push([Math.min(x[0][0],x[1][0]),Math.max(x[0][0],x[1][0]),Math.min(x[0][1],x[1][1]),Math.max(x[0][1],x[1][1])])}for(let z of e.wires)for(let k of[z.a,z.b])o.add(k[0]+":"+k[1]);let a=Nr(n,[...e.cuts||[],...e.auto&&e.auto.cuts||[]]),i=new Set;for(let z of e.parts)if(!Ae(z))for(let k of me(z))wr(n,k.r,k.c)&&i.add(a.cell(k.r,k.c));let c=(z,k)=>wr(n,z,k)&&!o.has(z+":"+k)&&!s.some(([x,A,G,L])=>z>x-1&&z<A+1&&k>G-1&&k<L+1),l=me(t),u=l.reduce((z,k)=>z+k.r,0)/l.length,d=l.reduce((z,k)=>z+k.c,0)/l.length,f=W[t.type].bounds(t),[g,h]=Tt(t,(f.r0+f.r1)/2,(f.c0+f.c1)/2),p=Math.hypot(u-g,d-h)||1,m=(u-g)/p,b=(d-h)/p,v=null,_=1/0;for(let z=0;z<n.rows;z++)for(let k=0;k<n.cols;k++)for(let x of[0,1]){let A=Array.from({length:r},(Z,y)=>x?[z+y,k]:[z,k+y]);if(!A.every(([Z,y])=>c(Z,y)))continue;let G=A.map(([Z,y])=>a.cell(Z,y));if(new Set(G).size<r)continue;let L=x?z+(r-1)/2:z,M=x?k:k+(r-1)/2,B=Math.hypot(L-u,M-d)||1,S=((L-u)*m+(M-d)*b)/B,$=B+4*(1-S)+(x?.5:0)+40*G.filter(Z=>i.has(Z)).length;$<_&&(_=$,v={r:z,c:k,rot:x?1:0})}return v}function r_(e,t){let r=e.socket,n=W[t.type].pins(t);return{...r.count?{[r.count]:n.length}:{},...r.names?{[r.names]:n.map(o=>o.name).join(",")}:{}}}function n_(e,t){let r=W[t.type].pins(t);for(let n of e.parts){if(Ae(n)||!W[n.type].def.socket||SN(e,n))continue;let o=Bp(n);if(o.length!==r.length)continue;if(r.every((a,i)=>{let c=t.id+"."+a.id,l=n.id+"."+o[i].id;return e.links.some(u=>u.a===c&&u.b===l||u.a===l&&u.b===c)}))return n}return null}function o_(e){let t=Rl(e),r=new Set;for(let n of e.links)n.b!=="GND"&&n.b!=="GPIO"&&t(n.a)===t(n.b)&&r.add(n.id);return r}var Ge=(e,t)=>!!(e&&e.caps&&e.caps.includes(t)),jl=e=>Ge(e,"adc")||Ge(e,"adc2"),Gp=[["strap",E("ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor sz\xE1m\xEDt a szintje, rossz szintn\xE9l a lap nem indul el vagy let\xF6lt\u0151 m\xF3dba ker\xFCl. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.")],["uart0",E("a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja: felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.")],["usb",E("a be\xE9p\xEDtett USB haszn\xE1lja. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.")],["led",E("a lap be\xE9p\xEDtett LED-je is ezen a l\xE1bon van.")]],PN={"uart.rx":"uart.tx","uart.tx":"uart.rx"},Up=e=>PN[e]||e;function Yr(e,t){let[r,n]=Up(t).split("."),o=new RegExp("^"+r+"\\d+\\."+n+"$");return(e&&e.caps||[]).filter(s=>o.test(s))}function Zn(e){let t=(W[e.type].def.model||[]).find(r=>r.el==="mcu");return t&&t.el==="mcu"&&t.mux||"fixed"}function $N(e){let t=/^(i2c|spi|uart|pwm)(\d*)\.([a-z]+)$/.exec(e);return t?`${t[1].toUpperCase()}${t[2]} ${t[3].toUpperCase()}`:e.toUpperCase()}var qp=e=>$N(e);var fa=(e,t)=>!e||!t||Yr(t,e).length?0:Zn(t.part)==="matrix"?10:16,ma=e=>e&&Gp.some(t=>Ge(e,t[0]))?10:0,Kp=(e,t)=>!!e&&ce(e.part)&&e.role==="gpio"&&(t?Ge(e,"adc"):!Ge(e,"in")),Gn=[["pullup",E("be, felh\xFAzva")],["pulldown",E("be, leh\xFAzva")],["float",E("be, lebeg\u0151")],["adc",E("anal\xF3g (ADC)")],["out_high",E("ki: 1")],["out_low",E("ki: 0")],["pwm",E("ki: PWM")]];function ha(e,t){return t==="out_high"||t==="out_low"||t==="pwm"?!Ge(e,"in"):t==="pullup"||t==="pulldown"?!Ge(e,"nopull"):t==="adc"?jl(e):t==="float"}function s_(e,t){let r=t&&t.netPins.get(e.net)||[];return jl(e)&&r.some(n=>n.role==="adc")?"adc":Ge(e,"nopull")?"float":"pullup"}var a_="",Hp=null;function bn(e){let t=[...e.cuts||[],...e.auto&&e.auto.cuts||[]],r=e.board.rows+"x"+e.board.cols+"/"+e.board.sec+"|"+t.map(n=>n.join(",")).join(";");return(r!==a_||!Hp)&&(a_=r,Hp=Nr(e.board,t)),Hp}function lr(e,t={}){let r=bn(e),n=r.N,o=(k,x)=>wr(e.board,k,x),s=(k,x)=>r.cell(k,x),a=t.hidden||(()=>!1),i=e.parts.map(k=>[k,me(k)]),c=0;for(let[,k]of i)for(let x of k)o(x.r,x.c)||c++;let l=new Int32Array(n+c);for(let k=0;k<n+c;k++)l[k]=k;let u=k=>{for(;l[k]!==k;)l[k]=l[l[k]],k=l[k];return k},d=(k,x)=>{k=u(k),x=u(x),k!==x&&(l[Math.max(k,x)]=Math.min(k,x))},f=e.auto.bridges.filter(k=>!a(k[4])),g=e.auto.wires.filter(k=>!a(k.links));for(let k of[...e.bridges,...f])o(k[0],k[1])&&o(k[2],k[3])&&d(s(k[0],k[1]),s(k[2],k[3]));let h=[],p=new Map,m=n;for(let[k,x]of i){let A={},G=[];for(let L of x){let M=o(L.r,L.c),B=Object.assign(L,{on:M,s:M?s(L.r,L.c):m++,net:-1});A[B.id]=B,h.push(B),G.push(B)}p.set(k.id,{pins:G,map:A,out:G.some(L=>!L.on)});for(let[L,M]of W[k.type].internal(k))d(A[L].s,A[M].s);if(t.pressed&&t.pressed(k)){for(let L of W[k.type].def.controls||[])if(L.kind==="press")for(let[M,B]of L.closes)A[M]&&A[B]&&d(A[M].s,A[B].s)}}for(let k of e.parts)for(let[x,A]of Zp(e,k)){let G=p.get(k.id).map[x.id],L=p.get(A.part.id).map[A.id];G&&L&&d(G.s,L.s)}let b=new Map;for(let k of h)k.on||b.set(k.r+":"+k.c,k.s);let v=k=>o(k[0],k[1])?s(k[0],k[1]):b.get(k[0]+":"+k[1]);for(let k of[...e.wires,...g]){let x=v(k.a),A=v(k.b);x!=null&&A!=null&&d(x,A)}for(let k of h)k.net=u(k.s);let _=new Map,z=new Map;for(let k of h)_.has(k.net)||_.set(k.net,[]),_.get(k.net).push(k);for(let k=0;k<n;k++){let x=u(k);z.set(x,(z.get(x)||0)+1)}return{N:n,find:u,sid:s,pins:h,byPart:p,netPins:_,netSecs:z}}var yn=e=>ce(e.part)?`${e.part.label}.${e.name}`:`${e.part.label}.${e.id}`;function ct(e,t){let r=t.indexOf(".");if(r<0)return null;let n=e.parts.find(o=>o.id===t.slice(0,r));return n&&me(n).find(o=>o.id===t.slice(r+1))||null}function xr(e){let t={},r=o=>t[o]===o?o:t[o]=r(t[o]);W[e.type].pins(e).forEach(o=>t[o.id]=o.id);for(let[o,s]of W[e.type].internal(e))t[r(o)]=r(s);let n={};for(let o in t)n[o]=r(o);return n}function Wp(e){if(!e)return[];let t=xr(e.part),r=t[e.id];return me(e.part).filter(n=>t[n.id]===r)}function Ml(e){if(!e)return"?";let t=Wp(e);return t.length<2?yn(e):e.part.type==="button"?`${e.part.label}.${e.role}`:ce(e.part)&&e.role==="gnd"?`${e.part.label}.GND`:`${e.part.label}.${t.map(r=>r.id).join("/")}`}function Do(e,t){let r=ct(e,t.a),n=t.b==="GND"?"GND":t.b==="GPIO"?"GPIO":Ml(ct(e,t.b));return`${Ml(r)} \u2192 ${n}`}function Lo(e,t){let r=new Map,n=o=>{let s=o.indexOf("."),a=t.byPart.get(o.slice(0,s)),i=a&&a.map[o.slice(s+1)];return!i||!i.on&&!Ae(i.part)?-1:i.net};for(let o of e.links){let s=n(o.a),a=!1,i=null;if(s>=0){let d=t.netPins.get(s)||[];if(o.b==="GND")a=d.some(f=>ce(f.part)&&f.role==="gnd");else if(o.b==="GPIO"){let f=(ct(e,o.a)||{role:""}).role==="adc";i=d.find(g=>ce(g.part)&&g.role==="gpio"&&(!f||Ge(g,"adc"))),a=!!i}else a=n(o.b)===s}let c=e.auto.bridges.filter(d=>(d[4]||[]).includes(o.id)).length,l=e.auto.wires.some(d=>(d.links||[]).includes(o.id)),u=d=>{let f=ct(e,d);return!!f&&Ae(f.part)&&!Mo(e,f.part)};r.set(o.id,{ok:a,gpio:i?i.name:null,gpioRef:i?i.part.id+"."+i.id:null,nb:c,wire:l,cable:u(o.a)||u(o.b)})}return r}var i_={gnd:E("f\xF6ld"),vin:E("t\xE1pbemenet"),pwr:E("t\xE1p"),p33:E("3,3 V"),gpio:"GPIO",sig:E("jel"),adc:E("anal\xF3g jel"),out:E("kimenet"),pout:E("t\xE1pkimenet"),A:E("kapcsol\xF3 A"),B:E("kapcsol\xF3 B"),base:E("b\xE1zis"),col:E("kollektor"),emit:E("emitter"),g:E("gate"),d:E("drain"),s:E("source"),an:E("an\xF3d"),ka:E("kat\xF3d"),cp:"+",cn:"\u2212",bp:"+",bn:"\u2212",coil:E("tekercs"),chg:E("t\xF6lt\xE9s"),r:E("ellen\xE1ll\xE1s"),c:E("kondenz\xE1tor"),j:E("\xE1tk\xF6t\xE9s"),h:E("t\xFCske")},l_=new Set(["gnd","vin"]);function c_(e,t,r){let n=xr(r),o=t.byPart.get(r.id),s=[],a=new Set;for(let i of me(r)){let c=n[i.id];if(a.has(c))continue;a.add(c);let l=me(r).filter(m=>n[m.id]===c),u=new Set(l.map(m=>r.id+"."+m.id)),d=e.links.find(m=>u.has(m.a)||u.has(m.b))||null,f=d?u.has(d.a)?d.b:d.a:null,g=o&&o.map[i.id],h=!!g&&(g.on||Ae(r)),p=h&&g?[...new Set((t.netPins.get(g.net)||[]).filter(m=>m.part!==r||n[m.id]!==c).map(m=>Ml(m)))]:[];s.push({ref:r.id+"."+i.id,label:Ml(i),name:l.map(m=>m.name).filter((m,b,v)=>v.indexOf(m)===b).join("/"),role:i.role,link:d,target:f,net:p,on:h,floating:!d&&!p.length})}return s}function Jp(e,t){let r=new Float64Array(e*e),n=new Float64Array(e);for(let{a:s,b:a,g:i,E:c,cp:l=s,cn:u=a}of t)s>=0&&(l>=0&&(r[s*e+l]+=i),u>=0&&(r[s*e+u]-=i),n[s]+=i*c),a>=0&&(l>=0&&(r[a*e+l]-=i),u>=0&&(r[a*e+u]+=i),n[a]-=i*c);for(let s=0;s<e;s++){let a=s,i=Math.abs(r[s*e+s]);for(let c=s+1;c<e;c++){let l=Math.abs(r[c*e+s]);l>i&&(i=l,a=c)}if(!(i<1e-30)){if(a!==s){for(let l=0;l<e;l++){let u=r[s*e+l];r[s*e+l]=r[a*e+l],r[a*e+l]=u}let c=n[s];n[s]=n[a],n[a]=c}for(let c=s+1;c<e;c++){let l=r[c*e+s]/r[s*e+s];if(l){for(let u=s;u<e;u++)r[c*e+u]-=l*r[s*e+u];n[c]-=l*n[s]}}}}let o=new Float64Array(e);for(let s=e-1;s>=0;s--){let a=n[s];for(let i=s+1;i<e;i++)a-=r[s*e+i]*o[i];o[s]=r[s*e+s]?a/r[s*e+s]:0}return o}var Dl=new Map,Xp=new Map;function Qp(){Dl.clear(),Xp.clear()}function ga(e,t,r,n,o){let s=e.gpio[t.id+"."+r];return n?s&&ha(n,s)?s:s_(n,o):s||"pullup"}var ba=(e,t)=>Object.assign({duty:50,freq:1e3},(e.pwm||{})[t]||{}),EN=25,Yp=20,u_=1;function Vo(e,t,r){let n=[];for(let d of e.parts)for(let f of t.byPart.get(d.id).pins)f.role==="gpio"&&ga(e,d,f.id,f,t)==="pwm"&&n.push({key:d.id+"."+f.id,q:f,...ba(e,d.id+"."+f.id)});let o=r.slow,s=o?n.filter(d=>+d.freq>=EN):n,a=o||new Set,c=[0,...[...new Set(s.map(d=>Math.max(0,Math.min(100,+d.duty||0))))].filter(d=>d>0&&d<100).sort((d,f)=>d-f),100],l=()=>{let d=[];for(let f=0;f+1<c.length;f++){let g=c[f],h=(c[f+1]-g)/100;h<=0||d.push({w:h,o:NN(e,t,new Set([...a,...s.filter(p=>p.duty>g).map(p=>p.key)]))})}return CN(d)},u=l();for(let d=0;d<16&&IN(u);d++)u=l();u.pwm=new Map(n.map(d=>[d.q.net,d])),ON(u,r.running);for(let d of u.servos){let f=u.pwm.get(d.sigNet);d.pulse=f?f.duty/100/Math.max(1e-9,f.freq)*1e3:null;let g=!!f&&f.freq>=40&&f.freq<=400&&d.pulse>=d.pmin-.2&&d.pulse<=d.pmax+.2;d.angle=g?Math.max(0,Math.min(180,(d.pulse-d.pmin)/(d.pmax-d.pmin)*180)):null}return u}var AN={1:0,3:1,2:2,6:3,4:4,12:5,8:6,9:7};function ON(e,t){for(let r of e.steppers){let n=Xp.get(r.p.id)||{pos:0,phase:null},o=[r.ua,r.ub,r.uc,r.ud].reduce((a,i,c)=>a|(i>1.5?1<<c:0),0),s=AN[o];if(t&&s!=null){if(n.phase!=null){let a=(s-n.phase+8)%8;a>=1&&a<=3?n.pos+=a:a>=5&&(n.pos-=8-a)}n.phase=s}Xp.set(r.p.id,n),r.pattern=o,r.pos=n.pos,r.coils="ABCD".split("").filter((a,i)=>o&1<<i).join(""),r.angle=n.pos*360/r.steps,r.rotorAngle=n.pos*360/(r.steps/r.rotor)}}function IN(e){let t=!1;for(let r of e.logics){if(!r.regs.length)continue;let n=Dl.get(r.p.id)||{regs:{},clk:{}},o={};for(let s of r.regs){let a=n.clk[s.name],i=s.clk;n.clk[s.name]=i;let c=s.edge==="fall"?a===1&&i===0:a===0&&i===1;o[s.name]=s.async!=null?s.async:c?s.d:s.name in n.regs?n.regs[s.name]:s.val}for(let s in o)o[s]!==n.regs[s]&&(t=!0);n.regs=o,Dl.set(r.p.id,n)}return t}var d_={gpios:new Set(["I"]),srcI:new Set(["I"])},p_={off:0,sat:1,act:2},TN=["leds","picos","gpios","bats","srcI","fets","caps","bjts","motors","servos","logics","steppers"];function CN(e){if(e.length===1)return e[0].o;let t=e[0].o,r={...t,netV:new Map,floating:new Set};for(let{w:n,o}of e){for(let[s,a]of o.netV)r.netV.set(s,(r.netV.get(s)||0)+n*a);for(let s of o.floating)r.floating.add(s)}for(let n of TN){let o=t[n].map((s,a)=>{let i={...s};for(let c in s){let l=s[c],u=e.map(({w:d,o:f})=>[d,f[n][a][c]]);typeof l=="number"&&u.every(([,d])=>d===l)?i[c]=l:typeof l=="number"?i[c]=d_[n]&&d_[n].has(c)?u.reduce((d,[,f])=>Math.abs(f)>Math.abs(d)?f:d,0):u.reduce((d,[f,g])=>d+f*(typeof g=="number"?g:0),0):typeof l=="boolean"?i[c]=u.some(([,d])=>d):c==="st"&&(i[c]=u.reduce((d,[,f])=>p_[f]>p_[d]?f:d,l))}return i});r[n]=o}return r}function NN(e,t,r){let n=new Map,o=S=>(n.has(S)||n.set(S,n.size),n.get(S));for(let S of t.pins)S.net>=0&&o(S.net);for(let S of e.parts)for(let $ of W[S.type].def.model||[])$.el==="mcu"&&!$.vbus&&o("usb:"+S.id);let s=n.size,a=[],i=[],c=[],l=[],u=[],d=[],f=[],g=[],h=[],p=[],m=[];for(let S of e.parts){let $=t.byPart.get(S.id),Z=$.map,y=j=>n.get(Z[j].net),V=W[S.type].def.model;if(!V)continue;let Y=Nl(S),Oe=j=>j!=null?ve(j,Y):null;for(let j of V)if(j.el==="mcu")a.push({p:S,gnd:y(j.gnd),vbus:j.vbus?y(j.vbus):n.get("usb:"+S.id),vsys:y(j.vsys),v33:y(j.v33),vsysPin:Z[j.vsys],vreg:ve(j.vreg??1.8,Y),vmax:Oe(j.vmax),igpio:ve(j.igpio??.012,Y),gp:$.pins.filter(ee=>ee.role==="gpio").map(ee=>({q:ee,node:n.get(ee.net),mode:ga(e,S,ee.id,ee,t)})),reg:!1,d:!1});else if(j.el==="diode")i.push({p:S,a:y(j.a),k:y(j.k),vf:ve(j.vf,Y),ron:Math.max(.001,ve(j.ron??15,Y)),imax:Oe(j.imax),light:!!j.light,on:!1});else if(j.el==="resistor")c.push({p:S,a:y(j.a),b:y(j.b),g:1/Math.max(.001,ve(j.ohm,Y))});else if(j.el==="source")l.push({p:S,a:y(j.p),b:y(j.n),E:ve(j.v,Y),g:1/Math.max(.001,ve(j.rint??.1,Y)),kind:j.kind||"battery"});else if(j.el==="capacitor")d.push({p:S,a:y(j.a),b:y(j.b),f:ve(j.f,Y),vmax:Oe(j.vmax),polar:!!j.polar});else if(j.el==="npn")f.push({p:S,c:y(j.c),b:y(j.b),e:y(j.e),beta:Math.max(1,ve(j.beta,Y)),vbe:ve(j.vbe??.65,Y),vcesat:ve(j.vcesat??.1,Y),imax:Oe(j.imax),be:!1,st:"off",ic:0});else if(j.el==="motor")g.push({p:S,a:y(j.a),b:y(j.b),g:1/Math.max(.001,ve(j.ohm,Y)),vnom:Math.max(.1,ve(j.vnom,Y))});else if(j.el==="stepper")m.push({p:S,com:y(j.com),coils:[y(j.a),y(j.b),y(j.c),y(j.d)],g:1/Math.max(.001,ve(j.ohm,Y)),steps:Math.max(1,ve(j.steps??4096,Y)),rotor:Math.max(1,ve(j.rotor??64,Y))});else if(j.el==="servo")h.push({p:S,vp:y(j.vp),gnd:y(j.gnd),sigNet:Z[j.sig].net,g:1/Math.max(.001,ve(j.ohm,Y)),pmin:ve(j.pmin??.5,Y),pmax:ve(j.pmax??2.5,Y)});else if(j.el==="logic"){let ee=$.pins,U=Pe=>{try{return Pe&&String(Pe).trim()?ua(String(Pe)):null}catch{return null}},ue=new Map,xe=[],X=(Dl.get(S.id)||{regs:{}}).regs,Se=[];for(let Pe of j.regs||[]){let ut=U(Pe.clk),Ue=U(Pe.d);!ut||!Ue||Se.push({name:Pe.name,clk:ut,d:Ue,reset:U(Pe.reset),set:U(Pe.set),edge:Pe.edge==="fall"?"fall":"rise",stored:X[Pe.name]??Pe.init??0,eff:"X"})}let ht=new Set(Se.map(Pe=>Pe.name)),ot=Pe=>{if(Pe)for(let ut of Bn(Pe)){if(ue.has(ut)||ht.has(ut))continue;let Ue=Ol(ut,ee);if(!Ue)continue;let Xt=Z[Ue];ue.set(ut,{q:Xt,node:y(Ue),open:(t.netPins.get(Xt.net)||[]).length<=1&&(t.netSecs.get(Xt.net)||0)<=1})}};for(let Pe of j.outs||[]){let ut=U(Pe.expr),Ue=U(Pe.oe);!ut||!Z[Pe.pin]||(xe.push({p:S,pin:Z[Pe.pin],node:y(Pe.pin),ast:ut,oe:Ue,type:Pe.type==="od"?"od":"pp",st:"z"}),ot(ut),ot(Ue))}for(let Pe of Se)ot(Pe.clk),ot(Pe.d),ot(Pe.reset),ot(Pe.set);p.push({p:S,vcc:y(j.vcc),gnd:y(j.gnd),ins:ue,outs:xe,regs:Se,vih:ve(j.vih??.7,Y),vil:ve(j.vil??.3,Y),g:1/Math.max(1,ve(j.rout??50,Y)),imax:ve(j.imax??.025,Y),vdd:0})}else j.el==="nmos"&&u.push({p:S,d:y(j.d),g:y(j.g),s:y(j.s),vth:ve(j.vth,Y),ron:Math.max(.001,ve(j.ron,Y)),imax:Oe(j.imax),on:!1})}let b=new Float64Array(s),v=[];for(let S=0;S<60;S++){v=[];let $=(y,V,Y,Oe,j,ee,U,ue)=>v.push(U==null?{a:y,b:V,g:Y,E:Oe,kind:j,ref:ee}:{a:y,b:V,g:Y,E:Oe,kind:j,ref:ee,cp:U,cn:ue});for(let y=0;y<s;y++)$(y,-1,1e-9,0,"leak");for(let y of a)if($(y.gnd,-1,1e4,0,"gref",y),e.settings.usb&&$(y.vbus,y.gnd,10,5,"vbus",y),y.vbus!==y.vsys&&$(y.vbus,y.vsys,y.d?5:1e-9,y.d?.3:0,"pdiode",y),y.reg){$(y.v33,y.gnd,10,3.3,"v33",y);for(let V of y.gp){let Y=V.mode==="pwm"?r&&r.has(y.p.id+"."+V.q.id)?"out_high":"out_low":V.mode;Y==="pullup"?$(V.node,y.v33,2e-5,0,"pull",V):Y==="pulldown"?$(V.node,y.gnd,2e-5,0,"pull",V):Y==="out_high"?$(V.node,y.gnd,1/40,3.3,"gout",V):Y==="out_low"&&$(V.node,y.gnd,1/40,0,"gout",V)}}for(let y of c)$(y.a,y.b,y.g,0,"res",y);for(let y of g)$(y.a,y.b,y.g,0,"motor",y);for(let y of p)for(let V of y.outs)V.st===1?$(V.node,y.vcc,y.g,0,"lout",V):V.st===0&&$(V.node,y.gnd,y.g,0,"lout",V);for(let y of h)$(y.vp,y.gnd,y.g,0,"servo",y);for(let y of m)for(let V of y.coils)$(y.com,V,y.g,0,"coil",y);for(let y of i)$(y.a,y.k,y.on?1/y.ron:1e-9,y.on?y.vf:0,"led",y);for(let y of l)$(y.a,y.b,y.g,y.E,"bat",y);for(let y of u)$(y.d,y.s,y.on?1/y.ron:1e-9,0,"fet",y);for(let y of f)$(y.b,y.e,y.be?1/Yp:1e-9,y.be?y.vbe:0,"bjt_be",y),y.st==="sat"?$(y.c,y.e,1/u_,y.vcesat,"bjt_ce",y):y.st==="act"&&$(y.c,y.e,y.beta/Yp,y.vbe,"bjt_ce",y,y.b,y.e);b=Jp(s,v);let Z=!1;for(let y of i){let V=b[y.a]-b[y.k];!y.on&&V>y.vf+1e-4?(y.on=!0,Z=!0):y.on&&V<y.vf&&(y.on=!1,Z=!0)}for(let y of u){let V=b[y.g]-b[y.s]>y.vth;V!==y.on&&(y.on=V,Z=!0)}for(let y of p){let V=b[y.vcc]-b[y.gnd];y.vdd=V;let Y=U=>{let ue=y.ins.get(U);if(!ue||ue.open)return"X";let xe=b[ue.node]-b[y.gnd];return xe>=y.vih*V?1:xe<=y.vil*V?0:"X"},Oe=new Map(y.regs.map(U=>[U.name,U])),j=U=>Oe.has(U)?Oe.get(U).stored:Y(U);for(let U of y.regs){let ue=U.reset?zr(U.reset,j):0,xe=U.set?zr(U.set,j):0;U.async=V<1?null:ue===1?0:xe===1?1:null,U.eff=V<1?"X":U.async??U.stored}let ee=U=>Oe.has(U)?Oe.get(U).eff:Y(U);y.lvl=ee;for(let U of y.outs){let ue="z";if(V>=1&&(U.oe?zr(U.oe,ee):1)===1){let X=zr(U.ast,ee);ue=X==="X"?"z":U.type==="od"?X?"z":0:X}ue!==U.st&&(U.st=ue,Z=!0)}}for(let y of f){let V=b[y.b]-b[y.e],Y=b[y.c]-b[y.e];!y.be&&V>y.vbe+1e-4?(y.be=!0,Z=!0):y.be&&V<y.vbe&&(y.be=!1,Z=!0);let Oe=y.beta*(y.be?Math.max(0,(V-y.vbe)/Yp):0);y.be?y.st==="off"?(y.st="act",Z=!0):y.st==="sat"?(Y-y.vcesat)/u_>Oe*1.02+1e-9&&(y.st="act",Z=!0):Y<y.vcesat-.01&&(y.st="sat",Z=!0):y.st!=="off"&&(y.st="off",Z=!0)}for(let y of a){if(y.vbus===y.vsys)y.d=!!e.settings.usb;else{let Y=b[y.vbus]-b[y.vsys];!y.d&&Y>.3001?(y.d=!0,Z=!0):y.d&&Y<.3&&(y.d=!1,Z=!0)}let V=b[y.vsys]-b[y.gnd]>y.vreg;V!==y.reg&&(y.reg=V,Z=!0)}if(!Z)break}let _=S=>S!=null&&S>=0?b[S]:0,z=S=>S.g*(_(S.cp??S.a)-_(S.cn??S.b)-S.E),k=Array.from({length:s},()=>[]),x=new Set;for(let S of v)S.kind==="leak"||S.g<1e-6||S.cp!=null||(S.a>=0&&S.b>=0&&(k[S.a].push(S.b),k[S.b].push(S.a)),["gref","vbus","v33","gout","bat"].includes(S.kind)&&(S.a>=0&&x.add(S.a),S.b>=0&&x.add(S.b)));let A=new Uint8Array(s),G=[...x];for(G.forEach(S=>A[S]=1);G.length;){let S=G.pop();for(let $ of k[S])A[$]||(A[$]=1,G.push($))}let L=new Map,M=new Set;for(let[S,$]of n)L.set(S,b[$]),A[$]||M.add(S);let B={netV:L,floating:M,leds:[],picos:[],gpios:[],bats:[],srcI:[],fets:[],caps:[],bjts:[],motors:[],servos:[],logics:[],steppers:[]};for(let S of m){let $=S.coils.map(Z=>b[S.com]-b[Z]);B.steppers.push({p:S.p,steps:S.steps,rotor:S.rotor,ua:$[0],ub:$[1],uc:$[2],ud:$[3],I:$.reduce((Z,y)=>Z+Math.max(0,y),0)*S.g})}for(let S of p){let $=b[S.gnd],Z=y=>{if(y.open||!A[y.node])return"X";let V=b[y.node]-$;return V>=S.vih*S.vdd?1:V<=S.vil*S.vdd?0:"X"};B.logics.push({p:S.p,vdd:S.vdd,imax:S.imax,ins:[...S.ins].map(([y,V])=>({name:y,lv:S.vdd>=1?Z(V):"X",open:V.open||!A[V.node]})),outs:S.outs.map(y=>{let V=v.find(Y=>Y.kind==="lout"&&Y.ref===y);return{name:y.pin.name,st:y.st,I:V?Math.abs(z(V)):0}}),regs:S.regs.map(y=>({name:y.name,val:y.eff,clk:S.vdd>=1&&S.lvl?zr(y.clk,S.lvl):"X",d:S.vdd>=1&&S.lvl?zr(y.d,S.lvl):"X",async:y.async??null,edge:y.edge}))})}for(let S of g){let $=b[S.a]-b[S.b];B.motors.push({p:S.p,U:$,I:$*S.g,vnom:S.vnom,speed:Math.max(-1.5,Math.min(1.5,$/S.vnom))})}for(let S of h){let $=b[S.vp]-b[S.gnd];B.servos.push({p:S.p,U:$,I:$*S.g,sigNet:S.sigNet,pmin:S.pmin,pmax:S.pmax})}for(let S of d){let $=b[S.a]-b[S.b],Z=Jp(s,[...v,{a:S.a,b:S.b,g:1e-9,E:-1e6}]),y=Math.abs(Z[S.a]-Z[S.b]-$)/.001;B.caps.push({p:S.p,U:$,f:S.f,vmax:S.vmax,polar:S.polar,R:y,tau:y<1e8?y*S.f:null,float:!A[S.a]||!A[S.b]})}for(let S of f){let $=v.find(y=>y.kind==="bjt_be"&&y.ref===S),Z=v.find(y=>y.kind==="bjt_ce"&&y.ref===S);B.bjts.push({p:S.p,st:S.st,ib:$?Math.max(0,z($)):0,ic:Z?z(Z):0,vbe:b[S.b]-b[S.e],vce:b[S.c]-b[S.e],beta:S.beta,imax:S.imax,floatBase:!A[S.b]})}for(let S of v){if(S.kind==="led"){let $=S.ref;B.leds.push({p:$.p,I:Math.max(0,z(S)),on:$.on,light:$.light,imax:$.imax})}if(S.kind==="fet"){let $=S.ref;B.fets.push({p:$.p,on:$.on,vgs:b[$.g]-b[$.s],I:z(S),imax:$.imax,floatGate:!A[$.g]})}if(S.kind==="bat"){let $=S.ref;B.bats.push({p:$.p,I:z(S),kind:$.kind,node:S.a})}S.kind==="vbus"&&B.srcI.push({kind:"vbus",pc:S.ref,I:-z(S)}),S.kind==="v33"&&B.srcI.push({kind:"v33",pc:S.ref,I:-z(S)})}for(let S of a){B.picos.push({p:S.p,powered:S.reg,usb:e.settings.usb,feeds:S.d,vsys:S.vsys,vsysName:S.vsysPin.name,Usys:b[S.vsys]-b[S.gnd],vreg:S.vreg,vmax:S.vmax,igpio:S.igpio});for(let $ of S.gp){let Z=v.find(y=>y.kind==="gout"&&y.ref===$);B.gpios.push({p:S.p,q:$.q,mode:$.mode,V:b[$.node]-b[S.gnd],I:Z?-z(Z):0,float:!A[$.node],powered:S.reg})}}return B}var f_=e=>e.powered?e.float?"?":e.mode==="adc"?"A":e.mode==="pwm"?"P":e.V>=2?"1":e.V<=.8?"0":"?":"\u2013";var RN=e=>e.settings.autoCut??e.board.sec>=e.board.rows;function jN(e){let t=(u,d)=>wr(e.board,u,d),r=new Map,n=u=>{for(;r.has(u)&&r.get(u)!==u;)u=r.get(u);return u},o=(u,d)=>{u=n(u),d=n(d),u!==d&&r.set(u,d)},s=[];for(let u of e.parts){if(Ae(u))continue;let d=xr(u);for(let f of me(u))t(f.r,f.c)&&s.push({q:f,key:ce(f.part)&&f.role==="gnd"?"GND":u.id+":"+d[f.id]})}let a=Rl(e),i=u=>{let d=ct(e,a(u));return d?ce(d.part)&&d.role==="gnd"?"GND":d.part.id+":"+xr(d.part)[d.id]:null},c=Nr(e.board,e.cuts||[]),l=new Set(e.links.filter(u=>u.b!=="GPIO"&&u.b!=="GND").map(u=>[u.a,u.b]).flat());for(let u of e.links){let d=i(u.a);if(d)if(u.b==="GND")o(d,"GND");else if(u.b==="GPIO"){let f=ct(e,a(u.a)),g=ct(e,u.a);if(!f||!g||!t(f.r,f.c))continue;let h=g.role==="adc",p=c.cell(f.r,f.c),m=s.map(_=>_.q).filter(_=>Kp(_,h)&&!l.has(_.part.id+"."+_.id)&&c.cell(_.r,_.c)===p).sort((_,z)=>ma(_)+fa(g.fn,_)-ma(z)-fa(g.fn,z)||Math.abs(_.r-f.r)-Math.abs(z.r-f.r)),b=u.gpio?m.find(_=>_.part.id+"."+_.id===u.gpio):void 0,v=b||m[0];if(v){let _=v.part.id+"."+v.id;l.add(_),u.gpio=_,o(d,i(_))}}else{let f=i(u.b);f&&o(d,f)}}return Qz(e.board,e.cuts||[],s.map(u=>({r:u.q.r,c:u.q.c,net:n(u.key)})),e.cutBan||[])}function Fo(e,t={}){let r=(P,R)=>wr(e.board,P,R);if(RN(e)){let P=JSON.stringify(e.auto.cuts||[]);e.auto.cuts=jN(e),JSON.stringify(e.auto.cuts)!==P&&(t={...t,full:!0})}else e.auto.cuts=[];let n=bn(e),o=n.N,s=(P,R)=>n.cell(P,R),a=[];for(let P of e.parts)for(let R of me(P))r(R.r,R.c)&&a.push(R);let i=new Map(a.map(P=>[P.part.id+"."+P.id,P])),c=Rl(e),l=new Map,u=[],d=e.links.map(P=>{let R=c(P.a),F=P.b==="GND"||P.b==="GPIO"?P.b:c(P.b);if(R===P.a&&F===P.b)return P;R!==P.a&&l.set(R,P.a),F!==P.b&&l.set(F,P.b);let w={...P,a:R,b:F};return u.push([w,P]),w}),f=P=>l.has(P)?ct(e,l.get(P)):i.get(P),g=d.filter(P=>i.has(P.a)&&(P.b==="GND"||P.b==="GPIO"||i.has(P.b))),h=new Set(g.map(P=>P.id)),p=new Set(a.map(P=>P.r+":"+P.c)),m=new Map(e.parts.map(P=>[P.id,xr(P)])),b=P=>r(P[0],P[1])&&r(P[2],P[3]),v=P=>i.get(P);function _(P,R){let F=new Int32Array(o),w=new Int32Array(o).fill(1),O=new Uint8Array(o);for(let N=0;N<o;N++)F[N]=N;let T=N=>{for(;F[N]!==N;)F[N]=F[F[N]],N=F[N];return N},D=(N,H)=>{if(N=T(N),H=T(H),N!==H){if(N>H){let Q=N;N=H,H=Q}F[H]=N,w[N]+=w[H]}};for(let N of[...e.bridges,...P])if(b(N)){let H=s(N[0],N[1]),Q=s(N[2],N[3]);O[H]=O[Q]=1,D(H,Q)}for(let N of[...e.wires,...R])if(r(N.a[0],N.a[1])&&r(N.b[0],N.b[1])){let H=s(N.a[0],N.a[1]),Q=s(N.b[0],N.b[1]);O[H]=O[Q]=1,D(H,Q)}for(let N of a)O[s(N.r,N.c)]=1;for(let N of e.parts){let H={};for(let Q of me(N))H[Q.id]=Q;for(let[Q,pe]of W[N.type].internal(N))r(H[Q].r,H[Q].c)&&r(H[pe].r,H[pe].c)&&D(s(H[Q].r,H[Q].c),s(H[pe].r,H[pe].c))}return{par:F,sz:w,used:O,find:T,uni:D,bridges:P.map(N=>[N[0],N[1],N[2],N[3],[...N[4]]]),wires:R.map(N=>({...N,links:[...N.links]})),wireEnds:new Set([...e.wires,...R].flatMap(N=>[N.a.join(":"),N.b.join(":")]))}}let z=P=>{let R=new Map;for(let F of a){let w=P.find(s(F.r,F.c));R.has(w)||R.set(w,[]),R.get(w).push(F)}return R},k=P=>!!P&&P.some(R=>ce(R.part)&&R.role==="gnd"),x=(P,R,F)=>!!P&&P.length===1&&ce(P[0].part)&&P[0].role==="gpio"&&F.sz[R]===1,A=P=>(f(P.a)||{role:""}).role==="adc",G=new Set(g.filter(P=>P.b!=="GND"&&P.b!=="GPIO").flatMap(P=>[P.a,P.b])),L=(P,R)=>{let F=v(R.a);return P.find(s(F.r,F.c))};function M(P,R,F){if(R.b==="GND")return T=>k(F.get(T));if(R.b==="GPIO"){let T=A(R),D=T;if(!T){let N=0,H=new Set;for(let pe of a){if(!Ge(pe,"adc")||pe.role!=="gpio")continue;let te=P.find(s(pe.r,pe.c));!H.has(te)&&x(F.get(te),te,P)&&(H.add(te),N++)}let Q=g.filter(pe=>pe.b==="GPIO"&&A(pe)&&!B(P,pe,F)).length;D=N>Q}return N=>{let H=F.get(N);if(!x(H,N,P))return!1;let Q=H[0];return G.has(Q.part.id+"."+Q.id)?!1:T?Ge(Q,"adc"):Ge(Q,"in")?!1:Ge(Q,"adc")?D:!0}}let w=v(R.b),O=P.find(s(w.r,w.c));return T=>T===O}function B(P,R,F){let w=L(P,R);if(R.b==="GPIO"){let O=A(R);return(F.get(w)||[]).some(T=>ce(T.part)&&T.role==="gpio"&&(!O||Ge(T,"adc")))}return M(P,R,F)(w)}let S=new Map;for(let P of g){let R=v(P.a),F=R.part.id+":"+m.get(R.part.id)[R.id],w=P.b==="GND"?"GND":P.b==="GPIO"?"G"+P.id:null;w&&!S.has(F)&&S.set(F,w)}let $=P=>{let R=P.filter(D=>ce(D.part)),F=R.some(D=>D.role==="gnd"),w=new Set(F?["GND"]:[]);for(let D of P){let N=S.get(D.part.id+":"+m.get(D.part.id)[D.id]);N&&w.add(N)}if(w.size>1)return!0;let O=new Set(R.filter(D=>D.role!=="gnd").map(D=>D.part.id+"."+D.id));if(F&&O.size||O.size>1)return!0;let T=new Map;for(let D of P){if(ce(D.part))continue;let N=m.get(D.part.id)[D.id];if(T.has(D.part.id)&&T.get(D.part.id)!==N)return!0;T.set(D.part.id,N)}return!1},Z=(P,R)=>n.edge(P,R).br,y=(P,R,F)=>{let w=f(F.a);if(!w||!w.fn||F.b!=="GPIO")return null;let O=w.fn.split(".")[0],T=[];for(let D of g){if(D===F||D.b!=="GPIO")continue;let N=f(D.a);if(!N||N.part!==w.part||!N.fn||N.fn.split(".")[0]!==O)continue;let H=(R.get(L(P,D))||[]).find(Q=>ce(Q.part)&&Q.role==="gpio");H&&T.push(new Set(Yr(H,N.fn).map(Q=>Q.split(".")[0])))}return T.length?T.slice(1).reduce((D,N)=>new Set([...D].filter(H=>N.has(H))),T[0]):null};function V(P,R){let F=z(P),w=L(P,R),O=y(P,F,R),T=(f(R.a)||{fn:void 0}).fn;if(B(P,R,F))return{ok:!0,n:0};let D=M(P,R,F),N=R.b==="GPIO"&&!A(R),H=-1;if(R.b==="GPIO"&&R.gpio&&i.has(R.gpio)){let ne=v(R.gpio);H=P.find(s(ne.r,ne.c))}let Q=new Float64Array(o*5).fill(1e9),pe=new Int32Array(o*5).fill(-1),te=[],ae=(ne,Ee)=>{te.push([ne,Ee]);let qe=te.length-1;for(;qe>0;){let kt=qe-1>>1;if(te[kt][0]<=te[qe][0])break;[te[kt],te[qe]]=[te[qe],te[kt]],qe=kt}},re=()=>{let ne=te[0],Ee=te.pop();if(te.length){te[0]=Ee;let qe=0;for(;;){let kt=2*qe+1,vt=kt+1,zt=qe;if(kt<te.length&&te[kt][0]<te[zt][0]&&(zt=kt),vt<te.length&&te[vt][0]<te[zt][0]&&(zt=vt),zt===qe)break;[te[zt],te[qe]]=[te[qe],te[zt]],qe=zt}}return ne};for(let ne=0;ne<o;ne++)P.find(ne)===w&&(Q[ne*5+4]=0,ae(0,ne*5+4));let Me=null,at=1e9;for(;te.length;){let[ne,Ee]=re();if(ne>Q[Ee])continue;if(ne>=at)break;let qe=Ee/5|0,kt=Ee%5;for(let vt of n.adj(qe)){let zt=vt.dir,Ct=vt.to,Sr=P.find(Ct);if(Sr===w)continue;let qn=1+(kt!==4&&kt!==zt?.6:0);if(P.used[Ct]||P.sz[Sr]>1){if(D(Sr)){let Kn=(F.get(Sr)||[])[0],sw=!!O&&O.size>0&&!!Kn&&Zn(Kn.part)!=="matrix"&&!Yr(Kn,T||"").some(aw=>O.has(aw.split(".")[0])),kf=ne+qn+(H>=0&&Sr!==H?14:0)+(N&&Ge(Kn,"adc")?12:0)+(R.b==="GPIO"&&Sr!==H?ma(Kn)+fa(T,Kn)+(sw?12:0):0);kf<at&&(at=kf,Me={s:Ee,n:Ct})}continue}let Xr=Ct*5+zt,Wl=ne+qn;Wl<Q[Xr]&&(Q[Xr]=Wl,pe[Xr]=Ee,ae(Wl,Xr))}}if(!Me)return{ok:!1};let ft=[Me.n],$e=Me.s;for(;$e>=0;)ft.push($e/5|0),$e=pe[$e];for(let ne=0;ne+1<ft.length;ne++){let Ee=Z(ft[ne],ft[ne+1]);P.bridges.push([Ee[0],Ee[1],Ee[2],Ee[3],[R.id]])}for(let ne of ft)P.used[ne]=1;for(let ne=0;ne+1<ft.length;ne++)P.uni(ft[ne],ft[ne+1]);return{ok:!0,n:ft.length-1}}let Y=P=>{let R=v(P.a);if(P.b!=="GND"&&P.b!=="GPIO"){let O=v(P.b);return Math.abs(R.r-O.r)/3+Math.abs(R.c-O.c)}let F=P.b==="GPIO"&&A(P),w=1e9;for(let O of a)(P.b==="GND"?ce(O.part)&&O.role==="gnd":Kp(O,F))&&(w=Math.min(w,Math.abs(R.r-O.r)/3+Math.abs(R.c-O.c)));return w},Oe=P=>P.b==="GND"?2:P.b==="GPIO"?A(P)?.5:1:0,j=(P,R)=>Oe(P)-Oe(R)||Y(R)-Y(P);function ee(){let P=[...g].sort(j),R=7,F=()=>(R=R*16807%2147483647)/2147483647,w=null,O=-1;for(let T=0;T<60;T++){let D=_([],[]),N=[],H=0;for(let te of P){let ae=V(D,te);ae.ok?H+=ae.n||0:N.push(te)}let Q=0;{let te=z(D);for(let ae of g){let re=f(ae.a);if(!re||!re.fn||ae.b!=="GPIO")continue;let Me=(te.get(L(D,ae))||[]).find(ft=>ce(ft.part)&&ft.role==="gpio");if(!Me||Zn(Me.part)==="matrix")continue;if(!Yr(Me,re.fn).length){Q++;continue}let at=y(D,te,ae);(at&&at.size===0||at&&!Yr(Me,re.fn).some(ft=>at.has(ft.split(".")[0])))&&Q++}}let pe=N.length*1e4+Q*300+H;if((!w||pe<w.score)&&(w={score:pe,S:D,fails:N}),!N.length&&O<0&&(O=T),O>=0&&T>=O+14)break;if(N.length&&(P=[...N,...P.filter(te=>!N.includes(te))]),T>8||O>=0){for(let te=P.length-1;te>0;te--)if(F()<.3){let ae=F()*(te+1)|0;[P[te],P[ae]]=[P[ae],P[te]]}}}return w||{S:_([],[]),fails:[]}}function U(){let P=e.auto.bridges.filter(b).map(T=>[T[0],T[1],T[2],T[3],[...T[4]||[]]]),R=e.auto.wires.map(T=>({...T,links:[...T.links||[]]})),F=new Set;if(t.moved)for(let T of g)[T.a,T.b].some(D=>t.moved.has(D.split(".")[0]))&&F.add(T.id);for(let T=0;T<10;T++){let D=re=>re.filter(Me=>h.has(Me)&&!F.has(Me));P=P.map(re=>(re[4]=D(re[4]),re)).filter(re=>re[4].length),R=R.map(re=>(re.links=D(re.links),re)).filter(re=>re.links.length);let N=_(P,R),H=z(N),Q=new Set,pe=!1;for(let[re,Me]of H)$(Me)&&Q.add(re);let te=re=>{for(let Me of re)F.has(Me)||(F.add(Me),pe=!0)};for(let re of P)Q.has(N.find(s(re[0],re[1])))&&te(re[4]);for(let re of R)Q.has(N.find(s(re.a[0],re.a[1])))&&te(re.links);let ae=new Set([...P.flatMap(re=>re[4]),...R.flatMap(re=>re.links)]);for(let re of g)ae.has(re.id)&&!B(N,re,H)&&te([re.id]);if(!pe)break}let w=_(P,R),O=[];for(let T of g.filter(D=>!B(w,D,z(w))).sort(j))V(w,T).ok||O.push(T);return{S:w,fails:O}}let ue=t.full||!e.auto.bridges.length&&!e.auto.wires.length?ee():U();if(ue.fails.length&&!t.full){let P=ee();P.fails.length<ue.fails.length&&(ue=P)}let xe=ue.S,X=P=>n.segs[P].drilled?[]:n.holes(P).filter(([R,F])=>{let w=R+":"+F;return!p.has(w)&&!xe.wireEnds.has(w)});for(let P of ue.fails){let R=L(xe,P),F=z(xe),w=M(xe,P,F),O=[],T=[];for(let H=0;H<o;H++){let Q=xe.find(H);Q===R?O.push(H):w(Q)&&T.push(H)}let D=null,N=1e9;for(let H of O)for(let Q of X(H))for(let pe of T)for(let te of X(pe)){let ae=Math.hypot(Q[0]-te[0],Q[1]-te[1]);ae<N&&(N=ae,D=[Q,te,pe])}D&&(xe.wires.push({a:D[0],b:D[1],color:"#7048e8",links:[P.id]}),xe.wireEnds.add(D[0].join(":")),xe.wireEnds.add(D[1].join(":")),xe.uni(R,D[2]))}let Se=new Map;for(let P of e.parts)if(Ae(P))for(let R of me(P))Se.set(P.id+"."+R.id,R);let ht=d.filter(P=>Se.has(P.a)||Se.has(P.b)).sort((P,R)=>Oe(P)-Oe(R)),ot=new Set,Pe=e.parts.filter(P=>!Ae(P)).map(P=>{let R=W[P.type].bounds(P),F=[Tt(P,R.r0,R.c0),Tt(P,R.r1,R.c1)];return[Math.min(F[0][0],F[1][0]),Math.max(F[0][0],F[1][0]),Math.min(F[0][1],F[1][1]),Math.max(F[0][1],F[1][1])]}),ut=P=>Pe.some(([R,F,w,O])=>P[0]>R&&P[0]<F&&P[1]>w&&P[1]<O),Ue=new Set(["p33","pwr","bp","chg","pout","vin","mp"]);for(let P of ht){let R=Se.get(P.a)||Se.get(P.b),F=Se.has(P.a)?P.b:P.a;if(Se.has(F)){let ae=Se.get(F);xe.wires.push({a:[R.r,R.c],b:[ae.r,ae.c],color:"#495057",links:[P.id]});continue}let w=i.get(F),O=F==="GND"||R.role==="gnd"||w&&w.role==="gnd"?"#212529":Ue.has(R.role)||w&&Ue.has(w.role)?"#c92a2a":"#e8590c",T=z(xe),D,N=-1;if(F==="GND")D=ae=>k(T.get(ae));else if(F==="GPIO"){let ae=R.role==="adc";if(P.gpio&&i.has(P.gpio)){let re=v(P.gpio);N=xe.find(s(re.r,re.c))}D=re=>{let Me=T.get(re);if(ot.has(re)||!x(Me,re,xe))return!1;let at=Me[0];return G.has(at.part.id+"."+at.id)?!1:ae?Ge(at,"adc"):!Ge(at,"in")}}else{let ae=i.get(F);if(!ae)continue;let re=xe.find(s(ae.r,ae.c));D=Me=>Me===re}let H=null,Q=1e9;for(let ae=0;ae<o;ae++){let re=xe.find(ae);if(!D(re))continue;let Me=(T.get(re)||[])[0],at=F==="GPIO"&&R.role!=="adc"&&Ge(Me,"adc")?6:0,ft=re===N?-1e4:0,$e=F==="GPIO"?ma(Me)+fa(R.fn,Me):0;for(let ne of X(ae)){let Ee=Math.hypot(ne[0]-R.r,ne[1]-R.c)+at+ft+$e+(ut(ne)?20:0);Ee<Q&&(Q=Ee,H={h:ne,r:re})}}{let ae=F!=="GND"&&F!=="GPIO"?i.get(F):null;if(ae&&!ce(ae.part)){let re=X(s(ae.r,ae.c)).some(at=>!ut(at)),Me=Math.hypot(ae.r-R.r,ae.c-R.c)+(re?3:-5);Me<Q&&!xe.wireEnds.has(ae.r+":"+ae.c)&&(Q=Me,H={h:[ae.r,ae.c],r:xe.find(s(ae.r,ae.c))})}}if(!H)continue;let pe=H.h,te=H.r;if(xe.wires.push({a:[R.r,R.c],b:pe,color:O,links:[P.id]}),xe.wireEnds.add(pe.join(":")),F==="GPIO"){ot.add(te);let ae=(T.get(te)||[]).find(re=>re.role==="gpio");ae&&(P.gpio=ae.part.id+"."+ae.id)}}e.auto={bridges:xe.bridges,wires:xe.wires,cuts:e.auto.cuts||[]};let Xt=z(xe);for(let P of g){if(P.b!=="GPIO"||ht.includes(P))continue;let R=A(P),F=(Xt.get(L(xe,P))||[]).find(w=>ce(w.part)&&w.role==="gpio"&&(!R||Ge(w,"adc")));F&&(P.gpio=F.part.id+"."+F.id)}for(let[P,R]of u)R.gpio=P.gpio}function h_(e){let t=W[e.type].bounds(e),r=[[t.r0,t.c0],[t.r0,t.c1],[t.r1,t.c0],[t.r1,t.c1]].map(([s,a])=>Tt(e,s,a)),n=r.map(s=>s[0]),o=r.map(s=>s[1]);return{r0:Math.round(Math.min(...n)),r1:Math.round(Math.max(...n)),c0:Math.round(Math.min(...o)),c1:Math.round(Math.max(...o))}}function ya(e){let t=e.board,r=(p,m)=>Math.max(0,Math.min(m-1,p)),n=1/0,o=-1/0,s=1/0,a=-1/0,i=0,c=0,l=0,u=(p,m)=>{p=r(p,t.rows),m=r(m,t.cols),n=Math.min(n,p),o=Math.max(o,p),s=Math.min(s,m),a=Math.max(a,m)};for(let p of e.parts){if(Ae(p))continue;let m=h_(p),b={r0:r(m.r0,t.rows),r1:r(m.r1,t.rows),c0:r(m.c0,t.cols),c1:r(m.c1,t.cols)};c++,p.fixed&&l++,i+=(b.r1-b.r0+1)*(b.c1-b.c0+1),u(b.r0,b.c0),u(b.r1,b.c1)}for(let p of[...e.bridges,...e.auto.bridges])u(p[0],p[1]),u(p[2],p[3]);for(let p of[...e.wires,...e.auto.wires])for(let m of[p.a,p.b])m[0]>=0&&m[0]<t.rows&&m[1]>=0&&m[1]<t.cols&&u(m[0],m[1]);let d=t.rows*t.cols;if(n===1/0)return{box:null,rows:0,cols:0,area:0,boardArea:d,partArea:0,fill:0,parts:c,fixed:l};let f=o-n+1,g=a-s+1,h=f*g;return{box:{r0:n,r1:o,c0:s,c1:a},rows:f,cols:g,area:h,boardArea:d,partArea:i,fill:Math.min(1,i/h),parts:c,fixed:l}}var m_=e=>JSON.parse(JSON.stringify(e)),MN=(e,t)=>Math.abs(e.r-t.r)/3+Math.abs(e.c-t.c);function Ll(e){let t=Lo(e,lr(e)),r=0;for(let n of t.values())n.ok&&r++;return{stats:ya(e),links:e.links.length,linksOk:r,bridges:e.bridges.length+e.auto.bridges.length,wires:e.wires.length+e.auto.wires.length,cuts:(e.cuts||[]).length+(e.auto.cuts||[]).length}}var ef=e=>{e.settings.autoRoute&&e.links.length&&Fo(e,{full:!0})};function g_(e,t={}){let r=Math.max(0,Math.min(1,t.strength??.5)),n=r<.34?2:r<.67?1:0,o=.25-.22*r,s=.02+.1*r,a=Math.round(4+8*r),i=t.keepMcu!==!1,c=t.keepControls!==!1,l=t.rotate!==!1,u=t.maxPasses??40,d=t.only?new Set(t.only):null,f=m_(e);ef(f);let g=Ll(e),h=Ll(f),p=g.linksOk>=h.linksOk?g:h,m=f.board,b=(w,O)=>w>=0&&O>=0&&w<m.rows&&O<m.cols,v=Nr(m,f.cuts||[]),_=(w,O)=>b(w,O)&&!v.drilled(w,O)?v.cell(w,O):-1,z=new Map,k=w=>{let O=z.get(w);if(O==null||O===w)return z.set(w,w),w;let T=k(O);return z.set(w,T),T},x=(w,O)=>{let T=k(w),D=k(O);T!==D&&z.set(T,D)};for(let w of f.parts){let O=xr(w);for(let T in O)x(w.id+"."+T,w.id+"."+O[T]);for(let T of me(w))ce(w)&&T.role==="gnd"&&x(w.id+"."+T.id,"GND")}for(let w of f.links)w.b==="GND"?x(w.a,"GND"):w.b==="GPIO"?w.gpio&&x(w.a,w.gpio):x(w.a,w.b);let A=(w,O)=>k(w+"."+O),G={},L=w=>!!((W[w.type].def.controls||[]).length||W[w.type].def.socket);for(let w of f.parts){let O=Ae(w)?"off":w.fixed?"fixed":i&&ce(w)?"mcu":c&&L(w)?"control":d&&!d.has(w.id)?"scope":null;O&&(G[w.id]=O)}let M=new Set;for(let w of f.bridges)M.add(_(w[0],w[1])),M.add(_(w[2],w[3]));for(let w of f.wires)for(let O of[w.a,w.b])M.add(_(O[0],O[1]));let B=new Map;for(let w of f.parts)if(!Ae(w))for(let O of me(w)){let T=_(O.r,O.c);T<0||(B.has(T)||B.set(T,[]),B.get(T).push({pid:w.id,net:A(w.id,O.id)}))}for(let w of f.parts)if(!(G[w.id]||Ae(w)))for(let O of me(w)){let T=_(O.r,O.c);if(T<0)continue;let D=A(w.id,O.id);if(M.has(T)&&T>=0||(B.get(T)||[]).some(N=>N.pid!==w.id&&N.net!==D)){G[w.id]="manual";break}}let S=f.parts.filter(w=>!G[w.id]),$={};for(let w in G){let O=f.parts.find(T=>T.id===w);$[O.label]=G[w]}if(!S.length)return{moves:[],before:p,after:p,kept:$};let Z=w=>{let O=ct(f,w);return O?Wp(O).map(T=>({pid:O.part.id,pin:T.id})):[]},y=w=>f.parts.filter(O=>ce(O)).flatMap(O=>me(O).filter(T=>T.role===w&&b(T.r,T.c)).map(T=>({pid:O.id,pin:T.id}))),V=f.links.map(w=>[Z(w.a),w.b==="GND"?y("gnd"):w.b==="GPIO"?w.gpio?Z(w.gpio):y("gpio"):Z(w.b)]),Y=new Map;V.forEach(([w,O],T)=>{for(let D of[...w,...O]){Y.has(D.pid)||Y.set(D.pid,[]);let N=Y.get(D.pid);N.includes(T)||N.push(T)}});let Oe=new Map,j=new Map,ee=w=>{let O=h_(w),T=me(w);return{r0:Math.min(O.r0,...T.map(D=>D.r)),r1:Math.max(O.r1,...T.map(D=>D.r)),c0:Math.min(O.c0,...T.map(D=>D.c)),c1:Math.max(O.c1,...T.map(D=>D.c))}},U=w=>{Oe.set(w.id,new Map(me(w).map(O=>[O.id,{r:O.r,c:O.c}]))),Ae(w)||j.set(w.id,ee(w))};for(let w of f.parts)U(w);let ue=(w,O)=>{let T=N=>(O&&N.pid===O.pid?O.pins:Oe.get(N.pid)).get(N.pin),D=1/0;for(let N of V[w][0]){let H=T(N);if(H)for(let Q of V[w][1]){if(Q.pid===N.pid&&Q.pin===N.pin)continue;let pe=T(Q);pe&&(D=Math.min(D,MN(H,pe)))}}return D===1/0?0:D},xe=new Map(S.map(w=>[w.id,{r:w.r,c:w.c,rot:w.rot}])),X=new Map;for(let w of S){let O=l?[0,1,2,3]:[w.rot];X.set(w.id,O.map(T=>{let D={...w,r:0,c:0,rot:T};return{rot:T,pins:me(D).map(N=>({id:N.id,r:N.r,c:N.c})),rect:ee(D)}}))}let Se=w=>{let O=1/0,T=-1/0,D=1/0,N=-1/0;for(let[$e,ne]of j)$e!==w.id&&(O=Math.min(O,ne.r0),T=Math.max(T,ne.r1),D=Math.min(D,ne.c0),N=Math.max(N,ne.c1));let H=[...j].filter(([$e])=>$e!==w.id).map($e=>$e[1]),Q=Y.get(w.id)||[],pe=xe.get(w.id),te=($e,ne,Ee)=>{let qe=new Map($e.pins.map(Ct=>[Ct.id,{r:Ct.r+ne,c:Ct.c+Ee}])),kt=0;for(let Ct of Q)kt+=ue(Ct,{pid:w.id,pins:qe});let vt={r0:Math.min(O,$e.rect.r0+ne),r1:Math.max(T,$e.rect.r1+ne),c0:Math.min(D,$e.rect.c0+Ee),c1:Math.max(N,$e.rect.c1+Ee)},zt=(vt.r1-vt.r0+1)*(vt.c1-vt.c0+1);return kt+s*zt+o*(Math.abs(ne-pe.r)+Math.abs(Ee-pe.c)+($e.rot!==pe.rot?2:0))},ae=X.get(w.id).find($e=>$e.rot===w.rot)||X.get(w.id)[0],re=te(ae,w.r,w.c),Me=new Set,at=[],ft=($e,ne,Ee)=>{let qe=$e.rot+":"+ne+":"+Ee;Me.has(qe)||(Me.add(qe),at.push([te($e,ne,Ee),$e,ne,Ee]))};for(let $e of X.get(w.id)){for(let ne=-a;ne<=a;ne++)for(let Ee=-a;Ee<=a;Ee++)ft($e,w.r+ne,w.c+Ee);if(Q.length<=8)for(let ne of Q)for(let Ee of[0,1]){let qe=V[ne][Ee].filter(vt=>vt.pid===w.id),kt=V[ne][1-Ee].filter(vt=>vt.pid!==w.id);for(let vt of qe){let zt=$e.pins.find(Ct=>Ct.id===vt.pin);if(zt)for(let Ct of kt){let Sr=Oe.get(Ct.pid).get(Ct.pin);if(Sr)for(let qn=-4;qn<=4;qn++)for(let Xr=-3;Xr<=3;Xr++)ft($e,Sr.r+qn-zt.r,Sr.c+Xr-zt.c)}}}}at.sort(($e,ne)=>$e[0]-ne[0]||$e[2]-ne[2]||$e[3]-ne[3]||$e[1].rot-ne[1].rot);for(let[$e,ne,Ee,qe]of at){if($e>=re-1e-6)return!1;if(ht(w,ne,Ee,qe,H))return w.r=Ee,w.c=qe,w.rot=ne.rot,U(w),!0}return!1},ht=(w,O,T,D,N)=>{let H={r0:O.rect.r0+T,r1:O.rect.r1+T,c0:O.rect.c0+D,c1:O.rect.c1+D};if(H.r0<0||H.c0<0||H.r1>=m.rows||H.c1>=m.cols)return!1;for(let pe of N)if(H.r0-n<=pe.r1&&pe.r0<=H.r1+n&&H.c0-n<=pe.c1&&pe.c0<=H.c1+n)return!1;let Q=new Map;for(let pe of O.pins){let te=_(pe.r+T,pe.c+D);if(te<0)return!1;let ae=A(w.id,pe.id);if(Q.has(te)&&Q.get(te)!==ae||(Q.set(te,ae),M.has(te)))return!1;for(let re of B.get(te)||[])if(re.pid!==w.id&&re.net!==ae)return!1}return!0},ot=(w,O)=>{for(let T of me(w)){let D=_(T.r,T.c);D<0||(O?(B.has(D)||B.set(D,[]),B.get(D).push({pid:w.id,net:A(w.id,T.id)})):B.set(D,(B.get(D)||[]).filter(N=>N.pid!==w.id)))}},Pe=.05+.6*r,ut=w=>w.bridges+Pe*w.stats.area,Ue=()=>{let w=m_(f);ef(w);let O=Ll(w);return O.linksOk>=p.linksOk&&O.wires<=p.wires&&ut(O)<ut(p)-1e-9},Xt=[],P=()=>new Map(S.map(w=>[w.id,{r:w.r,c:w.c,rot:w.rot}])),R=w=>{for(let O of S){ot(O,!1);let T=w.get(O.id);O.r=T.r,O.c=T.c,O.rot=T.rot,U(O),ot(O,!0)}};Xt.push(P());for(let w=0;w<u;w++){let O=D=>(Y.get(D.id)||[]).reduce((N,H)=>N+ue(H),0),T=0;for(let D of[...S].sort((N,H)=>O(H)-O(N)||N.id.localeCompare(H.id)))ot(D,!1),Se(D)&&T++,ot(D,!0);if(!T)break;Xt.push(P())}if(Xt.length>1&&!Ue()){let w=0,O=Xt.length-1;for(;O-w>1;){let T=w+O>>1;R(Xt[T]),T>0&&Ue()?w=T:O=T}R(Xt[w])}let F=[];for(let w of S){let O=xe.get(w.id);(O.r!==w.r||O.c!==w.c||O.rot!==w.rot)&&F.push({id:w.id,label:w.label,from:O,to:{r:w.r,c:w.c,rot:w.rot}})}return ef(f),{moves:F,before:p,after:F.length?Ll(f):p,kept:$}}function b_(e,t){let r=0;for(let n of t.moves){let o=e.parts.find(s=>s.id===n.id);o&&(o.r=n.to.r,o.c=n.to.c,o.rot=n.to.rot,r++)}return r>0}var DN=.21;function LN(e,t,r,n){let o=bn(e),s=o.segs[o.cell(t,r)];if(s.drilled)return null;for(let a=s.r0;a<=s.r1;a++){if(a===t||!wr(e.board,a,r))continue;let i=a+":"+r;if(!n.has(i)&&!e.wires.some(c=>c.a[0]===a&&c.a[1]===r||c.b[0]===a&&c.b[1]===r))return i}return null}function y_(e,{A0:t,AS:r,SIM:n,linkState:o,tr:s=Ut}){let a=[],i=(p,m,b)=>a.push({sev:p,msg:m,holes:b||[]}),c=(p,m)=>wr(e.board,p,m),l=p=>[[p.r,p.c]],u=e.parts.some(p=>ce(p));for(let p of e.parts){let m=t.byPart.get(p.id);!Ae(p)&&m.pins.every(b=>!b.on)&&i("warn",s("{a}: teljesen a panelon k\xEDv\xFCl esik",{a:p.label}),[])}for(let p of e.parts)if(p.plug&&!Mo(e,p)){let m=e.parts.find(b=>b.id===p.plug);m&&i("warn",s("{a}: a {b} csatlakoz\xF3nak kevesebb l\xE1ba van, mint a k\xE1belnek ({c}), \xEDgy nincs bedugva",{a:p.label,b:m.label,c:W[p.type].pins(p).length}),me(m).map(b=>[b.r,b.c]))}for(let p of e.parts){if(ce(p))continue;let m=c_(e,t,p);if(m.some(b=>!b.floating))for(let b of m)b.floating&&b.on&&l_.has(b.role)&&i("info",s("{a}: a {b} l\xE1b sehova sincs k\xF6tve",{a:b.label,b:s(i_[b.role])}),(()=>{let v=ct(e,b.ref);return v?l(v):[]})())}let d=new Map;for(let p of t.pins){if(!p.on)continue;let m=p.r+":"+p.c;d.has(m)||d.set(m,[]),d.get(m).push(p)}for(let[p,m]of d)m.length>1&&i("err",s("\xDCtk\xF6z\xE9s a {a} lyukban: {b}",{a:p,b:m.map(yn).join(", ")}),l(m[0]));{let p=bn(e);for(let[m,b]of d){let v=b[0];p.drilled(v.r,v.c)&&i("err",s("{a} kif\xFArt lyukban van ({b}), nincs alatta r\xE9z: a l\xE1b sehov\xE1 sem csatlakozik",{a:yn(v),b:m}),l(v))}for(let m of e.wires)for(let b of[m.a,m.b])c(b[0],b[1])&&p.drilled(b[0],b[1])&&i("warn",s("Vezet\xE9kv\xE9g kif\xFArt lyukban ({a}:{b}): nincs alatta r\xE9z",{a:b[0],b:b[1]}),[b]);for(let m of e.bridges)(p.drilled(m[0],m[1])||p.drilled(m[2],m[3]))&&i("warn",s("H\xEDd kif\xFArt lyukn\xE1l ({a}:{b}\u2013{c}:{d})",{a:m[0],b:m[1],c:m[2],d:m[3]}),[[m[0],m[1]]])}for(let p of e.parts){if(ce(p))continue;let m=t.byPart.get(p.id),b={},v=k=>b[k]===k?k:b[k]=v(b[k]);m.pins.forEach(k=>b[k.id]=k.id);for(let[k,x]of W[p.type].internal(p))b[v(k)]=v(x);let _=new Map;for(let k of m.pins){let x=v(k.id);_.has(k.net)||_.set(k.net,new Map);let A=_.get(k.net);A.has(x)||A.set(x,k)}let z=(W[p.type].def.model||[]).some(k=>k.el==="logic");for(let[,k]of _)if(k.size>1){let x=[...k.values()];if(z){let L=new Set(x.map(M=>M.role));if(!(L.has("vin")&&L.has("gnd")))continue}let A=x.some((L,M)=>x.some((B,S)=>S>M&&L.s===B.s)),G=p.type==="button"?s("{a}: az A \xE9s B oldal k\xF6z\xF6s neten van, a gomb r\xF6vidre z\xE1rt",{a:p.label}):p.type==="bat"?s("{a}: az akku + \xE9s \u2212 p\xF3lusa \xF6ssze van k\xF6tve",{a:p.label}):s("{a}: {b} \xF6ssze van k\xF6tve",{a:p.label,b:x.map(L=>L.name).join(" "+s("\xE9s")+" ")});A&&(G+=s(" (egy szekci\xF3ba esnek)")),i(p.type==="button"||p.type==="bat"?"err":"warn",G,x.map(L=>[L.r,L.c]))}}let f=[];for(let[,p]of t.netPins){let m=p.filter(x=>ce(x.part)),b=new Map;m.forEach(x=>{let A=x.part.id+"."+(x.role==="gnd"?"GND":x.id);b.has(A)||b.set(A,x)});let v=[...b.values()];if(v.length>1&&v.some((A,G)=>v.some((L,M)=>M>G&&A.s===L.s&&A.part===L.part))){f.push(v);continue}let _=new Set;for(let x of p)ce(x.part)?x.role==="gnd"?_.add("GND"):x.role==="p33"?_.add("3V3"):x.role==="pwr"&&_.add(x.name):(x.role==="bp"||x.role==="chg"||x.role==="pout")&&_.add("BAT+");let z=p.map(x=>[x.r,x.c]);_.has("GND")&&_.size>1?i("err",s("Z\xE1rlat: GND \u2013 {a}",{a:[..._].filter(x=>x!=="GND").join(", ")}),z):_.has("3V3")&&_.size>1&&i("err",s("Z\xE1rlat: 3V3 \u2013 {a}",{a:[..._].filter(x=>x!=="3V3").join(", ")}),z);let k=v.filter(x=>x.role==="gpio");k.length>1&&i("warn",s("{a} k\xF6z\xF6s neten van",{a:k.map(x=>x.name).join(", ")}),z),k.length&&_.size&&i("warn",s("{a} k\xF6zvetlen\xFCl {b}-re k\xF6tve",{a:k.map(x=>x.name).join(", "),b:[..._].join("/")}),z)}{let p=new Map;for(let m of e.links){if(m.b!=="GND"&&m.b!=="GPIO")continue;let b=ct(e,m.a);if(!b)continue;let v=b.part.id+":"+xr(b.part)[b.id];p.has(v)||p.set(v,{sg:m.b==="GND"?"GND":"G"+m.id,q:b})}for(let[,m]of t.netPins){let b=new Map;m.some(v=>ce(v.part)&&v.role==="gnd")&&b.set("GND",null);for(let v of m){let _=p.get(v.part.id+":"+xr(v.part)[v.id]);_&&!b.has(_.sg)&&b.set(_.sg,_.q)}if(b.size>1){let v=[...b.entries()].map(([,_])=>_?yn(_):"GND");i("err",s("\xD6ssze\xE9r\u0151 jelek: {a}",{a:v.join(" \xB7 ")}),m.map(_=>[_.r,_.c]))}else{let v=new Map;for(let z of m)z.part.type==="button"&&z.role==="A"&&v.set(z.part.id,z);let _=m.find(z=>ce(z.part)&&z.role==="gpio");_&&v.size>1&&i("warn",`${[...v.values()].map(z=>z.part.label).join(", ")} ugyanazon a GPIO-n (${_.name})`,[...v.values()].map(z=>[z.r,z.c]))}}}{let p=b=>{let v=W[b.type].bounds(b),_=[[v.r0,v.c0],[v.r0,v.c1],[v.r1,v.c0],[v.r1,v.c1]].map(([x,A])=>Tt(b,x,A)),z=_.map(x=>x[0]),k=_.map(x=>x[1]);return[Math.min(...z)+.25,Math.max(...z)-.25,Math.min(...k)+.25,Math.max(...k)-.25]},m=e.parts.filter(b=>!Ae(b)).map(b=>[b,p(b)]);for(let b=0;b<m.length;b++)for(let v=b+1;v<m.length;v++){let[_,z]=m[b],[k,x]=m[v];z[0]<x[1]&&x[0]<z[1]&&z[2]<x[3]&&x[2]<z[3]&&i("warn",s("{a} \xE9s {b} teste \xE1tfed",{a:_.label,b:k.label}),[[_.r,_.c],[k.r,k.c]])}}if(f.length>3){let p=f[0][0].part;i("err",s("{a}: {b} szekci\xF3ban t\xF6bb l\xE1b k\xF6z\xF6s szekci\xF3ba esik. A l\xE1bsor nem futhat szekci\xF3ir\xE1nyban, forgasd 90\xB0-kal.",{a:p.label,b:f.length}),f.flatMap(m=>m.map(b=>[b.r,b.c])))}else for(let p of f)i("err",s("Z\xE1rlat: {a} egy szekci\xF3ba esik",{a:p.map(yn).join(" \xB7 ")}),p.map(m=>[m.r,m.c]));let g=new Set(t.pins.map(p=>p.r+":"+p.c)),h=new Map;e.wires.forEach(p=>{for(let m of[p.a,p.b]){if(!c(m[0],m[1]))continue;let b=m[0]+":"+m[1];if(h.set(b,(h.get(b)||0)+1),g.has(b)){let v=LN(e,m[0],m[1],g);i("warn",s("Vezet\xE9kv\xE9g a {a} lyukban egy alkatr\xE9szl\xE1bbal k\xF6z\xF6sen, ez nem el\xE9g stabil.",{a:b})+" "+(v?s("Tedd \xE1t a {a} lyukba (ugyanaz a szekci\xF3).",{a:v}):s("A szekci\xF3ban nincs szabad lyuk: h\xEDdd \xE1t egy oldalszomsz\xE9dos szekci\xF3ba, \xE9s onnan vezesd tov\xE1bb.")),[m])}}});for(let[p,m]of h)if(m>1){let[b,v]=p.split(":").map(Number);i("warn",s("{a} vezet\xE9kv\xE9g ugyanabban a {b} lyukban",{a:m,b:p}),[[b,v]])}for(let p of e.links){let m=o.get(p.id);if(m&&!m.ok){let b=ct(e,p.a);i("warn",s("Kapcsolat nincs bek\xF6tve: {a}",{a:Do(e,p)}),b?l(b):[])}else if(m&&m.wire&&!m.cable){let b=ct(e,p.a);i("warn",s("{a}: csak vezet\xE9kkel k\xF6thet\u0151 be (nincs szabad h\xEDd\xFAt)",{a:Do(e,p)}),b?l(b):[])}}if(u)for(let p of e.parts){if(p.type!=="button"||e.links.some(v=>v.a.startsWith(p.id+".")))continue;let m=t.byPart.get(p.id).map;["A1","B1"].some(v=>(t.netPins.get(m[v].net)||[]).some(_=>ce(_.part)&&_.role==="gpio"))||i("warn",s("{a}: egyik oldala sincs GPIO-ra k\xF6tve",{a:p.label}),l(m.A1))}n&&VN(e,r,t,n,i,s);for(let p of e.parts)for(let m of W[p.type].def.model||[]){if(m.el!=="motor")continue;let b=t.byPart.get(p.id).map,v=b[m.a].net,_=b[m.b].net,z=t.netPins.get(v)||[],k=t.netPins.get(_)||[];if(z.length<2||k.length<2)continue;(z.some(A=>A.role==="gpio")||k.some(A=>A.role==="gpio"))&&i("err",s("{a}: a motor k\xF6zvetlen\xFCl GPIO-ra van k\xF6tve. Tranzisztor vagy MOSFET kell a meghajt\xE1s\xE1hoz.",{a:p.label}),[]),e.parts.some(A=>(W[A.type].def.model||[]).some(G=>{if(G.el!=="diode")return!1;let L=t.byPart.get(A.id).map,M=L[G.a].net,B=L[G.k].net;return M===v&&B===_||M===_&&B===v}))||i("warn",s("{a}: nincs visszacsap\xF3 di\xF3da a motoron. Tegy\xE9l egy di\xF3d\xE1t (pl. 1N5817) a motor kapcsaira, a kat\xF3dj\xE1val a + fel\xE9, k\xFCl\xF6nben kikapcsol\xE1skor a fesz\xFClts\xE9gt\xFCske t\xF6nkreteheti a tranzisztort.",{a:p.label}),[])}if(n)for(let p of e.parts){let m=r.byPart.get(p.id),b=m.pins.filter(k=>k.role==="vin");if(!b.length)continue;let v=m.pins.find(k=>k.role==="gnd"),_=W[p.type].def.model||[],z=k=>n.floating.has(k.net)?null:n.netV.get(k.net)??null;for(let k of b){let x=_.some(M=>M.el==="source"&&M.p===k.id),A=z(k),G=v?z(v):0,L=A==null||G==null?null:A-G;L==null||L<.5?x||i("warn",s("{a}.{b}: nincs t\xE1pfesz\xFClts\xE9g",{a:p.label,b:k.name})+(A!=null&&v&&G==null?" "+s("(a {a} nincs bek\xF6tve)",{a:v.name}):""),l(k)):k.vmax!=null&&L>k.vmax+.05?i("err",s("{a}.{b}: {c} V, t\xF6bb a megengedett {d} V-n\xE1l",{a:p.label,b:k.name,c:L.toFixed(2),d:k.vmax}),l(k)):k.vmin!=null&&L<k.vmin-.05&&i("warn",s("{a}.{b}: csak {c} V, legal\xE1bb {d} V kell",{a:p.label,b:k.name,c:L.toFixed(2),d:k.vmin}),l(k))}}for(let p of e.parts){if(!ce(p))continue;let m=(W[p.type].def.meta||{}).pinNotes||{};for(let b of t.byPart.get(p.id).pins){if(b.role!=="gpio"||!b.on||!((t.netPins.get(b.net)||[]).length>1||(t.netSecs.get(b.net)||0)>1))continue;let _=Gp.find(z=>Ge(b,z[0]));_&&i("warn",`${p.label}.${b.name}: ${s(m[b.name]||_[1])}`,l(b))}}for(let p of e.parts){if(ce(p))continue;let m=new Map;for(let b of t.byPart.get(p.id).pins){if(!b.fn)continue;let v=(t.netPins.get(b.net)||[]).find(x=>ce(x.part)&&x.role==="gpio");if(!v)continue;let _=Yr(v,b.fn),z=b.fn.split(".")[0],k=qp(Up(b.fn));if(!_.length){if(Zn(v.part)!=="matrix"){let x=[...new Set(me(v.part).filter(A=>A.role==="gpio"&&Yr(A,b.fn).length).map(A=>A.name))];i("warn",s("{a}.{b} ({c}) \u2192 {d}: ez a l\xE1b nem {e}, \xEDgy a hardveres {f} nem haszn\xE1lhat\xF3 rajta, csak szoftveres. Alkalmas l\xE1bak: {g}",{a:p.label,b:b.name,c:qp(b.fn),d:v.name,e:k,f:z.toUpperCase(),g:x.slice(0,8).join(", ")}),l(v))}continue}m.has(z)||m.set(z,[]),m.get(z).push({q:b,g:v,b:new Set(_.map(x=>x.split(".")[0]))})}for(let[b,v]of m){if(v.length<2||Zn(v[0].g.part)==="matrix")continue;v.slice(1).reduce((z,k)=>new Set([...z].filter(x=>k.b.has(x))),new Set(v[0].b)).size||i("warn",s("{a}: az {b}-l\xE1bai k\xFCl\xF6nb\xF6z\u0151 buszokra ker\xFCltek ({c}). Egy perif\xE9ri\xE1t egy buszra k\xF6ss.",{a:p.label,b:b.toUpperCase(),c:v.map(z=>`${z.q.name} \u2192 ${z.g.name}: ${[...z.b].map(k=>k.toUpperCase()).join("/")}`).join(", ")}),v.map(z=>l(z.g)[0]))}}{let p=new Map;for(let m of e.parts)if(ce(m))for(let b of t.byPart.get(m.id).pins){if(b.role!=="gpio"||ga(e,m,b.id,b,t)!=="pwm")continue;let v=(b.caps||[]).find(z=>/^pwm\d+\.[ab]$/.test(z));if(!v)continue;let _=m.id+":"+v.split(".")[0];p.has(_)||p.set(_,[]),p.get(_).push({q:b,f:ba(e,m.id+"."+b.id).freq,c:v})}for(let[,m]of p){if(m.length<2)continue;[...new Set(m.map(v=>+v.f))].length>1&&i("warn",s("{a} ugyanazon a PWM-szeleten ({b}) van, csak azonos frekvenci\xE1val m\u0171k\xF6dhetnek (most: {c}).",{a:m.map(v=>v.q.name).join(" "+s("\xE9s")+" "),b:m[0].c.split(".")[0].toUpperCase(),c:m.map(v=>v.f+" Hz").join(", ")}),m.map(v=>l(v.q)[0]))}}for(let[,p]of t.netPins){let m=p.filter(b=>b.role==="adc");if(m.length)for(let b of p.filter(v=>v.role==="gpio")){let v=m.map(yn).join(", "),_=()=>[...new Set(me(b.part).filter(z=>Ge(z,"adc")).map(z=>z.name))].join(", ")||"\u2013";if(!jl(b))i("warn",s("{a}: anal\xF3g jel a {b}-n, de azon nincs ADC. Erre alkalmas: {c}",{a:v,b:b.name,c:_()}),l(b));else{Ge(b,"adc")||i("warn",s("{a}: ADC2-csatorna, bekapcsolt WiFi mellett nem m\xE9r. Anal\xF3g jelhez ink\xE1bb ADC1-es l\xE1bat v\xE1lassz: {b}",{a:b.name,b:_()}),l(b));let z=ga(e,b.part,b.id,b,t);z!=="adc"&&z!=="float"&&i("warn",s("{a}: az anal\xF3g m\xE9r\xE9shez \xE1ll\xEDtsd ADC m\xF3dba (most: {b})",{a:b.name,b:s(Gn.find(k=>k[0]===z)[1])}),l(b))}}}{let p=ya(e);p.parts>=3&&e.links.length>=2&&p.fill<DN&&p.area>=.25*p.boardArea&&a.push({sev:"info",msg:s("A terv szell\u0151s: az alkatr\xE9szek a foglalt ter\xFClet {f}%-\xE1t t\xF6ltik ki \u2013 t\xF6m\xF6r\xEDtve kisebb panel \xE9s r\xF6videbb bek\xF6t\xE9s lehet.",{f:Math.round(p.fill*100)}),holes:[],act:"compact"})}return a}function VN(e,t,r,n,o,s){for(let a of n.srcI)a.kind==="vbus"&&a.I>1&&o("err",s("Z\xE1rlat a VBUS-on ({a} A)",{a:a.I.toFixed(1)}),[]),a.kind==="v33"&&a.I>.3&&o("err",s("3V3 t\xFAlterhelve vagy z\xE1rlatos ({a} mA)",{a:(a.I*1e3).toFixed(0)}),[]);for(let a of n.gpios){let i=Math.abs(a.I)*1e3,c=Math.round(((n.picos.find(l=>l.p===a.p)||{igpio:0}).igpio||.012)*1e3);i>50?o("err",s("{a}: {b} mA, kimenet z\xE1rlatban",{a:a.q.name,b:i.toFixed(0)}),[[a.q.r,a.q.c]]):i>c&&o("warn",s("{a}: {b} mA, sok (aj\xE1nlott max. ~{c} mA)",{a:a.q.name,b:i.toFixed(1),c}),[[a.q.r,a.q.c]]),a.powered&&a.float&&(a.mode==="float"||a.mode==="adc")&&(t.netPins.get(t.pins.find(u=>u.part===a.p&&u.id===a.q.id).net)||[]).some(u=>Jr(u.part))&&o("warn",s("{a}: lebeg, am\xEDg a gomb nincs lenyomva{b}. Tegy\xE9l k\xFCls\u0151 felh\xFAz\xF3 ellen\xE1ll\xE1st (pl. 10 k\u03A9 a 3V3-ra), vagy v\xE1lassz m\xE1sik GPIO-t.",{a:a.q.name,b:Ge(a.q,"nopull")?" "+s("(ezen a l\xE1bon nincs bels\u0151 felh\xFAz\xF3 ellen\xE1ll\xE1s)"):""}),[[a.q.r,a.q.c]])}for(let a of n.picos){let i=r.byPart.get(a.p.id).pins.find(l=>l.name===a.vsysName),c=i?[[i.r,i.c]]:[];a.vmax!=null&&a.Usys>a.vmax+.05?o("err",s("{a}.{b}: {c} V, t\xF6bb a megengedett {d} V-n\xE1l",{a:a.p.label,b:a.vsysName,c:a.Usys.toFixed(2),d:a.vmax}),c):!a.powered&&a.Usys>.5&&o("warn",s("{a}: a t\xE1pbemeneten ({b}) csak {c} V van, a stabiliz\xE1tornak legal\xE1bb {d} V kell, \xEDgy nincs 3,3 V",{a:a.p.label,b:a.vsysName,c:a.Usys.toFixed(2),d:a.vreg}),c)}for(let a of n.leds)a.light&&a.I>.03?o("warn",s("{a}: {b} mA, el\u0151t\xE9t-ellen\xE1ll\xE1s kell",{a:a.p.label,b:(a.I*1e3).toFixed(0)}),[]):!a.light&&a.imax&&a.I>a.imax&&o("warn",s("{a}: {b}A, t\xF6bb a megengedett {c}A-n\xE9l",{a:a.p.label,b:_r(a.I),c:_r(a.imax)}),[]);for(let a of n.logics){if(a.vdd<1)continue;let i=a.ins.filter(c=>c.open).map(c=>c.name);i.length&&o("warn",s("{a}: lebeg\u0151 bemenet: {b}. CMOS-bemenetet ne hagyj szabadon: k\xF6sd jelre, vagy a nem haszn\xE1ltat GND-re (vagy VCC-re).",{a:a.p.label,b:i.join(", ")}),[]);for(let c of a.outs)c.I>a.imax&&o("warn",s("{a}.{b}: {c} mA kimeneti \xE1ram, t\xF6bb a megengedett {d}A-n\xE9l{e}",{a:a.p.label,b:c.name,c:(c.I*1e3).toFixed(0),d:_r(a.imax),e:a.imax<.1?" "+s("(k\xE9t kimenet egym\xE1s ellen?)"):""}),[])}for(let a of n.motors)Math.abs(a.U)>a.vnom*1.25&&o("warn",s("{a}: {b} V, t\xF6bb a n\xE9vleges {c} V-n\xE1l",{a:a.p.label,b:Math.abs(a.U).toFixed(2),c:a.vnom}),[]);for(let a of n.servos)a.U>3&&a.angle==null&&o("warn",s("{a}: nincs \xE9rv\xE9nyes szerv\xF3jel. A jel l\xE1b\xE1t k\xF6sd egy PWM m\xF3d\xFA GPIO-ra: 50 Hz, 2,5\u201312,5 % kit\xF6lt\xE9s (7,5 % = k\xF6z\xE9p\xE1ll\xE1s).",{a:a.p.label}),[]);for(let a of n.bjts){let i=a.p.label;a.floatBase&&o("warn",s("{a}: a b\xE1zis lebeg. Tegy\xE9l leh\xFAz\xF3 ellen\xE1ll\xE1st a B \xE9s az E k\xF6z\xE9 (pl. 10 k\u03A9), vagy k\xF6sd kimenetre.",{a:i}),[]),a.imax&&Math.abs(a.ic)>a.imax?o("warn",s("{a}: {b}A kollektor\xE1ram, t\xF6bb a megengedett {c}A-n\xE9l",{a:i,b:_r(Math.abs(a.ic)),c:_r(a.imax)}),[]):a.st==="act"&&a.ic>.001&&o("warn",s("{a}: nem tel\xEDt\u0151dik (Uce {b} V, Ic {c}A = \u03B2\xB7Ib). Kapcsol\xF3nak kisebb b\xE1zisellen\xE1ll\xE1s kell: a b\xE1zis\xE1ram (most {d}A) legyen a k\xEDv\xE1nt kollektor\xE1ram kb. tizede.",{a:i,b:a.vce.toFixed(2),c:_r(a.ic),d:_r(a.ib)}),[])}for(let a of n.caps)a.float||(a.polar&&a.U<-.5?o("err",s("{a}: ford\xEDtva van bek\xF6tve ({b} V). Az elektrolit kondenz\xE1tor + l\xE1ba ker\xFClj\xF6n a magasabb fesz\xFClts\xE9gre.",{a:a.p.label,b:a.U.toFixed(2)}),[]):a.vmax!=null&&Math.abs(a.U)>a.vmax&&o("err",s("{a}: {b} V, t\xF6bb a n\xE9vleges {c} V-n\xE1l",{a:a.p.label,b:Math.abs(a.U).toFixed(2),c:a.vmax}),[]));for(let a of n.fets)a.floatGate&&o("warn",s("{a}: a gate lebeg. Tegy\xE9l leh\xFAz\xF3 ellen\xE1ll\xE1st a G \xE9s az S k\xF6z\xE9 (pl. 100 k\u03A9), vagy k\xF6sd kimenetre.",{a:a.p.label}),[]),a.imax&&Math.abs(a.I)>a.imax&&o("warn",s("{a}: {b}A, t\xF6bb a megengedett {c}A-n\xE9l",{a:a.p.label,b:_r(Math.abs(a.I)),c:_r(a.imax)}),[]);for(let a of n.bats){if(a.kind==="supply"){a.I<-2&&o("err",s("{a}: z\xE1rlat a t\xE1pbemeneten ({b} A)",{a:a.p.label,b:(-a.I).toFixed(1)}),[]);continue}let i=t.byPart.get(a.p.id).pins,c=n.picos.find(d=>d.feeds&&d.vsys===a.node),u=!!!c&&i.some(d=>(t.netPins.get(d.net)||[]).some(f=>f.role==="chg"&&f.part!==a.p));if(c&&a.I>.1){o("err",s("{a}: a {b} USB-je a t\xE1pbemeneten ({c}) \xE1t k\xF6zvetlen\xFCl t\xF6lti az akkut ({d} A). Az akku \xE9s a t\xE1pbemenet k\xF6z\xE9 Schottky-di\xF3da kell.",{a:a.p.label,b:c.p.label,c:c.vsysName,d:a.I.toFixed(1)}),[]);continue}if(u&&a.I>0){a.I>1.2&&o("warn",s("{a}: {b} A t\xF6lt\u0151\xE1ram, sok",{a:a.p.label,b:a.I.toFixed(1)}),[]);continue}a.I>2?o("err",s("{a}: z\xE1rlat ({b} A)",{a:a.p.label,b:a.I.toFixed(1)}),[]):a.I>.1?o("err",s("{a}: az USB k\xF6zvetlen\xFCl t\xF6lti az akkut ({b} A). A VSYS el\xE9 Schottky-di\xF3da kell.",{a:a.p.label,b:a.I.toFixed(1)}),[]):a.I<-2&&o("err",s("{a}: z\xE1rlat ({b} A)",{a:a.p.label,b:(-a.I).toFixed(1)}),[])}}var qt=e=>typeof e=="number"?e>.5:!!e,tf=e=>typeof e=="boolean"?e?1:0:typeof e=="number"&&isFinite(e)?e:0,yt=(e,t)=>{let r=Number(e);return isFinite(r)?r:t},Be=(e,t)=>({id:e,label:t,kind:"bool"}),Un=(e,t)=>({id:e,label:t,kind:"num"}),Vl=(e=E("L\xE1b"))=>({key:"pin",label:e,type:"pin",default:""}),k_={half:["1000","1100","0100","0110","0010","0011","0001","1001"],full:["1100","0110","0011","1001"],wave:["1000","0100","0010","0001"],count:Array.from({length:16},(e,t)=>t.toString(2).padStart(4,"0").split("").reverse().join(""))},nf=4,FN=[["half",E("f\xE9ll\xE9ptet\xE9s (8 l\xE9p\xE9s)")],["full",E("teljes l\xE9p\xE9s, k\xE9t tekercs (4)")],["wave",E("egy tekercs (4)")],["count",E("bin\xE1ris sz\xE1ml\xE1l\xF3 (16)")],["custom",E("saj\xE1t minta")]];function of(e,t){let r=e==="custom"?String(t||"").split(/[\s,;]+/).filter(n=>/^[01]{1,8}$/.test(n)):k_[String(e)]||k_.half;return r.length||(r=["0"]),r.map(n=>n.slice(0,nf).padEnd(nf,"0"))}var BN=[["off",E("Ut\xE1nfut\xE1s (ki k\xE9sleltetve)")],["on",E("Bekapcsol\xE1si k\xE9sleltet\xE9s")],["pulse",E("Impulzus")],["filter",E("Sz\u0171r\xE9s (mindk\xE9t v\xE1ltoz\xE1s)")]],rf=(e,t,r)=>{let n=!!e[t];return e[t]=r,r&&!n};E("Bemenet"),E("Logika"),E("Id\u0151"),E("Kimenet");var nt={in:{label:E("Digit\xE1lis bemenet"),cat:"Bemenet",help:E("Egy l\xE1b szintje (pl. nyom\xF3gomb). Felh\xFAz\xE1ssal a lenyomott gomb alacsony szintet ad, ez\xE9rt az \u201Eakt\xEDv\u201D alapb\xF3l az alacsony."),ins:[],outs:[Be("v",E("akt\xEDv"))],params:[Vl(),{key:"pull",label:E("Felh\xFAz\xE1s"),type:"select",default:"pullup",options:[["pullup",E("fel (3,3 V)")],["pulldown",E("le (GND)")],["float",E("nincs")]]},{key:"active",label:E("Akt\xEDv"),type:"select",default:"low",options:[["low",E("alacsony szinten")],["high",E("magas szinten")]]}],eval:e=>{let t=e.read(e.p.pin),r=t?t.level:null;return{v:r==null?!1:e.p.active==="high"==(r===1)}},gpio:e=>({ref:e.pin,mode:String(e.pull||"pullup")})},adc:{label:E("Anal\xF3g bemenet"),cat:"Bemenet",help:E("Egy ADC-k\xE9pes l\xE1b fesz\xFClts\xE9ge 0\u20261 k\xF6z\xF6tt (0 V \u2192 0, 3,3 V \u2192 1), pl. potm\xE9ter vagy joystick."),ins:[],outs:[Un("v",E("\xE9rt\xE9k"))],params:[Vl()],eval:e=>{let t=e.read(e.p.pin);return{v:t?Math.max(0,Math.min(1,t.V/3.3)):0}},gpio:e=>({ref:e.pin,mode:"adc"})},const:{label:E("\xC1lland\xF3"),cat:"Bemenet",help:E("R\xF6gz\xEDtett sz\xE1m (0\u20261 k\xF6z\xF6tt PWM-kit\xF6lt\xE9shez, vagy \xF6sszehasonl\xEDt\xE1shoz)."),ins:[],outs:[Un("v",E("\xE9rt\xE9k"))],params:[{key:"value",label:E("\xC9rt\xE9k"),type:"number",default:1}],eval:e=>({v:yt(e.p.value,1)})},not:{label:E("NEM"),cat:"Logika",help:E("Megford\xEDtja a jelet."),ins:[Be("a",E("be"))],outs:[Be("v",E("ki"))],params:[],eval:e=>({v:!qt(e.in.a)})},and:{label:E("\xC9S"),cat:"Logika",help:E("Akkor igaz, ha mindk\xE9t bemenet igaz."),ins:[Be("a",E("A")),Be("b",E("B"))],outs:[Be("v",E("ki"))],params:[],eval:e=>({v:qt(e.in.a)&&qt(e.in.b)})},or:{label:E("VAGY"),cat:"Logika",help:E("Akkor igaz, ha legal\xE1bb az egyik bemenet igaz."),ins:[Be("a",E("A")),Be("b",E("B"))],outs:[Be("v",E("ki"))],params:[],eval:e=>({v:qt(e.in.a)||qt(e.in.b)})},xor:{label:E("KIZ\xC1R\xD3 VAGY"),cat:"Logika",help:E("Akkor igaz, ha pontosan az egyik bemenet igaz."),ins:[Be("a",E("A")),Be("b",E("B"))],outs:[Be("v",E("ki"))],params:[],eval:e=>({v:qt(e.in.a)!==qt(e.in.b)})},compare:{label:E("\xD6sszehasonl\xEDt\xE1s"),cat:"Logika",help:E("Igaz, ha a bemenet nagyobb (vagy kisebb) a hat\xE1rn\xE1l, pl. \u201Ea potm\xE9ter f\xE9ln\xE9l tov\xE1bb van tekerve\u201D."),ins:[Un("a",E("\xE9rt\xE9k"))],outs:[Be("v",E("igaz"))],params:[{key:"op",label:E("Felt\xE9tel"),type:"select",default:">",options:[[">",E("nagyobb, mint")],["<",E("kisebb, mint")]]},{key:"value",label:E("Hat\xE1r"),type:"number",default:.5}],eval:e=>({v:e.p.op==="<"?tf(e.in.a)<yt(e.p.value,.5):tf(e.in.a)>yt(e.p.value,.5)})},blink:{label:E("\xDCtemad\xF3"),cat:"Id\u0151",help:E("N\xE9gysz\xF6gjel: peri\xF3dusonk\xE9nt a kit\xF6lt\xE9s ar\xE1ny\xE1ban igaz (villog\xF3 LED)."),ins:[],outs:[Be("v",E("ki"))],params:[{key:"period",label:E("Peri\xF3dus"),type:"number",default:1e3,min:20,unit:"ms"},{key:"duty",label:E("Kit\xF6lt\xE9s"),type:"number",default:50,min:0,max:100,unit:"%"}],eval:e=>{let t=Math.max(20,yt(e.p.period,1e3));return{v:e.t%t<t*Math.max(0,Math.min(100,yt(e.p.duty,50)))/100}}},toggle:{label:E("V\xE1lt\xF3kapcsol\xF3"),cat:"Id\u0151",help:E("Minden felfut\xF3 \xE9lre (pl. gombnyom\xE1sra) \xE1tv\xE1lt: be, ki, be\u2026"),ins:[Be("a",E("v\xE1lt\xE1s"))],outs:[Be("v",E("\xE1llapot"))],params:[],eval:e=>(rf(e.st,"a",qt(e.in.a))&&(e.st.v=!e.st.v),{v:!!e.st.v})},counter:{label:E("Sz\xE1ml\xE1l\xF3"),cat:"Id\u0151",help:E("Felfut\xF3 \xE9lenk\xE9nt eggyel n\u0151, a hat\xE1rn\xE1l el\xF6lr\u0151l kezdi; a t\xF6rl\xE9s lenull\xE1zza. Az \u201Ear\xE1ny\u201D 0\u20261 k\xF6z\xF6tt (PWM-hez)."),ins:[Be("a",E("sz\xE1mol")),Be("r",E("t\xF6rl\xE9s"))],outs:[Un("n",E("\xE9rt\xE9k")),Un("f",E("ar\xE1ny"))],params:[{key:"max",label:E("L\xE9p\xE9ssz\xE1m"),type:"number",default:4,min:1}],eval:e=>{let t=Math.max(1,Math.round(yt(e.p.max,4))),r=yt(e.st.n,0);return rf(e.st,"a",qt(e.in.a))&&(r=(r+1)%t),qt(e.in.r)&&(r=0),e.st.n=r,{n:r,f:t>1?r/(t-1):0}}},delay:{label:E("Id\u0151z\xEDt\u0151"),cat:"Id\u0151",help:E("K\xE9sleltet\xE9s vagy ut\xE1nfut\xE1s a megadott id\u0151vel. Ut\xE1nfut\xE1s: azonnal bekapcsol, \xE9s a bemenet megsz\u0171n\xE9se ut\xE1n m\xE9g ennyi ideig igaz (l\xE9pcs\u0151h\xE1zi vil\xE1g\xEDt\xE1s). Bekapcsol\xE1si k\xE9sleltet\xE9s: csak akkor kapcsol be, ha a bemenet ennyi ideig folyamatosan igaz. Impulzus: felfut\xF3 \xE9lre ennyi ideig igaz. Sz\u0171r\xE9s: mindk\xE9t v\xE1ltoz\xE1st csak akkor adja tov\xE1bb, ha ennyi ideig tart (perg\xE9smentes\xEDt\xE9s)."),ins:[Be("a",E("be"))],outs:[Be("v",E("ki"))],params:[{key:"mode",label:E("M\u0171k\xF6d\xE9s"),type:"select",default:"off",legacy:"filter",options:BN},{key:"ms",label:E("Id\u0151"),type:"number",default:500,min:0,unit:"ms"}],eval:e=>{let t=qt(e.in.a),r=Math.max(0,yt(e.p.ms,500)),n=e.t,o=e.st;switch(e.p.mode){case"off":return t&&(o.at=n),{v:t||o.at!==void 0&&n-yt(o.at,0)<r};case"on":return o.last!==t&&(o.last=t,o.at=n),{v:t&&n-yt(o.at,0)>=r};case"pulse":{let s=o.at!==void 0&&n-yt(o.at,0)<r;return rf(o,"a",t)&&!s&&(o.at=n),{v:o.at!==void 0&&n-yt(o.at,0)<r}}default:return o.last!==t&&(o.last=t,o.at=n),n-yt(o.at,0)>=r&&(o.v=t),{v:!!o.v}}}},seq:{label:E("Sorozat"),cat:"Id\u0151",help:E("Minden felfut\xF3 \xE9lre (pl. \xFCtemad\xF3t\xF3l) a minta k\xF6vetkez\u0151 sora ker\xFCl az A\u2013D kimenetekre: l\xE9ptet\u0151motor tekercsei, fut\xF3f\xE9ny, sz\xE1ml\xE1l\xF3. A \u201Evissza\u201D bemenet (vagy az ir\xE1ny) visszafel\xE9 l\xE9ptet."),ins:[Be("a",E("l\xE9p\xE9s")),Be("r",E("vissza"))],outs:[Be("c0",E("A")),Be("c1",E("B")),Be("c2",E("C")),Be("c3",E("D")),Un("n",E("sor"))],params:[{key:"preset",label:E("Minta"),type:"select",default:"half",options:FN},{key:"custom",label:E("Saj\xE1t minta (sorok sz\xF3k\xF6zzel)"),type:"text",default:"10 01",when:{key:"preset",is:"custom"}},{key:"dir",label:E("Ir\xE1ny"),type:"select",default:"fwd",options:[["fwd",E("el\u0151re")],["back",E("vissza")]]}],eval:e=>{let t=of(e.p.preset,e.p.custom),r=t.length,n=yt(e.st.i,0),o=e.st.a===void 0?!0:!!e.st.a,s=qt(e.in.a);e.st.a=s,s&&!o&&(n+=e.p.dir==="back"!==qt(e.in.r)?-1:1),n=(n%r+r)%r,e.st.i=n;let a=t[n];return{c0:a[0]==="1",c1:a[1]==="1",c2:a[2]==="1",c3:a[3]==="1",n}}},out:{label:E("Digit\xE1lis kimenet"),cat:"Kimenet",help:E("Igaz \u2192 a l\xE1b magas (3,3 V), hamis \u2192 alacsony (pl. LED, rel\xE9, MOSFET kapuja)."),ins:[Be("a",E("be"))],outs:[],params:[Vl()],eval:()=>({}),gpio:(e,t)=>({ref:e.pin,mode:qt(t.a)?"out_high":"out_low"})},pwm:{label:E("PWM kimenet"),cat:"Kimenet",help:E("Kit\xF6lt\xE9s: LED f\xE9nyereje, motor fordulatsz\xE1ma. Ha a bemenet nincs bek\xF6tve, a be\xE1ll\xEDtott kit\xF6lt\xE9s \xE9rv\xE9nyes; bek\xF6tve a bemenet (0\u20261) adja, pl. \xC1lland\xF3 0,3 = 30 % vagy potm\xE9ter. Logikai jel (pl. \xDCtemad\xF3) 0 % vagy 100 %. Szerv\xF3hoz 50 Hz \xE9s 2,5\u202612,5 %."),ins:[Un("a",E("kit\xF6lt\xE9s"))],outs:[],params:[Vl(),{key:"duty",label:E("Kit\xF6lt\xE9s (bemenet n\xE9lk\xFCl)"),type:"number",default:50,min:0,max:100,unit:"%"},{key:"freq",label:E("Frekvencia"),type:"number",default:1e3,min:1,unit:"Hz"}],eval:()=>({}),gpio:(e,t)=>({ref:e.pin,mode:"pwm",pwm:{duty:Math.round(Math.max(0,Math.min(1,t.a===void 0?yt(e.duty,50)/100:tf(t.a)))*1e3)/10,freq:Math.max(1,yt(e.freq,1e3))}})}};function v_(e){let t=e;if(!t||!Array.isArray(t.nodes))return;let r=[];for(let i of t.nodes){if(!i||typeof i.id!="string"||typeof i.type!="string"||!nt[i.type])continue;let c=nt[i.type],l={};for(let u of c.params)l[u.key]=i.props?.[u.key]??(u.legacy!==void 0?u.legacy:u.default);r.push({id:i.id,type:i.type,x:yt(i.x,0),y:yt(i.y,0),props:l})}let n=new Map(r.map(i=>[i.id,i])),o=(i,c)=>{if(typeof i!="string")return!1;let l=i.lastIndexOf("."),u=n.get(i.slice(0,l));return!!u&&nt[u.type][c].some(d=>d.id===i.slice(l+1))},s=[],a=new Set;for(let i of Array.isArray(t.edges)?t.edges:[])!i||typeof i.id!="string"||!o(i.from,"outs")||!o(i.to,"ins")||a.has(i.to)||(a.add(i.to),s.push({id:i.id,from:i.from,to:i.to}));return{nodes:r,edges:s}}function sf(e,t,r){if(typeof r!="string"||!r)return null;let n=ct(e,r);if(!n)return null;if(ce(n.part)&&n.role==="gpio")return n.part.id+"."+n.id;let o=t.byPart.get(n.part.id),s=o&&o.map[n.id];if(!s)return null;let a=(t.netPins.get(s.net)||[]).find(i=>ce(i.part)&&i.role==="gpio");return a?a.part.id+"."+a.id:null}var af=()=>({st:new Map,vals:new Map});function lf(e,t,r,n,o,s){let a={gpio:{},pwm:{},errors:new Map},i=new Map(r.edges.map(p=>[p.to,p.from])),c=new Map(r.nodes.map(p=>[p.id,new Set(r.edges.filter(m=>m.to.startsWith(p.id+".")).map(m=>m.from.slice(0,m.from.lastIndexOf("."))))])),l=[],u=new Set,d=!0;for(;d;){d=!1;for(let p of r.nodes)!u.has(p.id)&&[...c.get(p.id)].every(m=>u.has(m)||m===p.id)&&(l.push(p.id),u.add(p.id),d=!0)}for(let p of r.nodes)u.has(p.id)||l.push(p.id);let f=new Map(r.nodes.map(p=>[p.id,p])),g=(p,m)=>{let b=sf(e,t,p);return b||a.errors.set(m,typeof p=="string"&&p?E("A l\xE1b nincs GPIO-ra k\xF6tve"):E("Nincs kiv\xE1lasztva l\xE1b")),b},h=p=>{let m={};for(let b of nt[p.type].ins){let v=i.get(p.id+"."+b.id);m[b.id]=v?n.vals.get(v):void 0}return m};for(let p of l){let m=f.get(p),b=nt[m.type];n.st.has(p)||n.st.set(p,{});let v=b.eval({in:h(m),p:m.props,st:n.st.get(p),t:o,read:_=>{let z=g(_,p);return z?s(z):null}});for(let[_,z]of Object.entries(v))n.vals.set(p+"."+_,z)}for(let p of r.nodes){let m=nt[p.type];if(!m.gpio)continue;let b=m.gpio(p.props,h(p));if(!b)continue;let v=g(b.ref,p.id);v&&(a.gpio[v]&&a.gpio[v]!==b.mode&&a.errors.set(p.id,E("Ezt a GPIO-t egy m\xE1sik blokk is haszn\xE1lja")),a.gpio[v]=b.mode,b.pwm&&(a.pwm[v]=b.pwm))}return a}var va=(e,t)=>t?{...e,gpio:{...e.gpio,...t.gpio},pwm:{...e.pwm||{},...t.pwm}}:e,ka=(e,t)=>{let r=1;for(;t.has(e+r);)r++;let n=e+r;return t.add(n),n};function ZN(e,t,r={x:40,y:40},n={}){let o=e?{nodes:[...e.nodes],edges:[...e.edges]}:{nodes:[],edges:[]},s=new Set(o.nodes.map(u=>u.id)),a=new Set(o.edges.map(u=>u.id)),i=ka("n",s),c=ka("n",s),l=[0,1,2,3].map(()=>ka("n",s));return o.nodes.push({id:i,type:"blink",x:r.x,y:r.y+40,props:{period:n.period??250,duty:50}}),o.nodes.push({id:c,type:"seq",x:r.x+230,y:r.y,props:{preset:n.preset??"half",custom:n.custom??"10 01",dir:n.dir??"fwd"}}),o.edges.push({id:ka("e",a),from:i+".v",to:c+".a"}),l.forEach((u,d)=>{o.nodes.push({id:u,type:"out",x:r.x+460,y:r.y+d*90,props:{pin:t[d]||""}}),o.edges.push({id:ka("e",a),from:`${c}.c${d}`,to:u+".a"})}),{prog:o,ids:[i,c,...l]}}function z_(e,t){let r=(e.pins||[]).slice(0,nf);if(!r.some(Boolean))return t;let n=t&&t.nodes.length?Math.max(...t.nodes.map(i=>i.y))+160:40,{prog:o,ids:s}=ZN(t,r,{x:40,y:n},{period:Math.max(20,Math.round(1e3/Math.max(.5,e.rate||4))),preset:e.preset,custom:e.custom,dir:e.dir<0?"back":"fwd"}),a=new Set(s.slice(2).filter((i,c)=>!r[c]));return{nodes:o.nodes.filter(i=>!a.has(i.id)),edges:o.edges.filter(i=>!a.has(i.to.slice(0,i.to.lastIndexOf("."))))}}var __=e=>/^[A-Za-z_]\w*$/.test(e)?e:"n_"+e.replace(/\W/g,"_"),Rr=(e,t)=>{let r=Number(e);return isFinite(r)?r:t},za=e=>Number.isInteger(e)?String(e):String(+e.toFixed(6));function GN(e,t,r){let n=r.props.pin,o=sf(e,t,n);if(!o)return null;let s=ct(e,o),a=ct(e,String(n)),i=s&&/(\d+)$/.exec(s.name);return!s||!i?null:{gpio:+i[1],name:s.name,ref:a?`${a.part.label}.${a.name}`:String(n)}}function w_(e,t,r,n,o=Ut){let s=n==="micropython",a=[],i=e.parts.find($=>ce($))||null,c=i&&(W[i.type].def.meta||{}).target||null,l=i?W[i.type].def.name:null;i?!c&&!s&&a.push(o("{a}: nincs Arduino-c\xE9lk\xF6rnyezet a le\xEDr\xE1s\xE1ban; az \xE1ltal\xE1nos Arduino-f\xFCggv\xE9nyekkel k\xE9sz\xFClt.",{a:l??""})):a.push(o("Nincs vez\xE9rl\u0151lap a tervben; a l\xE1bsz\xE1mok nem ismertek."));let u=new Map(r.nodes.map($=>[$.id,new Set(r.edges.filter(Z=>Z.to.startsWith($.id+".")).map(Z=>Z.from.slice(0,Z.from.lastIndexOf("."))))])),d=[],f=new Set;for(let $=!0;$;){$=!1;for(let Z of r.nodes)!f.has(Z.id)&&[...u.get(Z.id)].every(y=>f.has(y)||y===Z.id)&&(d.push(Z),f.add(Z.id),$=!0)}for(let $ of r.nodes)f.has($.id)||d.push($);let g=new Map(r.edges.map($=>[$.to,$.from])),h=$=>{let Z=$.lastIndexOf(".");return`${__($.slice(0,Z))}_${$.slice(Z+1)}`},p=($,Z,y)=>{let V=g.get($.id+"."+Z);if(!V)return y==="bool"?s?"False":"false":"0";let Y=V.lastIndexOf("."),Oe=r.nodes.find(U=>U.id===V.slice(0,Y)),j=nt[Oe.type].outs.find(U=>U.id===V.slice(Y+1)).kind,ee=h(V);return j===y?ee:y==="bool"?`(${ee} > 0.5)`:s?`(1 if ${ee} else 0)`:`(${ee} ? 1.0f : 0.0f)`},m=s?"True":"true",b=s?"False":"false",v=s?"not ":"!",_=s?" and ":" && ",z=s?" or ":" || ",k=[],x=[],A=[],G=new Map;for(let $ of d){let Z=nt[$.type],y=__($.id),V=$.props,Y=[],Oe=[],j=[],ee=X=>h($.id+"."+X);for(let X of Z.outs)Oe.push(s?`${ee(X.id)} = ${X.kind==="bool"?b:"0"}`:`${X.kind==="bool"?"bool":"float"} ${ee(X.id)} = ${X.kind==="bool"?b:"0"};`);let U=null;if(Z.params.some(X=>X.type==="pin")){if(U=GN(e,t,$),!U){a.push(`${Z.label} (${$.id}): ${V.pin?"a l\xE1b nincs GPIO-ra k\xF6tve":"nincs kiv\xE1lasztva l\xE1b"}; kimaradt.`);continue}G.has(U.gpio)&&G.get(U.gpio)!==$.id&&a.push(o("{a}: t\xF6bb blokk is haszn\xE1lja ({b}, {c}).",{a:U.name,b:G.get(U.gpio)??"",c:$.id})),G.set(U.gpio,$.id)}let ue=X=>s?`# ${X}`:`// ${X}`;switch($.type){case"in":{let X=V.pull==="pulldown"?s?"Pin.PULL_DOWN":"INPUT_PULLDOWN":V.pull==="float"?s?"None":"INPUT":s?"Pin.PULL_UP":"INPUT_PULLUP",Se=V.active==="high"?1:0;Y.push(s?`${y}_pin = Pin(${U.gpio}, Pin.IN, ${X}) ${ue(`${U.ref} \u2192 ${U.name}`)}`:`pinMode(${U.gpio}, ${X}); ${ue(`${U.ref} \u2192 ${U.name}`)}`),j.push(s?`${ee("v")} = ${y}_pin.value() == ${Se}`:`${ee("v")} = digitalRead(${U.gpio}) == ${Se?"HIGH":"LOW"};`);break}case"adc":s?Y.push(`${y}_adc = ADC(Pin(${U.gpio})) ${ue(`${U.ref} \u2192 ${U.name}`)}`,...c&&c.mpyAtten?[`${y}_adc.atten(ADC.ATTN_11DB) ${ue(o("0\u20133,3 V-os tartom\xE1ny"))}`]:[]):Y.push(ue(o("anal\xF3g bemenet: {a} \u2192 {b}",{a:U.ref,b:U.name}))),j.push(s?`${ee("v")} = ${y}_adc.read_u16() / 65535`:`${ee("v")} = analogRead(${U.gpio}) / 4095.0f;`);break;case"const":j.push(s?`${ee("v")} = ${za(Rr(V.value,1))}`:`${ee("v")} = ${za(Rr(V.value,1))};`);break;case"not":j.push(s?`${ee("v")} = ${v}${p($,"a","bool")}`:`${ee("v")} = ${v}${p($,"a","bool")};`);break;case"and":case"or":case"xor":{let X=p($,"a","bool"),Se=p($,"b","bool"),ht=$.type==="and"?X+_+Se:$.type==="or"?X+z+Se:`${X} != ${Se}`;j.push(s?`${ee("v")} = ${ht}`:`${ee("v")} = ${ht};`);break}case"compare":j.push(s?`${ee("v")} = ${p($,"a","num")} ${V.op==="<"?"<":">"} ${za(Rr(V.value,.5))}`:`${ee("v")} = ${p($,"a","num")} ${V.op==="<"?"<":">"} ${za(Rr(V.value,.5))}f;`);break;case"blink":{let X=Math.max(20,Math.round(Rr(V.period,1e3))),Se=Math.round(X*Math.max(0,Math.min(100,Rr(V.duty,50)))/100);j.push(s?`${ee("v")} = t % ${X} < ${Se}`:`${ee("v")} = t % ${X} < ${Se};`);break}case"toggle":Oe.push(s?`${y}_elozo = False`:`bool ${y}_elozo = false;`),j.push(...s?[`_be = ${p($,"a","bool")}`,`if _be and not ${y}_elozo: ${ue(o("felfut\xF3 \xE9l"))}`,` ${ee("v")} = not ${ee("v")}`,`${y}_elozo = _be`]:[`{ bool be = ${p($,"a","bool")};`,` if (be && !${y}_elozo) ${ee("v")} = !${ee("v")}; ${ue(o("felfut\xF3 \xE9l"))}`,` ${y}_elozo = be; }`]);break;case"counter":{let X=Math.max(1,Math.round(Rr(V.max,4)));Oe.push(s?`${y}_elozo = False`:`bool ${y}_elozo = false;`,s?`${y}_db = 0`:`int ${y}_db = 0;`),j.push(...s?[`_be = ${p($,"a","bool")}`,`if _be and not ${y}_elozo:`,` ${y}_db = (${y}_db + 1) % ${X}`,`${y}_elozo = _be`,`if ${p($,"r","bool")}:`,` ${y}_db = 0`,`${ee("n")} = ${y}_db`,`${ee("f")} = ${X>1?`${y}_db / ${X-1}`:"0"}`]:[`{ bool be = ${p($,"a","bool")};`,` if (be && !${y}_elozo) ${y}_db = (${y}_db + 1) % ${X};`,` ${y}_elozo = be;`,` if (${p($,"r","bool")}) ${y}_db = 0; }`,`${ee("n")} = ${y}_db;`,`${ee("f")} = ${X>1?`${y}_db / ${X-1}.0f`:"0"};`]);break}case"delay":{let X=Math.max(0,Math.round(Rr(V.ms,500))),Se=String(V.mode??"filter"),ht=p($,"a","bool");if(Se==="off")Oe.push(s?`${y}_mikor = -${X}`:`long ${y}_mikor = -${X};`),j.push(...s?[`_be = ${ht}`,"if _be:",` ${y}_mikor = t`,`${ee("v")} = _be or t - ${y}_mikor < ${X} ${ue(o("ut\xE1nfut\xE1s"))}`]:[`{ bool be = ${ht};`,` if (be) ${y}_mikor = (long)t;`,` ${ee("v")} = be || (long)t - ${y}_mikor < ${X}; } ${ue(o("ut\xE1nfut\xE1s"))}`]);else if(Se==="pulse")Oe.push(s?`${y}_mikor = -${X}`:`long ${y}_mikor = -${X};`,s?`${y}_elozo = False`:`bool ${y}_elozo = false;`),j.push(...s?[`_be = ${ht}`,`if _be and not ${y}_elozo and t - ${y}_mikor >= ${X}: ${ue(o("felfut\xF3 \xE9l: impulzus"))}`,` ${y}_mikor = t`,`${y}_elozo = _be`,`${ee("v")} = t - ${y}_mikor < ${X}`]:[`{ bool be = ${ht};`,` if (be && !${y}_elozo && (long)t - ${y}_mikor >= ${X}) ${y}_mikor = (long)t; ${ue(o("felfut\xF3 \xE9l: impulzus"))}`,` ${y}_elozo = be;`,` ${ee("v")} = (long)t - ${y}_mikor < ${X}; }`]);else{Oe.push(s?`${y}_utolso = None`:`int ${y}_utolso = -1;`,s?`${y}_mikor = 0`:`unsigned long ${y}_mikor = 0;`);let ot=Se==="on";j.push(...s?[`_be = ${ht}`,`if _be != ${y}_utolso:`,` ${y}_utolso = _be`,` ${y}_mikor = t`,...ot?[`${ee("v")} = _be and t - ${y}_mikor >= ${X} ${ue(o("bekapcsol\xE1si k\xE9sleltet\xE9s"))}`]:[`if t - ${y}_mikor >= ${X}:`,` ${ee("v")} = _be`]]:[`{ bool be = ${ht};`,` if ((int)be != ${y}_utolso) { ${y}_utolso = be; ${y}_mikor = t; }`,ot?` ${ee("v")} = be && t - ${y}_mikor >= ${X}; } ${ue(o("bekapcsol\xE1si k\xE9sleltet\xE9s"))}`:` if (t - ${y}_mikor >= ${X}) ${ee("v")} = be; }`])}break}case"seq":{let X=of(V.preset,V.custom),Se=X.length,ht=V.dir==="back";Oe.push(...s?[`${y}_minta = [${X.map(Ue=>`'${Ue}'`).join(", ")}]`,`${y}_i = 0`,`${y}_elozo = True ${ue(o("indul\xE1skor nem l\xE9p"))}`]:[`const char* ${y}_minta[${Se}] = {${X.map(Ue=>`"${Ue}"`).join(", ")}};`,`int ${y}_i = 0;`,`bool ${y}_elozo = true; ${ue(o("indul\xE1skor nem l\xE9p"))}`]);let ot=p($,"r","bool"),Pe=p($,"a","bool"),ut=ht?s?`1 if ${ot} else -1`:`${ot} ? 1 : -1`:s?`-1 if ${ot} else 1`:`${ot} ? -1 : 1`;j.push(...s?[`_be = ${Pe}`,`if _be and not ${y}_elozo: ${ue(o("felfut\xF3 \xE9l: k\xF6vetkez\u0151 sor"))}`,` ${y}_i = (${y}_i + (${ut})) % ${Se}`,`${y}_elozo = _be`,...[0,1,2,3].map(Ue=>`${ee("c"+Ue)} = ${y}_minta[${y}_i][${Ue}] == '1'`),`${ee("n")} = ${y}_i`]:[`{ bool be = ${Pe};`,` if (be && !${y}_elozo) ${y}_i = (${y}_i + (${ut}) + ${Se}) % ${Se}; ${ue(o("felfut\xF3 \xE9l: k\xF6vetkez\u0151 sor"))}`,` ${y}_elozo = be; }`,...[0,1,2,3].map(Ue=>`${ee("c"+Ue)} = ${y}_minta[${y}_i][${Ue}] == '1';`),`${ee("n")} = ${y}_i;`]);break}case"out":Y.push(s?`${y}_pin = Pin(${U.gpio}, Pin.OUT) ${ue(`${U.ref} \u2192 ${U.name}`)}`:`pinMode(${U.gpio}, OUTPUT); ${ue(`${U.ref} \u2192 ${U.name}`)}`),j.push(s?`${y}_pin.value(1 if ${p($,"a","bool")} else 0)`:`digitalWrite(${U.gpio}, ${p($,"a","bool")} ? HIGH : LOW);`);break;case"pwm":{let X=Math.max(1,Math.round(Rr(V.freq,1e3)));s?Y.push(`${y}_pwm = PWM(Pin(${U.gpio})) ${ue(`${U.ref} \u2192 ${U.name}`)}`,`${y}_pwm.freq(${X})`):Y.push(`pinMode(${U.gpio}, OUTPUT); ${ue(`${U.ref} \u2192 ${U.name}`)}`,(c?c.pwmFreq:"analogWriteFreq({f});").replace("{pin}",String(U.gpio)).replace("{f}",String(X)));let Se=g.has($.id+".a")?p($,"a","num"):za(Math.max(0,Math.min(100,Rr(V.duty,50)))/100);j.push(s?`${y}_pwm.duty_u16(int(max(0, min(1, ${Se})) * 65535))`:`analogWrite(${U.gpio}, (int)(constrain(${Se}, 0.0f, 1.0f) * 255));`);break}}let xe=ue(`${$.id} \xB7 ${o(Z.label)}`);k.push([$.id,Y]),x.push([$.id,Oe]),A.push([$.id,j.length?[xe,...j]:[]])}let L={},M=[],B=($,Z,y)=>{if(!Z.length)return;let V=M.length+1;for(let Y of Z)M.push(y+Y);$&&(L[$]=L[$]||[]).push([V,M.length])},S=o("Proofboard \u2013 gener\xE1lt program")+(l?` (${l})`:"");if(s){B(null,[`# ${S}`,"# "+o("\xDCtemenk\xE9nt (20 ms) beolvassa a bemeneteket, kisz\xE1molja a blokkokat, \xE9s be\xE1ll\xEDtja a kimeneteket."),"from machine import Pin, ADC, PWM","import time","","# --- "+o("l\xE1bak")+" ---"],"");for(let[$,Z]of k)B($,Z,"");B(null,["","# --- "+o("blokkok \xE9rt\xE9kei \xE9s \xE1llapota")+" ---"],"");for(let[$,Z]of x)B($,Z,"");B(null,["","kezdet = time.ticks_ms()","while True:"," t = time.ticks_diff(time.ticks_ms(), kezdet)"],"");for(let[$,Z]of A)B($,Z," ");B(null,[" time.sleep_ms(20)"],"")}else{B(null,[`// ${S}`,"// "+o("\xDCtemenk\xE9nt (20 ms) beolvassa a bemeneteket, kisz\xE1molja a blokkokat, \xE9s be\xE1ll\xEDtja a kimeneteket."),...c?[`// ${o("Lap")}: ${c.fqbn}${c.boardUrl?` (${o("alaplapkezel\u0151")}: ${c.boardUrl})`:""}`]:[],"","// --- "+o("blokkok \xE9rt\xE9kei \xE9s \xE1llapota")+" ---"],"");for(let[$,Z]of x)B($,Z,"");B(null,["","void setup() {"," analogReadResolution(12);"],"");for(let[$,Z]of k)B($,Z," ");B(null,["}","","void loop() {"," unsigned long t = millis();"],"");for(let[$,Z]of A)B($,Z," ");B(null,[" delay(20);","}"],"")}return{lang:n,file:s?"main.py":"proofboard.ino",code:M.join(`
136
136
  `)+`
137
- `,lines:D,warnings:a,board:c,target:l}}var v_=[["#fff3bf",E("s\xE1rga")],["#d3f9d8",E("z\xF6ld")],["#d0ebff",E("k\xE9k")],["#ffe3e3",E("piros")],["#f1f3f5",E("sz\xFCrke")]],ba=()=>({v:1,board:{rows:78,cols:39,sec:3},parts:[],bridges:[],wires:[],links:[],auto:{bridges:[],wires:[]},customParts:{},notes:[],gpio:{},pwm:{},settings:{usb:!0,btnMode:"hold",autoRoute:!0},seq:1}),Qp=e=>(Array.isArray(e)?e:[]).filter(t=>Array.isArray(t)&&t.length>=2).map(t=>[Math.round(+t[0]),Math.round(+t[1]),+t[2]?1:0]).filter(t=>t.every(Number.isFinite)),z_=e=>{let t=e;return[Number(t[0]),Number(t[1])]},ef=4e3;function Ml(e){if(!e||typeof e!="object")throw new Error("nem objektum");let t=e,r=ba();t.board&&Object.assign(r.board,t.board);for(let[s,a]of Object.entries(t.customParts||{}))!/^c_[a-z0-9_]+$/.test(s)||s in Ir||la(ia(a))||(r.customParts[s]=a);let n=Bz();for(let s of t.parts||[])s&&typeof s.type=="string"&&!(s.type in Ir)&&!(s.type in r.customParts)&&n[s.type]&&(r.customParts[s.type]=n[s.type]);Co(r.customParts),r.parts=(t.parts||[]).map((s,a)=>{if(!W[s.type])throw new Error("ismeretlen alkatr\xE9sz: "+s.type);return{id:s.id||"p"+(1e3+a),type:s.type,label:s.label||W[s.type].prefix+(a+1),r:s.r|0,c:s.c|0,rot:(s.rot|0)&3,mir:!!s.mir,...s.xray?{xray:!0}:{},...s.fixed?{fixed:!0}:{},...typeof s.plug=="string"&&s.plug?{plug:s.plug}:{},props:{...W[s.type].props,...s.props||{}}}});for(let s of r.parts)s.plug&&!r.parts.some(a=>a.id===s.plug)&&delete s.plug;r.bridges=(t.bridges||[]).filter(s=>Array.isArray(s)&&s.length===4).map(s=>s.map(Number)),r.wires=(t.wires||[]).filter(s=>s&&s.a&&s.b).map(s=>({a:z_(s.a),b:z_(s.b),color:s.color||"#1c7ed6"})),r.gpio=t.gpio||{},r.pwm=t.pwm&&typeof t.pwm=="object"?t.pwm:{},r.settings={...r.settings,...t.settings||{}},r.notes=(Array.isArray(t.notes)?t.notes:[]).filter(s=>s&&isFinite(+s.r)&&isFinite(+s.c)).map((s,a)=>({id:String(s.id||"n"+(a+1)),r:+s.r,c:+s.c,w:Math.max(3,Math.min(60,+s.w||10)),h:Math.max(2,Math.min(60,+s.h||6)),text:String(s.text??""),color:v_.some(i=>i[0]===s.color)?s.color:v_[0][0],target:s.target?String(s.target):null})),r.links=(t.links||[]).filter(s=>s&&s.a&&s.b).map((s,a)=>({id:s.id||"l"+(5e3+a),a:String(s.a),b:String(s.b),gpio:s.gpio||null}));let o=t.auto||{};r.auto={bridges:(o.bridges||[]).filter(s=>Array.isArray(s)&&s.length>=4).map(s=>[...s.slice(0,4).map(Number),Array.isArray(s[4])?s[4]:s[4]?[s[4]]:[]]),wires:(o.wires||[]).filter(s=>s&&s.a&&s.b).map(s=>({a:s.a,b:s.b,color:s.color||"#7048e8",links:s.links||(s.link?[s.link]:[])})),cuts:Qp(o.cuts)},r.cuts=Qp(t.cuts);{let s=Qp(t.cutBan);s.length?r.cutBan=s:delete r.cutBan}typeof t.id=="string"&&/^[\w-]{4,64}$/.test(t.id)&&(r.id=t.id),typeof t.brief=="string"&&t.brief.trim()&&(r.brief=t.brief.slice(0,ef));{let s=f_(t.program);s&&s.nodes.length&&(r.program=s)}if(t.signal&&typeof t.signal=="object"){let s=t.signal,a=b_({preset:String(s.preset||"half"),custom:String(s.custom||""),pins:(Array.isArray(s.pins)?s.pins:[]).slice(0,8).map(i=>i?String(i):null),step:+s.step||0,rate:+s.rate||4,dir:+s.dir<0?-1:1},r.program);a&&a.nodes.length&&(r.program=a)}return r.seq=Math.max(t.seq||1,...r.parts.map(s=>+String(s.id).replace(/\D/g,"")+1||1),...r.links.map(s=>+String(s.id).replace(/\D/g,"")+1||1)),r}function __(e,t={}){s_();let r=t.pressed||new Set,n=Cr(e,{pressed:d=>No(d)&&r.has(d.id)}),o=qp(e,n,{running:!0}),s=e.program&&e.program.nodes.length?e.program:null;if(!s)return{A:n,SIM:o,prog:null,t:0};let a=m_(),i=t.tick||20,l=Math.max(0,t.ms||0),c=0,u=null;for(;;){let d=new Map(o.gpios.map(p=>[p.p.id+"."+p.q.id,{level:!p.powered||p.float?null:p.V>=2?1:p.V<=.8?0:null,V:p.V}]));if(u=h_(e,n,s,a,c,p=>d.get(p)||null),o=qp(g_(e,u),n,{running:!0}),c>=l)break;c=Math.min(l,c+i)}return{A:n,SIM:o,prog:u,t:c}}var ir=8,Vo=(e,t,r)=>t>=0&&r>=0&&t<e.board.rows&&r<e.board.cols,IN=(e,t,r)=>t>=-ir-.5&&r>=-ir-.5&&t<=e.board.rows+ir-.5&&r<=e.board.cols+ir-.5;function Fo(e,t){let r=me(t);if(Ae(t)){let n=W[t.type].bounds(t),o=[[n.r0,n.c0],[n.r0,n.c1],[n.r1,n.c0],[n.r1,n.c1]].map(([s,a])=>It(t,s,a));return r.every(s=>!Vo(e,s.r,s.c))&&o.every(([s,a])=>IN(e,s,a))}return r.some(n=>Vo(e,n.r,n.c))&&r.every(n=>n.r>=-ir&&n.c>=-ir&&n.r<e.board.rows+ir&&n.c<e.board.cols+ir)}function w_(e,t){let r=W[t].prefix,n=0;for(let o of e.parts){let s=new RegExp("^"+r+"(\\d+)$").exec(o.label);s&&(n=Math.max(n,+s[1]))}return r+(n+1)}function tf(e,t,r,n,o={}){return{id:"ghost",type:t,label:W[t].prefix,r,c:n,rot:o.rot||0,mir:!!o.mir,xray:!!o.xray,props:{...W[t].props,...o.props||{}}}}function x_(e,t,r,n,o={}){if(!W[t])return null;let s=tf(e,t,r,n,o);if(!Fo(e,s))return null;let a={...s,id:"p"+e.seq++,label:o.label||w_(e,t)};return a.xray||delete a.xray,e.parts.push(a),a}function TN(e,t){e.links=e.links.filter(r=>!r.a.startsWith(t+".")&&!r.b.startsWith(t+"."))}function S_(e,t){let r=new Set(t);for(let n of e.parts)r.has(n.id)&&n.plug&&r.add(n.plug);e.parts=e.parts.filter(n=>!r.has(n.id)),r.forEach(n=>TN(e,n));for(let n of e.parts)n.plug&&r.has(n.plug)&&delete n.plug}function P_(e,t,r){if(e.links.some(o=>o.a===t&&o.b===r||o.a===r&&o.b===t))return null;let n={id:"l"+e.seq++,a:t,b:r,gpio:null};return e.links.push(n),n}function $_(e,t){if(!Ae(t))return null;{let s=Wz(e,t);if(s){t.plug=s.id;let a=Jz(e);return e.links=e.links.filter(i=>!a.has(i.id)),s}}let r=qz();if(!r)return null;let n=Kz(e,t,W[t.type].pins(t).length);if(!n)return null;let o={id:"p"+e.seq++,type:r,label:w_(e,r),r:n.r,c:n.c,rot:n.rot,mir:!1,props:{...W[r].props,...Hz(W[r].def,t)}};return e.parts.push(o),t.plug=o.id,o}function E_(e,t,r,n,o,s={}){let a={id:"n"+e.seq++,r:t,c:r,w:s.w??12,h:s.h??6,text:n,color:o,target:s.target??null};return e.notes=[...e.notes||[],a],a}function ya(e,t){return e.parts.flatMap(me).find(r=>r.name===t&&r.role==="gpio")||null}function A_(e,t,r){let n=ya(e,t);return!n||!Zn.some(o=>o[0]===r)||!da(n,r)?!1:(e.gpio[n.part.id+"."+n.id]=r,!0)}function O_(e,t,r,n,o=s=>fa(e,s)){let s=ya(e,t);if(!s||!da(s,"pwm"))return!1;let a=s.part.id+"."+s.id;return e.gpio[a]="pwm",e.pwm={...e.pwm||{},[a]:{...o(a),...r!=null?{duty:r}:{},...n!=null?{freq:n}:{}}},!0}var Ze=(e,t=!1)=>({text:e,changed:t}),he=e=>({text:e,isError:!0}),ft=(e,t)=>gz(e,t,"en"),lt=e=>typeof e=="number"&&isFinite(e)?e:typeof e=="string"&&e.trim()!==""&&isFinite(+e)?+e:null,Se=e=>e==null?"":String(e);function _r(e,t){let r=t.trim().toLowerCase();return e.parts.find(n=>n.label.toLowerCase()===r)||null}function ka(e,t){let r=t.indexOf(".");if(r<0)return null;let n=_r(e,t.slice(0,r));if(!n)return null;let o=t.slice(r+1).trim().toLowerCase(),s=me(n),a=s.find(i=>i.id.toLowerCase()===o)||s.find(i=>i.name.toLowerCase()===o)||s.find(i=>ft(i.name).toLowerCase()===o);return a?{p:n,q:a,ref:n.id+"."+a.id}:null}function rf(e,t){let r=t.indexOf("."),n=e.parts.find(s=>s.id===t.slice(0,r));if(!n)return t;let o=me(n).find(s=>s.id===t.slice(r+1));return n.label+"."+(o?o.name!==o.id&&!ce(n)?o.id:o.name:t.slice(r+1))}function I_(e){let t=W[e.type].bounds(e),r=[[t.r0,t.c0],[t.r1,t.c1],[t.r0,t.c1],[t.r1,t.c0]].map(([l,c])=>It(e,l,c)),n=Math.ceil(Math.min(...r.map(l=>l[0]))),o=Math.floor(Math.max(...r.map(l=>l[0]))),s=Math.ceil(Math.min(...r.map(l=>l[1]))),a=Math.floor(Math.max(...r.map(l=>l[1]))),i=new Set;for(let l=n;l<=o;l++)for(let c=s;c<=a;c++)i.add(l+":"+c);for(let l of me(e))i.add(l.r+":"+l.c);return i}function of(e,t){if(Ae(t))return[];let r=I_(t),n=[];for(let o of e.parts)if(!(o.id===t.id||Ae(o))){for(let s of I_(o))if(r.has(s)){n.push(o.label);break}}return n}function sf(e,t){if(Ae(t))return[];let r=gn(e),n=(c,u)=>Vo(e,c,u)&&!r.drilled(c,u)?r.cell(c,u):null,o=new Map;for(let[c,u]of W[t.type].internal(t)){let d=o.get(c)||c;o.set(c,d),o.set(u,d)}let s=c=>o.get(c)||c,a=me(t),i=[],l=new Map;for(let c of a){let u=n(c.r,c.c);u!=null&&(l.has(u)||l.set(u,[]),l.get(u).push(c))}for(let c of l.values())for(let u=1;u<c.length;u++)s(c[u].id)!==s(c[0].id)&&i.push(`${t.label}.${Dl(t,c[0])} and ${t.label}.${Dl(t,c[u])} share a strip section (shorted)`);for(let c of e.parts)if(!(c.id===t.id||Ae(c)))for(let u of me(c)){let d=n(u.r,u.c);d==null||!l.has(d)||i.push(`${t.label}.${Dl(t,l.get(d)[0])} shares a strip section with ${c.label}.${Dl(c,u)}`)}return i}function NN(e,t,r){let{rows:n,cols:o}=e.board,s=r||{r:0,c:0},a=[],i=Ae(t)?-ir:0,l=Ae(t)?n+ir:n,c=Ae(t)?o+ir:o;for(let u=i;u<l;u++)for(let d=i;d<c;d++)a.push([Math.abs(u-s.r)+Math.abs(d-s.c),u,d]);a.sort((u,d)=>u[0]-d[0]||u[1]-d[1]||u[2]-d[2]);for(let[,u,d]of a){let p={...t,r:u,c:d};if(Fo(e,p)&&!of(e,p).length&&!sf(e,p).length)return{r:u,c:d}}return null}var Vl=e=>ft(W[e].name),Dl=(e,t)=>ce(e)?t.name:t.id,af=e=>e.rot*90+"\xB0"+(e.mir?" mirrored":""),va=e=>typeof e=="number"?+e.toPrecision(4):e;function Ll(e){let t=Ol(e);return(W[e.type].def.params||[]).filter(n=>n.type!=="span"&&n.type!=="names").map(n=>`${n.key}=${va(t[n.key])}${n.unit?n.unit:""}`).join(", ")}var T_=e=>({...e.library?e.library():{},...e.D().customParts||{}}),RN={fixed:"fixed",mcu:"controller",control:"control",manual:"hand-wired",off:"off-board",scope:'not in "only"'};function C_(e,t){let r=lt(t.strength);if(r!=null&&(r<0||r>1))return{error:"strength must be between 0 and 1."};let n=null;if(Array.isArray(t.only)){let o=t.only.map(Se),s=o.map(i=>_r(e,i)),a=o.filter((i,l)=>!s[l]);if(a.length)return{error:`Unknown label(s): ${a.join(", ")}`};n=s.map(i=>i.id)}return c_(e,{strength:r??.5,only:n,keepMcu:t.keep_mcu!==!1,keepControls:t.keep_controls!==!1})}function nf(e,t){let r=s=>`${s.stats.box?s.stats.rows+"\xD7"+s.stats.cols:"-"} holes, ${s.bridges} bridges, ${s.wires} wires, ${s.linksOk}/${s.links} connected`,n=Object.entries(e.kept).filter(([,s])=>s!=="off").map(([s,a])=>`${s} (${RN[a]})`),o=[e.moves.length?t?"Compacted.":"Compaction preview (not applied).":"No better layout found with these settings; nothing changed.",`Before: ${r(e.before)}`,`After: ${r(e.after)}`];return e.moves.length&&o.push("Moves: "+e.moves.map(s=>`${s.label} ${s.from.r},${s.from.c} \u2192 ${s.to.r},${s.to.c}${s.to.rot!==s.from.rot?` rot ${s.to.rot*90}\xB0`:""}`).join("; ")),n.length&&o.push("Stays in place: "+n.join(", ")),o.join(`
138
- `)}function M_(e,t=Gt){let r=Cr(e),n=Do(e,r),o=d_(e,{A0:r,AS:r,SIM:null,linkState:n,tr:t});return{A:r,issues:o,states:n}}function N_(e,t=Gt){let{issues:r,states:n}=M_(e,t),o=e.board,s=[],a=o.sec>=o.rows?"full-length vertical strips (stripboard)":o.sec<=1?"isolated pads (dot grid, no strips)":`vertical strips cut into sections of ${o.sec} rows`;if(s.push(e.brief?`Project notes (kept by you and the user; update with set_project_notes):
139
- ${e.brief}`:"Project notes: none yet (record the goal and key decisions with set_project_notes once agreed)."),s.push(`Board: ${o.rows} rows \xD7 ${o.cols} columns, ${a}. Holes are (row, col), 0-based; a strip is one column.`),s.push(`Settings: auto-routing ${e.settings.autoRoute?"on":"off"}, automatic strip cuts ${e.settings.autoCut===!1?"off":"on"}.`),!e.parts.length)s.push("Parts: none.");else{s.push(`Parts (${e.parts.length}):`);for(let c of e.parts){let u=me(c),d=u.length<=8?" pins "+u.map(m=>`${m.name!==m.id&&!ce(c)?m.id+"/"+ft(m.name):m.name}@${m.r},${m.c}`).join(" "):` ${u.length} pins`,p=Ll(c);s.push(`- ${c.label}: ${Vl(c.type)} [${c.type}] at ${c.r},${c.c} rot ${af(c)}${c.fixed?", FIXED by the user (do not move)":""}${Ae(c)?", off-board"+(c.plug?" (plugged into "+(e.parts.find(m=>m.id===c.plug)||{label:"?"}).label+")":""):""}${p?"; "+p:""};${d}`)}}if(e.links.length){s.push(`Connections (${e.links.length}, routed automatically when auto-routing is on):`);for(let c of e.links){let u=n.get(c.id),d=u?u.ok?u.cable?"via cable":u.wire?"via wire":u.nb?`via ${u.nb} bridge(s)`:"connected":"NOT connected":"";s.push(`- ${rf(e,c.a)} \u2192 ${c.b==="GND"||c.b==="GPIO"?c.b:rf(e,c.b)}${u&&u.gpio&&c.b==="GPIO"?" ("+u.gpio+")":""}: ${d}`)}}else s.push("Connections: none.");{let c=ma(e);c.box&&s.push(`Footprint: rows ${c.box.r0}\u2013${c.box.r1}, columns ${c.box.c0}\u2013${c.box.c1} (${c.rows}\xD7${c.cols} holes, ${Math.round(c.area/c.boardArea*100)}% of the board); part bodies fill ${Math.round(c.fill*100)}% of it. Keep layouts compact: place parts close to what they connect to.`)}s.push(`Wiring: ${e.auto.bridges.length} auto bridges, ${e.auto.wires.length} auto wires, ${e.bridges.length} manual bridges, ${e.wires.length} manual wires, ${(e.cuts||[]).length+(e.auto.cuts||[]).length} strip cuts.`);let i=Object.entries(e.gpio||{}).filter(([,c])=>c);i.length&&s.push("GPIO modes: "+i.map(([c,u])=>`${rf(e,c)}=${u}`).join(", ")),e.program&&e.program.nodes.length&&s.push(`Program: ${e.program.nodes.length} blocks (${[...new Set(e.program.nodes.map(c=>c.type))].join(", ")}).`);let l=r.filter(c=>c.sev!=="info");return s.push(l.length?`Problems (${l.length}):
140
- `+l.slice(0,20).map(c=>`- [${c.sev}] ${c.msg}`).join(`
141
- `)+(l.length>20?`
142
- \u2026 ${l.length-20} more`:""):"Problems: none."),e.notes&&e.notes.length&&s.push(`Notes: ${e.notes.length}.`),s.join(`
143
- `)}var q={str:e=>({type:"string",description:e}),int:e=>({type:"integer",description:e}),num:e=>({type:"number",description:e}),bool:e=>({type:"boolean",description:e}),arr:(e,t)=>({type:"array",items:e,description:t}),obj:(e,t=[])=>({type:"object",properties:e,required:t,additionalProperties:!1})};function jN(e,t,r){let n=(W[e].def.params||[]).find(s=>s.key===t);if(!n)return{error:`${Vl(e)} has no parameter "${t}" (valid: ${(W[e].def.params||[]).map(s=>s.key).join(", ")||"none"})`};if(n.type==="select"||n.type==="color"){let s=(n.options||[]).find(a=>String(a.v)===String(r)||ft(a.label).toLowerCase()===String(r).toLowerCase());return s?{v:s.v}:{error:`"${t}" must be one of: ${(n.options||[]).map(a=>`${a.v} (${ft(a.label)})`).join(", ")}`}}if(n.type==="names")return{v:Se(r)};if(n.type==="span")return{error:`"${t}" is a pin-spacing parameter; set "dr" and "dc" (row/column offset of the second pin)`};let o=lt(r);return o==null?{error:`"${t}" must be a number${n.unit?" in "+n.unit:""}`}:n.min!=null&&o<n.min||n.max!=null&&o>n.max?{error:`"${t}" must be between ${n.min??"-\u221E"} and ${n.max??"\u221E"}`}:{v:n.type==="int"?Math.round(o):o}}function R_(e,t,r={}){let n={...r};if(t==null)return{props:n};if(typeof t!="object")return{error:"params must be an object"};let o=(W[e].def.params||[]).find(s=>s.type==="span");for(let[s,a]of Object.entries(t)){if(o&&(s==="dr"||s==="dc")){let l=lt(a);if(l==null)return{error:`"${s}" must be an integer`};n[s]=Math.round(l);continue}let i=jN(e,s,a);if("error"in i)return i;n[s]=i.v}return{props:n}}function j_(e,t){return`${t.label} (${Vl(t.type)}) at ${t.r},${t.c} rot ${af(t)}; pins `+me(t).map(r=>`${r.id===r.name?r.id:r.id+"/"+ft(r.name)}@${r.r},${r.c}${Vo(e,r.r,r.c)?"":"(off-board)"}`).join(" ")}var lf=[{name:"get_design",mutates:!1,description:"Get a compact text summary of the current design: board, parts (label, type, position, rotation, parameters, pin positions), connections with routing status, wiring counts, GPIO modes, program, and problems. Call this first, and again after changes when you need fresh state.",input_schema:q.obj({}),run:e=>Ze(N_(e.D(),e.tr))},{name:"list_part_types",mutates:!1,description:"Search the part catalog (built-in and the user's own parts). Returns type keys, names, categories and footprints. Use the type key with place_part. Query matches name, category, footprint or pin names, in English or Hungarian; empty query lists everything.",input_schema:q.obj({query:q.str('search words, e.g. "led", "resistor", "button", "esp32"')}),run(e,t){let r=Se(t.query),n=Object.values(W).filter(o=>!r||Pz(o.def,r,ft));return n.length?Ze(n.map(o=>`${o.type}: ${ft(o.name)} \u2014 ${ft(o.cat)}; ${ft(o.fp)}${o.def.mount==="off"?"; off-board (cable)":""}`).join(`
144
- `)):Ze(`No part type matches "${r}". Try a broader word, or an empty query.`)}},{name:"describe_part_type",mutates:!1,description:"Details of one part type: pins (id, name, role, capabilities), parameters (key, type, default, unit, options), help text. Use before placing an unfamiliar part or setting its parameters.",input_schema:q.obj({type:q.str("part type key from list_part_types")},["type"]),run(e,t){let r=W[Se(t.type)];if(!r)return he(`Unknown part type "${Se(t.type)}". Use list_part_types.`);let n={id:"x",type:r.type,label:r.prefix,r:0,c:0,rot:0,mir:!1,props:{...r.props}},o=r.pins(n).map(i=>`${i.id}${i.name!==i.id?"/"+ft(i.name):""} (${i.role}${i.caps&&i.caps.length?"; "+i.caps.join(","):""}) @${i.lr},${i.lc}`),s=(r.def.params||[]).map(i=>`${i.key}: ${i.type}${i.unit?" ["+i.unit+"]":""}, default ${JSON.stringify(i.default)}${i.options?", options "+i.options.map(l=>`${l.v}=${ft(l.label)}`).join("|"):""}${i.min!=null||i.max!=null?`, range ${i.min??""}..${i.max??""}`:""} \u2014 ${ft(i.label)}`),a=r.def.meta&&typeof r.def.meta.help=="string"?ft(r.def.meta.help):"";return Ze([`${r.type}: ${ft(r.name)} (${ft(r.cat)}; ${ft(r.fp)}); label prefix ${r.prefix}${r.def.mount==="off"?"; off-board part: placed beside the board, connected by cable via a header (attach_plug)":""}`,`Pins (local offsets at rotation 0): ${o.join("; ")}`,s.length?`Parameters:
137
+ `,lines:L,warnings:a,board:l,target:c}}function Fl(e,t={}){Qp();let r=t.pressed||new Set,n=lr(e,{pressed:d=>Jr(d)&&r.has(d.id)}),o=Vo(e,n,{running:!0}),s=e.program&&e.program.nodes.length?e.program:null;if(!s)return{A:n,SIM:o,prog:null,t:0};let a=af(),i=t.tick||20,c=Math.max(0,t.ms||0),l=0,u=null;for(;;){let d=new Map(o.gpios.map(f=>[f.p.id+"."+f.q.id,{level:!f.powered||f.float?null:f.V>=2?1:f.V<=.8?0:null,V:f.V}]));if(u=lf(e,n,s,a,l,f=>d.get(f)||null),o=Vo(va(e,u),n,{running:!0}),l>=c)break;l=Math.min(c,l+i)}return{A:n,SIM:o,prog:u,t:l}}function x_(e,t){Qp();let r=t.tick||20,n=Math.max(0,t.ms),o=Math.max(r,t.every||Math.max(r,Math.round(n/20/r)*r||r)),s=t.presses||[],a=p=>new Set(s.filter(m=>p>=m.from&&(m.to==null||p<m.to)).map(m=>m.part)),i=e.program&&e.program.nodes.length?e.program:null,c=af(),l=[],u="",d=lr(e),f=Vo(e,d,{running:!0}),g=null,h=0;for(let p=0;;p=Math.min(n,p+r)){let m=a(p),b=[...m].sort().join(",");if(b!==u&&(u=b,d=lr(e,{pressed:v=>Jr(v)&&m.has(v.id)}),f=Vo(va(e,g),d,{running:!0})),i){let v=new Map(f.gpios.map(_=>[_.p.id+"."+_.q.id,{level:!_.powered||_.float?null:_.V>=2?1:_.V<=.8?0:null,V:_.V}]));g=lf(e,d,i,c,p,_=>v.get(_)||null),f=Vo(va(e,g),d,{running:!0})}if(p>=h||p>=n){h=p+o;let v={},_=new Set(Object.keys(g?g.gpio:{}));for(let z of f.gpios)_.has(z.p.id+"."+z.q.id)&&(v[z.p.label+"."+z.q.name]=z.mode==="pwm"?`pwm ${(va(e,g).pwm||{})[z.p.id+"."+z.q.id]?.duty??"?"}%`:z.V>=2?"1":z.V<=.8?"0":"?");l.push({t:p,vals:Object.fromEntries(c.vals),gpio:v,leds:Object.fromEntries(f.leds.filter(z=>z.light).map(z=>[z.p.label,z.on&&z.I>1e-4]))})}if(p>=n)break}return{samples:l,errors:g?g.errors:new Map}}var UN=184,qN=56,S_=28,P_=e=>{let t=nt[e.type];return 30+22*Math.max(t.ins.length,t.outs.length,1)+48+12+16},Bo=e=>e.program||(e.program={nodes:[],edges:[]}),$_=(e,t)=>{let r=1;for(;t.some(n=>n.id===e+r);)r++;return e+r},kn=e=>e.slice(0,e.lastIndexOf(".")),Bl=e=>e.slice(e.lastIndexOf(".")+1);function E_(e,t,r){let n=nt[e],o={};for(let[s,a]of Object.entries(t)){let i=n.params.find(c=>c.key===s);if(!i)return{error:`Block type "${e}" has no parameter "${s}" (has: ${n.params.map(c=>c.key).join(", ")||"none"}).`};if(i.type==="pin"){if(a===""||a==null){o[s]="";continue}let c=r(String(a));if(!c)return{error:`Unknown pin "${String(a)}" for ${s} (use "LABEL.PIN", e.g. "S1.A1" or "PICO1.GP15").`};o[s]=c}else if(i.type==="number"){let c=Number(a);if(!isFinite(c))return{error:`${s} must be a number.`};if(i.min!=null&&c<i.min||i.max!=null&&c>i.max)return{error:`${s} must be between ${i.min??"-\u221E"} and ${i.max??"\u221E"}${i.unit?" "+i.unit:""}.`};o[s]=c}else if(i.type==="select"){let c=String(a);if(!i.options.some(l=>l[0]===c))return{error:`${s} must be one of: ${i.options.map(l=>l[0]).join(", ")}.`};o[s]=c}else o[s]=String(a)}return{props:o}}function A_(e,t,r={},n){let o=nt[t];if(!o)return null;let s=Bo(e),a={};for(let l of o.params)a[l.key]=l.default;Object.assign(a,r);let i=n||{x:40,y:s.nodes.length?Math.max(...s.nodes.map(l=>l.y+P_(l)))+S_:40},c={id:$_("n",s.nodes),type:t,x:i.x,y:i.y,props:a};return s.nodes.push(c),c}function O_(e,t,r){let n=Bo(e),o=n.nodes.find(l=>l.id===kn(t)),s=n.nodes.find(l=>l.id===kn(r));if(!o)return`No block "${kn(t)}".`;if(!s)return`No block "${kn(r)}".`;let a=nt[o.type],i=nt[s.type];if(!a.outs.some(l=>l.id===Bl(t)))return`Block ${o.id} (${o.type}) has no output "${Bl(t)}" (outputs: ${a.outs.map(l=>l.id).join(", ")||"none"}).`;if(!i.ins.some(l=>l.id===Bl(r)))return`Block ${s.id} (${s.type}) has no input "${Bl(r)}" (inputs: ${i.ins.map(l=>l.id).join(", ")||"none"}).`;n.edges=n.edges.filter(l=>l.to!==r);let c={id:$_("e",n.edges),from:t,to:r};return n.edges.push(c),c}function I_(e,t){let r=Bo(e),n=new Set(t),o=r.nodes.length;return r.nodes=r.nodes.filter(s=>!n.has(s.id)),r.edges=r.edges.filter(s=>!n.has(kn(s.from))&&!n.has(kn(s.to))),o-r.nodes.length}function T_(e,t,r){let n=Bo(e),o=n.edges.length;return n.edges=n.edges.filter(s=>!(s.to===t&&(!r||s.from===r))),o-n.edges.length}function C_(e){let t=e.nodes.map(l=>l.id),r=new Map(t.map(l=>[l,[]]));for(let l of e.edges){let u=kn(l.from),d=kn(l.to);u!==d&&r.has(d)&&r.get(d).push(u)}let n=new Map,o=new Set,s=l=>{if(n.has(l))return n.get(l);if(o.has(l))return 0;o.add(l);let u=Math.max(-1,...r.get(l).map(s))+1;return o.delete(l),n.set(l,u),u};t.forEach(s);let a=Math.max(0,...n.values());for(let l of e.nodes)!nt[l.type].outs.length&&r.get(l.id).length&&n.set(l.id,a);let i=[];for(let l of e.nodes)(i[n.get(l.id)]||=[]).push(l);let c=new Map;i.forEach((l,u)=>{if(!l)return;let d=g=>{let h=r.get(g.id).filter(p=>c.has(p));return h.length?h.reduce((p,m)=>p+c.get(m),0)/h.length:u===0?e.nodes.indexOf(g):1e6+e.nodes.indexOf(g)};l.sort((g,h)=>d(g)-d(h));let f=40;l.forEach((g,h)=>{c.set(g.id,h),g.x=40+u*(UN+qN),g.y=f,f+=P_(g)+S_})})}function N_(e){let{ok:t,err:r,en:n,num:o,str:s,S:a}=e,i=h=>typeof h=="boolean"?h?"1":"0":typeof h=="number"?String(Math.round(h*1e3)/1e3):"\u2013",c=(h,p)=>nt[p.type].params.map(m=>{let b=p.props[m.key];return m.when&&String(p.props[m.when.key])!==m.when.is?null:`${m.key}=${m.type==="pin"?b?e.pinLabelOf(h,String(b)):"(none)":JSON.stringify(b)}${m.unit&&m.type==="number"?m.unit:""}`}).filter(Boolean).join(", "),l=(h,p)=>h.program?h.program.nodes.find(m=>m.id===p.trim()):void 0,u=(h,p=!1)=>{h.commit(),h.showProgram&&h.showProgram(p)},d=(h,p,m)=>E_(p,m&&typeof m=="object"?m:{},b=>{let v=e.pinOf(h,b);return v?v.ref:null}),f=h=>{let p=h.program;if(!p||!p.nodes.length)return"The program is empty. Add blocks with add_block (see list_block_types).";let{prog:m}=Fl(h,{ms:0}),b=m?m.errors:new Map,v=[`Blocks (${p.nodes.length}):`];for(let z of p.nodes){let k=nt[z.type],x=c(h,z);v.push(`- ${z.id}: ${z.type} (${n(k.label)})${x?" \u2014 "+x:""}${b.has(z.id)?" \u2014 PROBLEM: "+n(b.get(z.id)):""}`)}v.push(p.edges.length?`Connections (${p.edges.length}): `+p.edges.map(z=>`${z.from} \u2192 ${z.to}`).join("; "):"Connections: none");let _=p.nodes.flatMap(z=>nt[z.type].ins.filter(k=>!p.edges.some(x=>x.to===z.id+"."+k.id)).map(k=>`${z.id}.${k.id}`));return _.length&&v.push("Unconnected inputs (read as 0/false): "+_.join(", ")),v.join(`
138
+ `)},g={type:"array",description:'button presses during the run: [{ "button": "S1", "from_ms": 200, "to_ms": 400 }] (to_ms omitted = held to the end)',items:{type:"object",properties:{button:a.str("button label"),from_ms:a.int("press start (ms)"),to_ms:a.int("release (ms)")},required:["button","from_ms"]}};return[{name:"list_block_types",mutates:!1,description:"Block types of the visual program (shown in the Program view; firmware code is generated from it): inputs and outputs (id: bool|num), parameters (key, type, default, options) and what each block does.",input_schema:a.obj({}),run(){return t(Object.entries(nt).map(([h,p])=>`${h} \u2014 ${n(p.label)} [${n(p.cat)}]: ${n(p.help)}
139
+ in: ${p.ins.map(m=>`${m.id}:${m.kind}`).join(", ")||"\u2013"}; out: ${p.outs.map(m=>`${m.id}:${m.kind}`).join(", ")||"\u2013"}; params: ${p.params.map(m=>`${m.key} (${m.type}${m.options?": "+m.options.map(b=>b[0]).join("|"):""}${m.unit?", "+m.unit:""}; default ${JSON.stringify(m.default)})`).join(", ")||"\u2013"}`).join(`
140
+ `)+`
141
+ Pins are part pins ("S1.A1", "R1.1" or a controller pin "PICO1.GP15"); the program follows the wiring to the GPIO. A bool output can drive a num input (0/1) and vice versa (> 0.5 = true).`)}},{name:"get_program",mutates:!1,description:'The visual block program: blocks (id, type, parameters, pin references, problems such as "pin not wired to a GPIO"), connections and unconnected inputs.',input_schema:a.obj({}),run(h){return t(f(h.D()))}},{name:"add_block",mutates:!0,description:'Add a block to the visual program (it appears in the Program view). Give parameters by key, pins as part pins ("S1.A1", "R1.1"). Returns the new block id (e.g. n3) to use in connect_blocks. Call arrange_program when done adding blocks.',input_schema:a.obj({type:a.str('block type from list_block_types (e.g. "in", "blink", "toggle", "out", "pwm")'),params:{type:"object",description:'parameters, e.g. {"pin": "R1.1"} or {"period": 500}'}},["type"]),run(h,p){let m=h.D(),b=s(p.type);if(!nt[b])return r(`Unknown block type "${b}". Use list_block_types.`);let v=d(m,b,p.params);if("error"in v)return r(v.error);let _=A_(m,b,v.props);u(h);let z=nt[b];return t(`Added ${_.id}: ${b}${c(m,_)?" \u2014 "+c(m,_):""}. Inputs: ${z.ins.map(k=>`${_.id}.${k.id}`).join(", ")||"none"}; outputs: ${z.outs.map(k=>`${_.id}.${k.id}`).join(", ")||"none"}.`,!0)}},{name:"set_block_params",mutates:!0,description:"Change parameters of a program block (e.g. period, pin, mode).",input_schema:a.obj({block:a.str('block id, e.g. "n2"'),params:{type:"object",description:"parameters to change"}},["block","params"]),run(h,p){let m=h.D(),b=l(m,s(p.block));if(!b)return r(`No block "${s(p.block)}". Use get_program.`);let v=d(m,b.type,p.params);return"error"in v?r(v.error):(Object.assign(b.props,v.props),u(h),t(`${b.id}: ${c(m,b)}`,!0))}},{name:"connect_blocks",mutates:!0,description:'Connect a block output to a block input: from "n1.v" to "n2.a". An input takes one connection (an existing one is replaced).',input_schema:a.obj({from:a.str('output, "block.port", e.g. "n1.v"'),to:a.str('input, "block.port", e.g. "n2.a"')},["from","to"]),run(h,p){let m=h.D(),b=O_(m,s(p.from).trim(),s(p.to).trim());return typeof b=="string"?r(b):(u(h),t(`Connected ${b.from} \u2192 ${b.to}.`,!0))}},{name:"disconnect_blocks",mutates:!0,description:'Remove the connection into a block input ("n2.a"), optionally only if it comes from a given output.',input_schema:a.obj({to:a.str('input, e.g. "n2.a"'),from:a.str("output (optional)")},["to"]),run(h,p){let m=T_(h.D(),s(p.to).trim(),p.from?s(p.from).trim():void 0);return m?(u(h),t(`Removed ${m} connection.`,!0)):r(`No connection into ${s(p.to)}.`)}},{name:"remove_blocks",mutates:!0,description:'Delete program blocks (with their connections). Use ["all"] to clear the whole program.',input_schema:a.obj({blocks:a.arr(a.str("block id"),'block ids, or ["all"]')},["blocks"]),run(h,p){let m=h.D(),b=Array.isArray(p.blocks)?p.blocks.map(s):[],v=b.length===1&&b[0]==="all",_=v?m.program?m.program.nodes.map(x=>x.id):[]:b,z=v?[]:_.filter(x=>!l(m,x));if(z.length)return r(`No block(s): ${z.join(", ")}.`);let k=I_(m,_);return u(h),t(`Removed ${k} block(s).`,!0)}},{name:"arrange_program",mutates:!0,description:"Lay out the program blocks left to right in signal-flow order (inputs left, outputs right), so the Program view is easy to read. Call after adding or connecting blocks.",input_schema:a.obj({}),run(h){let p=h.D();return!p.program||!p.program.nodes.length?r("The program is empty."):(C_(Bo(p)),u(h,!0),t("Program arranged.",!0))}},{name:"run_program",mutates:!1,description:"Run the block program in the simulator for some time, optionally pressing buttons at given times, and return a timeline: block outputs, GPIO levels (or PWM duty) and LEDs at regular sample points. Use it to verify the program (e.g. that an LED blinks at 2 Hz, or toggles on each press).",input_schema:a.obj({ms:a.int("run time in ms (max 20000)"),presses:g,sample_ms:a.int("sample interval in ms (default: about 20 samples)")},["ms"]),run(h,p){let m=h.D();if(!m.program||!m.program.nodes.length)return r("The program is empty.");let b=Math.min(2e4,Math.max(0,o(p.ms)??0)),v=[];for(let M of Array.isArray(p.presses)?p.presses:[]){let B=e.partOf(m,s(M.button));if(!B||!Jr(B))return r(`"${s(M.button)}" is not a button.`);v.push({part:B.id,from:o(M.from_ms)??0,to:M.to_ms==null?void 0:o(M.to_ms)??void 0})}let _=x_(m,{ms:b,every:o(p.sample_ms)??void 0,presses:v}),z=[...new Set(_.samples.flatMap(M=>Object.keys(M.vals)))],k=[...new Set(_.samples.flatMap(M=>Object.keys(M.gpio)))],x=[...new Set(_.samples.flatMap(M=>Object.keys(M.leds)))],A=["t(ms)",...z,...k,...x.map(M=>M+"(lit)")],G=_.samples.map(M=>[String(M.t),...z.map(B=>i(M.vals[B])),...k.map(B=>M.gpio[B]??"\u2013"),...x.map(B=>M.leds[B]?"1":"0")]),L=[..._.errors].map(([M,B])=>`${M}: ${n(B)}`);return t([A.join(" | "),...G.map(M=>M.join(" | "))].join(`
142
+ `)+(L.length?`
143
+ Problems: `+L.join("; "):""))}}]}var R_=[["#fff3bf",E("s\xE1rga")],["#d3f9d8",E("z\xF6ld")],["#d0ebff",E("k\xE9k")],["#ffe3e3",E("piros")],["#f1f3f5",E("sz\xFCrke")]],_a=()=>({v:1,board:{rows:78,cols:39,sec:3},parts:[],bridges:[],wires:[],links:[],auto:{bridges:[],wires:[]},customParts:{},notes:[],gpio:{},pwm:{},settings:{usb:!0,btnMode:"hold",autoRoute:!0},seq:1}),cf=e=>(Array.isArray(e)?e:[]).filter(t=>Array.isArray(t)&&t.length>=2).map(t=>[Math.round(+t[0]),Math.round(+t[1]),+t[2]?1:0]).filter(t=>t.every(Number.isFinite)),j_=e=>{let t=e;return[Number(t[0]),Number(t[1])]},uf=4e3;function Zl(e){if(!e||typeof e!="object")throw new Error("nem objektum");let t=e,r=_a();t.board&&Object.assign(r.board,t.board);for(let[s,a]of Object.entries(t.customParts||{}))!/^c_[a-z0-9_]+$/.test(s)||s in Cr||pa(da(a))||(r.customParts[s]=a);let n=Yz();for(let s of t.parts||[])s&&typeof s.type=="string"&&!(s.type in Cr)&&!(s.type in r.customParts)&&n[s.type]&&(r.customParts[s.type]=n[s.type]);Ro(r.customParts),r.parts=(t.parts||[]).map((s,a)=>{if(!W[s.type])throw new Error("ismeretlen alkatr\xE9sz: "+s.type);return{id:s.id||"p"+(1e3+a),type:s.type,label:s.label||W[s.type].prefix+(a+1),r:s.r|0,c:s.c|0,rot:(s.rot|0)&3,mir:!!s.mir,...s.xray?{xray:!0}:{},...s.fixed?{fixed:!0}:{},...typeof s.plug=="string"&&s.plug?{plug:s.plug}:{},props:{...W[s.type].props,...s.props||{}}}});for(let s of r.parts)s.plug&&!r.parts.some(a=>a.id===s.plug)&&delete s.plug;r.bridges=(t.bridges||[]).filter(s=>Array.isArray(s)&&s.length===4).map(s=>s.map(Number)),r.wires=(t.wires||[]).filter(s=>s&&s.a&&s.b).map(s=>({a:j_(s.a),b:j_(s.b),color:s.color||"#1c7ed6"})),r.gpio=t.gpio||{},r.pwm=t.pwm&&typeof t.pwm=="object"?t.pwm:{},r.settings={...r.settings,...t.settings||{}},r.notes=(Array.isArray(t.notes)?t.notes:[]).filter(s=>s&&isFinite(+s.r)&&isFinite(+s.c)).map((s,a)=>({id:String(s.id||"n"+(a+1)),r:+s.r,c:+s.c,w:Math.max(3,Math.min(60,+s.w||10)),h:Math.max(2,Math.min(60,+s.h||6)),text:String(s.text??""),color:R_.some(i=>i[0]===s.color)?s.color:R_[0][0],target:s.target?String(s.target):null})),r.links=(t.links||[]).filter(s=>s&&s.a&&s.b).map((s,a)=>({id:s.id||"l"+(5e3+a),a:String(s.a),b:String(s.b),gpio:s.gpio||null}));let o=t.auto||{};r.auto={bridges:(o.bridges||[]).filter(s=>Array.isArray(s)&&s.length>=4).map(s=>[...s.slice(0,4).map(Number),Array.isArray(s[4])?s[4]:s[4]?[s[4]]:[]]),wires:(o.wires||[]).filter(s=>s&&s.a&&s.b).map(s=>({a:s.a,b:s.b,color:s.color||"#7048e8",links:s.links||(s.link?[s.link]:[])})),cuts:cf(o.cuts)},r.cuts=cf(t.cuts);{let s=cf(t.cutBan);s.length?r.cutBan=s:delete r.cutBan}typeof t.id=="string"&&/^[\w-]{4,64}$/.test(t.id)&&(r.id=t.id),typeof t.brief=="string"&&t.brief.trim()&&(r.brief=t.brief.slice(0,uf));{let s=v_(t.program);s&&s.nodes.length&&(r.program=s)}if(t.signal&&typeof t.signal=="object"){let s=t.signal,a=z_({preset:String(s.preset||"half"),custom:String(s.custom||""),pins:(Array.isArray(s.pins)?s.pins:[]).slice(0,8).map(i=>i?String(i):null),step:+s.step||0,rate:+s.rate||4,dir:+s.dir<0?-1:1},r.program);a&&a.nodes.length&&(r.program=a)}return r.seq=Math.max(t.seq||1,...r.parts.map(s=>+String(s.id).replace(/\D/g,"")+1||1),...r.links.map(s=>+String(s.id).replace(/\D/g,"")+1||1)),r}var cr=8,Zo=(e,t,r)=>t>=0&&r>=0&&t<e.board.rows&&r<e.board.cols,KN=(e,t,r)=>t>=-cr-.5&&r>=-cr-.5&&t<=e.board.rows+cr-.5&&r<=e.board.cols+cr-.5;function Go(e,t){let r=me(t);if(Ae(t)){let n=W[t.type].bounds(t),o=[[n.r0,n.c0],[n.r0,n.c1],[n.r1,n.c0],[n.r1,n.c1]].map(([s,a])=>Tt(t,s,a));return r.every(s=>!Zo(e,s.r,s.c))&&o.every(([s,a])=>KN(e,s,a))}return r.some(n=>Zo(e,n.r,n.c))&&r.every(n=>n.r>=-cr&&n.c>=-cr&&n.r<e.board.rows+cr&&n.c<e.board.cols+cr)}function M_(e,t){let r=W[t].prefix,n=0;for(let o of e.parts){let s=new RegExp("^"+r+"(\\d+)$").exec(o.label);s&&(n=Math.max(n,+s[1]))}return r+(n+1)}function df(e,t,r,n,o={}){return{id:"ghost",type:t,label:W[t].prefix,r,c:n,rot:o.rot||0,mir:!!o.mir,xray:!!o.xray,props:{...W[t].props,...o.props||{}}}}function D_(e,t,r,n,o={}){if(!W[t])return null;let s=df(e,t,r,n,o);if(!Go(e,s))return null;let a={...s,id:"p"+e.seq++,label:o.label||M_(e,t)};return a.xray||delete a.xray,e.parts.push(a),a}function HN(e,t){e.links=e.links.filter(r=>!r.a.startsWith(t+".")&&!r.b.startsWith(t+"."))}function L_(e,t){let r=new Set(t);for(let n of e.parts)r.has(n.id)&&n.plug&&r.add(n.plug);e.parts=e.parts.filter(n=>!r.has(n.id)),r.forEach(n=>HN(e,n));for(let n of e.parts)n.plug&&r.has(n.plug)&&delete n.plug}function V_(e,t,r){if(e.links.some(o=>o.a===t&&o.b===r||o.a===r&&o.b===t))return null;let n={id:"l"+e.seq++,a:t,b:r,gpio:null};return e.links.push(n),n}function F_(e,t){if(!Ae(t))return null;{let s=n_(e,t);if(s){t.plug=s.id;let a=o_(e);return e.links=e.links.filter(i=>!a.has(i.id)),s}}let r=e_();if(!r)return null;let n=t_(e,t,W[t.type].pins(t).length);if(!n)return null;let o={id:"p"+e.seq++,type:r,label:M_(e,r),r:n.r,c:n.c,rot:n.rot,mir:!1,props:{...W[r].props,...r_(W[r].def,t)}};return e.parts.push(o),t.plug=o.id,o}function B_(e,t,r,n,o,s={}){let a={id:"n"+e.seq++,r:t,c:r,w:s.w??12,h:s.h??6,text:n,color:o,target:s.target??null};return e.notes=[...e.notes||[],a],a}function wa(e,t){return e.parts.flatMap(me).find(r=>r.name===t&&r.role==="gpio")||null}function Z_(e,t,r){let n=wa(e,t);return!n||!Gn.some(o=>o[0]===r)||!ha(n,r)?!1:(e.gpio[n.part.id+"."+n.id]=r,!0)}function G_(e,t,r,n,o=s=>ba(e,s)){let s=wa(e,t);if(!s||!ha(s,"pwm"))return!1;let a=s.part.id+"."+s.id;return e.gpio[a]="pwm",e.pwm={...e.pwm||{},[a]:{...o(a),...r!=null?{duty:r}:{},...n!=null?{freq:n}:{}}},!0}var Ve=(e,t=!1)=>({text:e,changed:t}),he=e=>({text:e,isError:!0}),pt=(e,t)=>xz(e,t,"en"),st=e=>typeof e=="number"&&isFinite(e)?e:typeof e=="string"&&e.trim()!==""&&isFinite(+e)?+e:null,we=e=>e==null?"":String(e);function ur(e,t){let r=t.trim().toLowerCase();return e.parts.find(n=>n.label.toLowerCase()===r)||null}function Uo(e,t){let r=t.indexOf(".");if(r<0)return null;let n=ur(e,t.slice(0,r));if(!n)return null;let o=t.slice(r+1).trim().toLowerCase(),s=me(n),a=s.find(i=>i.id.toLowerCase()===o)||s.find(i=>i.name.toLowerCase()===o)||s.find(i=>pt(i.name).toLowerCase()===o);return a?{p:n,q:a,ref:n.id+"."+a.id}:null}function Ul(e,t){let r=t.indexOf("."),n=e.parts.find(s=>s.id===t.slice(0,r));if(!n)return t;let o=me(n).find(s=>s.id===t.slice(r+1));return n.label+"."+(o?o.name!==o.id&&!ce(n)?o.id:o.name:t.slice(r+1))}function U_(e){let t=W[e.type].bounds(e),r=[[t.r0,t.c0],[t.r1,t.c1],[t.r0,t.c1],[t.r1,t.c0]].map(([c,l])=>Tt(e,c,l)),n=Math.ceil(Math.min(...r.map(c=>c[0]))),o=Math.floor(Math.max(...r.map(c=>c[0]))),s=Math.ceil(Math.min(...r.map(c=>c[1]))),a=Math.floor(Math.max(...r.map(c=>c[1]))),i=new Set;for(let c=n;c<=o;c++)for(let l=s;l<=a;l++)i.add(c+":"+l);for(let c of me(e))i.add(c.r+":"+c.c);return i}function ff(e,t){if(Ae(t))return[];let r=U_(t),n=[];for(let o of e.parts)if(!(o.id===t.id||Ae(o))){for(let s of U_(o))if(r.has(s)){n.push(o.label);break}}return n}function mf(e,t){if(Ae(t))return[];let r=bn(e),n=(l,u)=>Zo(e,l,u)&&!r.drilled(l,u)?r.cell(l,u):null,o=new Map;for(let[l,u]of W[t.type].internal(t)){let d=o.get(l)||l;o.set(l,d),o.set(u,d)}let s=l=>o.get(l)||l,a=me(t),i=[],c=new Map;for(let l of a){let u=n(l.r,l.c);u!=null&&(c.has(u)||c.set(u,[]),c.get(u).push(l))}for(let l of c.values())for(let u=1;u<l.length;u++)s(l[u].id)!==s(l[0].id)&&i.push(`${t.label}.${Gl(t,l[0])} and ${t.label}.${Gl(t,l[u])} share a strip section (shorted)`);for(let l of e.parts)if(!(l.id===t.id||Ae(l)))for(let u of me(l)){let d=n(u.r,u.c);d==null||!c.has(d)||i.push(`${t.label}.${Gl(t,c.get(d)[0])} shares a strip section with ${l.label}.${Gl(l,u)}`)}return i}function JN(e,t,r){let{rows:n,cols:o}=e.board,s=r||{r:0,c:0},a=[],i=Ae(t)?-cr:0,c=Ae(t)?n+cr:n,l=Ae(t)?o+cr:o;for(let u=i;u<c;u++)for(let d=i;d<l;d++)a.push([Math.abs(u-s.r)+Math.abs(d-s.c),u,d]);a.sort((u,d)=>u[0]-d[0]||u[1]-d[1]||u[2]-d[2]);for(let[,u,d]of a){let f={...t,r:u,c:d};if(Go(e,f)&&!ff(e,f).length&&!mf(e,f).length)return{r:u,c:d}}return null}var Kl=e=>pt(W[e].name),Gl=(e,t)=>ce(e)?t.name:t.id,hf=e=>e.rot*90+"\xB0"+(e.mir?" mirrored":""),xa=e=>typeof e=="number"?+e.toPrecision(4):e;function ql(e){let t=Nl(e);return(W[e.type].def.params||[]).filter(n=>n.type!=="span"&&n.type!=="names").map(n=>`${n.key}=${xa(t[n.key])}${n.unit?n.unit:""}`).join(", ")}var q_=e=>({...e.library?e.library():{},...e.D().customParts||{}}),YN={fixed:"fixed",mcu:"controller",control:"control",manual:"hand-wired",off:"off-board",scope:'not in "only"'};function K_(e,t){let r=st(t.strength);if(r!=null&&(r<0||r>1))return{error:"strength must be between 0 and 1."};let n=null;if(Array.isArray(t.only)){let o=t.only.map(we),s=o.map(i=>ur(e,i)),a=o.filter((i,c)=>!s[c]);if(a.length)return{error:`Unknown label(s): ${a.join(", ")}`};n=s.map(i=>i.id)}return g_(e,{strength:r??.5,only:n,keepMcu:t.keep_mcu!==!1,keepControls:t.keep_controls!==!1})}function pf(e,t){let r=s=>`${s.stats.box?s.stats.rows+"\xD7"+s.stats.cols:"-"} holes, ${s.bridges} bridges, ${s.wires} wires, ${s.linksOk}/${s.links} connected`,n=Object.entries(e.kept).filter(([,s])=>s!=="off").map(([s,a])=>`${s} (${YN[a]})`),o=[e.moves.length?t?"Compacted.":"Compaction preview (not applied).":"No better layout found with these settings; nothing changed.",`Before: ${r(e.before)}`,`After: ${r(e.after)}`];return e.moves.length&&o.push("Moves: "+e.moves.map(s=>`${s.label} ${s.from.r},${s.from.c} \u2192 ${s.to.r},${s.to.c}${s.to.rot!==s.from.rot?` rot ${s.to.rot*90}\xB0`:""}`).join("; ")),n.length&&o.push("Stays in place: "+n.join(", ")),o.join(`
144
+ `)}function Y_(e,t=Ut){let r=lr(e),n=Lo(e,r),o=y_(e,{A0:r,AS:r,SIM:null,linkState:n,tr:t});return{A:r,issues:o,states:n}}function H_(e,t=Ut){let{issues:r,states:n}=Y_(e,t),o=e.board,s=[],a=o.sec>=o.rows?"full-length vertical strips (stripboard)":o.sec<=1?"isolated pads (dot grid, no strips)":`vertical strips cut into sections of ${o.sec} rows`;if(s.push(e.brief?`Project notes (kept by you and the user; update with set_project_notes):
145
+ ${e.brief}`:"Project notes: none yet (record the goal and key decisions with set_project_notes once agreed)."),s.push(`Board: ${o.rows} rows \xD7 ${o.cols} columns, ${a}. Holes are (row, col), 0-based; a strip is one column.`),s.push(`Settings: auto-routing ${e.settings.autoRoute?"on":"off"}, automatic strip cuts ${e.settings.autoCut===!1?"off":"on"}.`),!e.parts.length)s.push("Parts: none.");else{s.push(`Parts (${e.parts.length}):`);for(let l of e.parts){let u=me(l),d=u.length<=8?" pins "+u.map(g=>`${g.name!==g.id&&!ce(l)?g.id+"/"+pt(g.name):g.name}@${g.r},${g.c}`).join(" "):` ${u.length} pins`,f=ql(l);s.push(`- ${l.label}: ${Kl(l.type)} [${l.type}] at ${l.r},${l.c} rot ${hf(l)}${l.fixed?", FIXED by the user (do not move)":""}${Ae(l)?", off-board"+(l.plug?" (plugged into "+(e.parts.find(g=>g.id===l.plug)||{label:"?"}).label+")":""):""}${f?"; "+f:""};${d}`)}}if(e.links.length){s.push(`Connections (${e.links.length}, routed automatically when auto-routing is on):`);for(let l of e.links){let u=n.get(l.id),d=u?u.ok?u.cable?"via cable":u.wire?"via wire":u.nb?`via ${u.nb} bridge(s)`:"connected":"NOT connected":"";s.push(`- ${Ul(e,l.a)} \u2192 ${l.b==="GND"||l.b==="GPIO"?l.b:Ul(e,l.b)}${u&&u.gpio&&l.b==="GPIO"?" ("+u.gpio+")":""}: ${d}`)}}else s.push("Connections: none.");{let l=ya(e);l.box&&s.push(`Footprint: rows ${l.box.r0}\u2013${l.box.r1}, columns ${l.box.c0}\u2013${l.box.c1} (${l.rows}\xD7${l.cols} holes, ${Math.round(l.area/l.boardArea*100)}% of the board); part bodies fill ${Math.round(l.fill*100)}% of it. Keep layouts compact: place parts close to what they connect to.`)}s.push(`Wiring: ${e.auto.bridges.length} auto bridges, ${e.auto.wires.length} auto wires, ${e.bridges.length} manual bridges, ${e.wires.length} manual wires, ${(e.cuts||[]).length+(e.auto.cuts||[]).length} strip cuts.`);let i=Object.entries(e.gpio||{}).filter(([,l])=>l);i.length&&s.push("GPIO modes: "+i.map(([l,u])=>`${Ul(e,l)}=${u}`).join(", ")),e.program&&e.program.nodes.length&&s.push(`Program: ${e.program.nodes.length} blocks (${[...new Set(e.program.nodes.map(l=>l.type))].join(", ")}).`);let c=r.filter(l=>l.sev!=="info");return s.push(c.length?`Problems (${c.length}):
146
+ `+c.slice(0,20).map(l=>`- [${l.sev}] ${l.msg}`).join(`
147
+ `)+(c.length>20?`
148
+ \u2026 ${c.length-20} more`:""):"Problems: none."),e.notes&&e.notes.length&&s.push(`Notes: ${e.notes.length}.`),s.join(`
149
+ `)}var K={str:e=>({type:"string",description:e}),int:e=>({type:"integer",description:e}),num:e=>({type:"number",description:e}),bool:e=>({type:"boolean",description:e}),arr:(e,t)=>({type:"array",items:e,description:t}),obj:(e,t=[])=>({type:"object",properties:e,required:t,additionalProperties:!1})};function XN(e,t,r){let n=(W[e].def.params||[]).find(s=>s.key===t);if(!n)return{error:`${Kl(e)} has no parameter "${t}" (valid: ${(W[e].def.params||[]).map(s=>s.key).join(", ")||"none"})`};if(n.type==="select"||n.type==="color"){let s=(n.options||[]).find(a=>String(a.v)===String(r)||pt(a.label).toLowerCase()===String(r).toLowerCase());return s?{v:s.v}:{error:`"${t}" must be one of: ${(n.options||[]).map(a=>`${a.v} (${pt(a.label)})`).join(", ")}`}}if(n.type==="names")return{v:we(r)};if(n.type==="span")return{error:`"${t}" is a pin-spacing parameter; set "dr" and "dc" (row/column offset of the second pin)`};let o=st(r);return o==null?{error:`"${t}" must be a number${n.unit?" in "+n.unit:""}`}:n.min!=null&&o<n.min||n.max!=null&&o>n.max?{error:`"${t}" must be between ${n.min??"-\u221E"} and ${n.max??"\u221E"}`}:{v:n.type==="int"?Math.round(o):o}}function W_(e,t,r={}){let n={...r};if(t==null)return{props:n};if(typeof t!="object")return{error:"params must be an object"};let o=(W[e].def.params||[]).find(s=>s.type==="span");for(let[s,a]of Object.entries(t)){if(o&&(s==="dr"||s==="dc")){let c=st(a);if(c==null)return{error:`"${s}" must be an integer`};n[s]=Math.round(c);continue}let i=XN(e,s,a);if("error"in i)return i;n[s]=i.v}return{props:n}}function J_(e,t){return`${t.label} (${Kl(t.type)}) at ${t.r},${t.c} rot ${hf(t)}; pins `+me(t).map(r=>`${r.id===r.name?r.id:r.id+"/"+pt(r.name)}@${r.r},${r.c}${Zo(e,r.r,r.c)?"":"(off-board)"}`).join(" ")}var gf=[{name:"get_design",mutates:!1,description:"Get a compact text summary of the current design: board, parts (label, type, position, rotation, parameters, pin positions), connections with routing status, wiring counts, GPIO modes, program, and problems. Call this first, and again after changes when you need fresh state.",input_schema:K.obj({}),run:e=>Ve(H_(e.D(),e.tr))},{name:"list_part_types",mutates:!1,description:"Search the part catalog (built-in and the user's own parts). Returns type keys, names, categories and footprints. Use the type key with place_part. Query matches name, category, footprint or pin names, in English or Hungarian; empty query lists everything.",input_schema:K.obj({query:K.str('search words, e.g. "led", "resistor", "button", "esp32"')}),run(e,t){let r=we(t.query),n=Object.values(W).filter(o=>!r||Nz(o.def,r,pt));return n.length?Ve(n.map(o=>`${o.type}: ${pt(o.name)} \u2014 ${pt(o.cat)}; ${pt(o.fp)}${o.def.mount==="off"?"; off-board (cable)":""}`).join(`
150
+ `)):Ve(`No part type matches "${r}". Try a broader word, or an empty query.`)}},{name:"describe_part_type",mutates:!1,description:"Details of one part type: pins (id, name, role, capabilities), parameters (key, type, default, unit, options), help text. Use before placing an unfamiliar part or setting its parameters.",input_schema:K.obj({type:K.str("part type key from list_part_types")},["type"]),run(e,t){let r=W[we(t.type)];if(!r)return he(`Unknown part type "${we(t.type)}". Use list_part_types.`);let n={id:"x",type:r.type,label:r.prefix,r:0,c:0,rot:0,mir:!1,props:{...r.props}},o=r.pins(n).map(i=>`${i.id}${i.name!==i.id?"/"+pt(i.name):""} (${i.role}${i.caps&&i.caps.length?"; "+i.caps.join(","):""}) @${i.lr},${i.lc}`),s=(r.def.params||[]).map(i=>`${i.key}: ${i.type}${i.unit?" ["+i.unit+"]":""}, default ${JSON.stringify(i.default)}${i.options?", options "+i.options.map(c=>`${c.v}=${pt(c.label)}`).join("|"):""}${i.min!=null||i.max!=null?`, range ${i.min??""}..${i.max??""}`:""} \u2014 ${pt(i.label)}`),a=r.def.meta&&typeof r.def.meta.help=="string"?pt(r.def.meta.help):"";return Ve([`${r.type}: ${pt(r.name)} (${pt(r.cat)}; ${pt(r.fp)}); label prefix ${r.prefix}${r.def.mount==="off"?"; off-board part: placed beside the board, connected by cable via a header (attach_plug)":""}`,`Pins (local offsets at rotation 0): ${o.join("; ")}`,s.length?`Parameters:
145
151
  `+s.map(i=>"- "+i).join(`
146
152
  `):"Parameters: none",a?"Help: "+a:""].filter(Boolean).join(`
147
- `))}},{name:"get_part",mutates:!1,description:"Details of one placed part: position, rotation, parameters, every pin with its hole, net and connection status.",input_schema:q.obj({label:q.str('part label, e.g. "R1"')},["label"]),run(e,t){let r=e.D(),n=_r(r,Se(t.label));if(!n)return he(`No part labelled "${Se(t.label)}". Labels: ${r.parts.map(i=>i.label).join(", ")||"none"}`);let o=Cr(r),s=o.byPart.get(n.id).map,a=me(n).map(i=>{let l=s[i.id],c=l&&l.on?(o.netPins.get(l.net)||[]).filter(d=>d.part!==n).map(d=>d.part.label+"."+(ce(d.part)?d.name:d.id)).slice(0,6):[],u=r.links.filter(d=>d.a===n.id+"."+i.id||d.b===n.id+"."+i.id).map(d=>Mo(r,d));return`- ${i.id}${i.name!==i.id?"/"+ft(i.name):""} (${i.role}) @${i.r},${i.c}${Vo(r,i.r,i.c)?"":" off-board"}: ${c.length?"net with "+c.join(", "):"no other pins on its net"}${u.length?"; links: "+u.join("; "):""}`});return Ze(`${n.label}: ${Vl(n.type)} [${n.type}] at ${n.r},${n.c} rot ${af(n)}${Ll(n)?"; "+Ll(n):""}
153
+ `))}},{name:"get_part",mutates:!1,description:"Details of one placed part: position, rotation, parameters, every pin with its hole, net and connection status.",input_schema:K.obj({label:K.str('part label, e.g. "R1"')},["label"]),run(e,t){let r=e.D(),n=ur(r,we(t.label));if(!n)return he(`No part labelled "${we(t.label)}". Labels: ${r.parts.map(i=>i.label).join(", ")||"none"}`);let o=lr(r),s=o.byPart.get(n.id).map,a=me(n).map(i=>{let c=s[i.id],l=c&&c.on?(o.netPins.get(c.net)||[]).filter(d=>d.part!==n).map(d=>d.part.label+"."+(ce(d.part)?d.name:d.id)).slice(0,6):[],u=r.links.filter(d=>d.a===n.id+"."+i.id||d.b===n.id+"."+i.id).map(d=>Do(r,d));return`- ${i.id}${i.name!==i.id?"/"+pt(i.name):""} (${i.role}) @${i.r},${i.c}${Zo(r,i.r,i.c)?"":" off-board"}: ${l.length?"net with "+l.join(", "):"no other pins on its net"}${u.length?"; links: "+u.join("; "):""}`});return Ve(`${n.label}: ${Kl(n.type)} [${n.type}] at ${n.r},${n.c} rot ${hf(n)}${ql(n)?"; "+ql(n):""}
148
154
  ${a.join(`
149
- `)}`)}},{name:"place_part",mutates:!0,description:'Place a new part on the board. Give row/col for the part origin (its pin 1 / first pin at rotation 0), or omit them to place it at the nearest free spot \u2013 preferably with "near" set to the pin it will connect to, so the layout stays compact (or near_row/near_col). Rotation is in 90\xB0 steps clockwise. Off-board parts (motors, servos) are placed beside the board and get a header plugged in automatically. Fails if the part does not fit or would overlap another part.',input_schema:q.obj({type:q.str("part type key"),row:q.int("origin row"),col:q.int("origin column"),near_row:q.int("preferred area when row/col omitted"),near_col:q.int("preferred area when row/col omitted"),near:q.str('when row/col omitted: place next to this pin or part (e.g. "PICO1.GP15" or "R1") \u2013 use the pin it will connect to'),rotation:q.int("0, 90, 180 or 270"),mirror:q.bool("mirror the part"),params:{type:"object",description:'parameter values by key (see describe_part_type), e.g. {"ohm": 330}'},label:q.str("custom label (default: next free, e.g. R2)")},["type"]),run(e,t){let r=e.D(),n=Se(t.type),o=W[n];if(!o)return he(`Unknown part type "${n}". Use list_part_types.`);let s=Math.round((lt(t.rotation)||0)/90)&3,a=!!t.mirror,i=R_(n,t.params,o.props);if("error"in i)return he(i.error);if(t.label&&_r(r,Se(t.label)))return he(`Label "${Se(t.label)}" is already used.`);let l=lt(t.row),c=lt(t.col),u=tf(r,n,l??0,c??0,{rot:s,mir:a,props:i.props});if(l==null||c==null){let h=lt(t.near_row)??l??0,g=lt(t.near_col)??c??0;if(t.near){let _=Se(t.near),w=ka(r,_),k=w?null:_r(r,_);if(!w&&!k)return he(`Unknown pin or part "${_}" in "near".`);[h,g]=w?[w.q.r,w.q.c]:[k.r,k.c]}let v=NN(r,u,{r:h,c:g});if(!v)return he("No free spot where this part fits. Make room or use a bigger board.");l=v.r,c=v.c}let d={...u,r:l,c};if(!Fo(r,d))return he(Ae(d)?"An off-board part must have all its leads outside the board, within 8 holes of the edge.":`Does not fit at ${l},${c}: at least one pin must be on the board and none more than 8 holes outside.`);let p=of(r,d);if(p.length)return he(`Would overlap ${p.join(", ")} at ${l},${c}. Choose another position, or omit row/col to auto-place.`);let m=x_(r,n,l,c,{rot:s,mir:a,props:i.props,label:t.label?Se(t.label):void 0}),b=sf(r,m),f=b.length?`
150
- Warning: `+b.join("; ")+". Move or rotate it unless this is intended.":"";if(Ae(m)){let h=$_(r,m);f=h?`; cable plugged into header ${h.label}`:"; no room for a header: connect its leads with wires"}return e.commit(),Ze("Placed "+j_(r,m)+f,!0)}},{name:"move_part",mutates:!0,description:"Move a part to a new origin (row/col) and/or rotation. Fails if it would not fit or would overlap another part.",input_schema:q.obj({label:q.str("part label"),row:q.int("new origin row"),col:q.int("new origin column"),rotation:q.int("0, 90, 180 or 270"),mirror:q.bool("mirrored")},["label"]),run(e,t){let r=e.D(),n=_r(r,Se(t.label));if(!n)return he(`No part labelled "${Se(t.label)}".`);if(n.fixed)return he(`${n.label} is fixed in place by the user. Do not move it; if moving it seems necessary, explain why and ask the user to unlock it (\u201CFixed position\u201D in its properties).`);let o={...n,r:lt(t.row)??n.r,c:lt(t.col)??n.c,rot:t.rotation!=null?Math.round((lt(t.rotation)||0)/90)&3:n.rot,mir:t.mirror!=null?!!t.mirror:n.mir};if(!Fo(r,o))return he(`${n.label} does not fit at ${o.r},${o.c}.`);let s=of(r,o);if(s.length)return he(`Would overlap ${s.join(", ")}.`);Object.assign(n,{r:o.r,c:o.c,rot:o.rot,mir:o.mir}),e.commit();let a=sf(r,n);return Ze("Moved "+j_(r,n)+(a.length?`
151
- Warning: `+a.join("; ")+".":""),!0)}},{name:"set_params",mutates:!0,description:"Change parameters of a placed part (e.g. resistance, LED colour, transistor kind). Keys and allowed values: describe_part_type.",input_schema:q.obj({label:q.str("part label"),params:{type:"object",description:"parameter values by key"}},["label","params"]),run(e,t){let r=e.D(),n=_r(r,Se(t.label));if(!n)return he(`No part labelled "${Se(t.label)}".`);let o=R_(n.type,t.params,n.props);if("error"in o)return he(o.error);let s={...n,props:o.props};return Fo(r,s)?(n.props=o.props,e.commit(),Ze(`${n.label}: ${Ll(n)||"updated"}`,!0)):he("With these parameters the part would not fit (pin spacing).")}},{name:"remove_parts",mutates:!0,description:"Delete parts (with their connections; an off-board part takes its header with it).",input_schema:q.obj({labels:q.arr(q.str("label"),"part labels")},["labels"]),run(e,t){let r=e.D(),n=Array.isArray(t.labels)?t.labels.map(Se):[],o=n.map(a=>_r(r,a)),s=n.filter((a,i)=>!o[i]);return s.length?he(`Unknown label(s): ${s.join(", ")}`):(S_(r,o.map(a=>a.id)),e.commit(),Ze(`Removed ${n.join(", ")}.`,!0))}},{name:"connect",mutates:!0,description:'Add a connection from a pin to another pin, to ground ("GND"), or to a free GPIO of the microcontroller ("GPIO"; the router picks a suitable pin). Pins: "LABEL.PIN" by pin id or name, e.g. "R1.2", "LED1.A", "PICO1.GP15", "PICO1.3V3". With auto-routing on, bridges/wires/strip cuts are created automatically.',input_schema:q.obj({from:q.str('pin, e.g. "R1.2"'),to:q.str('pin, "GND" or "GPIO"')},["from","to"]),run(e,t){let r=e.D(),n=ka(r,Se(t.from));if(!n)return he(`Unknown pin "${Se(t.from)}". Use get_part to see pin names.`);let o=Se(t.to).trim(),s=o.toUpperCase(),a;if(s==="GND"||s==="GPIO")a=s;else{let c=ka(r,o);if(!c)return he(`Unknown pin "${o}".`);if(c.ref===n.ref)return he("A pin cannot connect to itself.");a=c.ref}let i=P_(r,n.ref,a);if(!i)return he("This connection already exists.");e.commit();let l=Do(r,Cr(r)).get(i.id);return Ze(`Connected ${Mo(r,i)}${l?l.ok?` (routed${l.gpio?", "+l.gpio:""})`:r.settings.autoRoute?" (could not be routed yet \u2014 see problems)":" (auto-routing is off: run route)":""}.`,!0)}},{name:"disconnect",mutates:!0,description:'Remove connection(s) between two pins (or from a pin to GND/GPIO). With only "from", removes every connection of that pin.',input_schema:q.obj({from:q.str("pin"),to:q.str('pin, "GND" or "GPIO" (optional)')},["from"]),run(e,t){let r=e.D(),n=ka(r,Se(t.from));if(!n)return he(`Unknown pin "${Se(t.from)}".`);let o=t.to?Se(t.to).trim():"",s=o.toUpperCase(),a=o?s==="GND"||s==="GPIO"?s:(ka(r,o)||{ref:"?"}).ref:null,i=c=>c.a===n.ref&&(!a||c.b===a)||c.b===n.ref&&(!a||c.a===a),l=r.links.filter(i);return l.length?(r.links=r.links.filter(c=>!i(c)),e.commit(),Ze(`Removed ${l.length} connection(s).`,!0)):he("No such connection.")}},{name:"route",mutates:!0,description:"Recompute the automatic wiring (solder bridges, wires, strip cuts) for all connections. Normally automatic; use after turning auto-routing on or if connections show as not routed.",input_schema:q.obj({}),run(e){let t=e.D();Lo(t,{full:!0}),e.commit();let r=[...Do(t,Cr(t)).values()],n=r.filter(o=>!o.ok).length;return Ze(`Routed: ${r.length-n}/${r.length} connections, ${t.auto.bridges.length} bridges, ${t.auto.wires.length} wires, ${(t.auto.cuts||[]).length} strip cuts.${n?` ${n} not routed \u2014 check get_problems.`:""}`,!0)}},{name:"get_problems",mutates:!1,description:"Design-rule check: shorts, unconnected or floating pins, wrong GPIO use, over-current, missing resistors, etc. Run after changes.",input_schema:q.obj({include_info:q.bool("also list hints (severity info)")}),run(e,t){let r=M_(e.D(),e.tr).issues.filter(n=>t.include_info||n.sev!=="info");return Ze(r.length?r.map(n=>`- [${n.sev}] ${n.msg}${n.holes.length?" @"+n.holes.slice(0,3).map(o=>o.join(",")).join(" "):""}`).join(`
152
- `):"No problems.")}},{name:"simulate",mutates:!1,description:"Run the circuit simulation (DC operating point). Optionally press buttons and run the block program for some milliseconds. Returns microcontroller power, GPIO levels, LED currents, motor/servo/stepper state and transistor states.",input_schema:q.obj({pressed:q.arr(q.str("button label"),"buttons held down"),time_ms:q.int("program run time in ms (default 0)")}),run(e,t){let r=e.D(),n=Array.isArray(t.pressed)?t.pressed.map(Se):[],o=new Set;for(let u of n){let d=_r(r,u);if(!d||!No(d))return he(`"${u}" is not a button.`);o.add(d.id)}let{SIM:s,prog:a,t:i}=__(r,{pressed:o,ms:lt(t.time_ms)||0}),l=[];for(let u of s.picos)l.push(`${u.p.label}: ${u.powered?`powered (${u.vsysName} ${va(u.Usys)} V)`:"NOT powered"}`);let c=s.gpios.filter(u=>u.mode!=="float"||!u.float);c.length&&l.push("GPIO: "+c.map(u=>`${u.q.name}=${u.mode}:${a_(u)}(${va(u.V)}V)`).join(", "));for(let u of s.leds)l.push(`${u.p.label}: ${(u.I*1e3).toFixed(2)} mA${u.light?", lit":", dark"}${u.imax&&u.I>u.imax?" \u2014 OVER-CURRENT":""}`);for(let u of s.fets)l.push(`${u.p.label}: ${u.on?"on":"off"}, Vgs ${va(u.vgs)} V${u.floatGate?", FLOATING GATE":""}`);for(let u of s.bjts)l.push(`${u.p.label}: ${u.st}, Ic ${(u.ic*1e3).toFixed(2)} mA`);for(let u of s.motors)l.push(`${u.p.label}: ${va(u.U)} V, ${(u.I*1e3).toFixed(0)} mA, speed ${Math.round(u.speed*100)}%`);for(let u of s.servos)l.push(`${u.p.label}: ${u.angle!=null?Math.round(u.angle)+"\xB0":"no signal"}`);for(let u of s.steppers)l.push(`${u.p.label}: step ${u.pos}, coils ${u.coils||"\u2013"}`);return a&&l.push(`Program after ${i} ms: `+(a.errors.size?"errors: "+[...a.errors.values()].join("; "):"ok")),Ze(l.join(`
153
- `)||"Nothing to simulate (no powered parts).")}},{name:"set_gpio_mode",mutates:!0,description:`Set the mode of a microcontroller GPIO by pin name (e.g. "GP15"): ${Zn.map(e=>e[0]).join(", ")}. For "pwm" also give duty (%) and frequency (Hz).`,input_schema:q.obj({pin:q.str('GPIO name, e.g. "GP15" or "IO4"'),mode:{type:"string",enum:Zn.map(e=>e[0]),description:"mode"},duty:q.num("PWM duty cycle %"),freq:q.num("PWM frequency Hz")},["pin","mode"]),run(e,t){let r=e.D(),n=Se(t.pin),o=Se(t.mode);if(!ya(r,n))return he(`No GPIO named "${n}" on the board's microcontroller.`);if(!(o==="pwm"?O_(r,n,lt(t.duty),lt(t.freq)):A_(r,n,o)))return he(`${n} does not support mode "${o}".`);e.commit();let a=ya(r,n),i=(r.pwm||{})[a.part.id+"."+a.id];return Ze(`${n} \u2192 ${o}${o==="pwm"&&i?` (duty ${i.duty}%, ${i.freq} Hz)`:""}`,!0)}},{name:"add_note",mutates:!0,description:'Add a text note on the canvas (documentation only, not electrical). Lines starting with "# " are headings. Optionally point at a part.',input_schema:q.obj({text:q.str("note text"),row:q.int("top row"),col:q.int("left column"),width:q.int("width in holes (default 12)"),height:q.int("height in holes (default 6)"),target:q.str("part label to point at")},["text","row","col"]),run(e,t){let r=e.D(),n=t.target?_r(r,Se(t.target)):null;return t.target&&!n?he(`No part labelled "${Se(t.target)}".`):(E_(r,lt(t.row)||0,lt(t.col)||0,Se(t.text),"#fff3bf",{w:lt(t.width)||12,h:lt(t.height)||6,target:n?n.id:null}),e.commit(),Ze("Note added.",!0))}},{name:"generate_code",mutates:!1,description:"Generate firmware source code from the block program for the board's microcontroller: MicroPython or Arduino (C++). Requires a program.",input_schema:q.obj({lang:{type:"string",enum:["micropython","arduino"],description:"language"}}),run(e,t){let r=e.D();if(!r.program||!r.program.nodes.length)return he("The design has no block program yet.");let n=k_(r,Cr(r),r.program,Se(t.lang)||"micropython",e.tr||Gt);return Ze(`File ${n.file}${n.warnings.length?`
155
+ `)}`)}},{name:"place_part",mutates:!0,description:'Place a new part on the board. Give row/col for the part origin (its pin 1 / first pin at rotation 0), or omit them to place it at the nearest free spot \u2013 preferably with "near" set to the pin it will connect to, so the layout stays compact (or near_row/near_col). Rotation is in 90\xB0 steps clockwise. Off-board parts (motors, servos) are placed beside the board and get a header plugged in automatically. Fails if the part does not fit or would overlap another part.',input_schema:K.obj({type:K.str("part type key"),row:K.int("origin row"),col:K.int("origin column"),near_row:K.int("preferred area when row/col omitted"),near_col:K.int("preferred area when row/col omitted"),near:K.str('when row/col omitted: place next to this pin or part (e.g. "PICO1.GP15" or "R1") \u2013 use the pin it will connect to'),rotation:K.int("0, 90, 180 or 270"),mirror:K.bool("mirror the part"),params:{type:"object",description:'parameter values by key (see describe_part_type), e.g. {"ohm": 330}'},label:K.str("custom label (default: next free, e.g. R2)")},["type"]),run(e,t){let r=e.D(),n=we(t.type),o=W[n];if(!o)return he(`Unknown part type "${n}". Use list_part_types.`);let s=Math.round((st(t.rotation)||0)/90)&3,a=!!t.mirror,i=W_(n,t.params,o.props);if("error"in i)return he(i.error);if(t.label&&ur(r,we(t.label)))return he(`Label "${we(t.label)}" is already used.`);let c=st(t.row),l=st(t.col),u=df(r,n,c??0,l??0,{rot:s,mir:a,props:i.props});if(c==null||l==null){let m=st(t.near_row)??c??0,b=st(t.near_col)??l??0;if(t.near){let _=we(t.near),z=Uo(r,_),k=z?null:ur(r,_);if(!z&&!k)return he(`Unknown pin or part "${_}" in "near".`);[m,b]=z?[z.q.r,z.q.c]:[k.r,k.c]}let v=JN(r,u,{r:m,c:b});if(!v)return he("No free spot where this part fits. Make room or use a bigger board.");c=v.r,l=v.c}let d={...u,r:c,c:l};if(!Go(r,d))return he(Ae(d)?"An off-board part must have all its leads outside the board, within 8 holes of the edge.":`Does not fit at ${c},${l}: at least one pin must be on the board and none more than 8 holes outside.`);let f=ff(r,d);if(f.length)return he(`Would overlap ${f.join(", ")} at ${c},${l}. Choose another position, or omit row/col to auto-place.`);let g=D_(r,n,c,l,{rot:s,mir:a,props:i.props,label:t.label?we(t.label):void 0}),h=mf(r,g),p=h.length?`
156
+ Warning: `+h.join("; ")+". Move or rotate it unless this is intended.":"";if(Ae(g)){let m=F_(r,g);p=m?`; cable plugged into header ${m.label}`:"; no room for a header: connect its leads with wires"}return e.commit(),Ve("Placed "+J_(r,g)+p,!0)}},{name:"move_part",mutates:!0,description:"Move a part to a new origin (row/col) and/or rotation. Fails if it would not fit or would overlap another part.",input_schema:K.obj({label:K.str("part label"),row:K.int("new origin row"),col:K.int("new origin column"),rotation:K.int("0, 90, 180 or 270"),mirror:K.bool("mirrored")},["label"]),run(e,t){let r=e.D(),n=ur(r,we(t.label));if(!n)return he(`No part labelled "${we(t.label)}".`);if(n.fixed)return he(`${n.label} is fixed in place by the user. Do not move it; if moving it seems necessary, explain why and ask the user to unlock it (\u201CFixed position\u201D in its properties).`);let o={...n,r:st(t.row)??n.r,c:st(t.col)??n.c,rot:t.rotation!=null?Math.round((st(t.rotation)||0)/90)&3:n.rot,mir:t.mirror!=null?!!t.mirror:n.mir};if(!Go(r,o))return he(`${n.label} does not fit at ${o.r},${o.c}.`);let s=ff(r,o);if(s.length)return he(`Would overlap ${s.join(", ")}.`);Object.assign(n,{r:o.r,c:o.c,rot:o.rot,mir:o.mir}),e.commit();let a=mf(r,n);return Ve("Moved "+J_(r,n)+(a.length?`
157
+ Warning: `+a.join("; ")+".":""),!0)}},{name:"set_params",mutates:!0,description:"Change parameters of a placed part (e.g. resistance, LED colour, transistor kind). Keys and allowed values: describe_part_type.",input_schema:K.obj({label:K.str("part label"),params:{type:"object",description:"parameter values by key"}},["label","params"]),run(e,t){let r=e.D(),n=ur(r,we(t.label));if(!n)return he(`No part labelled "${we(t.label)}".`);let o=W_(n.type,t.params,n.props);if("error"in o)return he(o.error);let s={...n,props:o.props};return Go(r,s)?(n.props=o.props,e.commit(),Ve(`${n.label}: ${ql(n)||"updated"}`,!0)):he("With these parameters the part would not fit (pin spacing).")}},{name:"remove_parts",mutates:!0,description:"Delete parts (with their connections; an off-board part takes its header with it).",input_schema:K.obj({labels:K.arr(K.str("label"),"part labels")},["labels"]),run(e,t){let r=e.D(),n=Array.isArray(t.labels)?t.labels.map(we):[],o=n.map(a=>ur(r,a)),s=n.filter((a,i)=>!o[i]);return s.length?he(`Unknown label(s): ${s.join(", ")}`):(L_(r,o.map(a=>a.id)),e.commit(),Ve(`Removed ${n.join(", ")}.`,!0))}},{name:"connect",mutates:!0,description:'Add a connection from a pin to another pin, to ground ("GND"), or to a free GPIO of the microcontroller ("GPIO"; the router picks a suitable pin). Pins: "LABEL.PIN" by pin id or name, e.g. "R1.2", "LED1.A", "PICO1.GP15", "PICO1.3V3". With auto-routing on, bridges/wires/strip cuts are created automatically.',input_schema:K.obj({from:K.str('pin, e.g. "R1.2"'),to:K.str('pin, "GND" or "GPIO"')},["from","to"]),run(e,t){let r=e.D(),n=Uo(r,we(t.from));if(!n)return he(`Unknown pin "${we(t.from)}". Use get_part to see pin names.`);let o=we(t.to).trim(),s=o.toUpperCase(),a;if(s==="GND"||s==="GPIO")a=s;else{let l=Uo(r,o);if(!l)return he(`Unknown pin "${o}".`);if(l.ref===n.ref)return he("A pin cannot connect to itself.");a=l.ref}let i=V_(r,n.ref,a);if(!i)return he("This connection already exists.");e.commit();let c=Lo(r,lr(r)).get(i.id);return Ve(`Connected ${Do(r,i)}${c?c.ok?` (routed${c.gpio?", "+c.gpio:""})`:r.settings.autoRoute?" (could not be routed yet \u2014 see problems)":" (auto-routing is off: run route)":""}.`,!0)}},{name:"disconnect",mutates:!0,description:'Remove connection(s) between two pins (or from a pin to GND/GPIO). With only "from", removes every connection of that pin.',input_schema:K.obj({from:K.str("pin"),to:K.str('pin, "GND" or "GPIO" (optional)')},["from"]),run(e,t){let r=e.D(),n=Uo(r,we(t.from));if(!n)return he(`Unknown pin "${we(t.from)}".`);let o=t.to?we(t.to).trim():"",s=o.toUpperCase(),a=o?s==="GND"||s==="GPIO"?s:(Uo(r,o)||{ref:"?"}).ref:null,i=l=>l.a===n.ref&&(!a||l.b===a)||l.b===n.ref&&(!a||l.a===a),c=r.links.filter(i);return c.length?(r.links=r.links.filter(l=>!i(l)),e.commit(),Ve(`Removed ${c.length} connection(s).`,!0)):he("No such connection.")}},{name:"route",mutates:!0,description:"Recompute the automatic wiring (solder bridges, wires, strip cuts) for all connections. Normally automatic; use after turning auto-routing on or if connections show as not routed.",input_schema:K.obj({}),run(e){let t=e.D();Fo(t,{full:!0}),e.commit();let r=[...Lo(t,lr(t)).values()],n=r.filter(o=>!o.ok).length;return Ve(`Routed: ${r.length-n}/${r.length} connections, ${t.auto.bridges.length} bridges, ${t.auto.wires.length} wires, ${(t.auto.cuts||[]).length} strip cuts.${n?` ${n} not routed \u2014 check get_problems.`:""}`,!0)}},{name:"get_problems",mutates:!1,description:"Design-rule check: shorts, unconnected or floating pins, wrong GPIO use, over-current, missing resistors, etc. Run after changes.",input_schema:K.obj({include_info:K.bool("also list hints (severity info)")}),run(e,t){let r=Y_(e.D(),e.tr).issues.filter(n=>t.include_info||n.sev!=="info");return Ve(r.length?r.map(n=>`- [${n.sev}] ${n.msg}${n.holes.length?" @"+n.holes.slice(0,3).map(o=>o.join(",")).join(" "):""}`).join(`
158
+ `):"No problems.")}},{name:"simulate",mutates:!1,description:"Run the circuit simulation (DC operating point). Optionally press buttons and run the block program for some milliseconds. Returns microcontroller power, GPIO levels, LED currents, motor/servo/stepper state and transistor states.",input_schema:K.obj({pressed:K.arr(K.str("button label"),"buttons held down"),time_ms:K.int("program run time in ms (default 0)")}),run(e,t){let r=e.D(),n=Array.isArray(t.pressed)?t.pressed.map(we):[],o=new Set;for(let u of n){let d=ur(r,u);if(!d||!Jr(d))return he(`"${u}" is not a button.`);o.add(d.id)}let{SIM:s,prog:a,t:i}=Fl(r,{pressed:o,ms:st(t.time_ms)||0}),c=[];for(let u of s.picos)c.push(`${u.p.label}: ${u.powered?`powered (${u.vsysName} ${xa(u.Usys)} V)`:"NOT powered"}`);let l=s.gpios.filter(u=>u.mode!=="float"||!u.float);l.length&&c.push("GPIO: "+l.map(u=>`${u.q.name}=${u.mode}:${f_(u)}(${xa(u.V)}V)`).join(", "));for(let u of s.leds)c.push(`${u.p.label}: ${(u.I*1e3).toFixed(2)} mA${u.light?u.on&&u.I>1e-4?", lit":", dark":u.on?", conducting":", off"}${u.imax&&u.I>u.imax?" \u2014 OVER-CURRENT":""}`);for(let u of s.fets)c.push(`${u.p.label}: ${u.on?"on":"off"}, Vgs ${xa(u.vgs)} V${u.floatGate?", FLOATING GATE":""}`);for(let u of s.bjts)c.push(`${u.p.label}: ${u.st}, Ic ${(u.ic*1e3).toFixed(2)} mA`);for(let u of s.motors)c.push(`${u.p.label}: ${xa(u.U)} V, ${(u.I*1e3).toFixed(0)} mA, speed ${Math.round(u.speed*100)}%`);for(let u of s.servos)c.push(`${u.p.label}: ${u.angle!=null?Math.round(u.angle)+"\xB0":"no signal"}`);for(let u of s.steppers)c.push(`${u.p.label}: step ${u.pos}, coils ${u.coils||"\u2013"}`);return a&&c.push(`Program after ${i} ms: `+(a.errors.size?"errors: "+[...a.errors.values()].join("; "):"ok")),Ve(c.join(`
159
+ `)||"Nothing to simulate (no powered parts).")}},{name:"set_gpio_mode",mutates:!0,description:`Set the mode of a microcontroller GPIO by pin name (e.g. "GP15"): ${Gn.map(e=>e[0]).join(", ")}. For "pwm" also give duty (%) and frequency (Hz).`,input_schema:K.obj({pin:K.str('GPIO name, e.g. "GP15" or "IO4"'),mode:{type:"string",enum:Gn.map(e=>e[0]),description:"mode"},duty:K.num("PWM duty cycle %"),freq:K.num("PWM frequency Hz")},["pin","mode"]),run(e,t){let r=e.D(),n=we(t.pin),o=we(t.mode);if(!wa(r,n))return he(`No GPIO named "${n}" on the board's microcontroller.`);if(!(o==="pwm"?G_(r,n,st(t.duty),st(t.freq)):Z_(r,n,o)))return he(`${n} does not support mode "${o}".`);e.commit();let a=wa(r,n),i=(r.pwm||{})[a.part.id+"."+a.id];return Ve(`${n} \u2192 ${o}${o==="pwm"&&i?` (duty ${i.duty}%, ${i.freq} Hz)`:""}`,!0)}},{name:"add_note",mutates:!0,description:'Add a text note on the canvas (documentation only, not electrical). Lines starting with "# " are headings. Optionally point at a part.',input_schema:K.obj({text:K.str("note text"),row:K.int("top row"),col:K.int("left column"),width:K.int("width in holes (default 12)"),height:K.int("height in holes (default 6)"),target:K.str("part label to point at")},["text","row","col"]),run(e,t){let r=e.D(),n=t.target?ur(r,we(t.target)):null;return t.target&&!n?he(`No part labelled "${we(t.target)}".`):(B_(r,st(t.row)||0,st(t.col)||0,we(t.text),"#fff3bf",{w:st(t.width)||12,h:st(t.height)||6,target:n?n.id:null}),e.commit(),Ve("Note added.",!0))}},{name:"generate_code",mutates:!1,description:"Generate firmware source code from the block program for the board's microcontroller: MicroPython or Arduino (C++). Requires a program.",input_schema:K.obj({lang:{type:"string",enum:["micropython","arduino"],description:"language"}}),run(e,t){let r=e.D();if(!r.program||!r.program.nodes.length)return he("The design has no block program yet.");let n=w_(r,lr(r),r.program,we(t.lang)||"micropython",e.tr||Ut);return Ve(`File ${n.file}${n.warnings.length?`
154
160
  Warnings: `+n.warnings.join("; "):""}
155
161
 
156
- ${n.code}`)}},{name:"get_board_image",mutates:!1,description:"Get a picture of the board as the user sees it (parts, bridges, wires, strip cuts, problem markers). Use to check placement and wiring visually.",input_schema:q.obj({}),async run(e){if(!e.snapshot)return he("Board images are not available here; use get_design.");let t=await e.snapshot();return t?{text:"Board image attached.",image:t}:he("Could not render the board.")}},{name:"set_project_notes",mutates:!1,description:"Replace the project notes: a short, durable description of what is being built and the key decisions (supply voltage, controller, chosen parts and values, pin assignments, open questions). It is saved with the design and given to you at the start of every conversation. Keep it under ~20 lines, plain text or simple markdown; rewrite it fully each time (it is not appended). Update it when the user agrees on something important. Allowed in both modes.",input_schema:q.obj({text:q.str("the complete new notes")},["text"]),run(e,t){let r=e.D(),n=Se(t.text).trim().slice(0,ef);return n?r.brief=n:delete r.brief,e.commit(),Ze(n?`Project notes saved (${n.split(`
157
- `).length} lines).`:"Project notes cleared.",!0)}},{name:"get_part_definition",mutates:!1,description:"The full JSON definition (PartDef) of a part type \u2013 built-in or custom \u2013 to study or to use as the starting point of a new custom part (save_custom_part). Fields: name, cat, fp, prefix, pins [{id, name, role, lr, lc, caps}], params, model (electrical elements: resistor, diode, source, \u2026), controls (press, slider), draw/body, meta.help.",input_schema:q.obj({type:q.str("part type key")},["type"]),run(e,t){let r=Se(t.type),n=T_(e)[r]||Ir[r];return n?Ze(`${r} (${r in Ir?"built-in \u2013 save changes as a new custom part":"custom part"}):
158
- ${JSON.stringify(n,null,1)}`):he(`Unknown part type "${r}". Use list_part_types.`)}},{name:"save_custom_part",mutates:!0,description:`Create or update a custom part type (the user's own parts, e.g. a potentiometer with another resistance or footprint). Start from get_part_definition of a similar part, change what is needed, and save. Give "type" to update an existing custom part; omit it to create a new one (a key is made from the name). Built-in types cannot be overwritten \u2013 save a copy under a new name. The definition is validated; errors are returned and nothing is saved. Placed parts of an updated type change with it.`,input_schema:q.obj({definition:{type:"object",description:"the complete PartDef (as returned by get_part_definition, edited)"},type:q.str("existing custom part key to update (omit for a new part)")},["definition"]),run(e,t){let r=t.definition,n=t.type==null?null:Se(t.type);if(n&&n in Ir)return he(`"${n}" is a built-in part and cannot be changed. Save the edited copy as a new part (omit "type", give it a new name).`);let o=T_(e);if(n&&!o[n])return he(`No custom part "${n}". Omit "type" to create a new one.`);let s=ia(r,ft);if(la(s))return he(`The definition has errors; nothing was saved:
159
- `+s.map(l=>`- ${l.level}: ${l.path?l.path+": ":""}${l.msg}`).join(`
160
- `));let a=n||xz(r.name,l=>l in W||l in o);if(e.saveCustomPart)e.saveCustomPart(a,r);else{let l=e.D();l.customParts={...l.customParts,[a]:r}}Co(e.D().customParts),e.commit();let i=s.filter(l=>l.level==="warn");return Ze(`${n?"Updated":"Saved new"} custom part "${a}" (${r.name}). Place it with place_part type "${a}".${i.length?`
161
- Warnings: `+i.map(l=>(l.path?l.path+": ":"")+l.msg).join("; "):""}`,!0)}},{name:"plan_compaction",mutates:!1,description:"Preview compacting the layout (does not change the design): parts move closer to what they connect to, onto a smaller area, and the wiring is re-routed and checked. Returns before/after area, bridges, wires and connected links, which parts would move and which stay (fixed, controller, controls, hand-wired). strength 0 = loose (2-hole gaps, small moves, easy soldering) \u2026 1 = tight (smallest board). Use it to suggest compaction, then compact_layout to apply.",input_schema:q.obj({strength:q.num("0 (loose) \u2026 1 (tight), default 0.5"),only:q.arr(q.str("label"),"only these parts may move (default: all movable)"),keep_mcu:q.bool("keep the controller board in place (default true)"),keep_controls:q.bool("keep buttons, sliders and connectors in place (default true)")}),run(e,t){let r=C_(e.D(),t);return"error"in r?he(r.error):Ze(nf(r,!1))}},{name:"compact_layout",mutates:!0,description:"Compact the layout (same options as plan_compaction) and apply it: parts move closer together and the wiring is re-routed. Never makes the wiring worse; fixed parts stay. Ask before compacting a layout the user arranged by hand.",input_schema:q.obj({strength:q.num("0 (loose) \u2026 1 (tight), default 0.5"),only:q.arr(q.str("label"),"only these parts may move (default: all movable)"),keep_mcu:q.bool("keep the controller board in place (default true)"),keep_controls:q.bool("keep buttons, sliders and connectors in place (default true)")}),run(e,t){let r=e.D(),n=C_(r,t);return"error"in n?he(n.error):n.moves.length?(u_(r,n),r.settings.autoRoute&&r.links.length&&Lo(r,{full:!0}),e.commit(),Ze(nf(n,!0),!0)):Ze(nf(n,!0))}},{name:"set_fixed",mutates:!0,description:"Fix parts in place (or release them). Fixed parts are not moved by compaction or by move_part; the user can still move them by hand. Fix parts whose position matters (buttons on a front panel, connectors at the edge) when the user says so.",input_schema:q.obj({labels:q.arr(q.str("label"),"part labels"),fixed:q.bool("true = fix in place, false = release")},["labels","fixed"]),run(e,t){let r=e.D(),n=Array.isArray(t.labels)?t.labels.map(Se):[],o=n.map(a=>_r(r,a)),s=n.filter((a,i)=>!o[i]);if(s.length)return he(`Unknown label(s): ${s.join(", ")}`);for(let a of o)t.fixed?a.fixed=!0:delete a.fixed;return e.commit(),Ze(`${t.fixed?"Fixed in place":"Released"}: ${n.join(", ")}.`,!0)}},{name:"list_examples",mutates:!1,description:"List the built-in example designs (id, title, description).",input_schema:q.obj({}),run(e){let t=e.examples?e.examples():[];return Ze(t.length?t.map(r=>`${r.id}: ${r.title} \u2014 ${r.desc}`).join(`
162
- `):"No examples available.")}},{name:"load_example",mutates:!0,description:"Replace the current design with a built-in example. This discards the current design (the user can undo). Ask the user first unless they asked for it.",input_schema:q.obj({id:q.str("example id")},["id"]),run(e,t){return e.loadExample?e.loadExample(Se(t.id))?Ze(`Loaded example "${Se(t.id)}".
162
+ ${n.code}`)}},{name:"get_board_image",mutates:!1,description:"Get a picture of the board as the user sees it (parts, bridges, wires, strip cuts, problem markers). Use to check placement and wiring visually.",input_schema:K.obj({}),async run(e){if(!e.snapshot)return he("Board images are not available here; use get_design.");let t=await e.snapshot();return t?{text:"Board image attached.",image:t}:he("Could not render the board.")}},{name:"set_project_notes",mutates:!1,description:"Replace the project notes: a short, durable description of what is being built and the key decisions (supply voltage, controller, chosen parts and values, pin assignments, open questions). It is saved with the design and given to you at the start of every conversation. Keep it under ~20 lines, plain text or simple markdown; rewrite it fully each time (it is not appended). Update it when the user agrees on something important. Allowed in both modes.",input_schema:K.obj({text:K.str("the complete new notes")},["text"]),run(e,t){let r=e.D(),n=we(t.text).trim().slice(0,uf);return n?r.brief=n:delete r.brief,e.commit(),Ve(n?`Project notes saved (${n.split(`
163
+ `).length} lines).`:"Project notes cleared.",!0)}},{name:"get_part_definition",mutates:!1,description:"The full JSON definition (PartDef) of a part type \u2013 built-in or custom \u2013 to study or to use as the starting point of a new custom part (save_custom_part). Fields: name, cat, fp, prefix, pins [{id, name, role, lr, lc, caps}], params, model (electrical elements: resistor, diode, source, \u2026), controls (press, slider), draw/body, meta.help.",input_schema:K.obj({type:K.str("part type key")},["type"]),run(e,t){let r=we(t.type),n=q_(e)[r]||Cr[r];return n?Ve(`${r} (${r in Cr?"built-in \u2013 save changes as a new custom part":"custom part"}):
164
+ ${JSON.stringify(n,null,1)}`):he(`Unknown part type "${r}". Use list_part_types.`)}},{name:"save_custom_part",mutates:!0,description:`Create or update a custom part type (the user's own parts, e.g. a potentiometer with another resistance or footprint). Start from get_part_definition of a similar part, change what is needed, and save. Give "type" to update an existing custom part; omit it to create a new one (a key is made from the name). Built-in types cannot be overwritten \u2013 save a copy under a new name. The definition is validated; errors are returned and nothing is saved. Placed parts of an updated type change with it.`,input_schema:K.obj({definition:{type:"object",description:"the complete PartDef (as returned by get_part_definition, edited)"},type:K.str("existing custom part key to update (omit for a new part)")},["definition"]),run(e,t){let r=t.definition,n=t.type==null?null:we(t.type);if(n&&n in Cr)return he(`"${n}" is a built-in part and cannot be changed. Save the edited copy as a new part (omit "type", give it a new name).`);let o=q_(e);if(n&&!o[n])return he(`No custom part "${n}". Omit "type" to create a new one.`);let s=da(r,pt);if(pa(s))return he(`The definition has errors; nothing was saved:
165
+ `+s.map(c=>`- ${c.level}: ${c.path?c.path+": ":""}${c.msg}`).join(`
166
+ `));let a=n||Tz(r.name,c=>c in W||c in o);if(e.saveCustomPart)e.saveCustomPart(a,r);else{let c=e.D();c.customParts={...c.customParts,[a]:r}}Ro(e.D().customParts),e.commit();let i=s.filter(c=>c.level==="warn");return Ve(`${n?"Updated":"Saved new"} custom part "${a}" (${r.name}). Place it with place_part type "${a}".${i.length?`
167
+ Warnings: `+i.map(c=>(c.path?c.path+": ":"")+c.msg).join("; "):""}`,!0)}},{name:"plan_compaction",mutates:!1,description:"Preview compacting the layout (does not change the design): parts move closer to what they connect to, onto a smaller area, and the wiring is re-routed and checked. Returns before/after area, bridges, wires and connected links, which parts would move and which stay (fixed, controller, controls, hand-wired). strength 0 = loose (2-hole gaps, small moves, easy soldering) \u2026 1 = tight (smallest board). Use it to suggest compaction, then compact_layout to apply.",input_schema:K.obj({strength:K.num("0 (loose) \u2026 1 (tight), default 0.5"),only:K.arr(K.str("label"),"only these parts may move (default: all movable)"),keep_mcu:K.bool("keep the controller board in place (default true)"),keep_controls:K.bool("keep buttons, sliders and connectors in place (default true)")}),run(e,t){let r=K_(e.D(),t);return"error"in r?he(r.error):Ve(pf(r,!1))}},{name:"compact_layout",mutates:!0,description:"Compact the layout (same options as plan_compaction) and apply it: parts move closer together and the wiring is re-routed. Never makes the wiring worse; fixed parts stay. Ask before compacting a layout the user arranged by hand.",input_schema:K.obj({strength:K.num("0 (loose) \u2026 1 (tight), default 0.5"),only:K.arr(K.str("label"),"only these parts may move (default: all movable)"),keep_mcu:K.bool("keep the controller board in place (default true)"),keep_controls:K.bool("keep buttons, sliders and connectors in place (default true)")}),run(e,t){let r=e.D(),n=K_(r,t);return"error"in n?he(n.error):n.moves.length?(b_(r,n),r.settings.autoRoute&&r.links.length&&Fo(r,{full:!0}),e.commit(),Ve(pf(n,!0),!0)):Ve(pf(n,!0))}},{name:"set_fixed",mutates:!0,description:"Fix parts in place (or release them). Fixed parts are not moved by compaction or by move_part; the user can still move them by hand. Fix parts whose position matters (buttons on a front panel, connectors at the edge) when the user says so.",input_schema:K.obj({labels:K.arr(K.str("label"),"part labels"),fixed:K.bool("true = fix in place, false = release")},["labels","fixed"]),run(e,t){let r=e.D(),n=Array.isArray(t.labels)?t.labels.map(we):[],o=n.map(a=>ur(r,a)),s=n.filter((a,i)=>!o[i]);if(s.length)return he(`Unknown label(s): ${s.join(", ")}`);for(let a of o)t.fixed?a.fixed=!0:delete a.fixed;return e.commit(),Ve(`${t.fixed?"Fixed in place":"Released"}: ${n.join(", ")}.`,!0)}},{name:"list_examples",mutates:!1,description:"List the built-in example designs (id, title, description).",input_schema:K.obj({}),run(e){let t=e.examples?e.examples():[];return Ve(t.length?t.map(r=>`${r.id}: ${r.title} \u2014 ${r.desc}`).join(`
168
+ `):"No examples available.")}},{name:"load_example",mutates:!0,description:"Replace the current design with a built-in example. This discards the current design (the user can undo). Ask the user first unless they asked for it.",input_schema:K.obj({id:K.str("example id")},["id"]),run(e,t){return e.loadExample?e.loadExample(we(t.id))?Ve(`Loaded example "${we(t.id)}".
163
169
 
164
- `+N_(e.D(),e.tr),!0):he(`Unknown example "${Se(t.id)}".`):he("Examples are not available here.")}},{name:"new_design",mutates:!0,description:"Start an empty design on a new board. Discards the current design (the user can undo). Ask the user first unless they asked for it.",input_schema:q.obj({rows:q.int("rows (default 78)"),cols:q.int("columns (default 39)"),section:q.int("strip section length in rows: 1 = dot grid, 3 = tripad, rows = full strips (default 3)")}),run(e,t){let r=Math.max(5,Math.min(200,lt(t.rows)||78)),n=Math.max(5,Math.min(120,lt(t.cols)||39)),o=Math.max(1,Math.min(r,lt(t.section)||3)),s=ba();return s.board={rows:r,cols:n,sec:o},e.setD(Ml(s)),e.commit(),Ze(`New empty design: ${r}\xD7${n}, section ${o}.`,!0)}}];async function D_(e,t,r){let n=lf.find(s=>s.name===t);if(!n)return he(`Unknown tool "${t}".`);let o=r&&typeof r=="object"?r:{};for(let s of n.input_schema.required||[])if(o[s]==null)return he(`Missing required input "${s}".`);try{return await n.run(e,o)}catch(s){return he(`Tool failed: ${s.message}`)}}function L_(e,t={}){let r={design:e};return{get design(){return r.design},D:()=>r.design,setD:n=>{r.design=n},commit(){let n=r.design;n.settings.autoRoute&&n.links.length&&Lo(n)},...t}}var B_="https://nemalsomel.github.io/proofboard/",LN=["https://nemalsomel.github.io"],VN=/^https?:\/\/(localhost|127\.0\.0\.1|\[::1\])(:\d+)?$/,FN=`Proofboard is a perfboard/stripboard circuit designer and simulator. These tools build and check a design: place parts, connect pins (wiring is routed automatically), simulate, check problems, generate code.
165
- Call bridge_status first. If the Proofboard app is connected, every change appears live in the user's browser and the user can undo it; otherwise you work on an in-memory design (save it with save_design_file, or ask the user to open ${B_}, then File \u203A Claude connection\u2026 \u203A Connect).
166
- Refer to parts by label ("R1") and pins as "R1.2" or "PICO1.GP15". Missing a part type? Copy a similar one (get_part_definition), edit and save it (save_custom_part). Place parts next to the pin they connect to (place_part "near"); keep layouts compact (plan_compaction / compact_layout). Ask before large changes or replacing the user's design.`,Z_=[{name:"bridge_status",description:"Whether the Proofboard app is connected (live editing in the user's browser) or the server works on an in-memory design. Call this first.",input_schema:{type:"object",properties:{},additionalProperties:!1}},{name:"open_design_file",description:"Load a design from a Proofboard JSON file (as saved by the app's File \u203A Save to file). Replaces the current design (in the app it can be undone).",input_schema:{type:"object",properties:{path:{type:"string",description:"file path"}},required:["path"],additionalProperties:!1}},{name:"save_design_file",description:"Save the current design to a Proofboard JSON file (it can be opened in the app with File \u203A Open).",input_schema:{type:"object",properties:{path:{type:"string",description:"file path, e.g. my-board.proofboard.json"}},required:["path"],additionalProperties:!1}}];function G_(e){let t=e.log||(()=>{}),r=L_(ba()),n=null,o="",s=0,a=null,i=new Map,l=new pl({name:"proofboard",version:e.version},{capabilities:{tools:{listChanged:!0}},instructions:FN}),c=()=>[...Z_,...n&&a?a:lf],u=()=>{try{l.sendToolListChanged().catch(()=>{})}catch{}},d=()=>{let v=l.getClientVersion();return v?v.name:void 0},p=(v,_)=>{v.readyState===1&&v.send(JSON.stringify(_))};function m(v,_){let w=n;if(!w)return Promise.resolve({text:"The Proofboard app is not connected.",isError:!0});let k=++s;return new Promise(P=>{let A=setTimeout(()=>{i.delete(k),P({text:"The Proofboard app did not answer in time (it may be busy or the tab is in the background).",isError:!0})},e.callTimeout??12e4);i.set(k,{res:P,timer:A}),p(w,{t:"call",id:k,name:v,input:_})})}let b=v=>{for(let[_,w]of i)clearTimeout(w.timer),w.res({text:v,isError:!0}),i.delete(_)};async function f(v,_){if(v==="bridge_status")return{text:n?`Connected to the Proofboard app (${o}). Changes appear live in the user's browser; the user sees a "Claude is working" bar and can undo each burst of changes with Ctrl+Z.`:`The Proofboard app is not connected: you are working on an in-memory design (${r.D().parts.length} parts). To edit live, ask the user to open ${B_} and choose File \u203A Claude connection\u2026 \u203A Connect${e.port===47615||e.port==null?"":` (port ${e.port})`}. Save your work with save_design_file.`};if(v==="open_design_file"){let w=F_(String(_.path||"")),k;try{k=Ml(JSON.parse(await MN(w,"utf8")))}catch(P){return{text:`Cannot open ${w}: ${P.message}`,isError:!0}}return n?m(ry,{design:k}):(Co(k.customParts),r.setD(k),r.commit(),{text:`Opened ${w} (${k.parts.length} parts).`,changed:!0})}if(v==="save_design_file"){let w=F_(String(_.path||"")),k;if(n){let P=await m(ty,{});if(P.isError)return P;k=P.text}else k=JSON.stringify(r.D(),null,1);try{await DN(w,k)}catch(P){return{text:`Cannot write ${w}: ${P.message}`,isError:!0}}return{text:`Saved to ${w}. Open it in the app with File \u203A Open.`}}return n?m(v,_):D_(r,v,_)}l.setRequestHandler(au,async()=>({tools:c().map(v=>({name:v.name,description:v.description,inputSchema:v.input_schema}))})),l.setRequestHandler(gs,async v=>{let _=await f(v.params.name,v.params.arguments||{});return{content:[{type:"text",text:_.text},..._.image?[{type:"image",data:_.image,mimeType:"image/png"}]:[]],isError:!!_.isError}}),l.oninitialized=()=>{let v=d();v&&n&&p(n,{t:"client",client:v})};let h=null;function g(){if(e.port===null)return Promise.resolve(null);let v=_=>!_||VN.test(_)||[...LN,...e.origins||[]].includes(_);return new Promise(_=>{let w=new Ip.default({host:"127.0.0.1",port:e.port??47615,verifyClient:k=>v(k.origin)});w.on("error",k=>{t(`Bridge not started (${k.message}); working without the app.`),h=null,_(null)}),w.on("listening",()=>{h=w;let k=w.address(),P=typeof k=="object"&&k?k.port:null;t(`Bridge listening on ws://127.0.0.1:${P}`),_(P)}),w.on("connection",k=>{let P=!1;k.on("message",A=>{let Z=ny(A);if(Z){if(Z.t==="hello"){if(Z.proto!==1||Z.app!=="proofboard"){p(k,{t:"bye",reason:`Unsupported protocol ${Z.proto}; update proofboard-mcp.`}),k.close();return}n&&n!==k&&(p(n,{t:"bye",reason:"Another Proofboard tab connected."}),n.close()),P=!0,n=k,o=`Proofboard ${Z.version}, design: ${Z.design}`,t(`App connected: ${o}`);let D=JSON.stringify(c().map(B=>B.name));a=Array.isArray(Z.tools)&&Z.tools.length?Z.tools.filter(B=>B&&typeof B.name=="string"&&!Z_.some(K=>K.name===B.name)):null,JSON.stringify(c().map(B=>B.name))!==D&&u(),p(k,{t:"welcome",proto:1,server:"proofboard-mcp",version:e.version,client:d()})}else if(Z.t==="result"&&P){let D=i.get(Z.id);D&&(clearTimeout(D.timer),i.delete(Z.id),D.res(Z.result))}}}),k.on("close",()=>{if(n===k){let A=!!a;n=null,a=null,t("App disconnected."),b("The Proofboard app disconnected before answering."),A&&u()}})})})}return{mcp:l,call:f,listen:g,tools:()=>c().map(v=>v.name),connected:()=>!!n,headless:r,async close(){b("Server closing.");for(let v of h?[...h.clients]:[])v.terminate();await new Promise(v=>h?h.close(()=>v()):v()),h=null,await l.close().catch(()=>{})}}}var yn=process.argv.slice(2),ZN=e=>{let t=yn.indexOf(e);return t>=0?yn[t+1]:void 0};(yn.includes("--help")||yn.includes("-h"))&&(process.stderr.write(`proofboard-mcp [--port 47615] [--no-bridge] [--allow-origin https://example.org]
167
- `),process.exit(0));var BN=yn.includes("--no-bridge")?null:Number(ZN("--port")||process.env.PROOFBOARD_PORT||47615),GN=yn.flatMap((e,t)=>e==="--allow-origin"&&yn[t+1]?[yn[t+1]]:[]),cf=G_({version:"0.2.0",port:BN,origins:GN,log:e=>process.stderr.write(`[proofboard] ${e}
168
- `)});await cf.listen();await cf.mcp.connect(new zi);var uf=()=>{cf.close().finally(()=>process.exit(0))};process.on("SIGINT",uf);process.on("SIGTERM",uf);process.stdin.on("close",uf);
170
+ `+H_(e.D(),e.tr),!0):he(`Unknown example "${we(t.id)}".`):he("Examples are not available here.")}},{name:"new_design",mutates:!0,description:"Start an empty design on a new board. Discards the current design (the user can undo). Ask the user first unless they asked for it.",input_schema:K.obj({rows:K.int("rows (default 78)"),cols:K.int("columns (default 39)"),section:K.int("strip section length in rows: 1 = dot grid, 3 = tripad, rows = full strips (default 3)")}),run(e,t){let r=Math.max(5,Math.min(200,st(t.rows)||78)),n=Math.max(5,Math.min(120,st(t.cols)||39)),o=Math.max(1,Math.min(r,st(t.section)||3)),s=_a();return s.board={rows:r,cols:n,sec:o},e.setD(Zl(s)),e.commit(),Ve(`New empty design: ${r}\xD7${n}, section ${o}.`,!0)}},...N_({ok:Ve,err:he,en:pt,num:st,str:we,partOf:ur,pinOf:Uo,pinLabelOf:Ul,S:K})];async function X_(e,t,r){let n=gf.find(s=>s.name===t);if(!n)return he(`Unknown tool "${t}".`);let o=r&&typeof r=="object"?r:{};for(let s of n.input_schema.required||[])if(o[s]==null)return he(`Missing required input "${s}".`);try{return await n.run(e,o)}catch(s){return he(`Tool failed: ${s.message}`)}}function Q_(e,t={}){let r={design:e};return{get design(){return r.design},D:()=>r.design,setD:n=>{r.design=n},commit(){let n=r.design;n.settings.autoRoute&&n.links.length&&Fo(n)},...t}}var nw="https://nemalsomel.github.io/proofboard/",tR=["https://nemalsomel.github.io"],rR=/^https?:\/\/(localhost|127\.0\.0\.1|\[::1\])(:\d+)?$/,nR=`Proofboard is a perfboard/stripboard circuit designer and simulator. These tools build and check a design: place parts, connect pins (wiring is routed automatically), simulate, check problems, generate code.
171
+ Call bridge_status first. If the Proofboard app is connected, every change appears live in the user's browser and the user can undo it; otherwise you work on an in-memory design (save it with save_design_file, or ask the user to open ${nw}, then File \u203A Claude connection\u2026 \u203A Connect).
172
+ Refer to parts by label ("R1") and pins as "R1.2" or "PICO1.GP15". Program behaviour (blinking, buttons, PWM, sequences) is built from blocks in the app's Program view (list_block_types, add_block, connect_blocks, arrange_program, run_program); generate_code makes firmware from it. Missing a part type? Copy a similar one (get_part_definition), edit and save it (save_custom_part). Place parts next to the pin they connect to (place_part "near"); keep layouts compact (plan_compaction / compact_layout). Ask before large changes or replacing the user's design.`,rw=[{name:"bridge_status",description:"Whether the Proofboard app is connected (live editing in the user's browser) or the server works on an in-memory design. Call this first.",input_schema:{type:"object",properties:{},additionalProperties:!1}},{name:"open_design_file",description:"Load a design from a Proofboard JSON file (as saved by the app's File \u203A Save to file). Replaces the current design (in the app it can be undone).",input_schema:{type:"object",properties:{path:{type:"string",description:"file path"}},required:["path"],additionalProperties:!1}},{name:"save_design_file",description:"Save the current design to a Proofboard JSON file (it can be opened in the app with File \u203A Open).",input_schema:{type:"object",properties:{path:{type:"string",description:"file path, e.g. my-board.proofboard.json"}},required:["path"],additionalProperties:!1}}];function ow(e){let t=e.log||(()=>{}),r=Q_(_a()),n=null,o="",s=0,a=null,i=new Map,c=new gl({name:"proofboard",version:e.version},{capabilities:{tools:{listChanged:!0}},instructions:nR}),l=()=>[...rw,...n&&a?a:gf],u=()=>{try{c.sendToolListChanged().catch(()=>{})}catch{}},d=()=>{let v=c.getClientVersion();return v?v.name:void 0},f=(v,_)=>{v.readyState===1&&v.send(JSON.stringify(_))};function g(v,_){let z=n;if(!z)return Promise.resolve({text:"The Proofboard app is not connected.",isError:!0});let k=++s;return new Promise(x=>{let A=setTimeout(()=>{i.delete(k),x({text:"The Proofboard app did not answer in time (it may be busy or the tab is in the background).",isError:!0})},e.callTimeout??12e4);i.set(k,{res:x,timer:A}),f(z,{t:"call",id:k,name:v,input:_})})}let h=v=>{for(let[_,z]of i)clearTimeout(z.timer),z.res({text:v,isError:!0}),i.delete(_)};async function p(v,_){if(v==="bridge_status")return{text:n?`Connected to the Proofboard app (${o}). Changes appear live in the user's browser; the user sees a "Claude is working" bar and can undo each burst of changes with Ctrl+Z.`:`The Proofboard app is not connected: you are working on an in-memory design (${r.D().parts.length} parts). To edit live, ask the user to open ${nw} and choose File \u203A Claude connection\u2026 \u203A Connect${e.port===47615||e.port==null?"":` (port ${e.port})`}. Save your work with save_design_file.`};if(v==="open_design_file"){let z=tw(String(_.path||"")),k;try{k=Zl(JSON.parse(await QN(z,"utf8")))}catch(x){return{text:`Cannot open ${z}: ${x.message}`,isError:!0}}return n?g(uy,{design:k}):(Ro(k.customParts),r.setD(k),r.commit(),{text:`Opened ${z} (${k.parts.length} parts).`,changed:!0})}if(v==="save_design_file"){let z=tw(String(_.path||"")),k;if(n){let x=await g(cy,{});if(x.isError)return x;k=x.text}else k=JSON.stringify(r.D(),null,1);try{await eR(z,k)}catch(x){return{text:`Cannot write ${z}: ${x.message}`,isError:!0}}return{text:`Saved to ${z}. Open it in the app with File \u203A Open.`}}return n?g(v,_):X_(r,v,_)}c.setRequestHandler(fu,async()=>({tools:l().map(v=>({name:v.name,description:v.description,inputSchema:v.input_schema}))})),c.setRequestHandler(vs,async v=>{let _=await p(v.params.name,v.params.arguments||{});return{content:[{type:"text",text:_.text},..._.image?[{type:"image",data:_.image,mimeType:"image/png"}]:[]],isError:!!_.isError}}),c.oninitialized=()=>{let v=d();v&&n&&f(n,{t:"client",client:v})};let m=null;function b(){if(e.port===null)return Promise.resolve(null);let v=_=>!_||rR.test(_)||[...tR,...e.origins||[]].includes(_);return new Promise(_=>{let z=new Dp.default({host:"127.0.0.1",port:e.port??47615,verifyClient:k=>v(k.origin)});z.on("error",k=>{t(`Bridge not started (${k.message}); working without the app.`),m=null,_(null)}),z.on("listening",()=>{m=z;let k=z.address(),x=typeof k=="object"&&k?k.port:null;t(`Bridge listening on ws://127.0.0.1:${x}`),_(x)}),z.on("connection",k=>{let x=!1;k.on("message",A=>{let G=dy(A);if(G){if(G.t==="hello"){if(G.proto!==1||G.app!=="proofboard"){f(k,{t:"bye",reason:`Unsupported protocol ${G.proto}; update proofboard-mcp.`}),k.close();return}n&&n!==k&&(f(n,{t:"bye",reason:"Another Proofboard tab connected."}),n.close()),x=!0,n=k,o=`Proofboard ${G.version}, design: ${G.design}`,t(`App connected: ${o}`);let L=JSON.stringify(l().map(M=>M.name));a=Array.isArray(G.tools)&&G.tools.length?G.tools.filter(M=>M&&typeof M.name=="string"&&!rw.some(B=>B.name===M.name)):null,JSON.stringify(l().map(M=>M.name))!==L&&u(),f(k,{t:"welcome",proto:1,server:"proofboard-mcp",version:e.version,client:d()})}else if(G.t==="result"&&x){let L=i.get(G.id);L&&(clearTimeout(L.timer),i.delete(G.id),L.res(G.result))}}}),k.on("close",()=>{if(n===k){let A=!!a;n=null,a=null,t("App disconnected."),h("The Proofboard app disconnected before answering."),A&&u()}})})})}return{mcp:c,call:p,listen:b,tools:()=>l().map(v=>v.name),connected:()=>!!n,headless:r,async close(){h("Server closing.");for(let v of m?[...m.clients]:[])v.terminate();await new Promise(v=>m?m.close(()=>v()):v()),m=null,await c.close().catch(()=>{})}}}var vn=process.argv.slice(2),oR=e=>{let t=vn.indexOf(e);return t>=0?vn[t+1]:void 0};(vn.includes("--help")||vn.includes("-h"))&&(process.stderr.write(`proofboard-mcp [--port 47615] [--no-bridge] [--allow-origin https://example.org]
173
+ `),process.exit(0));var sR=vn.includes("--no-bridge")?null:Number(oR("--port")||process.env.PROOFBOARD_PORT||47615),aR=vn.flatMap((e,t)=>e==="--allow-origin"&&vn[t+1]?[vn[t+1]]:[]),bf=ow({version:"0.3.0",port:sR,origins:aR,log:e=>process.stderr.write(`[proofboard] ${e}
174
+ `)});await bf.listen();await bf.mcp.connect(new Si);var yf=()=>{bf.close().finally(()=>process.exit(0))};process.on("SIGINT",yf);process.on("SIGTERM",yf);process.stdin.on("close",yf);