@riddix/hamh 2.1.0-alpha.740 → 2.1.0-alpha.741

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.
@@ -9,7 +9,7 @@ Error generating stack: `+e.message+`
9
9
  `).replace(Ld,``)}function zd(e,t){return t=Rd(t),Rd(e)===t}function K(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Bt(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Bt(e,``+r);break;case`className`:wt(e,`class`,r);break;case`tabIndex`:wt(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:wt(e,n,r);break;case`style`:Ut(e,r,o);break;case`data`:if(t!==`object`){wt(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)){e.removeAttribute(n);break}if(r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=qt(``+r),e.setAttribute(n,r);break;case`action`:case`formAction`:if(typeof r==`function`){e.setAttribute(n,`javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')`);break}else typeof o==`function`&&(n===`formAction`?(t!==`input`&&K(e,t,`name`,a.name,a,null),K(e,t,`formEncType`,a.formEncType,a,null),K(e,t,`formMethod`,a.formMethod,a,null),K(e,t,`formTarget`,a.formTarget,a,null)):(K(e,t,`encType`,a.encType,a,null),K(e,t,`method`,a.method,a,null),K(e,t,`target`,a.target,a,null)));if(r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=qt(``+r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=Jt);break;case`onScroll`:r!=null&&Dd(`scroll`,e);break;case`onScrollEnd`:r!=null&&Dd(`scrollend`,e);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`multiple`:e.multiple=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`muted`:e.muted=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`ref`:break;case`autoFocus`:break;case`xlinkHref`:if(r==null||typeof r==`function`||typeof r==`boolean`||typeof r==`symbol`){e.removeAttribute(`xlink:href`);break}n=qt(``+r),e.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,n);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``+r):e.removeAttribute(n);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:r&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``):e.removeAttribute(n);break;case`capture`:case`download`:!0===r?e.setAttribute(n,``):!1!==r&&r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`cols`:case`rows`:case`size`:case`span`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case`rowSpan`:case`start`:r==null||typeof r==`function`||typeof r==`symbol`||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case`popover`:Dd(`beforetoggle`,e),Dd(`toggle`,e),Ct(e,`popover`,r);break;case`xlinkActuate`:Tt(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:Tt(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:Tt(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:Tt(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:Tt(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:Tt(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:Tt(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:Tt(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:Tt(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:Ct(e,`is`,r);break;case`innerText`:case`textContent`:break;default:(!(2<n.length)||n[0]!==`o`&&n[0]!==`O`||n[1]!==`n`&&n[1]!==`N`)&&(n=Gt.get(n)||n,Ct(e,n,r))}}function Bd(e,t,n,r,a,o){switch(n){case`style`:Ut(e,r,o);break;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(i(61));if(n=r.__html,n!=null){if(a.children!=null)throw Error(i(60));e.innerHTML=n}}break;case`children`:typeof r==`string`?Bt(e,r):(typeof r==`number`||typeof r==`bigint`)&&Bt(e,``+r);break;case`onScroll`:r!=null&&Dd(`scroll`,e);break;case`onScrollEnd`:r!=null&&Dd(`scrollend`,e);break;case`onClick`:r!=null&&(e.onclick=Jt);break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`innerHTML`:case`ref`:break;case`innerText`:case`textContent`:break;default:if(!gt.hasOwnProperty(n))a:{if(n[0]===`o`&&n[1]===`n`&&(a=n.endsWith(`Capture`),t=n.slice(2,a?n.length-7:void 0),o=e[nt]||null,o=o==null?null:o[n],typeof o==`function`&&e.removeEventListener(t,o,a),typeof r==`function`)){typeof o!=`function`&&o!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,r,a);break a}n in e?e[n]=r:!0===r?e.setAttribute(n,``):Ct(e,n,r)}}}function Vd(e,t,n){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`img`:Dd(`error`,e),Dd(`load`,e);var r=!1,a=!1,o;for(o in n)if(n.hasOwnProperty(o)){var s=n[o];if(s!=null)switch(o){case`src`:r=!0;break;case`srcSet`:a=!0;break;case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:K(e,t,o,s,n,null)}}a&&K(e,t,`srcSet`,n.srcSet,n,null),r&&K(e,t,`src`,n.src,n,null);return;case`input`:Dd(`invalid`,e);var c=o=s=a=null,l=null,u=null;for(r in n)if(n.hasOwnProperty(r)){var d=n[r];if(d!=null)switch(r){case`name`:a=d;break;case`type`:s=d;break;case`checked`:l=d;break;case`defaultChecked`:u=d;break;case`value`:o=d;break;case`defaultValue`:c=d;break;case`children`:case`dangerouslySetInnerHTML`:if(d!=null)throw Error(i(137,t));break;default:K(e,t,r,d,n,null)}}Ft(e,o,c,l,u,s,a,!1);return;case`select`:for(a in Dd(`invalid`,e),r=s=o=null,n)if(n.hasOwnProperty(a)&&(c=n[a],c!=null))switch(a){case`value`:o=c;break;case`defaultValue`:s=c;break;case`multiple`:r=c;default:K(e,t,a,c,n,null)}t=o,n=s,e.multiple=!!r,t==null?n!=null&&Lt(e,!!r,n,!0):Lt(e,!!r,t,!1);return;case`textarea`:for(s in Dd(`invalid`,e),o=a=r=null,n)if(n.hasOwnProperty(s)&&(c=n[s],c!=null))switch(s){case`value`:r=c;break;case`defaultValue`:a=c;break;case`children`:o=c;break;case`dangerouslySetInnerHTML`:if(c!=null)throw Error(i(91));break;default:K(e,t,s,c,n,null)}zt(e,r,a,o);return;case`option`:for(l in n)if(n.hasOwnProperty(l)&&(r=n[l],r!=null))switch(l){case`selected`:e.selected=r&&typeof r!=`function`&&typeof r!=`symbol`;break;default:K(e,t,l,r,n,null)}return;case`dialog`:Dd(`beforetoggle`,e),Dd(`toggle`,e),Dd(`cancel`,e),Dd(`close`,e);break;case`iframe`:case`object`:Dd(`load`,e);break;case`video`:case`audio`:for(r=0;r<wd.length;r++)Dd(wd[r],e);break;case`image`:Dd(`error`,e),Dd(`load`,e);break;case`details`:Dd(`toggle`,e);break;case`embed`:case`source`:case`link`:Dd(`error`,e),Dd(`load`,e);case`area`:case`base`:case`br`:case`col`:case`hr`:case`keygen`:case`meta`:case`param`:case`track`:case`wbr`:case`menuitem`:for(u in n)if(n.hasOwnProperty(u)&&(r=n[u],r!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:throw Error(i(137,t));default:K(e,t,u,r,n,null)}return;default:if(Wt(t)){for(d in n)n.hasOwnProperty(d)&&(r=n[d],r!==void 0&&Bd(e,t,d,r,n,void 0));return}}for(c in n)n.hasOwnProperty(c)&&(r=n[c],r!=null&&K(e,t,c,r,n,null))}function Hd(e,t,n,r){switch(t){case`div`:case`span`:case`svg`:case`path`:case`a`:case`g`:case`p`:case`li`:break;case`input`:var a=null,o=null,s=null,c=null,l=null,u=null,d=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&f!=null)switch(m){case`checked`:break;case`value`:break;case`defaultValue`:l=f;default:r.hasOwnProperty(m)||K(e,t,m,null,r,f)}}for(var p in r){var m=r[p];if(f=n[p],r.hasOwnProperty(p)&&(m!=null||f!=null))switch(p){case`type`:o=m;break;case`name`:a=m;break;case`checked`:u=m;break;case`defaultChecked`:d=m;break;case`value`:s=m;break;case`defaultValue`:c=m;break;case`children`:case`dangerouslySetInnerHTML`:if(m!=null)throw Error(i(137,t));break;default:m!==f&&K(e,t,p,m,r,f)}}Pt(e,s,c,l,u,d,o,a);return;case`select`:for(o in m=s=c=p=null,n)if(l=n[o],n.hasOwnProperty(o)&&l!=null)switch(o){case`value`:break;case`multiple`:m=l;default:r.hasOwnProperty(o)||K(e,t,o,null,r,l)}for(a in r)if(o=r[a],l=n[a],r.hasOwnProperty(a)&&(o!=null||l!=null))switch(a){case`value`:p=o;break;case`defaultValue`:c=o;break;case`multiple`:s=o;default:o!==l&&K(e,t,a,o,r,l)}t=c,n=s,r=m,p==null?!!r!=!!n&&(t==null?Lt(e,!!n,n?[]:``,!1):Lt(e,!!n,t,!0)):Lt(e,!!n,p,!1);return;case`textarea`:for(c in m=p=null,n)if(a=n[c],n.hasOwnProperty(c)&&a!=null&&!r.hasOwnProperty(c))switch(c){case`value`:break;case`children`:break;default:K(e,t,c,null,r,a)}for(s in r)if(a=r[s],o=n[s],r.hasOwnProperty(s)&&(a!=null||o!=null))switch(s){case`value`:p=a;break;case`defaultValue`:m=a;break;case`children`:break;case`dangerouslySetInnerHTML`:if(a!=null)throw Error(i(91));break;default:a!==o&&K(e,t,s,a,r,o)}Rt(e,p,m);return;case`option`:for(var h in n)if(p=n[h],n.hasOwnProperty(h)&&p!=null&&!r.hasOwnProperty(h))switch(h){case`selected`:e.selected=!1;break;default:K(e,t,h,null,r,p)}for(l in r)if(p=r[l],m=n[l],r.hasOwnProperty(l)&&p!==m&&(p!=null||m!=null))switch(l){case`selected`:e.selected=p&&typeof p!=`function`&&typeof p!=`symbol`;break;default:K(e,t,l,p,r,m)}return;case`img`:case`link`:case`area`:case`base`:case`br`:case`col`:case`embed`:case`hr`:case`keygen`:case`meta`:case`param`:case`source`:case`track`:case`wbr`:case`menuitem`:for(var g in n)p=n[g],n.hasOwnProperty(g)&&p!=null&&!r.hasOwnProperty(g)&&K(e,t,g,null,r,p);for(u in r)if(p=r[u],m=n[u],r.hasOwnProperty(u)&&p!==m&&(p!=null||m!=null))switch(u){case`children`:case`dangerouslySetInnerHTML`:if(p!=null)throw Error(i(137,t));break;default:K(e,t,u,p,r,m)}return;default:if(Wt(t)){for(var _ in n)p=n[_],n.hasOwnProperty(_)&&p!==void 0&&!r.hasOwnProperty(_)&&Bd(e,t,_,void 0,r,p);for(d in r)p=r[d],m=n[d],!r.hasOwnProperty(d)||p===m||p===void 0&&m===void 0||Bd(e,t,d,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&p!=null&&!r.hasOwnProperty(v)&&K(e,t,v,null,r,p);for(f in r)p=r[f],m=n[f],!r.hasOwnProperty(f)||p===m||p==null&&m==null||K(e,t,f,p,r,m)}function Ud(e){switch(e){case`css`:case`script`:case`font`:case`img`:case`image`:case`input`:case`link`:return!0;default:return!1}}function Wd(){if(typeof performance.getEntriesByType==`function`){for(var e=0,t=0,n=performance.getEntriesByType(`resource`),r=0;r<n.length;r++){var i=n[r],a=i.transferSize,o=i.initiatorType,s=i.duration;if(a&&s&&Ud(o)){for(o=0,s=i.responseEnd,r+=1;r<n.length;r++){var c=n[r],l=c.startTime;if(l>s)break;var u=c.transferSize,d=c.initiatorType;u&&Ud(d)&&(c=c.responseEnd,o+=u*(c<s?1:(s-l)/(c-l)))}if(--r,t+=8*(a+o)/(i.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e==`number`)?e:5}var Gd=null,Kd=null;function qd(e){return e.nodeType===9?e:e.ownerDocument}function Jd(e){switch(e){case`http://www.w3.org/2000/svg`:return 1;case`http://www.w3.org/1998/Math/MathML`:return 2;default:return 0}}function Yd(e,t){if(e===0)switch(t){case`svg`:return 1;case`math`:return 2;default:return 0}return e===1&&t===`foreignObject`?0:e}function Xd(e,t){return e===`textarea`||e===`noscript`||typeof t.children==`string`||typeof t.children==`number`||typeof t.children==`bigint`||typeof t.dangerouslySetInnerHTML==`object`&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var Zd=null;function Qd(){var e=window.event;return e&&e.type===`popstate`?e===Zd?!1:(Zd=e,!0):(Zd=null,!1)}var $d=typeof setTimeout==`function`?setTimeout:void 0,ef=typeof clearTimeout==`function`?clearTimeout:void 0,tf=typeof Promise==`function`?Promise:void 0,nf=typeof queueMicrotask==`function`?queueMicrotask:tf===void 0?$d:function(e){return tf.resolve(null).then(e).catch(rf)};function rf(e){setTimeout(function(){throw e})}function af(e){return e===`head`}function of(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8)if(n=i.data,n===`/$`||n===`/&`){if(r===0){e.removeChild(i),zp(t);return}r--}else if(n===`$`||n===`$?`||n===`$~`||n===`$!`||n===`&`)r++;else if(n===`html`)bf(e.ownerDocument.documentElement);else if(n===`head`){n=e.ownerDocument.head,bf(n);for(var a=n.firstChild;a;){var o=a.nextSibling,s=a.nodeName;a[ct]||s===`SCRIPT`||s===`STYLE`||s===`LINK`&&a.rel.toLowerCase()===`stylesheet`||n.removeChild(a),a=o}}else n===`body`&&bf(e.ownerDocument.body);n=i}while(n);zp(t)}function sf(e,t){var n=e;e=0;do{var r=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display=`none`):(n.style.display=n._stashedDisplay||``,n.getAttribute(`style`)===``&&n.removeAttribute(`style`)):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=``):n.nodeValue=n._stashedText||``),r&&r.nodeType===8)if(n=r.data,n===`/$`){if(e===0)break;e--}else n!==`$`&&n!==`$?`&&n!==`$~`&&n!==`$!`||e++;n=r}while(n)}function cf(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case`HTML`:case`HEAD`:case`BODY`:cf(n),lt(n);continue;case`SCRIPT`:case`STYLE`:continue;case`LINK`:if(n.rel.toLowerCase()===`stylesheet`)continue}e.removeChild(n)}}function lf(e,t,n,r){for(;e.nodeType===1;){var i=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&(e.nodeName!==`INPUT`||e.type!==`hidden`))break}else if(!r)if(t===`input`&&e.type===`hidden`){var a=i.name==null?null:``+i.name;if(i.type===`hidden`&&e.getAttribute(`name`)===a)return e}else return e;else if(!e[ct])switch(t){case`meta`:if(!e.hasAttribute(`itemprop`))break;return e;case`link`:if(a=e.getAttribute(`rel`),a===`stylesheet`&&e.hasAttribute(`data-precedence`)||a!==i.rel||e.getAttribute(`href`)!==(i.href==null||i.href===``?null:i.href)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin)||e.getAttribute(`title`)!==(i.title==null?null:i.title))break;return e;case`style`:if(e.hasAttribute(`data-precedence`))break;return e;case`script`:if(a=e.getAttribute(`src`),(a!==(i.src==null?null:i.src)||e.getAttribute(`type`)!==(i.type==null?null:i.type)||e.getAttribute(`crossorigin`)!==(i.crossOrigin==null?null:i.crossOrigin))&&a&&e.hasAttribute(`async`)&&!e.hasAttribute(`itemprop`))break;return e;default:return e}if(e=hf(e.nextSibling),e===null)break}return null}function uf(e,t,n){if(t===``)return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!n||(e=hf(e.nextSibling),e===null))return null;return e}function df(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!==`INPUT`||e.type!==`hidden`)&&!t||(e=hf(e.nextSibling),e===null))return null;return e}function ff(e){return e.data===`$?`||e.data===`$~`}function pf(e){return e.data===`$!`||e.data===`$?`&&e.ownerDocument.readyState!==`loading`}function mf(e,t){var n=e.ownerDocument;if(e.data===`$~`)e._reactRetry=t;else if(e.data!==`$?`||n.readyState!==`loading`)t();else{var r=function(){t(),n.removeEventListener(`DOMContentLoaded`,r)};n.addEventListener(`DOMContentLoaded`,r),e._reactRetry=r}}function hf(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t===`$`||t===`$!`||t===`$?`||t===`$~`||t===`&`||t===`F!`||t===`F`)break;if(t===`/$`||t===`/&`)return null}}return e}var gf=null;function _f(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`/$`||n===`/&`){if(t===0)return hf(e.nextSibling);t--}else n!==`$`&&n!==`$!`&&n!==`$?`&&n!==`$~`&&n!==`&`||t++}e=e.nextSibling}return null}function vf(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`$`||n===`$!`||n===`$?`||n===`$~`||n===`&`){if(t===0)return e;t--}else n!==`/$`&&n!==`/&`||t++}e=e.previousSibling}return null}function yf(e,t,n){switch(t=qd(n),e){case`html`:if(e=t.documentElement,!e)throw Error(i(452));return e;case`head`:if(e=t.head,!e)throw Error(i(453));return e;case`body`:if(e=t.body,!e)throw Error(i(454));return e;default:throw Error(i(451))}}function bf(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);lt(e)}var xf=new Map,Sf=new Set;function Cf(e){return typeof e.getRootNode==`function`?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var wf=L.d;L.d={f:Tf,r:Ef,D:eee,C:kf,L:Af,m:jf,X:Nf,S:Mf,M:Pf};function Tf(){var e=wf.f(),t=Du();return e||t}function Ef(e){var t=dt(e);t!==null&&t.tag===5&&t.type===`form`?Es(t):wf.r(e)}var Df=typeof document>`u`?null:document;function Of(e,t,n){var r=Df;if(r&&typeof t==`string`&&t){var i=Nt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),Sf.has(i)||(Sf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Vd(t,`link`,e),mt(t),r.head.appendChild(t)))}}function eee(e){wf.D(e),Of(`dns-prefetch`,e,null)}function kf(e,t){wf.C(e,t),Of(`preconnect`,e,t)}function Af(e,t,n){wf.L(e,t,n);var r=Df;if(r&&e&&t){var i=`link[rel="preload"][as="`+Nt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Nt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Nt(n.imageSizes)+`"]`)):i+=`[href="`+Nt(e)+`"]`;var a=i;switch(t){case`style`:a=If(e);break;case`script`:a=Bf(e)}xf.has(a)||(e=f({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),xf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Lf(a))||t===`script`&&r.querySelector(Vf(a))||(t=r.createElement(`link`),Vd(t,`link`,e),mt(t),r.head.appendChild(t)))}}function jf(e,t){wf.m(e,t);var n=Df;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Nt(r)+`"][href="`+Nt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Bf(e)}if(!xf.has(a)&&(e=f({rel:`modulepreload`,href:e},t),xf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Vf(a)))return}r=n.createElement(`link`),Vd(r,`link`,e),mt(r),n.head.appendChild(r)}}}function Mf(e,t,n){wf.S(e,t,n);var r=Df;if(r&&e){var i=pt(r).hoistableStyles,a=If(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Lf(a)))s.loading=5;else{e=f({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=xf.get(a))&&Wf(e,n);var c=o=r.createElement(`link`);mt(c),Vd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Uf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Nf(e,t){wf.X(e,t);var n=Df;if(n&&e){var r=pt(n).hoistableScripts,i=Bf(e),a=r.get(i);a||(a=n.querySelector(Vf(i)),a||(e=f({src:e,async:!0},t),(t=xf.get(i))&&Gf(e,t),a=n.createElement(`script`),mt(a),Vd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Pf(e,t){wf.M(e,t);var n=Df;if(n&&e){var r=pt(n).hoistableScripts,i=Bf(e),a=r.get(i);a||(a=n.querySelector(Vf(i)),a||(e=f({src:e,async:!0,type:`module`},t),(t=xf.get(i))&&Gf(e,t),a=n.createElement(`script`),mt(a),Vd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Ff(e,t,n,r){var a=(a=ie.current)?Cf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=If(n.href),n=pt(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=If(n.href);var o=pt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Lf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),xf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},xf.set(e,n),o||zf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Bf(n),n=pt(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function If(e){return`href="`+Nt(e)+`"`}function Lf(e){return`link[rel="stylesheet"][`+e+`]`}function Rf(e){return f({},e,{"data-precedence":e.precedence,precedence:null})}function zf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Vd(t,`link`,n),mt(t),e.head.appendChild(t))}function Bf(e){return`[src="`+Nt(e)+`"]`}function Vf(e){return`script[async]`+e}function Hf(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Nt(n.href)+`"]`);if(r)return t.instance=r,mt(r),r;var a=f({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),mt(r),Vd(r,`style`,a),Uf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=If(n.href);var o=e.querySelector(Lf(a));if(o)return t.state.loading|=4,t.instance=o,mt(o),o;r=Rf(n),(a=xf.get(a))&&Wf(r,a),o=(e.ownerDocument||e).createElement(`link`),mt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Vd(o,`link`,r),t.state.loading|=4,Uf(o,n.precedence,e),t.instance=o;case`script`:return o=Bf(n.src),(a=e.querySelector(Vf(o)))?(t.instance=a,mt(a),a):(r=n,(a=xf.get(o))&&(r=f({},n),Gf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),mt(a),Vd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Uf(r,n.precedence,e));return t.instance}function Uf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o<r.length;o++){var s=r[o];if(s.dataset.precedence===t)a=s;else if(a!==i)break}a?a.parentNode.insertBefore(e,a.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function Wf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.title??=t.title}function Gf(e,t){e.crossOrigin??=t.crossOrigin,e.referrerPolicy??=t.referrerPolicy,e.integrity??=t.integrity}var Kf=null;function qf(e,t,n){if(Kf===null){var r=new Map,i=Kf=new Map;i.set(n,r)}else i=Kf,r=i.get(n),r||(r=new Map,i.set(n,r));if(r.has(e))return r;for(r.set(e,null),n=n.getElementsByTagName(e),i=0;i<n.length;i++){var a=n[i];if(!(a[ct]||a[tt]||e===`link`&&a.getAttribute(`rel`)===`stylesheet`)&&a.namespaceURI!==`http://www.w3.org/2000/svg`){var o=a.getAttribute(t)||``;o=e+o;var s=r.get(o);s?s.push(a):r.set(o,[a])}}return r}function Jf(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t===`title`?e.querySelector(`head > title`):null)}function Yf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Xf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Zf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=If(r.href),a=t.querySelector(Lf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=ep.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,mt(a);return}a=t.ownerDocument||t,r=Rf(r),(i=xf.get(i))&&Wf(r,i),a=a.createElement(`link`),mt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Vd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=ep.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Qf=0;function $f(e,t){return e.stylesheets&&e.count===0&&np(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var r=setTimeout(function(){if(e.stylesheets&&np(e,e.stylesheets),e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}},6e4+t);0<e.imgBytes&&Qf===0&&(Qf=62500*Wd());var i=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&np(e,e.stylesheets),e.unsuspend)){var t=e.unsuspend;e.unsuspend=null,t()}},(e.imgBytes>Qf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function ep(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)np(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var tp=null;function np(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,tp=new Map,t.forEach(rp,e),tp=null,ep.call(e))}function rp(e,t){if(!(t.state.loading&4)){var n=tp.get(e);if(n)var r=n.get(null);else{n=new Map,tp.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a<i.length;a++){var o=i[a];(o.nodeName===`LINK`||o.getAttribute(`media`)!==`not all`)&&(n.set(o.dataset.precedence,o),r=o)}r&&n.set(null,r)}i=t.instance,o=i.getAttribute(`data-precedence`),a=n.get(o)||r,a===r&&n.set(null,i),n.set(o,i),this.count++,r=ep.bind(this),i.addEventListener(`load`,r),i.addEventListener(`error`,r),a?a.parentNode.insertBefore(i,a.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(i,e.firstChild)),t.state.loading|=4}}var ip={$$typeof:C,Provider:null,Consumer:null,_currentValue:R,_currentValue2:R,_threadCount:0};function ap(e,t,n,r,i,a,o,s,c){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=We(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=We(0),this.hiddenUpdates=We(null),this.identifierPrefix=r,this.onUncaughtError=i,this.onCaughtError=a,this.onRecoverableError=o,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=c,this.incompleteTransitions=new Map}function op(e,t,n,r,i,a,o,s,c,l,u,d){return e=new ap(e,t,n,o,c,l,u,d,s),t=1,!0===a&&(t|=24),a=ri(3,null,null,t),e.current=a,a.stateNode=e,t=ia(),t.refCount++,e.pooledCache=t,t.refCount++,a.memoizedState={element:r,isDehydrated:n,cache:t},La(a),e}function sp(e){return e?(e=ti,e):ti}function cp(e,t,n,r,i,a){i=sp(i),r.context===null?r.context=i:r.pendingContext=i,r=za(t),r.payload={element:n},a=a===void 0?null:a,a!==null&&(r.callback=a),n=Ba(e,r,t),n!==null&&(Su(n,e,t),Va(n,e,t))}function lp(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function up(e,t){lp(e,t),(e=e.alternate)&&lp(e,t)}function dp(e){if(e.tag===13||e.tag===31){var t=Qr(e,67108864);t!==null&&Su(t,e,67108864),up(e,67108864)}}function fp(e){if(e.tag===13||e.tag===31){var t=bu();t=Xe(t);var n=Qr(e,t);n!==null&&Su(n,e,t),up(e,t)}}var pp=!0;function mp(e,t,n,r){var i=I.T;I.T=null;var a=L.p;try{L.p=2,gp(e,t,n,r)}finally{L.p=a,I.T=i}}function hp(e,t,n,r){var i=I.T;I.T=null;var a=L.p;try{L.p=8,gp(e,t,n,r)}finally{L.p=a,I.T=i}}function gp(e,t,n,r){if(pp){var i=_p(r);if(i===null)Md(e,t,r,vp,n),kp(e,r);else if(jp(i,e,t,n,r))r.stopPropagation();else if(kp(e,r),t&4&&-1<Op.indexOf(e)){for(;i!==null;){var a=dt(i);if(a!==null)switch(a.tag){case 3:if(a=a.stateNode,a.current.memoizedState.isDehydrated){var o=ze(a.pendingLanes);if(o!==0){var s=a;for(s.pendingLanes|=2,s.entangledLanes|=2;o;){var c=1<<31-Me(o);s.entanglements[1]|=c,o&=~c}dd(a),!(Vl&6)&&(cu=be()+500,fd(0,!1))}}break;case 31:case 13:s=Qr(a,2),s!==null&&Su(s,a,2),Du(),up(a,2)}if(a=_p(r),a===null&&Md(e,t,r,vp,n),a===i)break;i=a}i!==null&&r.stopPropagation()}else Md(e,t,r,null,n)}}function _p(e){return e=Xt(e),yp(e)}var vp=null;function yp(e){if(vp=null,e=ut(e),e!==null){var t=o(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=s(t),e!==null)return e;e=null}else if(n===31){if(e=c(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return vp=e,null}function bp(e){switch(e){case`beforetoggle`:case`cancel`:case`click`:case`close`:case`contextmenu`:case`copy`:case`cut`:case`auxclick`:case`dblclick`:case`dragend`:case`dragstart`:case`drop`:case`focusin`:case`focusout`:case`input`:case`invalid`:case`keydown`:case`keypress`:case`keyup`:case`mousedown`:case`mouseup`:case`paste`:case`pause`:case`play`:case`pointercancel`:case`pointerdown`:case`pointerup`:case`ratechange`:case`reset`:case`resize`:case`seeked`:case`submit`:case`toggle`:case`touchcancel`:case`touchend`:case`touchstart`:case`volumechange`:case`change`:case`selectionchange`:case`textInput`:case`compositionstart`:case`compositionend`:case`compositionupdate`:case`beforeblur`:case`afterblur`:case`beforeinput`:case`blur`:case`fullscreenchange`:case`focus`:case`hashchange`:case`popstate`:case`select`:case`selectstart`:return 2;case`drag`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`mousemove`:case`mouseout`:case`mouseover`:case`pointermove`:case`pointerout`:case`pointerover`:case`scroll`:case`touchmove`:case`wheel`:case`mouseenter`:case`mouseleave`:case`pointerenter`:case`pointerleave`:return 8;case`message`:switch(xe()){case Se:return 2;case Ce:return 8;case we:case Te:return 32;case Ee:return 268435456;default:return 32}default:return 32}}var xp=!1,Sp=null,Cp=null,wp=null,Tp=new Map,Ep=new Map,Dp=[],Op=`mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset`.split(` `);function kp(e,t){switch(e){case`focusin`:case`focusout`:Sp=null;break;case`dragenter`:case`dragleave`:Cp=null;break;case`mouseover`:case`mouseout`:wp=null;break;case`pointerover`:case`pointerout`:Tp.delete(t.pointerId);break;case`gotpointercapture`:case`lostpointercapture`:Ep.delete(t.pointerId)}}function Ap(e,t,n,r,i,a){return e===null||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[i]},t!==null&&(t=dt(t),t!==null&&dp(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function jp(e,t,n,r,i){switch(t){case`focusin`:return Sp=Ap(Sp,e,t,n,r,i),!0;case`dragenter`:return Cp=Ap(Cp,e,t,n,r,i),!0;case`mouseover`:return wp=Ap(wp,e,t,n,r,i),!0;case`pointerover`:var a=i.pointerId;return Tp.set(a,Ap(Tp.get(a)||null,e,t,n,r,i)),!0;case`gotpointercapture`:return a=i.pointerId,Ep.set(a,Ap(Ep.get(a)||null,e,t,n,r,i)),!0}return!1}function Mp(e){var t=ut(e.target);if(t!==null){var n=o(t);if(n!==null){if(t=n.tag,t===13){if(t=s(n),t!==null){e.blockedOn=t,$e(e.priority,function(){fp(n)});return}}else if(t===31){if(t=c(n),t!==null){e.blockedOn=t,$e(e.priority,function(){fp(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Np(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=_p(e.nativeEvent);if(n===null){n=e.nativeEvent;var r=new n.constructor(n.type,n);Yt=r,n.target.dispatchEvent(r),Yt=null}else return t=dt(n),t!==null&&dp(t),e.blockedOn=n,!1;t.shift()}return!0}function Pp(e,t,n){Np(e)&&n.delete(t)}function Fp(){xp=!1,Sp!==null&&Np(Sp)&&(Sp=null),Cp!==null&&Np(Cp)&&(Cp=null),wp!==null&&Np(wp)&&(wp=null),Tp.forEach(Pp),Ep.forEach(Pp)}function Ip(e,n){e.blockedOn===n&&(e.blockedOn=null,xp||(xp=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,Fp)))}var Lp=null;function Rp(e){Lp!==e&&(Lp=e,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){Lp===e&&(Lp=null);for(var t=0;t<e.length;t+=3){var n=e[t],r=e[t+1],i=e[t+2];if(typeof r!=`function`){if(yp(r||n)===null)continue;break}var a=dt(n);a!==null&&(e.splice(t,3),t-=3,ws(a,{pending:!0,data:i,method:n.method,action:r},r,i))}}))}function zp(e){function t(t){return Ip(t,e)}Sp!==null&&Ip(Sp,e),Cp!==null&&Ip(Cp,e),wp!==null&&Ip(wp,e),Tp.forEach(t),Ep.forEach(t);for(var n=0;n<Dp.length;n++){var r=Dp[n];r.blockedOn===e&&(r.blockedOn=null)}for(;0<Dp.length&&(n=Dp[0],n.blockedOn===null);)Mp(n),n.blockedOn===null&&Dp.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(r=0;r<n.length;r+=3){var i=n[r],a=n[r+1],o=i[nt]||null;if(typeof a==`function`)o||Rp(n);else if(o){var s=null;if(a&&a.hasAttribute(`formAction`)){if(i=a,o=a[nt]||null)s=o.formAction;else if(yp(i)!==null)continue}else s=o.action;typeof s==`function`?n[r+1]=s:(n.splice(r,3),r-=3),Rp(n)}}}function Bp(){function e(e){e.canIntercept&&e.info===`react-transition`&&e.intercept({handler:function(){return new Promise(function(e){return i=e})},focusReset:`manual`,scroll:`manual`})}function t(){i!==null&&(i(),i=null),r||setTimeout(n,20)}function n(){if(!r&&!navigation.transition){var e=navigation.currentEntry;e&&e.url!=null&&navigation.navigate(e.url,{state:e.getState(),info:`react-transition`,history:`replace`})}}if(typeof navigation==`object`){var r=!1,i=null;return navigation.addEventListener(`navigate`,e),navigation.addEventListener(`navigatesuccess`,t),navigation.addEventListener(`navigateerror`,t),setTimeout(n,100),function(){r=!0,navigation.removeEventListener(`navigate`,e),navigation.removeEventListener(`navigatesuccess`,t),navigation.removeEventListener(`navigateerror`,t),i!==null&&(i(),i=null)}}}function Vp(e){this._internalRoot=e}Hp.prototype.render=Vp.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(i(409));var n=t.current;cp(n,bu(),e,t,null,null)},Hp.prototype.unmount=Vp.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;cp(e.current,2,null,e,null,null),Du(),t[rt]=null}};function Hp(e){this._internalRoot=e}Hp.prototype.unstable_scheduleHydration=function(e){if(e){var t=Qe();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Dp.length&&t!==0&&t<Dp[n].priority;n++);Dp.splice(n,0,e),n===0&&Mp(e)}};var Up=n.version;if(Up!==`19.2.5`)throw Error(i(527,Up,`19.2.5`));L.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render==`function`?Error(i(188)):(e=Object.keys(e).join(`,`),Error(i(268,e)));return e=u(t),e=e===null?null:d(e),e=e===null?null:e.stateNode,e};var Wp={bundleType:0,version:`19.2.5`,rendererPackageName:`react-dom`,currentDispatcherRef:I,reconcilerVersion:`19.2.5`};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`){var Gp=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Gp.isDisabled&&Gp.supportsFiber)try{ke=Gp.inject(Wp),Ae=Gp}catch{}}e.createRoot=function(e,t){if(!a(e))throw Error(i(299));var n=!1,r=``,o=qs,s=Js,c=Ys;return t!=null&&(!0===t.unstable_strictMode&&(n=!0),t.identifierPrefix!==void 0&&(r=t.identifierPrefix),t.onUncaughtError!==void 0&&(o=t.onUncaughtError),t.onCaughtError!==void 0&&(s=t.onCaughtError),t.onRecoverableError!==void 0&&(c=t.onRecoverableError)),t=op(e,1,!1,null,null,n,r,null,o,s,c,Bp),e[rt]=t.current,Ad(e),new Vp(t)}})),y=s(((e,t)=>{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=v()})),b=s((e=>{var t=p();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useSyncExternalStore,a=t.useRef,o=t.useEffect,s=t.useMemo,c=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,l,u){var d=a(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=s(function(){function e(e){if(!i){if(i=!0,a=e,e=l(e),u!==void 0&&f.hasValue){var t=f.value;if(u(t,e))return o=t}return o=e}if(t=o,r(a,e))return t;var n=l(e);return u!==void 0&&u(t,n)?(a=e,t):(a=e,o=n)}var i=!1,a,o,s=n===void 0?null:n;return[function(){return e(t())},s===null?void 0:function(){return e(s())}]},[t,n,l,u]);var p=i(e,d[0],d[1]);return o(function(){f.hasValue=!0,f.value=p},[p]),c(p),p}})),x=s(((e,t)=>{t.exports=b()})),S=y(),C=u(p(),1),w=x();function T(e){e()}function E(){let e=null,t=null;return{clear(){e=null,t=null},notify(){T(()=>{let t=e;for(;t;)t.callback(),t=t.next})},get(){let t=[],n=e;for(;n;)t.push(n),n=n.next;return t},subscribe(n){let r=!0,i=t={callback:n,next:null,prev:t};return i.prev?i.prev.next=i:e=i,function(){!r||e===null||(r=!1,i.next?i.next.prev=i.prev:t=i.prev,i.prev?i.prev.next=i.next:e=i.next)}}}}var D={notify(){},get:()=>[]};function O(e,t){let n,r=D,i=0,a=!1;function o(e){u();let t=r.subscribe(e),n=!1;return()=>{n||(n=!0,t(),d())}}function s(){r.notify()}function c(){m.onStateChange&&m.onStateChange()}function l(){return a}function u(){i++,n||(n=t?t.addNestedSub(c):e.subscribe(c),r=E())}function d(){i--,n&&i===0&&(n(),n=void 0,r.clear(),r=D)}function f(){a||(a=!0,u())}function p(){a&&(a=!1,d())}let m={addNestedSub:o,notifyNestedSubs:s,handleChangeWrapper:c,isSubscribed:l,trySubscribe:f,tryUnsubscribe:p,getListeners:()=>r};return m}var k=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0,A=typeof navigator<`u`&&navigator.product===`ReactNative`,j=k||A?C.useLayoutEffect:C.useEffect,M=Symbol.for(`react-redux-context`),N=typeof globalThis<`u`?globalThis:{};function P(){if(!C.createContext)return{};let e=N[M]??=new Map,t=e.get(C.createContext);return t||(t=C.createContext(null),e.set(C.createContext,t)),t}var F=P();function I(e){let{children:t,context:n,serverState:r,store:i}=e,a=C.useMemo(()=>({store:i,subscription:O(i),getServerState:r?()=>r:void 0}),[i,r]),o=C.useMemo(()=>i.getState(),[i]);j(()=>{let{subscription:e}=a;return e.onStateChange=e.notifyNestedSubs,e.trySubscribe(),o!==i.getState()&&e.notifyNestedSubs(),()=>{e.tryUnsubscribe(),e.onStateChange=void 0}},[a,o]);let s=n||F;return C.createElement(s.Provider,{value:a},t)}var L=I;function R(e=F){return function(){return C.useContext(e)}}var ee=R();function z(e=F){let t=e===F?ee:R(e),n=()=>{let{store:e}=t();return e};return Object.assign(n,{withTypes:()=>n}),n}var te=z();function B(e=F){let t=e===F?te:z(e),n=()=>t().dispatch;return Object.assign(n,{withTypes:()=>n}),n}var V=B(),ne=(e,t)=>e===t;function re(e=F){let t=e===F?ee:R(e),n=(e,n={})=>{let{equalityFn:r=ne}=typeof n==`function`?{equalityFn:n}:n,{store:i,subscription:a,getServerState:o}=t();C.useRef(!0);let s=C.useCallback({[e.name](t){return e(t)}}[e.name],[e]),c=(0,w.useSyncExternalStoreWithSelector)(a.addNestedSub,i.getState,o||i.getState,s,r);return C.useDebugValue(c),c};return Object.assign(n,{withTypes:()=>n}),n}var ie=re(),ae=`modulepreload`,oe=function(e,t){return new URL(e,t).href},se={},ce=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=oe(t,n),t in se)return;se[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:ae,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},le=e=>{throw TypeError(e)},ue=(e,t,n)=>t.has(e)||le(`Cannot `+n),de=(e,t,n)=>(ue(e,t,`read from private field`),n?n.call(e):t.get(e)),fe=(e,t,n)=>t.has(e)?le(`Cannot add the same private member more than once`):t instanceof WeakSet?t.add(e):t.set(e,n),pe=`popstate`;function H(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function me(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return ve(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:ye(t)}return xe(t,n,null,e)}function he(e,t){if(e===!1||e==null)throw Error(t)}function U(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function ge(){return Math.random().toString(36).substring(2,10)}function _e(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.unstable_mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function ve(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?be(t):t,state:n,key:t&&t.key||r||ge(),unstable_mask:i}}function ye({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function be(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function xe(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,c=null,l=u();l??(l=0,o.replaceState({...o.state,idx:l},``));function u(){return(o.state||{idx:null}).idx}function d(){s=`POP`;let e=u(),t=e==null?null:e-l;l=e,c&&c({action:s,location:h.location,delta:t})}function f(e,t){s=`PUSH`;let r=H(e)?e:ve(h.location,e,t);n&&n(r,e),l=u()+1;let d=_e(r,l),f=h.createHref(r.unstable_mask||r);try{o.pushState(d,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&c&&c({action:s,location:h.location,delta:1})}function p(e,t){s=`REPLACE`;let r=H(e)?e:ve(h.location,e,t);n&&n(r,e),l=u();let i=_e(r,l),d=h.createHref(r.unstable_mask||r);o.replaceState(i,``,d),a&&c&&c({action:s,location:h.location,delta:0})}function m(e){return Se(e)}let h={get action(){return s},get location(){return e(i,o)},listen(e){if(c)throw Error(`A history only accepts one active listener`);return i.addEventListener(pe,d),c=e,()=>{i.removeEventListener(pe,d),c=null}},createHref(e){return t(i,e)},createURL:m,encodeLocation(e){let t=m(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:f,replace:p,go(e){return o.go(e)}};return h}function Se(e,t=!1){let n=`http://localhost`;typeof window<`u`&&(n=window.location.origin===`null`?window.location.href:window.location.origin),he(n,`No window.location.(origin|href) available to create URL`);let r=typeof e==`string`?e:ye(e);return r=r.replace(/ $/,`%20`),!t&&r.startsWith(`//`)&&(r=n+r),new URL(r,n)}var Ce,we=class{constructor(e){if(fe(this,Ce,new Map),e)for(let[t,n]of e)this.set(t,n)}get(e){if(de(this,Ce).has(e))return de(this,Ce).get(e);if(e.defaultValue!==void 0)return e.defaultValue;throw Error(`No value found for context`)}set(e,t){de(this,Ce).set(e,t)}};Ce=new WeakMap;var Te=new Set([`lazy`,`caseSensitive`,`path`,`id`,`index`,`children`]);function Ee(e){return Te.has(e)}var De=new Set([`lazy`,`caseSensitive`,`path`,`id`,`index`,`middleware`,`children`]);function Oe(e){return De.has(e)}function ke(e){return e.index===!0}function Ae(e,t,n=[],r={},i=!1){return e.map((e,a)=>{let o=[...n,String(a)],s=typeof e.id==`string`?e.id:o.join(`-`);if(he(e.index!==!0||!e.children,`Cannot specify children on an index route`),he(i||!r[s],`Found a route id collision on id "${s}". Route id's must be globally unique within Data Router usages`),ke(e)){let n={...e,id:s};return r[s]=je(n,t(n)),n}else{let n={...e,id:s,children:void 0};return r[s]=je(n,t(n)),e.children&&(n.children=Ae(e.children,t,o,r,i)),n}})}function je(e,t){return Object.assign(e,{...t,...typeof t.lazy==`object`&&t.lazy!=null?{lazy:{...e.lazy,...t.lazy}}:{}})}function Me(e,t,n=`/`){return Ne(e,t,n,!1)}function Ne(e,t,n,r){let i=Ze((typeof t==`string`?be(t):t).pathname||`/`,n);if(i==null)return null;let a=Fe(e);Le(a);let o=null;for(let e=0;o==null&&e<a.length;++e){let t=Xe(i);o=qe(a[e],t,r)}return o}function Pe(e,t){let{route:n,pathname:r,params:i}=e;return{id:n.id,pathname:r,params:i,data:t[n.id],loaderData:t[n.id],handle:n.handle}}function Fe(e,t=[],n=[],r=``,i=!1){let a=(e,a,o=i,s)=>{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;he(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=ct([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(he(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),Fe(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:Ge(l,e.index),routesMeta:u})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of Ie(e.path))a(e,t,!0,n)}),t}function Ie(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=Ie(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function Le(e){e.sort((e,t)=>e.score===t.score?Ke(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var Re=/^:[\w-]+$/,ze=3,Be=2,Ve=1,He=10,Ue=-2,We=e=>e===`*`;function Ge(e,t){let n=e.split(`/`),r=n.length;return n.some(We)&&(r+=Ue),t&&(r+=Be),n.filter(e=>!We(e)).reduce((e,t)=>e+(Re.test(t)?ze:t===``?Ve:He),r)}function Ke(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function qe(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e<r.length;++e){let s=r[e],c=e===r.length-1,l=a===`/`?t:t.slice(a.length)||`/`,u=Je({path:s.relativePath,caseSensitive:s.caseSensitive,end:c},l),d=s.route;if(!u&&c&&n&&!r[r.length-1].route.index&&(u=Je({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!u)return null;Object.assign(i,u.params),o.push({params:i,pathname:ct([a,u.pathname]),pathnameBase:ut(ct([a,u.pathnameBase])),route:d}),u.pathnameBase!==`/`&&(a=ct([a,u.pathnameBase]))}return o}function Je(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=Ye(e.path,e.caseSensitive,e.end),i=t.match(n);if(!i)return null;let a=i[0],o=a.replace(/(.)\/+$/,`$1`),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=a.slice(0,a.length-e.length).replace(/(.)\/+$/,`$1`)}let i=s[r];return n&&!i?e[t]=void 0:e[t]=(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function Ye(e,t=!1,n=!0){U(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function Xe(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return U(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function Ze(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}function Qe({basename:e,pathname:t}){return t===`/`?e:ct([e,t])}var $e=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,et=e=>$e.test(e);function tt(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?be(e):e,a;return n?(n=st(n),a=n.startsWith(`/`)?nt(n.substring(1),`/`):nt(n,t)):a=t,{pathname:a,search:dt(r),hash:ft(i)}}function nt(e,t){let n=lt(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function rt(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function it(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function at(e){let t=it(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function ot(e,t,n,r=!1){let i;typeof e==`string`?i=be(e):(i={...e},he(!i.pathname||!i.pathname.includes(`?`),rt(`?`,`pathname`,`search`,i)),he(!i.pathname||!i.pathname.includes(`#`),rt(`#`,`pathname`,`hash`,i)),he(!i.search||!i.search.includes(`#`),rt(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=tt(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var st=e=>e.replace(/\/\/+/g,`/`),ct=e=>st(e.join(`/`)),lt=e=>e.replace(/\/+$/,``),ut=e=>lt(e).replace(/^\/*/,`/`),dt=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,ft=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,pt=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function mt(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function ht(e){return ct(e.map(e=>e.route.path).filter(Boolean))||`/`}var gt=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function _t(e,t){let n=e;if(typeof n!=`string`||!$e.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(gt)try{let e=new URL(window.location.href),r=n.startsWith(`//`)?new URL(e.protocol+n):new URL(n),a=Ze(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{U(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}var vt=Symbol(`Uninstrumented`);function yt(e,t){let n={lazy:[],"lazy.loader":[],"lazy.action":[],"lazy.middleware":[],middleware:[],loader:[],action:[]};e.forEach(e=>e({id:t.id,index:t.index,path:t.path,instrument(e){let t=Object.keys(n);for(let r of t)e[r]&&n[r].push(e[r])}}));let r={};if(typeof t.lazy==`function`&&n.lazy.length>0){let e=xt(n.lazy,t.lazy,()=>void 0);e&&(r.lazy=e)}if(typeof t.lazy==`object`){let e=t.lazy;[`middleware`,`loader`,`action`].forEach(t=>{let i=e[t],a=n[`lazy.${t}`];if(typeof i==`function`&&a.length>0){let e=xt(a,i,()=>void 0);e&&(r.lazy=Object.assign(r.lazy||{},{[t]:e}))}})}return[`loader`,`action`].forEach(e=>{let i=t[e];if(typeof i==`function`&&n[e].length>0){let t=i[vt]??i,a=xt(n[e],t,(...e)=>Ct(e[0]));a&&(e===`loader`&&t.hydrate===!0&&(a.hydrate=!0),a[vt]=t,r[e]=a)}}),t.middleware&&t.middleware.length>0&&n.middleware.length>0&&(r.middleware=t.middleware.map(e=>{let t=e[vt]??e,r=xt(n.middleware,t,(...e)=>Ct(e[0]));return r?(r[vt]=t,r):e})),r}function bt(e,t){let n={navigate:[],fetch:[]};if(t.forEach(e=>e({instrument(e){let t=Object.keys(e);for(let r of t)e[r]&&n[r].push(e[r])}})),n.navigate.length>0){let t=e.navigate[vt]??e.navigate,r=xt(n.navigate,t,(...t)=>{let[n,r]=t;return{to:typeof n==`number`||typeof n==`string`?n:n?ye(n):`.`,...wt(e,r??{})}});r&&(r[vt]=t,e.navigate=r)}if(n.fetch.length>0){let t=e.fetch[vt]??e.fetch,r=xt(n.fetch,t,(...t)=>{let[n,,r,i]=t;return{href:r??`.`,fetcherKey:n,...wt(e,i??{})}});r&&(r[vt]=t,e.fetch=r)}return e}function xt(e,t,n){return e.length===0?null:async(...r)=>{let i=await St(e,n(...r),()=>t(...r),e.length-1);if(i.type===`error`)throw i.value;return i.value}}async function St(e,t,n,r){let i=e[r],a;if(i){let o,s=async()=>(o?console.error(`You cannot call instrumented handlers more than once`):o=St(e,t,n,r-1),a=await o,he(a,`Expected a result`),a.type===`error`&&a.value instanceof Error?{status:`error`,error:a.value}:{status:`success`,error:void 0});try{await i(s,t)}catch(e){console.error(`An instrumentation function threw an error:`,e)}o||await s(),await o}else try{a={type:`success`,value:await n()}}catch(e){a={type:`error`,value:e}}return a||{type:`error`,value:Error(`No result assigned in instrumentation chain.`)}}function Ct(e){let{request:t,context:n,params:r,unstable_pattern:i}=e;return{request:Tt(t),params:{...r},unstable_pattern:i,context:Et(n)}}function wt(e,t){return{currentUrl:ye(e.state.location),...`formMethod`in t?{formMethod:t.formMethod}:{},...`formEncType`in t?{formEncType:t.formEncType}:{},...`formData`in t?{formData:t.formData}:{},...`body`in t?{body:t.body}:{}}}function Tt(e){return{method:e.method,url:e.url,headers:{get:(...t)=>e.headers.get(...t)}}}function Et(e){if(Ot(e)){let t={...e};return Object.freeze(t),t}else return{get:t=>e.get(t)}}var Dt=Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);function Ot(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||Object.getOwnPropertyNames(t).sort().join(`\0`)===Dt}var kt=[`POST`,`PUT`,`PATCH`,`DELETE`],At=new Set(kt),jt=[`GET`,...kt],Mt=new Set(jt),Nt=new Set([301,302,303,307,308]),Pt=new Set([307,308]),Ft={state:`idle`,location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},It={state:`idle`,data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},Lt={state:`unblocked`,proceed:void 0,reset:void 0,location:void 0},Rt=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),zt=`remix-router-transitions`,Bt=Symbol(`ResetLoaderData`);function Vt(e){let t=e.window?e.window:typeof window<`u`?window:void 0,n=t!==void 0&&t.document!==void 0&&t.document.createElement!==void 0;he(e.routes.length>0,`You must provide a non-empty routes array to createRouter`);let r=e.hydrationRouteProperties||[],i=e.mapRouteProperties||Rt,a=i;if(e.unstable_instrumentations){let t=e.unstable_instrumentations;a=e=>({...i(e),...yt(t.map(e=>e.route).filter(Boolean),e)})}let o={},s=Ae(e.routes,a,void 0,o),c,l=e.basename||`/`;l.startsWith(`/`)||(l=`/${l}`);let u=e.dataStrategy||an,d={unstable_passThroughRequests:!1,...e.future},f=null,p=new Set,m=null,h=null,g=null,_=e.hydrationData!=null,v=Me(s,e.history.location,l),y=!1,b=null,x,S;if(v==null&&!e.patchRoutesOnNavigation){let t=kn(404,{pathname:e.history.location.pathname}),{matches:n,route:r}=On(s);x=!0,S=!x,v=n,b={[r.id]:t}}else if(v&&!e.hydrationData&&Xe(v,s,e.history.location.pathname).active&&(v=null),!v){x=!1,S=!x,v=[];let t=Xe(null,s,e.history.location.pathname);t.active&&t.matches&&(y=!0,v=t.matches)}else if(v.some(e=>e.route.lazy))x=!1,S=!x;else if(!v.some(e=>Kt(e.route)))x=!0,S=!x;else{let t=e.hydrationData?e.hydrationData.loaderData:null,n=e.hydrationData?e.hydrationData.errors:null,r=v;if(n){let e=v.findIndex(e=>n[e.route.id]!==void 0);r=r.slice(0,e+1)}S=!1,x=!0,r.forEach(e=>{let r=qt(e.route,t,n);S||=r.renderFallback,x&&=!r.shouldLoad})}let C,w={historyAction:e.history.action,location:e.history.location,matches:v,initialized:x,renderFallback:S,navigation:Ft,restoreScrollPosition:e.hydrationData==null?null:!1,preventScrollReset:!1,revalidation:`idle`,loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||b,fetchers:new Map,blockers:new Map},T=`POP`,E=null,D=!1,O,k=!1,A=new Map,j=null,M=!1,N=!1,P=new Set,F=new Map,I=0,L=-1,R=new Map,ee=new Set,z=new Map,te=new Map,B=new Set,V=new Map,ne,re=null;function ie(){if(f=e.history.listen(({action:t,location:n,delta:r})=>{if(ne){ne(),ne=void 0;return}U(V.size===0||r!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let i=We({currentLocation:w.location,nextLocation:n,historyAction:t});if(i&&r!=null){let t=new Promise(e=>{ne=e});e.history.go(r*-1),Ue(i,{state:`blocked`,location:n,proceed(){Ue(i,{state:`proceeding`,proceed:void 0,reset:void 0,location:n}),t.then(()=>e.history.go(r))},reset(){let e=new Map(w.blockers);e.set(i,Lt),se({blockers:e})}}),E?.resolve(),E=null;return}return de(t,n)}),n){$n(t,A);let e=()=>er(t,A);t.addEventListener(`pagehide`,e),j=()=>t.removeEventListener(`pagehide`,e)}return w.initialized||de(`POP`,w.location,{initialHydration:!0}),C}function ae(){f&&f(),j&&j(),p.clear(),O&&O.abort(),w.fetchers.forEach((e,t)=>Fe(t)),w.blockers.forEach((e,t)=>He(t))}function oe(e){return p.add(e),()=>p.delete(e)}function se(e,t={}){e.matches&&=e.matches.map(e=>{let t=o[e.route.id],n=e.route;return n.element!==t.element||n.errorElement!==t.errorElement||n.hydrateFallbackElement!==t.hydrateFallbackElement?{...e,route:t}:e}),w={...w,...e};let n=[],r=[];w.fetchers.forEach((e,t)=>{e.state===`idle`&&(B.has(t)?n.push(t):r.push(t))}),B.forEach(e=>{!w.fetchers.has(e)&&!F.has(e)&&n.push(e)}),[...p].forEach(r=>r(w,{deletedFetchers:n,newErrors:e.errors??null,viewTransitionOpts:t.viewTransitionOpts,flushSync:t.flushSync===!0})),n.forEach(e=>Fe(e)),r.forEach(e=>w.fetchers.delete(e))}function ce(t,n,{flushSync:r}={}){let i=w.actionData!=null&&w.navigation.formMethod!=null&&Wn(w.navigation.formMethod)&&w.navigation.state===`loading`&&t.state?._isRedirect!==!0,a;a=n.actionData?Object.keys(n.actionData).length>0?n.actionData:null:i?w.actionData:null;let o=n.loaderData?Tn(w.loaderData,n.loaderData,n.matches||[],n.errors):w.loaderData,l=w.blockers;l.size>0&&(l=new Map(l),l.forEach((e,t)=>l.set(t,Lt)));let u=M?!1:Ye(t,n.matches||w.matches),d=D===!0||w.navigation.formMethod!=null&&Wn(w.navigation.formMethod)&&t.state?._isRedirect!==!0;c&&=(s=c,void 0),M||T===`POP`||(T===`PUSH`?e.history.push(t,t.state):T===`REPLACE`&&e.history.replace(t,t.state));let f;if(T===`POP`){let e=A.get(w.location.pathname);e&&e.has(t.pathname)?f={currentLocation:w.location,nextLocation:t}:A.has(t.pathname)&&(f={currentLocation:t,nextLocation:w.location})}else if(k){let e=A.get(w.location.pathname);e?e.add(t.pathname):(e=new Set([t.pathname]),A.set(w.location.pathname,e)),f={currentLocation:w.location,nextLocation:t}}se({...n,actionData:a,loaderData:o,historyAction:T,location:t,initialized:!0,renderFallback:!1,navigation:Ft,revalidation:`idle`,restoreScrollPosition:u,preventScrollReset:d,blockers:l},{viewTransitionOpts:f,flushSync:r===!0}),T=`POP`,D=!1,k=!1,M=!1,N=!1,E?.resolve(),E=null,re?.resolve(),re=null}async function le(t,n){if(E?.resolve(),E=null,typeof t==`number`){E||=tr();let n=E.promise;return e.history.go(t),n}let{path:r,submission:i,error:a}=Wt(!1,Ut(w.location,w.matches,l,t,n?.fromRouteId,n?.relative),n),o;n?.unstable_mask&&(o={pathname:``,search:``,hash:``,...typeof n.unstable_mask==`string`?be(n.unstable_mask):{...w.location.unstable_mask,...n.unstable_mask}});let s=w.location,c=ve(s,r,n&&n.state,void 0,o);c={...c,...e.history.encodeLocation(c)};let u=n&&n.replace!=null?n.replace:void 0,d=`PUSH`;u===!0?d=`REPLACE`:u===!1||i!=null&&Wn(i.formMethod)&&i.formAction===w.location.pathname+w.location.search&&(d=`REPLACE`);let f=n&&`preventScrollReset`in n?n.preventScrollReset===!0:void 0,p=(n&&n.flushSync)===!0,m=We({currentLocation:s,nextLocation:c,historyAction:d});if(m){Ue(m,{state:`blocked`,location:c,proceed(){Ue(m,{state:`proceeding`,proceed:void 0,reset:void 0,location:c}),le(t,n)},reset(){let e=new Map(w.blockers);e.set(m,Lt),se({blockers:e})}});return}await de(d,c,{submission:i,pendingError:a,preventScrollReset:f,replace:n&&n.replace,enableViewTransition:n&&n.viewTransition,flushSync:p,callSiteDefaultShouldRevalidate:n&&n.unstable_defaultShouldRevalidate})}function ue(){re||=tr(),Ee(),se({revalidation:`loading`});let e=re.promise;return w.navigation.state===`submitting`?e:w.navigation.state===`idle`?(de(w.historyAction,w.location,{startUninterruptedRevalidation:!0}),e):(de(T||w.historyAction,w.navigation.location,{overrideNavigation:w.navigation,enableViewTransition:k===!0}),e)}async function de(t,n,r){O&&O.abort(),O=null,T=t,M=(r&&r.startUninterruptedRevalidation)===!0,Je(w.location,w.matches),D=(r&&r.preventScrollReset)===!0,k=(r&&r.enableViewTransition)===!0;let i=c||s,a=r&&r.overrideNavigation,o=r?.initialHydration&&w.matches&&w.matches.length>0&&!y?w.matches:Me(i,n,l),u=(r&&r.flushSync)===!0;if(o&&w.initialized&&!N&&Mn(w.location,n)&&!(r&&r.submission&&Wn(r.submission.formMethod))){ce(n,{matches:o},{flushSync:u});return}let d=Xe(o,i,n.pathname);if(d.active&&d.matches&&(o=d.matches),!o){let{error:e,notFoundMatches:t,route:r}=Ge(n.pathname);ce(n,{matches:t,loaderData:{},errors:{[r.id]:e}},{flushSync:u});return}O=new AbortController;let f=yn(e.history,n,O.signal,r&&r.submission),p=e.getContext?await e.getContext():new we,m;if(r&&r.pendingError)m=[Dn(o).route.id,{type:`error`,error:r.pendingError}];else if(r&&r.submission&&Wn(r.submission.formMethod)){let t=await fe(f,n,r.submission,o,p,d.active,r&&r.initialHydration===!0,{replace:r.replace,flushSync:u});if(t.shortCircuited)return;if(t.pendingActionResult){let[e,r]=t.pendingActionResult;if(Ln(r)&&mt(r.error)&&r.error.status===404){O=null,ce(n,{matches:t.matches,loaderData:{},errors:{[e]:r.error}});return}}o=t.matches||o,m=t.pendingActionResult,a=Jn(n,r.submission),u=!1,d.active=!1,f=yn(e.history,f.url,f.signal)}let{shortCircuited:h,matches:g,loaderData:_,errors:v}=await pe(f,n,o,p,d.active,a,r&&r.submission,r&&r.fetcherSubmission,r&&r.replace,r&&r.initialHydration===!0,u,m,r&&r.callSiteDefaultShouldRevalidate);h||(O=null,ce(n,{matches:g||o,...En(m),loaderData:_,errors:v}))}async function fe(t,n,i,c,u,d,f,p={}){if(Ee(),se({navigation:Yn(n,i)},{flushSync:p.flushSync===!0}),d){let e=await Qe(c,n.pathname,t.signal);if(e.type===`aborted`)return{shortCircuited:!0};if(e.type===`error`){if(e.partialMatches.length===0){let{matches:t,route:n}=On(s);return{matches:t,pendingActionResult:[n.id,{type:`error`,error:e.error}]}}let t=Dn(e.partialMatches).route.id;return{matches:e.partialMatches,pendingActionResult:[t,{type:`error`,error:e.error}]}}else if(e.matches)c=e.matches;else{let{notFoundMatches:e,error:t,route:r}=Ge(n.pathname);return{matches:e,pendingActionResult:[r.id,{type:`error`,error:t}]}}}let m,h=Kn(c,n);if(!h.route.action&&!h.route.lazy)m={type:`error`,error:kn(405,{method:t.method,pathname:n.pathname,routeId:h.route.id})};else{let e=await Ce(t,n,dn(a,o,t,n,c,h,f?[]:r,u),u,null);if(m=e[h.route.id],!m){for(let t of c)if(e[t.route.id]){m=e[t.route.id];break}}if(t.signal.aborted)return{shortCircuited:!0}}if(Rn(m)){let n;return n=p&&p.replace!=null?p.replace:vn(m.response.headers.get(`Location`),new URL(t.url),l,e.history)===w.location.pathname+w.location.search,await xe(t,m,!0,{submission:i,replace:n}),{shortCircuited:!0}}if(Ln(m)){let e=Dn(c,h.route.id);return(p&&p.replace)!==!0&&(T=`PUSH`),{matches:c,pendingActionResult:[e.route.id,m,h.route.id]}}return{matches:c,pendingActionResult:[h.route.id,m]}}async function pe(t,n,i,u,d,f,p,m,h,g,_,v,y){let b=f||Jn(n,p),x=p||m||qn(b),S=!M&&!g;if(d){if(S){let e=H(v);se({navigation:b,...e===void 0?{}:{actionData:e}},{flushSync:_})}let e=await Qe(i,n.pathname,t.signal);if(e.type===`aborted`)return{shortCircuited:!0};if(e.type===`error`){if(e.partialMatches.length===0){let{matches:t,route:n}=On(s);return{matches:t,loaderData:{},errors:{[n.id]:e.error}}}let t=Dn(e.partialMatches).route.id;return{matches:e.partialMatches,loaderData:{},errors:{[t]:e.error}}}else if(e.matches)i=e.matches;else{let{error:e,notFoundMatches:t,route:r}=Ge(n.pathname);return{matches:t,loaderData:{},errors:{[r.id]:e}}}}let C=c||s,{dsMatches:T,revalidatingFetchers:E}=Gt(t,u,a,o,e.history,w,i,x,n,g?[]:r,g===!0,N,P,B,z,ee,C,l,e.patchRoutesOnNavigation!=null,v,y);if(L=++I,!e.dataStrategy&&!T.some(e=>e.shouldLoad)&&!T.some(e=>e.route.middleware&&e.route.middleware.length>0)&&E.length===0){let e=ze();return ce(n,{matches:i,loaderData:{},errors:v&&Ln(v[1])?{[v[0]]:v[1].error}:null,...En(v),...e?{fetchers:new Map(w.fetchers)}:{}},{flushSync:_}),{shortCircuited:!0}}if(S){let e={};if(!d){e.navigation=b;let t=H(v);t!==void 0&&(e.actionData=t)}E.length>0&&(e.fetchers=me(E)),se(e,{flushSync:_})}E.forEach(e=>{Le(e.key),e.controller&&F.set(e.key,e.controller)});let D=()=>E.forEach(e=>Le(e.key));O&&O.signal.addEventListener(`abort`,D);let{loaderResults:k,fetcherResults:A}=await Te(T,E,t,n,u);if(t.signal.aborted)return{shortCircuited:!0};O&&O.signal.removeEventListener(`abort`,D),E.forEach(e=>F.delete(e.key));let j=An(k);if(j)return await xe(t,j.result,!0,{replace:h}),{shortCircuited:!0};if(j=An(A),j)return ee.add(j.key),await xe(t,j.result,!0,{replace:h}),{shortCircuited:!0};let{loaderData:R,errors:te}=wn(w,i,k,v,E,A);g&&w.errors&&(te={...w.errors,...te});let V=ze(),ne=Be(L),re=V||ne||E.length>0;return{matches:i,loaderData:R,errors:te,...re?{fetchers:new Map(w.fetchers)}:{}}}function H(e){if(e&&!Ln(e[1]))return{[e[0]]:e[1].data};if(w.actionData)return Object.keys(w.actionData).length===0?null:w.actionData}function me(e){return e.forEach(e=>{let t=w.fetchers.get(e.key),n=Xn(void 0,t?t.data:void 0);w.fetchers.set(e.key,n)}),new Map(w.fetchers)}async function ge(t,n,r,i){Le(t);let a=(i&&i.flushSync)===!0,o=c||s,u=Ut(w.location,w.matches,l,r,n,i?.relative),d=Me(o,u,l),f=Xe(d,o,u);if(f.active&&f.matches&&(d=f.matches),!d){Oe(t,n,kn(404,{pathname:u}),{flushSync:a});return}let{path:p,submission:m,error:h}=Wt(!0,u,i);if(h){Oe(t,n,h,{flushSync:a});return}let g=e.getContext?await e.getContext():new we,_=(i&&i.preventScrollReset)===!0;if(m&&Wn(m.formMethod)){await _e(t,n,p,d,g,f.active,a,_,m,i&&i.unstable_defaultShouldRevalidate);return}z.set(t,{routeId:n,path:p}),await ye(t,n,p,d,g,f.active,a,_,m)}async function _e(t,n,i,u,d,f,p,m,h,g){Ee(),z.delete(t),De(t,Zn(h,w.fetchers.get(t)),{flushSync:p});let _=new AbortController,v=yn(e.history,i,_.signal,h);if(f){let e=await Qe(u,new URL(v.url).pathname,v.signal,t);if(e.type===`aborted`)return;if(e.type===`error`){Oe(t,n,e.error,{flushSync:p});return}else if(e.matches)u=e.matches;else{Oe(t,n,kn(404,{pathname:i}),{flushSync:p});return}}let y=Kn(u,i);if(!y.route.action&&!y.route.lazy){Oe(t,n,kn(405,{method:h.formMethod,pathname:i,routeId:n}),{flushSync:p});return}F.set(t,_);let b=I,x=dn(a,o,v,i,u,y,r,d),S=await Ce(v,i,x,d,t),C=S[y.route.id];if(!C){for(let e of x)if(S[e.route.id]){C=S[e.route.id];break}}if(v.signal.aborted){F.get(t)===_&&F.delete(t);return}if(B.has(t)){if(Rn(C)||Ln(C)){De(t,Qn(void 0));return}}else{if(Rn(C))if(F.delete(t),L>b){De(t,Qn(void 0));return}else return ee.add(t),De(t,Xn(h)),xe(v,C,!1,{fetcherSubmission:h,preventScrollReset:m});if(Ln(C)){Oe(t,n,C.error);return}}let E=w.navigation.location||w.location,D=yn(e.history,E,_.signal),k=c||s,A=w.navigation.state===`idle`?w.matches:Me(k,w.navigation.location,l);he(A,`Didn't find any matches after fetcher action`);let j=++I;R.set(t,j);let M=Xn(h,C.data);w.fetchers.set(t,M);let{dsMatches:te,revalidatingFetchers:V}=Gt(D,d,a,o,e.history,w,A,h,E,r,!1,N,P,B,z,ee,k,l,e.patchRoutesOnNavigation!=null,[y.route.id,C],g);V.filter(e=>e.key!==t).forEach(e=>{let t=e.key,n=w.fetchers.get(t),r=Xn(void 0,n?n.data:void 0);w.fetchers.set(t,r),Le(t),e.controller&&F.set(t,e.controller)}),se({fetchers:new Map(w.fetchers)});let ne=()=>V.forEach(e=>Le(e.key));_.signal.addEventListener(`abort`,ne);let{loaderResults:re,fetcherResults:ie}=await Te(te,V,D,E,d);if(_.signal.aborted)return;if(_.signal.removeEventListener(`abort`,ne),R.delete(t),F.delete(t),V.forEach(e=>F.delete(e.key)),w.fetchers.has(t)){let e=Qn(C.data);w.fetchers.set(t,e)}let ae=An(re);if(ae)return xe(D,ae.result,!1,{preventScrollReset:m});if(ae=An(ie),ae)return ee.add(ae.key),xe(D,ae.result,!1,{preventScrollReset:m});let{loaderData:oe,errors:le}=wn(w,A,re,void 0,V,ie);Be(j),w.navigation.state===`loading`&&j>L?(he(T,`Expected pending action`),O&&O.abort(),ce(w.navigation.location,{matches:A,loaderData:oe,errors:le,fetchers:new Map(w.fetchers)})):(se({errors:le,loaderData:Tn(w.loaderData,oe,A,le),fetchers:new Map(w.fetchers)}),N=!1)}async function ye(t,n,i,s,c,l,u,d,f){let p=w.fetchers.get(t);De(t,Xn(f,p?p.data:void 0),{flushSync:u});let m=new AbortController,h=yn(e.history,i,m.signal);if(l){let e=await Qe(s,new URL(h.url).pathname,h.signal,t);if(e.type===`aborted`)return;if(e.type===`error`){Oe(t,n,e.error,{flushSync:u});return}else if(e.matches)s=e.matches;else{Oe(t,n,kn(404,{pathname:i}),{flushSync:u});return}}let g=Kn(s,i);F.set(t,m);let _=I,v=(await Ce(h,i,dn(a,o,h,i,s,g,r,c),c,t))[g.route.id];if(F.get(t)===m&&F.delete(t),!h.signal.aborted){if(B.has(t)){De(t,Qn(void 0));return}if(Rn(v))if(L>_){De(t,Qn(void 0));return}else{ee.add(t),await xe(h,v,!1,{preventScrollReset:d});return}if(Ln(v)){Oe(t,n,v.error);return}De(t,Qn(v.data))}}async function xe(r,i,a,{submission:o,fetcherSubmission:s,preventScrollReset:c,replace:u}={}){a||(E?.resolve(),E=null),i.response.headers.has(`X-Remix-Revalidate`)&&(N=!0);let d=i.response.headers.get(`Location`);he(d,`Expected a Location header on the redirect Response`),d=vn(d,new URL(r.url),l,e.history);let f=ve(w.location,d,{_isRedirect:!0});if(n){let e=!1;if(i.response.headers.has(`X-Remix-Reload-Document`))e=!0;else if(et(d)){let n=Se(d,!0);e=n.origin!==t.location.origin||Ze(n.pathname,l)==null}if(e){u?t.location.replace(d):t.location.assign(d);return}}O=null;let p=u===!0||i.response.headers.has(`X-Remix-Replace`)?`REPLACE`:`PUSH`,{formMethod:m,formAction:h,formEncType:g}=w.navigation;!o&&!s&&m&&h&&g&&(o=qn(w.navigation));let _=o||s;Pt.has(i.response.status)&&_&&Wn(_.formMethod)?await de(p,f,{submission:{..._,formAction:d},preventScrollReset:c||D,enableViewTransition:a?k:void 0}):await de(p,f,{overrideNavigation:Jn(f,o),fetcherSubmission:s,preventScrollReset:c||D,enableViewTransition:a?k:void 0})}async function Ce(e,t,n,r,i){let a,o={};try{a=await fn(u,e,t,n,i,r,!1)}catch(e){return n.filter(e=>e.shouldLoad).forEach(t=>{o[t.route.id]={type:`error`,error:e}}),o}if(e.signal.aborted)return o;if(!Wn(e.method))for(let e of n){if(a[e.route.id]?.type===`error`)break;!a.hasOwnProperty(e.route.id)&&!w.loaderData.hasOwnProperty(e.route.id)&&(!w.errors||!w.errors.hasOwnProperty(e.route.id))&&e.shouldCallHandler()&&(a[e.route.id]={type:`error`,result:Error(`No result returned from dataStrategy for route ${e.route.id}`)})}for(let[t,r]of Object.entries(a))if(In(r)){let i=r.result;o[t]={type:`redirect`,response:gn(i,e,t,n,l)}}else o[t]=await hn(r);return o}async function Te(e,t,n,r,i){let a=Ce(n,r,e,i,null),o=Promise.all(t.map(async e=>{if(e.matches&&e.match&&e.request&&e.controller){let t=(await Ce(e.request,e.path,e.matches,i,e.key))[e.match.route.id];return{[e.key]:t}}else return Promise.resolve({[e.key]:{type:`error`,error:kn(404,{pathname:e.path})}})}));return{loaderResults:await a,fetcherResults:(await o).reduce((e,t)=>Object.assign(e,t),{})}}function Ee(){N=!0,z.forEach((e,t)=>{F.has(t)&&P.add(t),Le(t)})}function De(e,t,n={}){w.fetchers.set(e,t),se({fetchers:new Map(w.fetchers)},{flushSync:(n&&n.flushSync)===!0})}function Oe(e,t,n,r={}){let i=Dn(w.matches,t);Fe(e),se({errors:{[i.route.id]:n},fetchers:new Map(w.fetchers)},{flushSync:(r&&r.flushSync)===!0})}function ke(e){return te.set(e,(te.get(e)||0)+1),B.has(e)&&B.delete(e),w.fetchers.get(e)||It}function je(e,t){Le(e,t?.reason),De(e,Qn(null))}function Fe(e){let t=w.fetchers.get(e);F.has(e)&&!(t&&t.state===`loading`&&R.has(e))&&Le(e),z.delete(e),R.delete(e),ee.delete(e),B.delete(e),P.delete(e),w.fetchers.delete(e)}function Ie(e){let t=(te.get(e)||0)-1;t<=0?(te.delete(e),B.add(e)):te.set(e,t),se({fetchers:new Map(w.fetchers)})}function Le(e,t){let n=F.get(e);n&&(n.abort(t),F.delete(e))}function Re(e){for(let t of e){let e=Qn(ke(t).data);w.fetchers.set(t,e)}}function ze(){let e=[],t=!1;for(let n of ee){let r=w.fetchers.get(n);he(r,`Expected fetcher: ${n}`),r.state===`loading`&&(ee.delete(n),e.push(n),t=!0)}return Re(e),t}function Be(e){let t=[];for(let[n,r]of R)if(r<e){let e=w.fetchers.get(n);he(e,`Expected fetcher: ${n}`),e.state===`loading`&&(Le(n),R.delete(n),t.push(n))}return Re(t),t.length>0}function Ve(e,t){let n=w.blockers.get(e)||Lt;return V.get(e)!==t&&V.set(e,t),n}function He(e){w.blockers.delete(e),V.delete(e)}function Ue(e,t){let n=w.blockers.get(e)||Lt;he(n.state===`unblocked`&&t.state===`blocked`||n.state===`blocked`&&t.state===`blocked`||n.state===`blocked`&&t.state===`proceeding`||n.state===`blocked`&&t.state===`unblocked`||n.state===`proceeding`&&t.state===`unblocked`,`Invalid blocker state transition: ${n.state} -> ${t.state}`);let r=new Map(w.blockers);r.set(e,t),se({blockers:r})}function We({currentLocation:e,nextLocation:t,historyAction:n}){if(V.size===0)return;V.size>1&&U(!1,`A router only supports one blocker at a time`);let r=Array.from(V.entries()),[i,a]=r[r.length-1],o=w.blockers.get(i);if(!(o&&o.state===`proceeding`)&&a({currentLocation:e,nextLocation:t,historyAction:n}))return i}function Ge(e){let t=kn(404,{pathname:e}),{matches:n,route:r}=On(c||s);return{notFoundMatches:n,route:r,error:t}}function Ke(e,t,n){if(m=e,g=t,h=n||null,!_&&w.navigation===Ft){_=!0;let e=Ye(w.location,w.matches);e!=null&&se({restoreScrollPosition:e})}return()=>{m=null,g=null,h=null}}function qe(e,t){return h&&h(e,t.map(e=>Pe(e,w.loaderData)))||e.key}function Je(e,t){if(m&&g){let n=qe(e,t);m[n]=g()}}function Ye(e,t){if(m){let n=qe(e,t),r=m[n];if(typeof r==`number`)return r}return null}function Xe(t,n,r){if(e.patchRoutesOnNavigation){if(!t)return{active:!0,matches:Ne(n,r,l,!0)||[]};if(Object.keys(t[0].params).length>0)return{active:!0,matches:Ne(n,r,l,!0)}}return{active:!1,matches:null}}async function Qe(t,n,r,i){if(!e.patchRoutesOnNavigation)return{type:`success`,matches:t};let u=t;for(;;){let t=c==null,d=c||s,f=o;try{await e.patchRoutesOnNavigation({signal:r,path:n,matches:u,fetcherKey:i,patch:(e,t)=>{r.aborted||Zt(e,t,d,f,a,!1)}})}catch(e){return{type:`error`,error:e,partialMatches:u}}finally{t&&!r.aborted&&(s=[...s])}if(r.aborted)return{type:`aborted`};let p=Me(d,n,l),m=null;if(p&&(Object.keys(p[0].params).length===0||(m=Ne(d,n,l,!0),!(m&&u.length<m.length&&$e(u,m.slice(0,u.length))))))return{type:`success`,matches:p};if(m||=Ne(d,n,l,!0),!m||$e(u,m))return{type:`success`,matches:null};u=m}}function $e(e,t){return e.length===t.length&&e.every((e,n)=>e.route.id===t[n].route.id)}function tt(e){o={},c=Ae(e,a,void 0,o)}function nt(e,t,n=!1){let r=c==null;Zt(e,t,c||s,o,a,n),r&&(s=[...s],se({}))}return C={get basename(){return l},get future(){return d},get state(){return w},get routes(){return s},get window(){return t},initialize:ie,subscribe:oe,enableScrollRestoration:Ke,navigate:le,fetch:ge,revalidate:ue,createHref:t=>e.history.createHref(t),encodeLocation:t=>e.history.encodeLocation(t),getFetcher:ke,resetFetcher:je,deleteFetcher:Ie,dispose:ae,getBlocker:Ve,deleteBlocker:He,patchRoutes:nt,_internalFetchControllers:F,_internalSetRoutes:tt,_internalSetStateDoNotUseOrYouWillBreakYourApp(e){se(e)}},e.unstable_instrumentations&&(C=bt(C,e.unstable_instrumentations.map(e=>e.router).filter(Boolean))),C}function Ht(e){return e!=null&&(`formData`in e&&e.formData!=null||`body`in e&&e.body!==void 0)}function Ut(e,t,n,r,i,a){let o,s;if(i){o=[];for(let e of t)if(o.push(e),e.route.id===i){s=e;break}}else o=t,s=t[t.length-1];let c=ot(r||`.`,at(o),Ze(e.pathname,n)||e.pathname,a===`path`);if(r??(c.search=e.search,c.hash=e.hash),(r==null||r===``||r===`.`)&&s){let e=Gn(c.search);if(s.route.index&&!e)c.search=c.search?c.search.replace(/^\?/,`?index&`):`?index`;else if(!s.route.index&&e){let e=new URLSearchParams(c.search),t=e.getAll(`index`);e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();c.search=n?`?${n}`:``}}return n!==`/`&&(c.pathname=Qe({basename:n,pathname:c.pathname})),ye(c)}function Wt(e,t,n){if(!n||!Ht(n))return{path:t};if(n.formMethod&&!Un(n.formMethod))return{path:t,error:kn(405,{method:n.formMethod})};let r=()=>({path:t,error:kn(400,{type:`invalid-body`})}),i=(n.formMethod||`get`).toUpperCase(),a=jn(t);if(n.body!==void 0){if(n.formEncType===`text/plain`){if(!Wn(i))return r();let e=typeof n.body==`string`?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce((e,[t,n])=>`${e}${t}=${n}
10
10
  `,``):String(n.body);return{path:t,submission:{formMethod:i,formAction:a,formEncType:n.formEncType,formData:void 0,json:void 0,text:e}}}else if(n.formEncType===`application/json`){if(!Wn(i))return r();try{let e=typeof n.body==`string`?JSON.parse(n.body):n.body;return{path:t,submission:{formMethod:i,formAction:a,formEncType:n.formEncType,formData:void 0,json:e,text:void 0}}}catch{return r()}}}he(typeof FormData==`function`,`FormData is not available in this environment`);let o,s;if(n.formData)o=xn(n.formData),s=n.formData;else if(n.body instanceof FormData)o=xn(n.body),s=n.body;else if(n.body instanceof URLSearchParams)o=n.body,s=Sn(o);else if(n.body==null)o=new URLSearchParams,s=new FormData;else try{o=new URLSearchParams(n.body),s=Sn(o)}catch{return r()}let c={formMethod:i,formAction:a,formEncType:n&&n.formEncType||`application/x-www-form-urlencoded`,formData:s,json:void 0,text:void 0};if(Wn(c.formMethod))return{path:t,submission:c};let l=be(t);return e&&l.search&&Gn(l.search)&&o.append(`index`,``),l.search=`?${o}`,{path:ye(l),submission:c}}function Gt(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b){let x=y?Ln(y[1])?y[1].error:y[1].data:void 0,S=i.createURL(a.location),C=i.createURL(c),w;if(u&&a.errors){let e=Object.keys(a.errors)[0];w=o.findIndex(t=>t.route.id===e)}else if(y&&Ln(y[1])){let e=y[0];w=o.findIndex(t=>t.route.id===e)-1}let T=y?y[1].statusCode:void 0,E=T&&T>=400,D={currentUrl:S,currentParams:a.matches[0]?.params||{},nextUrl:C,nextParams:o[0].params,...s,actionResult:x,actionStatus:T},O=ht(o),k=o.map((i,o)=>{let{route:s}=i,f=null;if(w!=null&&o>w)f=!1;else if(s.lazy)f=!0;else if(!Kt(s))f=!1;else if(u){let{shouldLoad:e}=qt(s,a.loaderData,a.errors);f=e}else Jt(a.loaderData,a.matches[o],i)&&(f=!0);if(f!==null)return un(n,r,e,c,O,i,l,t,f);let p=!1;typeof b==`boolean`?p=b:E?p=!1:d||S.pathname+S.search===C.pathname+C.search?p=!0:S.search===C.search?Yt(a.matches[o],i)&&(p=!0):p=!0;let m={...D,defaultShouldRevalidate:p};return un(n,r,e,c,O,i,l,t,Xt(i,m),m,b)}),A=[];return m.forEach((e,s)=>{if(u||!o.some(t=>t.route.id===e.routeId)||p.has(s))return;let c=a.fetchers.get(s),m=c&&c.state!==`idle`&&c.data===void 0,y=Me(g,e.path,_);if(!y){if(v&&m)return;A.push({key:s,routeId:e.routeId,path:e.path,matches:null,match:null,request:null,controller:null});return}if(h.has(s))return;let x=Kn(y,e.path),S=new AbortController,C=yn(i,e.path,S.signal),w=null;if(f.has(s))f.delete(s),w=dn(n,r,C,e.path,y,x,l,t);else if(m)d&&(w=dn(n,r,C,e.path,y,x,l,t));else{let i;i=typeof b==`boolean`?b:E?!1:d;let a={...D,defaultShouldRevalidate:i};Xt(x,a)&&(w=dn(n,r,C,e.path,y,x,l,t,a))}w&&A.push({key:s,routeId:e.routeId,path:e.path,matches:w,match:x,request:C,controller:S})}),{dsMatches:k,revalidatingFetchers:A}}function Kt(e){return e.loader!=null||e.middleware!=null&&e.middleware.length>0}function qt(e,t,n){if(e.lazy)return{shouldLoad:!0,renderFallback:!0};if(!Kt(e))return{shouldLoad:!1,renderFallback:!1};let r=t!=null&&e.id in t,i=n!=null&&n[e.id]!==void 0;if(!r&&i)return{shouldLoad:!1,renderFallback:!1};if(typeof e.loader==`function`&&e.loader.hydrate===!0)return{shouldLoad:!0,renderFallback:!r};let a=!r&&!i;return{shouldLoad:a,renderFallback:a}}function Jt(e,t,n){let r=!t||n.route.id!==t.route.id,i=!e.hasOwnProperty(n.route.id);return r||i}function Yt(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith(`*`)&&e.params[`*`]!==t.params[`*`]}function Xt(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n==`boolean`)return n}return t.defaultShouldRevalidate}function Zt(e,t,n,r,i,a){let o;if(e){let t=r[e];he(t,`No route found to patch children into: routeId = ${e}`),t.children||=[],o=t.children}else o=n;let s=[],c=[];if(t.forEach(e=>{let t=o.find(t=>Qt(e,t));t?c.push({existingRoute:t,newRoute:e}):s.push(e)}),s.length>0){let t=Ae(s,i,[e||`_`,`patch`,String(o?.length||`0`)],r);o.push(...t)}if(a&&c.length>0)for(let e=0;e<c.length;e++){let{existingRoute:t,newRoute:n}=c[e],r=t,[a]=Ae([n],i,[],{},!0);Object.assign(r,{element:a.element?a.element:r.element,errorElement:a.errorElement?a.errorElement:r.errorElement,hydrateFallbackElement:a.hydrateFallbackElement?a.hydrateFallbackElement:r.hydrateFallbackElement})}}function Qt(e,t){return`id`in e&&`id`in t&&e.id===t.id?!0:e.index===t.index&&e.path===t.path&&e.caseSensitive===t.caseSensitive?(!e.children||e.children.length===0)&&(!t.children||t.children.length===0)?!0:e.children?.every((e,n)=>t.children?.some(t=>Qt(e,t)))??!1:!1}var $t=new WeakMap,en=({key:e,route:t,manifest:n,mapRouteProperties:r})=>{let i=n[t.id];if(he(i,`No route found in manifest`),!i.lazy||typeof i.lazy!=`object`)return;let a=i.lazy[e];if(!a)return;let o=$t.get(i);o||(o={},$t.set(i,o));let s=o[e];if(s)return s;let c=(async()=>{let t=Ee(e),n=i[e]!==void 0&&e!==`hasErrorBoundary`;if(t)U(!t,`Route property `+e+` is not a supported lazy route property. This property will be ignored.`),o[e]=Promise.resolve();else if(n)U(!1,`Route "${i.id}" has a static property "${e}" defined. The lazy property will be ignored.`);else{let t=await a();t!=null&&(Object.assign(i,{[e]:t}),Object.assign(i,r(i)))}typeof i.lazy==`object`&&(i.lazy[e]=void 0,Object.values(i.lazy).every(e=>e===void 0)&&(i.lazy=void 0))})();return o[e]=c,c},tn=new WeakMap;function nn(e,t,n,r,i){let a=n[e.id];if(he(a,`No route found in manifest`),!e.lazy)return{lazyRoutePromise:void 0,lazyHandlerPromise:void 0};if(typeof e.lazy==`function`){let t=tn.get(a);if(t)return{lazyRoutePromise:t,lazyHandlerPromise:t};let n=(async()=>{he(typeof e.lazy==`function`,`No lazy route function found`);let t=await e.lazy(),n={};for(let e in t){let r=t[e];if(r===void 0)continue;let i=Oe(e),o=a[e]!==void 0&&e!==`hasErrorBoundary`;i?U(!i,`Route property `+e+` is not a supported property to be returned from a lazy route function. This property will be ignored.`):o?U(!o,`Route "${a.id}" has a static property "${e}" defined but its lazy function is also returning a value for this property. The lazy route property "${e}" will be ignored.`):n[e]=r}Object.assign(a,n),Object.assign(a,{...r(a),lazy:void 0})})();return tn.set(a,n),n.catch(()=>{}),{lazyRoutePromise:n,lazyHandlerPromise:n}}let o=Object.keys(e.lazy),s=[],c;for(let a of o){if(i&&i.includes(a))continue;let o=en({key:a,route:e,manifest:n,mapRouteProperties:r});o&&(s.push(o),a===t&&(c=o))}let l=s.length>0?Promise.all(s).then(()=>{}):void 0;return l?.catch(()=>{}),c?.catch(()=>{}),{lazyRoutePromise:l,lazyHandlerPromise:c}}async function rn(e){let t=e.matches.filter(e=>e.shouldLoad),n={};return(await Promise.all(t.map(e=>e.resolve()))).forEach((e,r)=>{n[t[r].route.id]=e}),n}async function an(e){return e.matches.some(e=>e.route.middleware)?on(e,()=>rn(e)):rn(e)}function on(e,t){return sn(e,t,e=>{if(Hn(e))throw e;return e},Pn,n);function n(t,n,r){if(r)return Promise.resolve(Object.assign(r.value,{[n]:{type:`error`,result:t}}));{let{matches:r}=e,i=Dn(r,r[Math.min(Math.max(r.findIndex(e=>e.route.id===n),0),Math.max(r.findIndex(e=>e.shouldCallHandler()),0))].route.id).route.id;return Promise.resolve({[i]:{type:`error`,result:t}})}}}async function sn(e,t,n,r,i){let{matches:a,...o}=e;return await cn(o,a.flatMap(e=>e.route.middleware?e.route.middleware.map(t=>[e.route.id,t]):[]),t,n,r,i)}async function cn(e,t,n,r,i,a,o=0){let{request:s}=e;if(s.signal.aborted)throw s.signal.reason??Error(`Request aborted: ${s.method} ${s.url}`);let c=t[o];if(!c)return await n();let[l,u]=c,d,f=async()=>{if(d)throw Error("You may only call `next()` once per middleware");try{return d={value:await cn(e,t,n,r,i,a,o+1)},d.value}catch(e){return d={value:await a(e,l,d)},d.value}};try{let t=await u(e,f),n=t==null?void 0:r(t);return i(n)?n:d?n??d.value:(d={value:await f()},d.value)}catch(e){return await a(e,l,d)}}function ln(e,t,n,r,i){let a=en({key:`middleware`,route:r.route,manifest:t,mapRouteProperties:e}),o=nn(r.route,Wn(n.method)?`action`:`loader`,t,e,i);return{middleware:a,route:o.lazyRoutePromise,handler:o.lazyHandlerPromise}}function un(e,t,n,r,i,a,o,s,c,l=null,u){let d=!1,f=ln(e,t,n,a,o);return{...a,_lazyPromises:f,shouldLoad:c,shouldRevalidateArgs:l,shouldCallHandler(e){return d=!0,l?typeof u==`boolean`?Xt(a,{...l,defaultShouldRevalidate:u}):typeof e==`boolean`?Xt(a,{...l,defaultShouldRevalidate:e}):Xt(a,l):c},resolve(e){let{lazy:t,loader:o,middleware:l}=a.route,u=d||c||e&&!Wn(n.method)&&(t||o),p=l&&l.length>0&&!o&&!t;return u&&(Wn(n.method)||!p)?pn({request:n,path:r,unstable_pattern:i,match:a,lazyHandlerPromise:f?.handler,lazyRoutePromise:f?.route,handlerOverride:e,scopedContext:s}):Promise.resolve({type:`data`,result:void 0})}}}function dn(e,t,n,r,i,a,o,s,c=null){return i.map(l=>l.route.id===a.route.id?un(e,t,n,r,ht(i),l,o,s,!0,c):{...l,shouldLoad:!1,shouldRevalidateArgs:c,shouldCallHandler:()=>!1,_lazyPromises:ln(e,t,n,l,o),resolve:()=>Promise.resolve({type:`data`,result:void 0})})}async function fn(e,t,n,r,i,a,o){r.some(e=>e._lazyPromises?.middleware)&&await Promise.all(r.map(e=>e._lazyPromises?.middleware));let s={request:t,unstable_url:bn(t,n),unstable_pattern:ht(r),params:r[0].params,context:a,matches:r},c=o?()=>{throw Error("You cannot call `runClientMiddleware()` from a static handler `dataStrategy`. Middleware is run outside of `dataStrategy` during SSR in order to bubble up the Response. You can enable middleware via the `respond` API in `query`/`queryRoute`")}:e=>{let t=s;return on(t,()=>e({...t,fetcherKey:i,runClientMiddleware:()=>{throw Error("Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler")}}))},l=await e({...s,fetcherKey:i,runClientMiddleware:c});try{await Promise.all(r.flatMap(e=>[e._lazyPromises?.handler,e._lazyPromises?.route]))}catch{}return l}async function pn({request:e,path:t,unstable_pattern:n,match:r,lazyHandlerPromise:i,lazyRoutePromise:a,handlerOverride:o,scopedContext:s}){let c,l,u=Wn(e.method),d=u?`action`:`loader`,f=i=>{let a,c=new Promise((e,t)=>a=t);l=()=>a(),e.signal.addEventListener(`abort`,l);let u=a=>typeof i==`function`?i({request:e,unstable_url:bn(e,t),unstable_pattern:n,params:r.params,context:s},...a===void 0?[]:[a]):Promise.reject(Error(`You cannot call the handler for a route which defines a boolean "${d}" [routeId: ${r.route.id}]`)),f=(async()=>{try{return{type:`data`,result:await(o?o(e=>u(e)):u())}}catch(e){return{type:`error`,result:e}}})();return Promise.race([f,c])};try{let t=u?r.route.action:r.route.loader;if(i||a)if(t){let e,[n]=await Promise.all([f(t).catch(t=>{e=t}),i,a]);if(e!==void 0)throw e;c=n}else{await i;let t=u?r.route.action:r.route.loader;if(t)[c]=await Promise.all([f(t),a]);else if(d===`action`){let t=new URL(e.url),n=t.pathname+t.search;throw kn(405,{method:e.method,pathname:n,routeId:r.route.id})}else return{type:`data`,result:void 0}}else if(t)c=await f(t);else{let t=new URL(e.url);throw kn(404,{pathname:t.pathname+t.search})}}catch(e){return{type:`error`,result:e}}finally{l&&e.signal.removeEventListener(`abort`,l)}return c}async function mn(e){let t=e.headers.get(`Content-Type`);return t&&/\bapplication\/json\b/.test(t)?e.body==null?null:e.json():e.text()}async function hn(e){let{result:t,type:n}=e;if(Bn(t)){let e;try{e=await mn(t)}catch(e){return{type:`error`,error:e}}return n===`error`?{type:`error`,error:new pt(t.status,t.statusText,e),statusCode:t.status,headers:t.headers}:{type:`data`,data:e,statusCode:t.status,headers:t.headers}}return n===`error`?zn(t)?t.data instanceof Error?{type:`error`,error:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:`error`,error:Nn(t),statusCode:mt(t)?t.status:void 0,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:`error`,error:t,statusCode:mt(t)?t.status:void 0}:zn(t)?{type:`data`,data:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:`data`,data:t}}function gn(e,t,n,r,i){let a=e.headers.get(`Location`);if(he(a,`Redirects returned/thrown from loaders/actions must have a Location header`),!et(a)){let o=r.slice(0,r.findIndex(e=>e.route.id===n)+1);a=Ut(new URL(t.url),o,i,a),e.headers.set(`Location`,a)}return e}var _n=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function vn(e,t,n,r){if(et(e)){let r=e,i=r.startsWith(`//`)?new URL(t.protocol+r):new URL(r);if(_n.includes(i.protocol))throw Error(`Invalid redirect location`);let a=Ze(i.pathname,n)!=null;if(i.origin===t.origin&&a)return st(i.pathname)+i.search+i.hash}try{let t=r.createURL(e);if(_n.includes(t.protocol))throw Error(`Invalid redirect location`)}catch{}return e}function yn(e,t,n,r){let i=e.createURL(jn(t)).toString(),a={signal:n};if(r&&Wn(r.formMethod)){let{formMethod:e,formEncType:t}=r;a.method=e.toUpperCase(),t===`application/json`?(a.headers=new Headers({"Content-Type":t}),a.body=JSON.stringify(r.json)):t===`text/plain`?a.body=r.text:t===`application/x-www-form-urlencoded`&&r.formData?a.body=xn(r.formData):a.body=r.formData}return new Request(i,a)}function bn(e,t){let n=new URL(e.url),r=typeof t==`string`?be(t):t;if(n.pathname=r.pathname||`/`,r.search){let e=new URLSearchParams(r.search),t=e.getAll(`index`);e.delete(`index`);for(let n of t.filter(Boolean))e.append(`index`,n);n.search=e.size?`?${e.toString()}`:``}else n.search=``;return n.hash=r.hash||``,n}function xn(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r==`string`?r:r.name);return t}function Sn(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function Cn(e,t,n,r=!1,i=!1){let a={},o=null,s,c=!1,l={},u=n&&Ln(n[1])?n[1].error:void 0;return e.forEach(n=>{if(!(n.route.id in t))return;let d=n.route.id,f=t[d];if(he(!Rn(f),`Cannot handle redirect results in processLoaderData`),Ln(f)){let t=f.error;if(u!==void 0&&(t=u,u=void 0),o||={},i)o[d]=t;else{let n=Dn(e,d);o[n.route.id]??(o[n.route.id]=t)}r||(a[d]=Bt),c||(c=!0,s=mt(f.error)?f.error.status:500),f.headers&&(l[d]=f.headers)}else a[d]=f.data,f.statusCode&&f.statusCode!==200&&!c&&(s=f.statusCode),f.headers&&(l[d]=f.headers)}),u!==void 0&&n&&(o={[n[0]]:u},n[2]&&(a[n[2]]=void 0)),{loaderData:a,errors:o,statusCode:s||200,loaderHeaders:l}}function wn(e,t,n,r,i,a){let{loaderData:o,errors:s}=Cn(t,n,r);return i.filter(e=>!e.matches||e.matches.some(e=>e.shouldLoad)).forEach(t=>{let{key:n,match:r,controller:i}=t;if(i&&i.signal.aborted)return;let o=a[n];if(he(o,`Did not find corresponding fetcher result`),Ln(o)){let t=Dn(e.matches,r?.route.id);s&&s[t.route.id]||(s={...s,[t.route.id]:o.error}),e.fetchers.delete(n)}else if(Rn(o))he(!1,`Unhandled fetcher revalidation redirect`);else{let t=Qn(o.data);e.fetchers.set(n,t)}}),{loaderData:o,errors:s}}function Tn(e,t,n,r){let i=Object.entries(t).filter(([,e])=>e!==Bt).reduce((e,[t,n])=>(e[t]=n,e),{});for(let a of n){let n=a.route.id;if(!t.hasOwnProperty(n)&&e.hasOwnProperty(n)&&a.route.loader&&(i[n]=e[n]),r&&r.hasOwnProperty(n))break}return i}function En(e){return e?Ln(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}:{}}function Dn(e,t){return(t?e.slice(0,e.findIndex(e=>e.route.id===t)+1):[...e]).reverse().find(e=>e.route.hasErrorBoundary===!0)||e[0]}function On(e){let t=e.length===1?e[0]:e.find(e=>e.index||!e.path||e.path===`/`)||{id:`__shim-error-route__`};return{matches:[{params:{},pathname:``,pathnameBase:``,route:t}],route:t}}function kn(e,{pathname:t,routeId:n,method:r,type:i,message:a}={}){let o=`Unknown Server Error`,s=`Unknown @remix-run/router error`;return e===400?(o=`Bad Request`,r&&t&&n?s=`You made a ${r} request to "${t}" but did not provide a \`loader\` for route "${n}", so there is no way to handle the request.`:i===`invalid-body`&&(s=`Unable to encode submission body`)):e===403?(o=`Forbidden`,s=`Route "${n}" does not match URL "${t}"`):e===404?(o=`Not Found`,s=`No route matches URL "${t}"`):e===405&&(o=`Method Not Allowed`,r&&t&&n?s=`You made a ${r.toUpperCase()} request to "${t}" but did not provide an \`action\` for route "${n}", so there is no way to handle the request.`:r&&(s=`Invalid request method "${r.toUpperCase()}"`)),new pt(e||500,o,Error(s),!0)}function An(e){let t=Object.entries(e);for(let e=t.length-1;e>=0;e--){let[n,r]=t[e];if(Rn(r))return{key:n,result:r}}}function jn(e){return ye({...typeof e==`string`?be(e):e,hash:``})}function Mn(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===``?t.hash!==``:e.hash===t.hash?!0:t.hash!==``}function Nn(e){return new pt(e.init?.status??500,e.init?.statusText??`Internal Server Error`,e.data)}function Pn(e){return typeof e==`object`&&!!e&&Object.entries(e).every(([e,t])=>typeof e==`string`&&Fn(t))}function Fn(e){return typeof e==`object`&&!!e&&`type`in e&&`result`in e&&(e.type===`data`||e.type===`error`)}function In(e){return Bn(e.result)&&Nt.has(e.result.status)}function Ln(e){return e.type===`error`}function Rn(e){return(e&&e.type)===`redirect`}function zn(e){return typeof e==`object`&&!!e&&`type`in e&&`data`in e&&`init`in e&&e.type===`DataWithResponseInit`}function Bn(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.headers==`object`&&e.body!==void 0}function Vn(e){return Nt.has(e)}function Hn(e){return Bn(e)&&Vn(e.status)&&e.headers.has(`Location`)}function Un(e){return Mt.has(e.toUpperCase())}function Wn(e){return At.has(e.toUpperCase())}function Gn(e){return new URLSearchParams(e).getAll(`index`).some(e=>e===``)}function Kn(e,t){let n=typeof t==`string`?be(t).search:t.search;if(e[e.length-1].route.index&&Gn(n||``))return e[e.length-1];let r=it(e);return r[r.length-1]}function qn(e){let{formMethod:t,formAction:n,formEncType:r,text:i,formData:a,json:o}=e;if(!(!t||!n||!r)){if(i!=null)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:i};if(a!=null)return{formMethod:t,formAction:n,formEncType:r,formData:a,json:void 0,text:void 0};if(o!==void 0)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:o,text:void 0}}}function Jn(e,t){return t?{state:`loading`,location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:`loading`,location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function Yn(e,t){return{state:`submitting`,location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function Xn(e,t){return e?{state:`loading`,formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:`loading`,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function Zn(e,t){return{state:`submitting`,formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function Qn(e){return{state:`idle`,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function $n(e,t){try{let n=e.sessionStorage.getItem(zt);if(n){let e=JSON.parse(n);for(let[n,r]of Object.entries(e||{}))r&&Array.isArray(r)&&t.set(n,new Set(r||[]))}}catch{}}function er(e,t){if(t.size>0){let n={};for(let[e,r]of t)n[e]=[...r];try{e.sessionStorage.setItem(zt,JSON.stringify(n))}catch(e){U(!1,`Failed to save applied view transitions in sessionStorage (${e}).`)}}}function tr(){let e,t,n=new Promise((r,i)=>{e=async e=>{r(e);try{await n}catch{}},t=async e=>{i(e);try{await n}catch{}}});return{promise:n,resolve:e,reject:t}}var nr=C.createContext(null);nr.displayName=`DataRouter`;var rr=C.createContext(null);rr.displayName=`DataRouterState`;var ir=C.createContext(!1);function ar(){return C.useContext(ir)}var or=C.createContext({isTransitioning:!1});or.displayName=`ViewTransition`;var sr=C.createContext(new Map);sr.displayName=`Fetchers`;var cr=C.createContext(null);cr.displayName=`Await`;var lr=C.createContext(null);lr.displayName=`Navigation`;var ur=C.createContext(null);ur.displayName=`Location`;var dr=C.createContext({outlet:null,matches:[],isDataRoute:!1});dr.displayName=`Route`;var fr=C.createContext(null);fr.displayName=`RouteError`;var pr=`REACT_ROUTER_ERROR`,mr=`REDIRECT`,hr=`ROUTE_ERROR_RESPONSE`;function gr(e){if(e.startsWith(`${pr}:${mr}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function _r(e){if(e.startsWith(`${pr}:${hr}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new pt(t.status,t.statusText,t.data)}catch{}}function vr(e,{relative:t}={}){he(yr(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=C.useContext(lr),{hash:i,pathname:a,search:o}=Or(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:ct([n,a])),r.createHref({pathname:s,search:o,hash:i})}function yr(){return C.useContext(ur)!=null}function br(){return he(yr(),`useLocation() may be used only in the context of a <Router> component.`),C.useContext(ur).location}var xr=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function Sr(e){C.useContext(lr).static||C.useLayoutEffect(e)}function Cr(){let{isDataRoute:e}=C.useContext(dr);return e?Kr():wr()}function wr(){he(yr(),`useNavigate() may be used only in the context of a <Router> component.`);let e=C.useContext(nr),{basename:t,navigator:n}=C.useContext(lr),{matches:r}=C.useContext(dr),{pathname:i}=br(),a=JSON.stringify(at(r)),o=C.useRef(!1);return Sr(()=>{o.current=!0}),C.useCallback((r,s={})=>{if(U(o.current,xr),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=ot(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:ct([t,c.pathname])),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}var Tr=C.createContext(null);function Er(e){let t=C.useContext(dr).outlet;return C.useMemo(()=>t&&C.createElement(Tr.Provider,{value:e},t),[t,e])}function Dr(){let{matches:e}=C.useContext(dr),t=e[e.length-1];return t?t.params:{}}function Or(e,{relative:t}={}){let{matches:n}=C.useContext(dr),{pathname:r}=br(),i=JSON.stringify(at(n));return C.useMemo(()=>ot(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function kr(e,t,n){he(yr(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:r}=C.useContext(lr),{matches:i}=C.useContext(dr),a=i[i.length-1],o=a?a.params:{},s=a?a.pathname:`/`,c=a?a.pathnameBase:`/`,l=a&&a.route;{let e=l&&l.path||``;Jr(s,!l||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${s}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
11
11
 
12
- Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=br(),d;if(t){let e=typeof t==`string`?be(t):t;he(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=Me(e,{pathname:p});U(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),U(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let h=Ir(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:ct([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:ct([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?C.createElement(ur.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,unstable_mask:void 0,...d},navigationType:`POP`}},h):h}function Ar(){let e=Gr(),t=mt(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=C.createElement(C.Fragment,null,C.createElement(`p`,null,`💿 Hey developer 👋`),C.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,C.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,C.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),C.createElement(C.Fragment,null,C.createElement(`h2`,null,`Unexpected Application Error!`),C.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?C.createElement(`pre`,{style:i},n):null,o)}var jr=C.createElement(Ar,null),Mr=class extends C.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=_r(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:C.createElement(dr.Provider,{value:this.props.routeContext},C.createElement(fr.Provider,{value:e,children:this.props.component}));return this.context?C.createElement(Pr,{error:e},t):t}};Mr.contextType=ir;var Nr=new WeakMap;function Pr({children:e,error:t}){let{basename:n}=C.useContext(lr);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=gr(t.digest);if(e){let r=Nr.get(t);if(r)throw r;let i=_t(e.location,n);if(gt&&!Nr.get(t))if(i.isExternal||e.reloadDocument)window.location.href=i.absoluteURL||i.to;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:e.replace}));throw Nr.set(t,n),n}return C.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${i.absoluteURL||i.to}`})}}return e}function Fr({routeContext:e,match:t,children:n}){let r=C.useContext(nr);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),C.createElement(dr.Provider,{value:e},n)}function Ir(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);he(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e<i.length;e++){let t=i[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){let{loaderData:e,errors:a}=r,c=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!a||a[t.route.id]===void 0);if(t.route.lazy||c){n.isStatic&&(o=!0),i=s>=0?i.slice(0,s+1):[i[0]];break}}}}let c=n?.onError,l=r&&c?(e,t)=>{c(e,{location:r.location,params:r.matches?.[0]?.params??{},unstable_pattern:ht(r.matches),errorInfo:t})}:void 0;return i.reduceRight((e,n,c)=>{let u,d=!1,f=null,p=null;r&&(u=a&&n.route.id?a[n.route.id]:void 0,f=n.route.errorElement||jr,o&&(s<0&&c===0?(Jr(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),d=!0,p=null):s===c&&(d=!0,p=n.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,c+1)),h=()=>{let t;return t=u?f:d?p:n.route.Component?C.createElement(n.route.Component,null):n.route.element?n.route.element:e,C.createElement(Fr,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?C.createElement(Mr,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function Lr(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Rr(e){let t=C.useContext(nr);return he(t,Lr(e)),t}function zr(e){let t=C.useContext(rr);return he(t,Lr(e)),t}function Br(e){let t=C.useContext(dr);return he(t,Lr(e)),t}function Vr(e){let t=Br(e),n=t.matches[t.matches.length-1];return he(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function Hr(){return Vr(`useRouteId`)}function Ur(){return zr(`useNavigation`).navigation}function Wr(){let{matches:e,loaderData:t}=zr(`useMatches`);return C.useMemo(()=>e.map(e=>Pe(e,t)),[e,t])}function Gr(){let e=C.useContext(fr),t=zr(`useRouteError`),n=Vr(`useRouteError`);return e===void 0?t.errors?.[n]:e}function Kr(){let{router:e}=Rr(`useNavigate`),t=Vr(`useNavigate`),n=C.useRef(!1);return Sr(()=>{n.current=!0}),C.useCallback(async(r,i={})=>{U(n.current,xr),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var qr={};function Jr(e,t,n){!t&&!qr[e]&&(qr[e]=!0,U(!1,n))}var Yr={};function Xr(e,t){!e&&!Yr[t]&&(Yr[t]=!0,console.warn(t))}var Zr=C.useOptimistic,Qr=()=>void 0;function $r(e){return Zr?Zr(e):[e,Qr]}function ei(e){let t={hasErrorBoundary:e.hasErrorBoundary||e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&(e.element&&U(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(t,{element:C.createElement(e.Component),Component:void 0})),e.HydrateFallback&&(e.hydrateFallbackElement&&U(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(t,{hydrateFallbackElement:C.createElement(e.HydrateFallback),HydrateFallback:void 0})),e.ErrorBoundary&&(e.errorElement&&U(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(t,{errorElement:C.createElement(e.ErrorBoundary),ErrorBoundary:void 0})),t}var ti=[`HydrateFallback`,`hydrateFallbackElement`],ni=class{constructor(){this.status=`pending`,this.promise=new Promise((e,t)=>{this.resolve=t=>{this.status===`pending`&&(this.status=`resolved`,e(t))},this.reject=e=>{this.status===`pending`&&(this.status=`rejected`,t(e))}})}};function ri({router:e,flushSync:t,onError:n,unstable_useTransitions:r}){r=ar()||r;let[i,a]=C.useState(e.state),[o,s]=$r(i),[c,l]=C.useState(),[u,d]=C.useState({isTransitioning:!1}),[f,p]=C.useState(),[m,h]=C.useState(),[g,_]=C.useState(),v=C.useRef(new Map),y=C.useCallback((i,{deletedFetchers:o,newErrors:c,flushSync:u,viewTransitionOpts:g})=>{c&&n&&Object.values(c).forEach(e=>n(e,{location:i.location,params:i.matches[0]?.params??{},unstable_pattern:ht(i.matches)})),i.fetchers.forEach((e,t)=>{e.data!==void 0&&v.current.set(t,e.data)}),o.forEach(e=>v.current.delete(e)),Xr(u===!1||t!=null,'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let y=e.window!=null&&e.window.document!=null&&typeof e.window.document.startViewTransition==`function`;if(Xr(g==null||y,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!g||!y){t&&u?t(()=>a(i)):r===!1?a(i):C.startTransition(()=>{r===!0&&s(e=>ii(e,i)),a(i)});return}if(t&&u){t(()=>{m&&(f?.resolve(),m.skipTransition()),d({isTransitioning:!0,flushSync:!0,currentLocation:g.currentLocation,nextLocation:g.nextLocation})});let n=e.window.document.startViewTransition(()=>{t(()=>a(i))});n.finished.finally(()=>{t(()=>{p(void 0),h(void 0),l(void 0),d({isTransitioning:!1})})}),t(()=>h(n));return}m?(f?.resolve(),m.skipTransition(),_({state:i,currentLocation:g.currentLocation,nextLocation:g.nextLocation})):(l(i),d({isTransitioning:!0,flushSync:!1,currentLocation:g.currentLocation,nextLocation:g.nextLocation}))},[e.window,t,m,f,r,s,n]);C.useLayoutEffect(()=>e.subscribe(y),[e,y]);let b=o.initialized;C.useLayoutEffect(()=>{!b&&e.state.initialized&&y(e.state,{deletedFetchers:[],flushSync:!1,newErrors:null})},[b,y,e.state]),C.useEffect(()=>{u.isTransitioning&&!u.flushSync&&p(new ni)},[u]),C.useEffect(()=>{if(f&&c&&e.window){let t=c,n=f.promise,i=e.window.document.startViewTransition(async()=>{r===!1?a(t):C.startTransition(()=>{r===!0&&s(e=>ii(e,t)),a(t)}),await n});i.finished.finally(()=>{p(void 0),h(void 0),l(void 0),d({isTransitioning:!1})}),h(i)}},[c,f,e.window,r,s]),C.useEffect(()=>{f&&c&&o.location.key===c.location.key&&f.resolve()},[f,m,o.location,c]),C.useEffect(()=>{!u.isTransitioning&&g&&(l(g.state),d({isTransitioning:!0,flushSync:!1,currentLocation:g.currentLocation,nextLocation:g.nextLocation}),_(void 0))},[u.isTransitioning,g]);let x=C.useMemo(()=>({createHref:e.createHref,encodeLocation:e.encodeLocation,go:t=>e.navigate(t),push:(t,n,r)=>e.navigate(t,{state:n,preventScrollReset:r?.preventScrollReset}),replace:(t,n,r)=>e.navigate(t,{replace:!0,state:n,preventScrollReset:r?.preventScrollReset})}),[e]),S=e.basename||`/`,w=C.useMemo(()=>({router:e,navigator:x,static:!1,basename:S,onError:n}),[e,x,S,n]);return C.createElement(C.Fragment,null,C.createElement(nr.Provider,{value:w},C.createElement(rr.Provider,{value:o},C.createElement(sr.Provider,{value:v.current},C.createElement(or.Provider,{value:u},C.createElement(ci,{basename:S,location:o.location,navigationType:o.historyAction,navigator:x,unstable_useTransitions:r},C.createElement(ai,{routes:e.routes,future:e.future,state:o,isStatic:!1,onError:n})))))),null)}function ii(e,t){return{...e,navigation:t.navigation.state===`idle`?e.navigation:t.navigation,revalidation:t.revalidation===`idle`?e.revalidation:t.revalidation,actionData:t.navigation.state===`submitting`?e.actionData:t.actionData,fetchers:t.fetchers}}var ai=C.memo(oi);function oi({routes:e,future:t,state:n,isStatic:r,onError:i}){return kr(e,void 0,{state:n,isStatic:r,onError:i,future:t})}function si(e){return Er(e.context)}function ci({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,unstable_useTransitions:o}){he(!yr(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=C.useMemo(()=>({basename:s,navigator:i,static:a,unstable_useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=be(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,unstable_mask:m}=n,h=C.useMemo(()=>{let e=Ze(l,s);return e==null?null:{location:{pathname:e,search:u,hash:d,state:f,key:p,unstable_mask:m},navigationType:r}},[s,l,u,d,f,p,r,m]);return U(h!=null,`<Router basename="${s}"> is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the <Router> won't render anything.`),h==null?null:C.createElement(lr.Provider,{value:c},C.createElement(ur.Provider,{children:t,value:h}))}C.Component;var li=`get`,ui=`application/x-www-form-urlencoded`;function di(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function fi(e){return di(e)&&e.tagName.toLowerCase()===`button`}function pi(e){return di(e)&&e.tagName.toLowerCase()===`form`}function mi(e){return di(e)&&e.tagName.toLowerCase()===`input`}function hi(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function gi(e,t){return e.button===0&&(!t||t===`_self`)&&!hi(e)}function _i(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function vi(e,t){let n=_i(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var yi=null;function bi(){if(yi===null)try{new FormData(document.createElement(`form`),0),yi=!1}catch{yi=!0}return yi}var xi=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Si(e){return e!=null&&!xi.has(e)?(U(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${ui}"`),null):e}function Ci(e,t){let n,r,i,a,o;if(pi(e)){let o=e.getAttribute(`action`);r=o?Ze(o,t):null,n=e.getAttribute(`method`)||li,i=Si(e.getAttribute(`enctype`))||ui,a=new FormData(e)}else if(fi(e)||mi(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?Ze(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||li,i=Si(e.getAttribute(`formenctype`))||Si(o.getAttribute(`enctype`))||ui,a=new FormData(o,e),!bi()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(di(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=li,r=null,i=ui,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var wi={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},Ti=/[&><\u2028\u2029]/g;function Ei(e){return e.replace(Ti,e=>wi[e])}function Di(e,t){if(e===!1||e==null)throw Error(t)}function Oi(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return n?i.pathname.endsWith(`/`)?i.pathname=`${i.pathname}_.${r}`:i.pathname=`${i.pathname}.${r}`:i.pathname===`/`?i.pathname=`_root.${r}`:t&&Ze(i.pathname,t)===`/`?i.pathname=`${lt(t)}/_root.${r}`:i.pathname=`${lt(i.pathname)}.${r}`,i}async function ki(e,t){if(e.id in t)return t[e.id];try{let n=await ce(()=>import(e.module),[],import.meta.url);return t[e.id]=n,n}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Ai(e){return e!=null&&typeof e.page==`string`}function ji(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function Mi(e,t,n){return Li((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await ki(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(ji).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function Ni(e,t,n,r,i,a){let o=(e,t)=>n[t]?e.route.id!==n[t].route.id:!0,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function Pi(e,t,{includeHydrateFallback:n}={}){return Fi(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function Fi(e){return[...new Set(e)]}function Ii(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Li(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Ai(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Ii(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Ri(){let e=C.useContext(nr);return Di(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function zi(){let e=C.useContext(rr);return Di(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Bi=C.createContext(void 0);Bi.displayName=`FrameworkContext`;function Vi(){let e=C.useContext(Bi);return Di(e,`You must render this element inside a <HydratedRouter> element`),e}function Hi(e,t){let n=C.useContext(Bi),[r,i]=C.useState(!1),[a,o]=C.useState(!1),{onFocus:s,onBlur:c,onMouseEnter:l,onMouseLeave:u,onTouchStart:d}=t,f=C.useRef(null);C.useEffect(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return f.current&&e.observe(f.current),()=>{e.disconnect()}}},[e]),C.useEffect(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let p=()=>{i(!0)},m=()=>{i(!1),o(!1)};return n?e===`intent`?[a,f,{onFocus:Ui(s,p),onBlur:Ui(c,m),onMouseEnter:Ui(l,p),onMouseLeave:Ui(u,m),onTouchStart:Ui(d,p)}]:[a,f,{}]:[!1,f,{}]}function Ui(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Wi({page:e,...t}){let n=ar(),{router:r}=Ri(),i=C.useMemo(()=>Me(r.routes,e,r.basename),[r.routes,e,r.basename]);return i?n?C.createElement(Ki,{page:e,matches:i,...t}):C.createElement(qi,{page:e,matches:i,...t}):null}function Gi(e){let{manifest:t,routeModules:n}=Vi(),[r,i]=C.useState([]);return C.useEffect(()=>{let r=!1;return Mi(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function Ki({page:e,matches:t,...n}){let r=br(),{future:i}=Vi(),{basename:a}=Ri(),o=C.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=Oi(e,a,i.unstable_trailingSlashAwareDataRequests,`rsc`),o=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?o=!0:s.push(e.route.id);return o&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[a,i.unstable_trailingSlashAwareDataRequests,e,r,t]);return C.createElement(C.Fragment,null,o.map(e=>C.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function qi({page:e,matches:t,...n}){let r=br(),{future:i,manifest:a,routeModules:o}=Vi(),{basename:s}=Ri(),{loaderData:c,matches:l}=zi(),u=C.useMemo(()=>Ni(e,t,l,a,r,`data`),[e,t,l,a,r]),d=C.useMemo(()=>Ni(e,t,l,a,r,`assets`),[e,t,l,a,r]),f=C.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,l=!1;if(t.forEach(e=>{let t=a.routes[e.route.id];!t||!t.hasLoader||(!u.some(t=>t.route.id===e.route.id)&&e.route.id in c&&o[e.route.id]?.shouldRevalidate||t.hasClientLoader?l=!0:n.add(e.route.id))}),n.size===0)return[];let d=Oi(e,s,i.unstable_trailingSlashAwareDataRequests,`data`);return l&&n.size>0&&d.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[d.pathname+d.search]},[s,i.unstable_trailingSlashAwareDataRequests,c,r,a,u,t,e,o]),p=C.useMemo(()=>Pi(d,a),[d,a]),m=Gi(d);return C.createElement(C.Fragment,null,f.map(e=>C.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),p.map(e=>C.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),m.map(({key:e,link:t})=>C.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function Ji(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}C.Component;var Yi=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{Yi&&(window.__reactRouterVersion=`7.14.1`)}catch{}function Xi(e,t){return Vt({basename:t?.basename,getContext:t?.getContext,future:t?.future,history:me({window:t?.window}),hydrationData:t?.hydrationData||Zi(),routes:e,mapRouteProperties:ei,hydrationRouteProperties:ti,dataStrategy:t?.dataStrategy,patchRoutesOnNavigation:t?.patchRoutesOnNavigation,window:t?.window,unstable_instrumentations:t?.unstable_instrumentations}).initialize()}function Zi(){let e=window?.__staticRouterHydrationData;return e&&e.errors&&(e={...e,errors:Qi(e.errors)}),e}function Qi(e){if(!e)return null;let t=Object.entries(e),n={};for(let[e,r]of t)if(r&&r.__type===`RouteErrorResponse`)n[e]=new pt(r.status,r.statusText,r.data,r.internal===!0);else if(r&&r.__type===`Error`){if(r.__subType){let t=window[r.__subType];if(typeof t==`function`)try{let i=new t(r.message);i.stack=``,n[e]=i}catch{}}if(n[e]==null){let t=Error(r.message);t.stack=``,n[e]=t}}else n[e]=r;return n}function $i({basename:e,children:t,history:n,unstable_useTransitions:r}){let[i,a]=C.useState({action:n.action,location:n.location}),o=C.useCallback(e=>{r===!1?a(e):C.startTransition(()=>a(e))},[r]);return C.useLayoutEffect(()=>n.listen(o),[n,o]),C.createElement(ci,{basename:e,children:t,location:i.location,navigationType:i.action,navigator:n,unstable_useTransitions:r})}$i.displayName=`unstable_HistoryRouter`;var ea=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,ta=C.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:i,replace:a,unstable_mask:o,state:s,target:c,to:l,preventScrollReset:u,viewTransition:d,unstable_defaultShouldRevalidate:f,...p},m){let{basename:h,navigator:g,unstable_useTransitions:_}=C.useContext(lr),v=typeof l==`string`&&ea.test(l),y=_t(l,h);l=y.to;let b=vr(l,{relative:r}),x=br(),S=null;if(o){let e=ot(o,[],x.unstable_mask?x.unstable_mask.pathname:`/`,!0);h!==`/`&&(e.pathname=e.pathname===`/`?h:ct([h,e.pathname])),S=g.createHref(e)}let[w,T,E]=Hi(n,p),D=ca(l,{replace:a,unstable_mask:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,unstable_defaultShouldRevalidate:f,unstable_useTransitions:_});function O(t){e&&e(t),t.defaultPrevented||D(t)}let k=!(y.isExternal||i),A=C.createElement(`a`,{...p,...E,href:(k?S:void 0)||y.absoluteURL||b,onClick:k?O:e,ref:Ji(m,T),target:c,"data-discover":!v&&t===`render`?`true`:void 0});return w&&!v?C.createElement(C.Fragment,null,A,C.createElement(Wi,{page:b})):A});ta.displayName=`Link`;var na=C.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:i,to:a,viewTransition:o,children:s,...c},l){let u=Or(a,{relative:c.relative}),d=br(),f=C.useContext(rr),{navigator:p,basename:m}=C.useContext(lr),h=f!=null&&ya(u)&&o===!0,g=p.encodeLocation?p.encodeLocation(u).pathname:u.pathname,_=d.pathname,v=f&&f.navigation&&f.navigation.location?f.navigation.location.pathname:null;t||(_=_.toLowerCase(),v=v?v.toLowerCase():null,g=g.toLowerCase()),v&&m&&(v=Ze(v,m)||v);let y=g!==`/`&&g.endsWith(`/`)?g.length-1:g.length,b=_===g||!r&&_.startsWith(g)&&_.charAt(y)===`/`,x=v!=null&&(v===g||!r&&v.startsWith(g)&&v.charAt(g.length)===`/`),S={isActive:b,isPending:x,isTransitioning:h},w=b?e:void 0,T;T=typeof n==`function`?n(S):[n,b?`active`:null,x?`pending`:null,h?`transitioning`:null].filter(Boolean).join(` `);let E=typeof i==`function`?i(S):i;return C.createElement(ta,{...c,"aria-current":w,className:T,ref:l,style:E,to:a,viewTransition:o},typeof s==`function`?s(S):s)});na.displayName=`NavLink`;var ra=C.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=li,action:s,onSubmit:c,relative:l,preventScrollReset:u,viewTransition:d,unstable_defaultShouldRevalidate:f,...p},m)=>{let{unstable_useTransitions:h}=C.useContext(lr),g=fa(),_=pa(s,{relative:l}),v=o.toLowerCase()===`get`?`get`:`post`,y=typeof s==`string`&&ea.test(s);return C.createElement(`form`,{ref:m,method:v,action:_,onSubmit:r?c:e=>{if(c&&c(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,s=r?.getAttribute(`formmethod`)||o,p=()=>g(r||e.currentTarget,{fetcherKey:t,method:s,navigate:n,replace:i,state:a,relative:l,preventScrollReset:u,viewTransition:d,unstable_defaultShouldRevalidate:f});h&&n!==!1?C.startTransition(()=>p()):p()},...p,"data-discover":!y&&e===`render`?`true`:void 0})});ra.displayName=`Form`;function ia({getKey:e,storageKey:t,...n}){let r=C.useContext(Bi),{basename:i}=C.useContext(lr),a=br(),o=Wr();_a({getKey:e,storageKey:t});let s=C.useMemo(()=>{if(!r||!e)return null;let t=ga(a,o,i,e);return t===a.key?null:t},[]);if(!r||r.isSpaMode)return null;let c=((e,t)=>{if(!window.history.state||!window.history.state.key){let e=Math.random().toString(32).slice(2);window.history.replaceState({key:e},``)}try{let n=JSON.parse(sessionStorage.getItem(e)||`{}`)[t||window.history.state.key];typeof n==`number`&&window.scrollTo(0,n)}catch(t){console.error(t),sessionStorage.removeItem(e)}}).toString();return C.createElement(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${c})(${Ei(JSON.stringify(t||ma))}, ${Ei(JSON.stringify(s))})`}})}ia.displayName=`ScrollRestoration`;function aa(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function oa(e){let t=C.useContext(nr);return he(t,aa(e)),t}function sa(e){let t=C.useContext(rr);return he(t,aa(e)),t}function ca(e,{target:t,replace:n,unstable_mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,unstable_defaultShouldRevalidate:c,unstable_useTransitions:l}={}){let u=Cr(),d=br(),f=Or(e,{relative:o});return C.useCallback(p=>{if(gi(p,t)){p.preventDefault();let t=n===void 0?ye(d)===ye(f):n,m=()=>u(e,{replace:t,unstable_mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,unstable_defaultShouldRevalidate:c});l?C.startTransition(()=>m()):m()}},[d,u,f,n,r,i,t,e,a,o,s,c,l])}function la(e){U(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=C.useRef(_i(e)),n=C.useRef(!1),r=br(),i=C.useMemo(()=>vi(r.search,n.current?null:t.current),[r.search]),a=Cr();return[i,C.useCallback((e,t)=>{let r=_i(typeof e==`function`?e(new URLSearchParams(i)):e);n.current=!0,a(`?`+r,t)},[a,i])]}var ua=0,da=()=>`__${String(++ua)}__`;function fa(){let{router:e}=oa(`useSubmit`),{basename:t}=C.useContext(lr),n=Hr(),r=e.fetch,i=e.navigate;return C.useCallback(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=Ci(e,t);a.navigate===!1?await r(a.fetcherKey||da(),n,a.action||o,{unstable_defaultShouldRevalidate:a.unstable_defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,flushSync:a.flushSync}):await i(a.action||o,{unstable_defaultShouldRevalidate:a.unstable_defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,replace:a.replace,state:a.state,fromRouteId:n,flushSync:a.flushSync,viewTransition:a.viewTransition})},[r,i,t,n])}function pa(e,{relative:t}={}){let{basename:n}=C.useContext(lr),r=C.useContext(dr);he(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...Or(e||`.`,{relative:t})},o=br();if(e==null){a.search=o.search;let e=new URLSearchParams(a.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();a.search=n?`?${n}`:``}}return(!e||e===`.`)&&i.route.index&&(a.search=a.search?a.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(a.pathname=a.pathname===`/`?n:ct([n,a.pathname])),ye(a)}var ma=`react-router-scroll-positions`,ha={};function ga(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:Ze(e.pathname,n)||e.pathname},t)),i??=e.key,i}function _a({getKey:e,storageKey:t}={}){let{router:n}=oa(`useScrollRestoration`),{restoreScrollPosition:r,preventScrollReset:i}=sa(`useScrollRestoration`),{basename:a}=C.useContext(lr),o=br(),s=Wr(),c=Ur();C.useEffect(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),va(C.useCallback(()=>{if(c.state===`idle`){let t=ga(o,s,a,e);ha[t]=window.scrollY}try{sessionStorage.setItem(t||ma,JSON.stringify(ha))}catch(e){U(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[c.state,e,a,o,s,t])),typeof document<`u`&&(C.useLayoutEffect(()=>{try{let e=sessionStorage.getItem(t||ma);e&&(ha=JSON.parse(e))}catch{}},[t]),C.useLayoutEffect(()=>{let t=n?.enableScrollRestoration(ha,()=>window.scrollY,e?(t,n)=>ga(t,n,a,e):void 0);return()=>t&&t()},[n,a,e]),C.useLayoutEffect(()=>{if(r!==!1){if(typeof r==`number`){window.scrollTo(0,r);return}try{if(o.hash){let e=document.getElementById(decodeURIComponent(o.hash.slice(1)));if(e){e.scrollIntoView();return}}}catch{U(!1,`"${o.hash.slice(1)}" is not a decodable element ID. The view will not scroll to it.`)}i!==!0&&window.scrollTo(0,0)}},[o,r,i]))}function va(e,t){let{capture:n}=t||{};C.useEffect(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function ya(e,{relative:t}={}){let n=C.useContext(or);he(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=oa(`useViewTransitionState`),i=Or(e,{relative:t});if(!n.isTransitioning)return!1;let a=Ze(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=Ze(n.nextLocation.pathname,r)||n.nextLocation.pathname;return Je(i.pathname,o)!=null||Je(i.pathname,a)!=null}var ba=u(_(),1);function xa(e){return C.createElement(ri,{flushSync:ba.flushSync,...e})}var Sa=e=>typeof e==`string`,Ca=()=>{let e,t,n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n},wa=e=>e==null?``:String(e),Ta=(e,t,n)=>{e.forEach(e=>{t[e]&&(n[e]=t[e])})},Ea=/###/g,Da=e=>e&&e.includes(`###`)?e.replace(Ea,`.`):e,Oa=e=>!e||Sa(e),ka=(e,t,n)=>{let r=Sa(t)?t.split(`.`):t,i=0;for(;i<r.length-1;){if(Oa(e))return{};let t=Da(r[i]);!e[t]&&n&&(e[t]=new n),e=Object.prototype.hasOwnProperty.call(e,t)?e[t]:{},++i}return Oa(e)?{}:{obj:e,k:Da(r[i])}},Aa=(e,t,n)=>{let{obj:r,k:i}=ka(e,t,Object);if(r!==void 0||t.length===1){r[i]=n;return}let a=t[t.length-1],o=t.slice(0,t.length-1),s=ka(e,o,Object);for(;s.obj===void 0&&o.length;)a=`${o[o.length-1]}.${a}`,o=o.slice(0,o.length-1),s=ka(e,o,Object),s?.obj&&s.obj[`${s.k}.${a}`]!==void 0&&(s.obj=void 0);s.obj[`${s.k}.${a}`]=n},ja=(e,t,n,r)=>{let{obj:i,k:a}=ka(e,t,Object);i[a]=i[a]||[],i[a].push(n)},Ma=(e,t)=>{let{obj:n,k:r}=ka(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},Na=(e,t,n)=>{let r=Ma(e,n);return r===void 0?Ma(t,n):r},Pa=(e,t,n)=>{for(let r in t)r!==`__proto__`&&r!==`constructor`&&(r in e?Sa(e[r])||e[r]instanceof String||Sa(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):Pa(e[r],t[r],n):e[r]=t[r]);return e},Fa=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,`\\$&`),Ia={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`,"/":`&#x2F;`},La=e=>Sa(e)?e.replace(/[&<>"'\/]/g,e=>Ia[e]):e,Ra=class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){let t=this.regExpMap.get(e);if(t!==void 0)return t;let n=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,n),this.regExpQueue.push(e),n}},za=[` `,`,`,`?`,`!`,`;`],Ba=new Ra(20),Va=(e,t,n)=>{t||=``,n||=``;let r=za.filter(e=>!t.includes(e)&&!n.includes(e));if(r.length===0)return!0;let i=Ba.getRegExp(`(${r.map(e=>e===`?`?`\\?`:e).join(`|`)})`),a=!i.test(e);if(!a){let t=e.indexOf(n);t>0&&!i.test(e.substring(0,t))&&(a=!0)}return a},Ha=(e,t,n=`.`)=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let r=t.split(n),i=e;for(let e=0;e<r.length;){if(!i||typeof i!=`object`)return;let t,a=``;for(let o=e;o<r.length;++o)if(o!==e&&(a+=n),a+=r[o],t=i[a],t!==void 0){if([`string`,`number`,`boolean`].includes(typeof t)&&o<r.length-1)continue;e+=o-e+1;break}i=t}return i},Ua=e=>e?.replace(/_/g,`-`),Wa={type:`logger`,log(e){this.output(`log`,e)},warn(e){this.output(`warn`,e)},error(e){this.output(`error`,e)},output(e,t){console?.[e]?.apply?.(console,t)}},Ga=new class e{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||`i18next:`,this.logger=e||Wa,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,`log`,``,!0)}warn(...e){return this.forward(e,`warn`,``,!0)}error(...e){return this.forward(e,`error`,``)}deprecate(...e){return this.forward(e,`warn`,`WARNING DEPRECATED: `,!0)}forward(e,t,n,r){return r&&!this.debug?null:(e=e.map(e=>Sa(e)?e.replace(/[\r\n\x00-\x1F\x7F]/g,` `):e),Sa(e[0])&&(e[0]=`${n}${this.prefix} ${e[0]}`),this.logger[t](e))}create(t){return new e(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t||=this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},Ka=class{constructor(){this.observers={}}on(e,t){return e.split(` `).forEach(e=>{this.observers[e]||(this.observers[e]=new Map);let n=this.observers[e].get(t)||0;this.observers[e].set(t,n+1)}),this}off(e,t){if(this.observers[e]){if(!t){delete this.observers[e];return}this.observers[e].delete(t)}}once(e,t){let n=(...r)=>{t(...r),this.off(e,n)};return this.on(e,n),this}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,n])=>{for(let r=0;r<n;r++)e(...t)}),this.observers[`*`]&&Array.from(this.observers[`*`].entries()).forEach(([n,r])=>{for(let i=0;i<r;i++)n(e,...t)})}},qa=class extends Ka{constructor(e,t={ns:[`translation`],defaultNS:`translation`}){super(),this.data=e||{},this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.includes(e)||this.options.ns.push(e)}removeNamespaces(e){let t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}getResource(e,t,n,r={}){let i=r.keySeparator===void 0?this.options.keySeparator:r.keySeparator,a=r.ignoreJSONStructure===void 0?this.options.ignoreJSONStructure:r.ignoreJSONStructure,o;e.includes(`.`)?o=e.split(`.`):(o=[e,t],n&&(Array.isArray(n)?o.push(...n):Sa(n)&&i?o.push(...n.split(i)):o.push(n)));let s=Ma(this.data,o);return!s&&!t&&!n&&e.includes(`.`)&&(e=o[0],t=o[1],n=o.slice(2).join(`.`)),s||!a||!Sa(n)?s:Ha(this.data?.[e]?.[t],n,i)}addResource(e,t,n,r,i={silent:!1}){let a=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,o=[e,t];n&&(o=o.concat(a?n.split(a):n)),e.includes(`.`)&&(o=e.split(`.`),r=t,t=o[1]),this.addNamespaces(t),Aa(this.data,o,r),i.silent||this.emit(`added`,e,t,n,r)}addResources(e,t,n,r={silent:!1}){for(let r in n)(Sa(n[r])||Array.isArray(n[r]))&&this.addResource(e,t,r,n[r],{silent:!0});r.silent||this.emit(`added`,e,t,n)}addResourceBundle(e,t,n,r,i,a={silent:!1,skipCopy:!1}){let o=[e,t];e.includes(`.`)&&(o=e.split(`.`),r=n,n=t,t=o[1]),this.addNamespaces(t);let s=Ma(this.data,o)||{};a.skipCopy||(n=JSON.parse(JSON.stringify(n))),r?Pa(s,n,i):s={...s,...n},Aa(this.data,o,s),a.silent||this.emit(`added`,e,t,n)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit(`removed`,e,t)}hasResourceBundle(e,t){return this.getResource(e,t)!==void 0}getResourceBundle(e,t){return t||=this.options.defaultNS,this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){let t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}},Ja={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(e=>{t=this.processors[e]?.process(t,n,r,i)??t}),t}},Ya=Symbol(`i18next/PATH_KEY`);function Xa(){let e=[],t=Object.create(null),n;return t.get=(r,i)=>(n?.revoke?.(),i===Ya?e:(e.push(i),n=Proxy.revocable(r,t),n.proxy)),Proxy.revocable(Object.create(null),t).proxy}function Za(e,t){let{[Ya]:n}=e(Xa()),r=t?.keySeparator??`.`,i=t?.nsSeparator??`:`;if(n.length>1&&i){let e=t?.ns,a=Array.isArray(e)?e:null;if(a&&a.length>1&&a.slice(1).includes(n[0]))return`${n[0]}${i}${n.slice(1).join(r)}`}return n.join(r)}var Qa=e=>!Sa(e)&&typeof e!=`boolean`&&typeof e!=`number`,$a=class e extends Ka{constructor(e,t={}){super(),Ta([`resourceStore`,`languageUtils`,`pluralResolver`,`interpolator`,`backendConnector`,`i18nFormat`,`utils`],e,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.logger=Ga.create(`translator`),this.checkedLoadedFor={}}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){let n={...t};if(e==null)return!1;let r=this.resolve(e,n);if(r?.res===void 0)return!1;let i=Qa(r.res);return!(n.returnObjects===!1&&i)}extractFromKey(e,t){let n=t.nsSeparator===void 0?this.options.nsSeparator:t.nsSeparator;n===void 0&&(n=`:`);let r=t.keySeparator===void 0?this.options.keySeparator:t.keySeparator,i=t.ns||this.options.defaultNS||[],a=n&&e.includes(n),o=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!Va(e,n,r);if(a&&!o){let t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:Sa(i)?[i]:i};let a=e.split(n);(n!==r||n===r&&this.options.ns.includes(a[0]))&&(i=a.shift()),e=a.join(r)}return{key:e,namespaces:Sa(i)?[i]:i}}translate(t,n,r){let i=typeof n==`object`?{...n}:n;if(typeof i!=`object`&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i==`object`&&(i={...i}),i||={},t==null)return``;typeof t==`function`&&(t=Za(t,{...this.options,...i})),Array.isArray(t)||(t=[String(t)]),t=t.map(e=>typeof e==`function`?Za(e,{...this.options,...i}):String(e));let a=i.returnDetails===void 0?this.options.returnDetails:i.returnDetails,o=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,{key:s,namespaces:c}=this.extractFromKey(t[t.length-1],i),l=c[c.length-1],u=i.nsSeparator===void 0?this.options.nsSeparator:i.nsSeparator;u===void 0&&(u=`:`);let d=i.lng||this.language,f=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d?.toLowerCase()===`cimode`)return f?a?{res:`${l}${u}${s}`,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${u}${s}`:a?{res:s,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:s;let p=this.resolve(t,i),m=p?.res,h=p?.usedKey||s,g=p?.exactUsedKey||s,_=[`[object Number]`,`[object Function]`,`[object RegExp]`],v=i.joinArrays===void 0?this.options.joinArrays:i.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b=i.count!==void 0&&!Sa(i.count),x=e.hasDefaultValue(i),S=b?this.pluralResolver.getSuffix(d,i.count,i):``,C=i.ordinal&&b?this.pluralResolver.getSuffix(d,i.count,{ordinal:!1}):``,w=b&&!i.ordinal&&i.count===0,T=w&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${S}`]||i[`defaultValue${C}`]||i.defaultValue,E=m;y&&!m&&x&&(E=T);let D=Qa(E),O=Object.prototype.toString.apply(E);if(y&&E&&D&&!_.includes(O)&&!(Sa(v)&&Array.isArray(E))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn(`accessing an object - but returnObjects options is not enabled!`);let e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,E,{...i,ns:c}):`key '${s} (${this.language})' returned an object instead of string.`;return a?(p.res=e,p.usedParams=this.getUsedParamsDetails(i),p):e}if(o){let e=Array.isArray(E),t=e?[]:{},n=e?g:h;for(let e in E)if(Object.prototype.hasOwnProperty.call(E,e)){let r=`${n}${o}${e}`;x&&!m?t[e]=this.translate(r,{...i,defaultValue:Qa(T)?T[e]:void 0,joinArrays:!1,ns:c}):t[e]=this.translate(r,{...i,joinArrays:!1,ns:c}),t[e]===r&&(t[e]=E[e])}m=t}}else if(y&&Sa(v)&&Array.isArray(m))m=m.join(v),m&&=this.extendTranslation(m,t,i,r);else{let e=!1,n=!1;!this.isValidLookup(m)&&x&&(e=!0,m=T),this.isValidLookup(m)||(n=!0,m=s);let a=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:m,c=x&&T!==m&&this.options.updateMissing;if(n||e||c){if(this.logger.log(c?`updateKey`:`missingKey`,d,l,s,c?T:m),o){let e=this.resolve(s,{...i,keySeparator:!1});e&&e.res&&this.logger.warn(`Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.`)}let e=[],t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo===`fallback`&&t&&t[0])for(let n=0;n<t.length;n++)e.push(t[n]);else this.options.saveMissingTo===`all`?e=this.languageUtils.toResolveHierarchy(i.lng||this.language):e.push(i.lng||this.language);let n=(e,t,n)=>{let r=x&&n!==m?n:a;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,r,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,r,c,i),this.emit(`missingKey`,e,l,t,m)};this.options.saveMissing&&(this.options.saveMissingPlurals&&b?e.forEach(e=>{let t=this.pluralResolver.getSuffixes(e,i);w&&i[`defaultValue${this.options.pluralSeparator}zero`]&&!t.includes(`${this.options.pluralSeparator}zero`)&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{n([e],s+t,i[`defaultValue${t}`]||T)})}):n(e,s,T))}m=this.extendTranslation(m,t,i,p,r),n&&m===s&&this.options.appendNamespaceToMissingKey&&(m=`${l}${u}${s}`),(n||e)&&this.options.parseMissingKeyHandler&&(m=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${u}${s}`:s,e?m:void 0,i))}return a?(p.res=m,p.usedParams=this.getUsedParamsDetails(i),p):m}extendTranslation(e,t,n,r,i){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});let a=Sa(e)&&(n?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:n.interpolation.skipOnVariables),o;if(a){let t=e.match(this.interpolator.nestingRegexp);o=t&&t.length}let s=n.replace&&!Sa(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),e=this.interpolator.interpolate(e,s,n.lng||this.language||r.usedLng,n),a){let t=e.match(this.interpolator.nestingRegexp),r=t&&t.length;o<r&&(n.nest=!1)}!n.lng&&r&&r.res&&(n.lng=this.language||r.usedLng),n.nest!==!1&&(e=this.interpolator.nest(e,(...e)=>i?.[0]===e[0]&&!n.context?(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null):this.translate(...e,t),n)),n.interpolation&&this.interpolator.reset()}let a=n.postProcess||this.options.postProcess,o=Sa(a)?[a]:a;return e!=null&&o?.length&&n.applyPostProcessor!==!1&&(e=Ja.handle(o,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),e}resolve(e,t={}){let n,r,i,a,o;return Sa(e)&&(e=[e]),Array.isArray(e)&&(e=e.map(e=>typeof e==`function`?Za(e,{...this.options,...t}):e)),e.forEach(e=>{if(this.isValidLookup(n))return;let s=this.extractFromKey(e,t),c=s.key;r=c;let l=s.namespaces;this.options.fallbackNS&&(l=l.concat(this.options.fallbackNS));let u=t.count!==void 0&&!Sa(t.count),d=u&&!t.ordinal&&t.count===0,f=t.context!==void 0&&(Sa(t.context)||typeof t.context==`number`)&&t.context!==``,p=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);l.forEach(e=>{this.isValidLookup(n)||(o=e,!this.checkedLoadedFor[`${p[0]}-${e}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(o)&&(this.checkedLoadedFor[`${p[0]}-${e}`]=!0,this.logger.warn(`key "${r}" for languages "${p.join(`, `)}" won't get resolved as namespace "${o}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`)),p.forEach(r=>{if(this.isValidLookup(n))return;a=r;let o=[c];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(o,c,r,e,t);else{let e;u&&(e=this.pluralResolver.getSuffix(r,t.count,t));let n=`${this.options.pluralSeparator}zero`,i=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(u&&(t.ordinal&&e.startsWith(i)&&o.push(c+e.replace(i,this.options.pluralSeparator)),o.push(c+e),d&&o.push(c+n)),f){let r=`${c}${this.options.contextSeparator||`_`}${t.context}`;o.push(r),u&&(t.ordinal&&e.startsWith(i)&&o.push(r+e.replace(i,this.options.pluralSeparator)),o.push(r+e),d&&o.push(r+n))}}let s;for(;s=o.pop();)this.isValidLookup(n)||(i=s,n=this.getResource(r,e,s,t))}))})}),{res:n,usedKey:r,exactUsedKey:i,usedLng:a,usedNS:o}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e===``)}getResource(e,t,n,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)}getUsedParamsDetails(e={}){let t=[`defaultValue`,`ordinal`,`context`,`replace`,`lng`,`lngs`,`fallbackLng`,`ns`,`keySeparator`,`nsSeparator`,`returnObjects`,`returnDetails`,`joinArrays`,`postProcess`,`interpolation`],n=e.replace&&!Sa(e.replace),r=n?e.replace:e;if(n&&e.count!==void 0&&(r.count=e.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!n){r={...r};for(let e of t)delete r[e]}return r}static hasDefaultValue(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&t.startsWith(`defaultValue`)&&e[t]!==void 0)return!0;return!1}},eo=class{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Ga.create(`languageUtils`)}getScriptPartFromCode(e){if(e=Ua(e),!e||!e.includes(`-`))return null;let t=e.split(`-`);return t.length===2||(t.pop(),t[t.length-1].toLowerCase()===`x`)?null:this.formatLanguageCode(t.join(`-`))}getLanguagePartFromCode(e){if(e=Ua(e),!e||!e.includes(`-`))return e;let t=e.split(`-`);return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(Sa(e)&&e.includes(`-`)){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch{}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load===`languageOnly`||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(e)}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;let n=this.formatLanguageCode(e);(!this.options.supportedLngs||this.isSupportedCode(n))&&(t=n)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;let n=this.getScriptPartFromCode(e);if(this.isSupportedCode(n))return t=n;let r=this.getLanguagePartFromCode(e);if(this.isSupportedCode(r))return t=r;t=this.options.supportedLngs.find(e=>e===r?!0:!e.includes(`-`)&&!r.includes(`-`)?!1:!!(e.includes(`-`)&&!r.includes(`-`)&&e.slice(0,e.indexOf(`-`))===r||e.startsWith(r)&&r.length>1))}),t||=this.getFallbackCodes(this.options.fallbackLng)[0],t}getFallbackCodes(e,t){if(!e)return[];if(typeof e==`function`&&(e=e(t)),Sa(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let n=e[t];return n||=e[this.getScriptPartFromCode(t)],n||=e[this.formatLanguageCode(t)],n||=e[this.getLanguagePartFromCode(t)],n||=e.default,n||[]}toResolveHierarchy(e,t){let n=this.getFallbackCodes((t===!1?[]:t)||this.options.fallbackLng||[],e),r=[],i=e=>{e&&(this.isSupportedCode(e)?r.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return Sa(e)&&(e.includes(`-`)||e.includes(`_`))?(this.options.load!==`languageOnly`&&i(this.formatLanguageCode(e)),this.options.load!==`languageOnly`&&this.options.load!==`currentOnly`&&i(this.getScriptPartFromCode(e)),this.options.load!==`currentOnly`&&i(this.getLanguagePartFromCode(e))):Sa(e)&&i(this.formatLanguageCode(e)),n.forEach(e=>{r.includes(e)||i(this.formatLanguageCode(e))}),r}},to={zero:0,one:1,two:2,few:3,many:4,other:5},no={select:e=>e===1?`one`:`other`,resolvedOptions:()=>({pluralCategories:[`one`,`other`]})},ro=class{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=Ga.create(`pluralResolver`),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){let n=Ua(e===`dev`?`en`:e),r=t.ordinal?`ordinal`:`cardinal`,i=JSON.stringify({cleanedCode:n,type:r});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let a;try{a=new Intl.PluralRules(n,{type:r})}catch{if(typeof Intl>`u`)return this.logger.error(`No Intl support, please use an Intl polyfill!`),no;if(!e.match(/-|_/))return no;let n=this.languageUtils.getLanguagePartFromCode(e);a=this.getRule(n,t)}return this.pluralRulesCache[i]=a,a}needsPlural(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,n={}){return this.getSuffixes(e,n).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?n.resolvedOptions().pluralCategories.sort((e,t)=>to[e]-to[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:``}${e}`):[]}getSuffix(e,t,n={}){let r=this.getRule(e,n);return r?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:``}${r.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix(`dev`,t,n))}},io=(e,t,n,r=`.`,i=!0)=>{let a=Na(e,t,n);return!a&&i&&Sa(n)&&(a=Ha(e,n,r),a===void 0&&(a=Ha(t,n,r))),a},ao=e=>e.replace(/\$/g,`$$$$`),oo=class{constructor(e={}){this.logger=Ga.create(`interpolator`),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||={escapeValue:!0};let{escape:t,escapeValue:n,useRawValueToEscape:r,prefix:i,prefixEscaped:a,suffix:o,suffixEscaped:s,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:d,nestingPrefixEscaped:f,nestingSuffix:p,nestingSuffixEscaped:m,nestingOptionsSeparator:h,maxReplaces:g,alwaysFormat:_}=e.interpolation;this.escape=t===void 0?La:t,this.escapeValue=n===void 0?!0:n,this.useRawValueToEscape=r===void 0?!1:r,this.prefix=i?Fa(i):a||`{{`,this.suffix=o?Fa(o):s||`}}`,this.formatSeparator=c||`,`,this.unescapePrefix=l?``:u?Fa(u):`-`,this.unescapeSuffix=this.unescapePrefix?``:l?Fa(l):``,this.nestingPrefix=d?Fa(d):f||Fa(`$t(`),this.nestingSuffix=p?Fa(p):m||Fa(`)`),this.nestingOptionsSeparator=h||`,`,this.maxReplaces=g||1e3,this.alwaysFormat=_===void 0?!1:_,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,`g`);this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,n,r){let i,a,o,s=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=e=>{if(!e.includes(this.formatSeparator)){let i=io(t,s,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(i,void 0,n,{...r,...t,interpolationkey:e}):i}let i=e.split(this.formatSeparator),a=i.shift().trim(),o=i.join(this.formatSeparator).trim();return this.format(io(t,s,a,this.options.keySeparator,this.options.ignoreJSONStructure),o,n,{...r,...t,interpolationkey:a})};this.resetRegExp(),!this.escapeValue&&typeof e==`string`&&/\$t\([^)]*\{[^}]*\{\{/.test(e)&&this.logger.warn(`nesting options string contains interpolated variables with escapeValue: false — if any of those values are attacker-controlled they can inject additional nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing it to t(), or keep escapeValue: true.`);let l=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,u=r?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:r.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>ao(e)},{regex:this.regexp,safeValue:e=>this.escapeValue?ao(this.escape(e)):ao(e)}].forEach(t=>{for(o=0;i=t.regex.exec(e);){let n=i[1].trim();if(a=c(n),a===void 0)if(typeof l==`function`){let t=l(e,i,r);a=Sa(t)?t:``}else if(r&&Object.prototype.hasOwnProperty.call(r,n))a=``;else if(u){a=i[0];continue}else this.logger.warn(`missed to pass in variable ${n} for interpolating ${e}`),a=``;else !Sa(a)&&!this.useRawValueToEscape&&(a=wa(a));let s=t.safeValue(a);if(e=e.replace(i[0],s),u?(t.regex.lastIndex+=a.length,t.regex.lastIndex-=i[0].length):t.regex.lastIndex=0,o++,o>=this.maxReplaces)break}}),e}nest(e,t,n={}){let r,i,a,o=(e,t)=>{let n=this.nestingOptionsSeparator;if(!e.includes(n))return e;let r=e.split(RegExp(`${Fa(n)}[ ]*{`)),i=`{${r[1]}`;e=r[0],i=this.interpolate(i,a);let o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||(s?.length??0)%2!=0)&&(i=i.replace(/'/g,`"`));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${n}${i}`}return a.defaultValue&&a.defaultValue.includes(this.prefix)&&delete a.defaultValue,e};for(;r=this.nestingRegexp.exec(e);){let s=[];a={...n},a=a.replace&&!Sa(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;let c=/{.*}/.test(r[1])?r[1].lastIndexOf(`}`)+1:r[1].indexOf(this.formatSeparator);if(c!==-1&&(s=r[1].slice(c).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),r[1]=r[1].slice(0,c)),i=t(o.call(this,r[1].trim(),a),a),i&&r[0]===e&&!Sa(i))return i;Sa(i)||(i=wa(i)),i||=(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),``),s.length&&(i=s.reduce((e,t)=>this.format(e,t,n.lng,{...n,interpolationkey:r[1].trim()}),i.trim())),e=e.replace(r[0],i),this.regexp.lastIndex=0}return e}},so=e=>{let t=e.toLowerCase().trim(),n={};if(e.includes(`(`)){let r=e.split(`(`);t=r[0].toLowerCase().trim();let i=r[1].slice(0,-1);t===`currency`&&!i.includes(`:`)?n.currency||=i.trim():t===`relativetime`&&!i.includes(`:`)?n.range||=i.trim():i.split(`;`).forEach(e=>{if(e){let[t,...r]=e.split(`:`),i=r.join(`:`).trim().replace(/^'+|'+$/g,``),a=t.trim();n[a]||(n[a]=i),i===`false`&&(n[a]=!1),i===`true`&&(n[a]=!0),isNaN(i)||(n[a]=parseInt(i,10))}})}return{formatName:t,formatOptions:n}},co=e=>{let t={};return(n,r,i)=>{let a=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(a={...a,[i.interpolationkey]:void 0});let o=r+JSON.stringify(a),s=t[o];return s||(s=e(Ua(r),i),t[o]=s),s(n)}},lo=e=>(t,n,r)=>e(Ua(n),r)(t),uo=class{constructor(e={}){this.logger=Ga.create(`formatter`),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||`,`;let n=t.cacheInBuiltFormats?co:lo;this.formats={number:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t});return e=>n.format(e)}),currency:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t,style:`currency`});return e=>n.format(e)}),datetime:n((e,t)=>{let n=new Intl.DateTimeFormat(e,{...t});return e=>n.format(e)}),relativetime:n((e,t)=>{let n=new Intl.RelativeTimeFormat(e,{...t});return e=>n.format(e,t.range||`day`)}),list:n((e,t)=>{let n=new Intl.ListFormat(e,{...t});return e=>n.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=co(t)}format(e,t,n,r={}){if(!t||e==null)return e;let i=t.split(this.formatSeparator);if(i.length>1&&i[0].indexOf(`(`)>1&&!i[0].includes(`)`)&&i.find(e=>e.includes(`)`))){let e=i.findIndex(e=>e.includes(`)`));i[0]=[i[0],...i.splice(1,e)].join(this.formatSeparator)}return i.reduce((e,t)=>{let{formatName:i,formatOptions:a}=so(t);if(this.formats[i]){let t=e;try{let o=r?.formatParams?.[r.interpolationkey]||{},s=o.locale||o.lng||r.locale||r.lng||n;t=this.formats[i](e,s,{...a,...r,...o})}catch(e){this.logger.warn(e)}return t}else this.logger.warn(`there was no format function for ${i}`);return e},e)}},fo=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},po=class extends Ka{constructor(e,t,n,r={}){super(),this.backend=e,this.store=t,this.services=n,this.languageUtils=n.languageUtils,this.options=r,this.logger=Ga.create(`backendConnector`),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(n,r.backend,r)}queueLoad(e,t,n,r){let i={},a={},o={},s={};return e.forEach(e=>{let r=!0;t.forEach(t=>{let o=`${e}|${t}`;!n.reload&&this.store.hasResourceBundle(e,t)?this.state[o]=2:this.state[o]<0||(this.state[o]===1?a[o]===void 0&&(a[o]=!0):(this.state[o]=1,r=!1,a[o]===void 0&&(a[o]=!0),i[o]===void 0&&(i[o]=!0),s[t]===void 0&&(s[t]=!0)))}),r||(o[e]=!0)}),(Object.keys(i).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(i),pending:Object.keys(a),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(s)}}loaded(e,t,n){let r=e.split(`|`),i=r[0],a=r[1];t&&this.emit(`failedLoading`,i,a,t),!t&&n&&this.store.addResourceBundle(i,a,n,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&n&&(this.state[e]=0);let o={};this.queue.forEach(n=>{ja(n.loaded,[i],a),fo(n,e),t&&n.errors.push(t),n.pendingCount===0&&!n.done&&(Object.keys(n.loaded).forEach(e=>{o[e]||(o[e]={});let t=n.loaded[e];t.length&&t.forEach(t=>{o[e][t]===void 0&&(o[e][t]=!0)})}),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())}),this.emit(`loaded`,o),this.queue=this.queue.filter(e=>!e.done)}read(e,t,n,r=0,i=this.retryTimeout,a){if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:t,fcName:n,tried:r,wait:i,callback:a});return}this.readingCalls++;let o=(o,s)=>{if(this.readingCalls--,this.waitingReads.length>0){let e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}if(o&&s&&r<this.maxRetries){setTimeout(()=>{this.read(e,t,n,r+1,i*2,a)},i);return}a(o,s)},s=this.backend[n].bind(this.backend);if(s.length===2){try{let n=s(e,t);n&&typeof n.then==`function`?n.then(e=>o(null,e)).catch(o):o(null,n)}catch(e){o(e)}return}return s(e,t,o)}prepareLoading(e,t,n={},r){if(!this.backend)return this.logger.warn(`No backend was added via i18next.use. Will not load resources.`),r&&r();Sa(e)&&(e=this.languageUtils.toResolveHierarchy(e)),Sa(t)&&(t=[t]);let i=this.queueLoad(e,t,n,r);if(!i.toLoad.length)return i.pending.length||r(),null;i.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,n){this.prepareLoading(e,t,{},n)}reload(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}loadOne(e,t=``){let n=e.split(`|`),r=n[0],i=n[1];this.read(r,i,`read`,void 0,void 0,(n,a)=>{n&&this.logger.warn(`${t}loading namespace ${i} for language ${r} failed`,n),!n&&a&&this.logger.log(`${t}loaded namespace ${i} for language ${r}`,a),this.loaded(e,n,a)})}saveMissing(e,t,n,r,i,a={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(t)){this.logger.warn(`did not save key "${n}" as the namespace "${t}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`);return}if(!(n==null||n===``)){if(this.backend?.create){let s={...a,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=c.length===5?c(e,t,n,r,s):c(e,t,n,r),i&&typeof i.then==`function`?i.then(e=>o(null,e)).catch(o):o(null,i)}catch(e){o(e)}else c(e,t,n,r,o,s)}!e||!e[0]||this.store.addResource(e[0],t,n,r)}}},mo=()=>({debug:!1,initAsync:!0,ns:[`translation`],defaultNS:[`translation`],fallbackLng:[`dev`],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:`all`,preload:!1,keySeparator:`.`,nsSeparator:`:`,pluralSeparator:`_`,contextSeparator:`_`,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:`fallback`,saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]==`object`&&(t=e[1]),Sa(e[1])&&(t.defaultValue=e[1]),Sa(e[2])&&(t.tDescription=e[2]),typeof e[2]==`object`||typeof e[3]==`object`){let n=e[3]||e[2];Object.keys(n).forEach(e=>{t[e]=n[e]})}return t},interpolation:{escapeValue:!0,prefix:`{{`,suffix:`}}`,formatSeparator:`,`,unescapePrefix:`-`,nestingPrefix:`$t(`,nestingSuffix:`)`,nestingOptionsSeparator:`,`,maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),ho=e=>(Sa(e.ns)&&(e.ns=[e.ns]),Sa(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),Sa(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes(`cimode`)&&(e.supportedLngs=e.supportedLngs.concat([`cimode`])),e),go=()=>{},_o=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(t=>{typeof e[t]==`function`&&(e[t]=e[t].bind(e))})},vo=class e extends Ka{constructor(e={},t){if(super(),this.options=ho(e),this.services={},this.logger=Ga,this.modules={external:[]},_o(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,typeof e==`function`&&(t=e,e={}),e.defaultNS==null&&e.ns&&(Sa(e.ns)?e.defaultNS=e.ns:e.ns.includes(`translation`)||(e.defaultNS=e.ns[0]));let n=mo();this.options={...n,...this.options,...ho(e)},this.options.interpolation={...n.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator),typeof this.options.overloadTranslationOptionHandler!=`function`&&(this.options.overloadTranslationOptionHandler=n.overloadTranslationOptionHandler);let r=e=>e?typeof e==`function`?new e:e:null;if(!this.options.isClone){this.modules.logger?Ga.init(r(this.modules.logger),this.options):Ga.init(null,this.options);let e;e=this.modules.formatter?this.modules.formatter:uo;let t=new eo(this.options);this.store=new qa(this.options.resources,this.options);let n=this.services;n.logger=Ga,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new ro(t,{prepend:this.options.pluralSeparator}),e&&(n.formatter=r(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new oo(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new po(r(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=r(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=r(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new $a(this.services,this.options),this.translator.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||=go,this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&e[0]!==`dev`&&(this.options.lng=e[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn(`init: no languageDetector is used and no lng is defined`),[`getResource`,`hasResourceBundle`,`getResourceBundle`,`getDataByLanguage`].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),[`addResource`,`addResources`,`addResourceBundle`,`removeResourceBundle`].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});let i=Ca(),a=()=>{let e=(e,n)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn(`init: i18next is already initialized. You should call init just once!`),this.isInitialized=!0,this.options.isClone||this.logger.log(`initialized`,this.options),this.emit(`initialized`,this.options),i.resolve(n),t(e,n)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),i}loadResources(e,t=go){let n=t,r=Sa(e)?e:this.language;if(typeof e==`function`&&(n=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()===`cimode`&&(!this.options.preload||this.options.preload.length===0))return n();let e=[],t=t=>{t&&t!==`cimode`&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{t!==`cimode`&&(e.includes(t)||e.push(t))})};r?t(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{!e&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),n(e)})}else n(null)}reloadResources(e,t,n){let r=Ca();return typeof e==`function`&&(n=e,e=void 0),typeof t==`function`&&(n=t,t=void 0),e||=this.languages,t||=this.options.ns,n||=go,this.services.backendConnector.reload(e,t,e=>{r.resolve(),n(e)}),r}use(e){if(!e)throw Error(`You are passing an undefined module! Please check the object you are passing to i18next.use()`);if(!e.type)throw Error(`You are passing a wrong module! Please check the object you are passing to i18next.use()`);return e.type===`backend`&&(this.modules.backend=e),(e.type===`logger`||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type===`languageDetector`&&(this.modules.languageDetector=e),e.type===`i18nFormat`&&(this.modules.i18nFormat=e),e.type===`postProcessor`&&Ja.addPostProcessor(e),e.type===`formatter`&&(this.modules.formatter=e),e.type===`3rdParty`&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&![`cimode`,`dev`].includes(e)){for(let e=0;e<this.languages.length;e++){let t=this.languages[e];if(![`cimode`,`dev`].includes(t)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&!this.languages.includes(e)&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;let n=Ca();this.emit(`languageChanging`,e);let r=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},i=(i,a)=>{a?this.isLanguageChangingTo===e&&(r(a),this.translator.changeLanguage(a),this.isLanguageChangingTo=void 0,this.emit(`languageChanged`,a),this.logger.log(`languageChanged`,a)):this.isLanguageChangingTo=void 0,n.resolve((...e)=>this.t(...e)),t&&t(i,(...e)=>this.t(...e))},a=t=>{!e&&!t&&this.services.languageDetector&&(t=[]);let n=Sa(t)?t:t&&t[0],a=this.store.hasLanguageSomeTranslations(n)?n:this.services.languageUtils.getBestMatchFromCodes(Sa(t)?[t]:t);a&&(this.language||r(a),this.translator.language||this.translator.changeLanguage(a),this.services.languageDetector?.cacheUserLanguage?.(a)),this.loadResources(a,e=>{i(e,a)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e),n}getFixedT(e,t,n){let r=(e,t,...i)=>{let a;a=typeof t==`object`?{...t}:this.options.overloadTranslationOptionHandler([e,t].concat(i)),a.lng=a.lng||r.lng,a.lngs=a.lngs||r.lngs,a.ns=a.ns||r.ns,a.keyPrefix!==``&&(a.keyPrefix=a.keyPrefix||n||r.keyPrefix);let o={...this.options,...a};typeof a.keyPrefix==`function`&&(a.keyPrefix=Za(a.keyPrefix,o));let s=this.options.keySeparator||`.`,c;return a.keyPrefix&&Array.isArray(e)?c=e.map(e=>(typeof e==`function`&&(e=Za(e,o)),`${a.keyPrefix}${s}${e}`)):(typeof e==`function`&&(e=Za(e,o)),c=a.keyPrefix?`${a.keyPrefix}${s}${e}`:e),this.t(c,a)};return Sa(e)?r.lng=e:r.lngs=e,r.ns=t,r.keyPrefix=n,r}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn(`hasLoadedNamespace: i18next was not initialized`,this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn(`hasLoadedNamespace: i18n.languages were undefined or empty`,this.languages),!1;let n=t.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,i=this.languages[this.languages.length-1];if(n.toLowerCase()===`cimode`)return!0;let a=(e,t)=>{let n=this.services.backendConnector.state[`${e}|${t}`];return n===-1||n===0||n===2};if(t.precheck){let e=t.precheck(this,a);if(e!==void 0)return e}return!!(this.hasResourceBundle(n,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(n,e)&&(!r||a(i,e)))}loadNamespaces(e,t){let n=Ca();return this.options.ns?(Sa(e)&&(e=[e]),e.forEach(e=>{this.options.ns.includes(e)||this.options.ns.push(e)}),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}loadLanguages(e,t){let n=Ca();Sa(e)&&(e=[e]);let r=this.options.preload||[],i=e.filter(e=>!r.includes(e)&&this.services.languageUtils.isSupportedCode(e));return i.length?(this.options.preload=r.concat(i),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}dir(e){if(e||=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language),!e)return`rtl`;try{let t=new Intl.Locale(e);if(t&&t.getTextInfo){let e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch{}let t=`ar.shu.sqr.ssh.xaa.yhd.yud.aao.abh.abv.acm.acq.acw.acx.acy.adf.ads.aeb.aec.afb.ajp.apc.apd.arb.arq.ars.ary.arz.auz.avl.ayh.ayl.ayn.ayp.bbz.pga.he.iw.ps.pbt.pbu.pst.prp.prd.ug.ur.ydd.yds.yih.ji.yi.hbo.men.xmn.fa.jpr.peo.pes.prs.dv.sam.ckb`.split(`.`),n=this.services?.languageUtils||new eo(mo());return e.toLowerCase().indexOf(`-latn`)>1?`ltr`:t.includes(n.getLanguagePartFromCode(e))||e.toLowerCase().indexOf(`-arab`)>1?`rtl`:`ltr`}static createInstance(t={},n){let r=new e(t,n);return r.createInstance=e.createInstance,r}cloneInstance(t={},n=go){let r=t.forkResourceStore;r&&delete t.forkResourceStore;let i={...this.options,...t,isClone:!0},a=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),[`store`,`services`,`language`].forEach(e=>{a[e]=this[e]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r&&(a.store=new qa(Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((n,r)=>(n[r]={...e[t][r]},n),e[t]),e),{}),i),a.services.resourceStore=a.store),t.interpolation){let e={...mo().interpolation,...this.options.interpolation,...t.interpolation},n={...i,interpolation:e};a.services.interpolator=new oo(n)}return a.translator=new $a(a.services,i),a.translator.on(`*`,(e,...t)=>{a.emit(e,...t)}),a.init(i,n),a.translator.options=i,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}.createInstance();vo.createInstance,vo.dir,vo.init,vo.loadResources,vo.reloadResources,vo.use,vo.changeLanguage,vo.getFixedT,vo.t,vo.exists,vo.setDefaultNamespace,vo.hasLoadedNamespace,vo.loadNamespaces,vo.loadLanguages;var{slice:yo,forEach:bo}=[];function xo(e){return bo.call(yo.call(arguments,1),t=>{if(t)for(let n in t)e[n]===void 0&&(e[n]=t[n])}),e}function So(e){return typeof e==`string`?[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(t=>t.test(e)):!1}var Co=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,wo=function(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:`/`},r=`${e}=${encodeURIComponent(t)}`;if(n.maxAge>0){let e=n.maxAge-0;if(Number.isNaN(e))throw Error(`maxAge should be a Number`);r+=`; Max-Age=${Math.floor(e)}`}if(n.domain){if(!Co.test(n.domain))throw TypeError(`option domain is invalid`);r+=`; Domain=${n.domain}`}if(n.path){if(!Co.test(n.path))throw TypeError(`option path is invalid`);r+=`; Path=${n.path}`}if(n.expires){if(typeof n.expires.toUTCString!=`function`)throw TypeError(`option expires is invalid`);r+=`; Expires=${n.expires.toUTCString()}`}if(n.httpOnly&&(r+=`; HttpOnly`),n.secure&&(r+=`; Secure`),n.sameSite)switch(typeof n.sameSite==`string`?n.sameSite.toLowerCase():n.sameSite){case!0:r+=`; SameSite=Strict`;break;case`lax`:r+=`; SameSite=Lax`;break;case`strict`:r+=`; SameSite=Strict`;break;case`none`:r+=`; SameSite=None`;break;default:throw TypeError(`option sameSite is invalid`)}return n.partitioned&&(r+=`; Partitioned`),r},To={create(e,t,n,r){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:`/`,sameSite:`strict`};n&&(i.expires=new Date,i.expires.setTime(i.expires.getTime()+n*60*1e3)),r&&(i.domain=r),document.cookie=wo(e,t,i)},read(e){let t=`${e}=`,n=document.cookie.split(`;`);for(let e=0;e<n.length;e++){let r=n[e];for(;r.charAt(0)===` `;)r=r.substring(1,r.length);if(r.indexOf(t)===0)return r.substring(t.length,r.length)}return null},remove(e,t){this.create(e,``,-1,t)}},Eo={name:`cookie`,lookup(e){let{lookupCookie:t}=e;if(t&&typeof document<`u`)return To.read(t)||void 0},cacheUserLanguage(e,t){let{lookupCookie:n,cookieMinutes:r,cookieDomain:i,cookieOptions:a}=t;n&&typeof document<`u`&&To.create(n,e,r,i,a)}},Do={name:`querystring`,lookup(e){let{lookupQuerystring:t}=e,n;if(typeof window<`u`){let{search:e}=window.location;!window.location.search&&window.location.hash?.indexOf(`?`)>-1&&(e=window.location.hash.substring(window.location.hash.indexOf(`?`)));let r=e.substring(1).split(`&`);for(let e=0;e<r.length;e++){let i=r[e].indexOf(`=`);i>0&&r[e].substring(0,i)===t&&(n=r[e].substring(i+1))}}return n}},Oo={name:`hash`,lookup(e){let{lookupHash:t,lookupFromHashIndex:n}=e,r;if(typeof window<`u`){let{hash:e}=window.location;if(e&&e.length>2){let i=e.substring(1);if(t){let e=i.split(`&`);for(let n=0;n<e.length;n++){let i=e[n].indexOf(`=`);i>0&&e[n].substring(0,i)===t&&(r=e[n].substring(i+1))}}if(r)return r;if(!r&&n>-1){let t=e.match(/\/([a-zA-Z-]*)/g);return Array.isArray(t)?t[typeof n==`number`?n:0]?.replace(`/`,``):void 0}}}return r}},ko=null,Ao=()=>{if(ko!==null)return ko;try{if(ko=typeof window<`u`&&window.localStorage!==null,!ko)return!1;let e=`i18next.translate.boo`;window.localStorage.setItem(e,`foo`),window.localStorage.removeItem(e)}catch{ko=!1}return ko},jo={name:`localStorage`,lookup(e){let{lookupLocalStorage:t}=e;if(t&&Ao())return window.localStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupLocalStorage:n}=t;n&&Ao()&&window.localStorage.setItem(n,e)}},Mo=null,No=()=>{if(Mo!==null)return Mo;try{if(Mo=typeof window<`u`&&window.sessionStorage!==null,!Mo)return!1;let e=`i18next.translate.boo`;window.sessionStorage.setItem(e,`foo`),window.sessionStorage.removeItem(e)}catch{Mo=!1}return Mo},Po={name:`sessionStorage`,lookup(e){let{lookupSessionStorage:t}=e;if(t&&No())return window.sessionStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupSessionStorage:n}=t;n&&No()&&window.sessionStorage.setItem(n,e)}},Fo={name:`navigator`,lookup(e){let t=[];if(typeof navigator<`u`){let{languages:e,userLanguage:n,language:r}=navigator;if(e)for(let n=0;n<e.length;n++)t.push(e[n]);n&&t.push(n),r&&t.push(r)}return t.length>0?t:void 0}},Io={name:`htmlTag`,lookup(e){let{htmlTag:t}=e,n,r=t||(typeof document<`u`?document.documentElement:null);return r&&typeof r.getAttribute==`function`&&(n=r.getAttribute(`lang`)),n}},Lo={name:`path`,lookup(e){let{lookupFromPathIndex:t}=e;if(typeof window>`u`)return;let n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);if(Array.isArray(n))return n[typeof t==`number`?t:0]?.replace(`/`,``)}},Ro={name:`subdomain`,lookup(e){let{lookupFromSubdomainIndex:t}=e,n=typeof t==`number`?t+1:1,r=typeof window<`u`&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(r)return r[n]}},zo=!1;try{document.cookie,zo=!0}catch{}var Bo=[`querystring`,`cookie`,`localStorage`,`sessionStorage`,`navigator`,`htmlTag`];zo||Bo.splice(1,1);var Vo=()=>({order:Bo,lookupQuerystring:`lng`,lookupCookie:`i18next`,lookupLocalStorage:`i18nextLng`,lookupSessionStorage:`i18nextLng`,caches:[`localStorage`],excludeCacheFor:[`cimode`],convertDetectedLanguage:e=>e}),Ho=class{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type=`languageDetector`,this.detectors={},this.init(e,t)}init(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=xo(t,this.options||{},Vo()),typeof this.options.convertDetectedLanguage==`string`&&this.options.convertDetectedLanguage.indexOf(`15897`)>-1&&(this.options.convertDetectedLanguage=e=>e.replace(`-`,`_`)),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=n,this.addDetector(Eo),this.addDetector(Do),this.addDetector(jo),this.addDetector(Po),this.addDetector(Fo),this.addDetector(Io),this.addDetector(Lo),this.addDetector(Ro),this.addDetector(Oo)}addDetector(e){return this.detectors[e.name]=e,this}detect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,t=[];return e.forEach(e=>{if(this.detectors[e]){let n=this.detectors[e].lookup(this.options);n&&typeof n==`string`&&(n=[n]),n&&(t=t.concat(n))}}),t=t.filter(e=>e!=null&&!So(e)).map(e=>this.options.convertDetectedLanguage(e)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?t:t.length>0?t[0]:null}cacheUserLanguage(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;t&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||t.forEach(t=>{this.detectors[t]&&this.detectors[t].cacheUserLanguage(e,this.options)}))}};Ho.type=`languageDetector`;var Uo=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);Xo(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},Wo={},Go=(e,t,n,r)=>{Xo(n)&&Wo[n]||(Xo(n)&&(Wo[n]=new Date),Uo(e,t,n,r))},Ko=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},qo=(e,t,n)=>{e.loadNamespaces(t,Ko(e,n))},Jo=(e,t,n,r)=>{if(Xo(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return qo(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,Ko(e,r))},Yo=(e,t,n={})=>!t.languages||!t.languages.length?(Go(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),Xo=e=>typeof e==`string`,Zo=e=>typeof e==`object`&&!!e,Qo=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,$o={"&amp;":`&`,"&#38;":`&`,"&lt;":`<`,"&#60;":`<`,"&gt;":`>`,"&#62;":`>`,"&apos;":`'`,"&#39;":`'`,"&quot;":`"`,"&#34;":`"`,"&nbsp;":` `,"&#160;":` `,"&copy;":`©`,"&#169;":`©`,"&reg;":`®`,"&#174;":`®`,"&hellip;":`…`,"&#8230;":`…`,"&#x2F;":`/`,"&#47;":`/`},es=e=>$o[e],ts={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:e=>e.replace(Qo,es),transDefaultProps:void 0},ns=(e={})=>{ts={...ts,...e}},rs=()=>ts,is,as=e=>{is=e},os=()=>is,ss={type:`3rdParty`,init(e){ns(e.options.react),as(e)}},cs=(0,C.createContext)(),ls=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}},us=s((e=>{var t=p();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var d=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?d:t.useSyncExternalStore})),ds=s(((e,t)=>{t.exports=us()})),fs=ds(),ps={t:(e,t)=>{if(Xo(t))return t;if(Zo(t)&&Xo(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},ms=()=>()=>{},hs=(e,t={})=>{let{i18n:n}=t,{i18n:r,defaultNS:i}=(0,C.useContext)(cs)||{},a=n||r||os();a&&!a.reportNamespaces&&(a.reportNamespaces=new ls),a||Go(a,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next`);let o=(0,C.useMemo)(()=>({...rs(),...a?.options?.react,...t}),[a,t]),{useSuspense:s,keyPrefix:c}=o,l=e||i||a?.options?.defaultNS,u=Xo(l)?[l]:l||[`translation`],d=(0,C.useMemo)(()=>u,u);a?.reportNamespaces?.addUsedNamespaces?.(d);let f=(0,C.useRef)(0),p=(0,C.useCallback)(e=>{if(!a)return ms;let{bindI18n:t,bindI18nStore:n}=o,r=()=>{f.current+=1,e()};return t&&a.on(t,r),n&&a.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>a.off(e,r)),n&&n.split(` `).forEach(e=>a.store.off(e,r))}},[a,o]),m=(0,C.useRef)(),h=(0,C.useCallback)(()=>{if(!a)return ps;let e=!!(a.isInitialized||a.initializedStoreOnce)&&d.every(e=>Yo(e,a,o)),n=t.lng||a.language,r=f.current,i=m.current;if(i&&i.ready===e&&i.lng===n&&i.keyPrefix===c&&i.revision===r)return i;let s={t:a.getFixedT(n,o.nsMode===`fallback`?d:d[0],c),ready:e,lng:n,keyPrefix:c,revision:r};return m.current=s,s},[a,d,c,o,t.lng]),[g,_]=(0,C.useState)(0),{t:v,ready:y}=(0,fs.useSyncExternalStore)(p,h,h);(0,C.useEffect)(()=>{if(a&&!y&&!s){let e=()=>_(e=>e+1);t.lng?Jo(a,t.lng,d,e):qo(a,d,e)}},[a,t.lng,d,y,s,g]);let b=a||{},x=(0,C.useRef)(null),S=(0,C.useRef)(),w=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,`__original`,{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},T=(0,C.useMemo)(()=>{let e=b,t=e?.language,n=e;e&&(x.current&&x.current.__original===e&&S.current===t?n=x.current:(n=w(e),x.current=n,S.current=t));let r=!y&&!s?(...e)=>(Go(a,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),v(...e)):v,i=[r,n,y];return i.t=r,i.i18n=n,i.ready=y,i},[v,b,y,b.resolvedLanguage,b.language,b.languages]);if(a&&s&&!y)throw new Promise(e=>{let n=()=>e();t.lng?Jo(a,t.lng,d,n):qo(a,d,n)});return T},gs={common:{loading:`Laden`,notFound:`Nicht gefunden`,save:`Speichern`,cancel:`Abbrechen`,delete:`Löschen`,edit:`Bearbeiten`,close:`Schließen`,refresh:`Aktualisieren`,search:`Suche`,enabled:`Aktiviert`,disabled:`Deaktiviert`,online:`Online`,offline:`Offline`,running:`Läuft`,stopped:`Gestoppt`,failed:`Fehlgeschlagen`,starting:`Startet`,devices:`Geräte`,fabrics:`Fabrics`,port:`Port`,unknown:`Unbekannt`,confirm:`Bestätigen`,create:`Erstellen`,back:`Zurück`,next:`Weiter`,actions:`Aktionen`,name:`Name`,type:`Typ`,error:`Fehler`,version:`Version`,copy:`Kopieren`,copied:`Kopiert!`,copyId:`ID kopieren`,later:`Später`,skip:`Überspringen`,reset:`Zurücksetzen`,update:`Aktualisieren`,all:`Alle`,ascending:`Aufsteigend`,descending:`Absteigend`,moveUp:`Nach oben`,moveDown:`Nach unten`,selectAll:`Alle auswählen`,selectNone:`Keine auswählen`,live:`Live`,new:`Neu`,overwrite:`Überschreiben`,active:`Aktiv`,property:`Eigenschaft`,value:`Wert`,custom:`Benutzerdefiniert`,startAll:`Alle starten`,stopAll:`Alle stoppen`,restartAll:`Alle neustarten`,import:`Importieren`,export:`Exportieren`,exportAll:`Alle exportieren`,wizard:`Assistent`},nav:{bridges:`Bridges`,devices:`Alle Geräte`,standaloneDevices:`Eigenständige Geräte`,health:`Status & Diagnose`,diagnostics:`Live-Ereignisse`,settings:`Einstellungen`,networkMap:`Netzwerkkarte`,logs:`Logs`,startupOrder:`Startreihenfolge`,lockCredentials:`Schloss-Zugangsdaten`,filterReference:`Filterreferenz`,systemLogs:`Systemlogs`,lightMode:`Heller Modus`,darkMode:`Dunkler Modus`},standaloneDevices:{title:`Eigenständige Geräte`,subtitle:`Jedes Gerät läuft auf einem eigenen Matter-Node mit eigenem Pairing-Code, statt in einer Bridge.`,create:`Gerät hinzufügen`,name:`Name`,entity:`Entity`,entityHelp:`Wähle das Home-Assistant-Entity, das bereitgestellt wird.`,additionalEntity:`Weiteres Entity`,addEntity:`Weiteres Entity hinzufügen`,multiHint:`Das erste Entity ist das primäre und benennt das Gerät. Mehr als ein Entity pro Gerät ist experimentell.`,creating:`Wird erstellt`,empty:`Noch keine eigenständigen Geräte. Füge eines hinzu, um ein einzelnes Entity als eigenes Matter-Gerät bereitzustellen.`,noEntity:`kein Entity`,openBridge:`Details und Pairing öffnen`,created:`Eigenständiges Gerät erstellt`,createFailed:`Gerät konnte nicht erstellt werden`,deleted:`Eigenständiges Gerät gelöscht`,deleteFailed:`Gerät konnte nicht gelöscht werden`,entityInvalid:`Gib eine einzelne Entity-ID wie vacuum.wohnzimmer ein, Wildcards sind nicht erlaubt.`,entityProblem:`Entity-Problem`,confirmDeleteTitle:`Eigenständiges Gerät löschen`,confirmDeleteMessage:`Das löscht den Matter-Node des Geräts und entkoppelt es von deinen Controllern. Das lässt sich nicht rückgängig machen.`},status:{error:`Fehler`,unhealthy:`Fehlerhaft`,noBridges:`Keine Bridges`,loadingHealth:`Lade Statusdaten...`,unknown:`Unbekannt`},errorBoundary:{title:`Etwas ist schiefgelaufen`,fallbackMessage:`Ein unerwarteter Fehler ist aufgetreten.`,reload:`Seite neu laden`},settings:{title:`Einstellungen`,language:`Sprache`,languageDescription:`Wähle die Sprache der Benutzeroberfläche.`,checkUpdates:`Nach Updates suchen`,backupRestore:`Sichern & Wiederherstellen`,exportBackup:`Backup exportieren`,importBackup:`Backup importieren`,dangerZone:`Gefahrenzone`,resetAll:`Alles zurücksetzen`,about:`Über`,username:`Benutzername`,password:`Passwort`,enterNewPassword:`Neues Passwort eingeben`,enableAuth:`Authentifizierung aktivieren`,disableAuth:`Authentifizierung deaktivieren`,disableAuthMessage:`Dies entfernt den Passwortschutz der Weboberfläche. Jeder in deinem Netzwerk kann auf die Bridge-Konfiguration zugreifen und sie ändern.`,disableAuthConfirm:`Auth deaktivieren`,usernamePasswordRequired:`Benutzername und Passwort sind erforderlich`,authSaveFailed:`Authentifizierungseinstellungen konnten nicht gespeichert werden`,authLoadFailed:`Authentifizierungseinstellungen konnten nicht geladen werden`,authDisabled:`Authentifizierung deaktiviert.`,authRemoveFailed:`Authentifizierungseinstellungen konnten nicht entfernt werden`},dashboard:{title:`Dashboard`,systemOverview:`Systemübersicht`,quickActions:`Schnellaktionen`,bridgeOverview:`Bridge-Übersicht`,noBridges:`Noch keine Bridges konfiguriert.`,createBridge:`Bridge erstellen`,viewAll:`Alle anzeigen`,totalDevices:`Geräte gesamt`,customize:`Anpassen`,startAll:`Alle starten`,stopAll:`Alle stoppen`,restartAll:`Alle neustarten`,welcome:`Willkommen bei Home Assistant Matter Hub`,welcomeDescription:`Verbinde deine Home Assistant Geräte mit Matter-Controllern wie Apple Home, Google Home und Amazon Alexa.`,bridgeWizard:`Bridge-Assistent`,setupByArea:`Nach Bereich einrichten`,manualSetup:`Manuelle Einrichtung`,areaSetup:`Bereich-Einrichtung`,documentation:`Dokumentation`,quickNavigation:`Schnellnavigation`,haConnection:`HA-Verbindung`,startupOrder:`Startreihenfolge`,lockCredentials:`Schloss-Zugangsdaten`,filterReference:`Filterreferenz`,successMessage:`Deine Bridges sind mit {{count}} Controller-Fabric(s) verbunden. Geräte sollten jetzt in deiner Controller-App erscheinen.`,noBridgesHint:`Noch keine Bridges konfiguriert. Nutze den Bridge-Assistenten oder erstelle eine manuell.`,customizeDashboard:`Dashboard anpassen`,bridgeStatusRunning:`{{running}} läuft`,bridgeStatusFailed:`{{failed}} fehlgeschlagen`,devicesFailed:`{{count}} fehlgeschlagen`,uptimeFormat:`{{time}}`},bridge:{name:`Bridge-Name`,port:`Port`,status:`Status`,pairHint:`Diese Bridge mit deinem Controller koppeln`,pairDescription:`Öffne deine Controller-App (Apple Home, Google Home oder Amazon Alexa), füge ein neues Zubehör hinzu und scanne den QR-Code oder gib den manuellen Kopplungscode ein. Stelle sicher, dass dein Controller im selben Netzwerk wie Home Assistant ist.`,failedEntities:`Fehlgeschlagene Entities`,serverModeRecommended:`Server-Modus empfohlen für Saugroboter`,serverModeDescription:`Diese Bridge enthält einen Saugroboter im Bridge-Modus. Apple Home und Alexa zeigen die Bridge als zusätzliches Gerät an, was zu doppelten Einträgen führt. Aktiviere den Server-Modus, um den Saugroboter als eigenständiges Matter-Gerät bereitzustellen.`,enableServerMode:`Server-Modus aktivieren`,enabling:`Wird aktiviert...`,start:`Starten`,stop:`Stoppen`,restart:`Neustarten`,factoryReset:`Werksreset`,pairingCode:`Kopplungscode`,openCommissioning:`Kopplungsfenster öffnen`,multiPair:`Multi-Fabric-Kopplung`,deleteBridge:`Bridge löschen`,deleteConfirm:`Möchtest du diese Bridge wirklich löschen?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} Entity/Entities konnten nicht geladen werden.`,clickToShow:`Klicke, um Details anzuzeigen.`,clickToHide:`Klicke, um Details auszublenden.`,loadFailed:`Bridge-Details konnten nicht geladen werden`,refreshHint:`Neue Geräte und Label-Änderungen werden alle 30 Sekunden erkannt.`,refreshingStates:`Status wird in {{seconds}} Sekunden aktualisiert...`,serverModeSingleDeviceNote:`Hinweis: Der Server-Modus erfordert, dass der Saugroboter das einzige Gerät auf dieser Bridge ist. Entferne zuerst andere Entities, dann aktiviere den Server-Modus in den Bridge-Einstellungen.`,serverModeEnabled:`Server-Modus aktiviert. Die Bridge wird mit deinem Saugroboter als eigenständiges Gerät neu gestartet.`,serverModeEnableFailed:`Server-Modus konnte nicht aktiviert werden: {{error}}`,pairing:`Kopplung`,bridgeInfo:`Bridge-Info`,commissioned:`Gekoppelt`,addController:`Weiteren Controller hinzufügen`,openingCommissioning:`Kopplungsfenster wird geöffnet...`,fabricTooltip:`Ein Fabric stellt eine Verbindung zu einem Matter-Controller dar (z.B. Apple Home, Google Home, Alexa). Jeder Controller erstellt beim Koppeln ein Fabric.`,forceSync:`Synchronisation erzwingen`,syncing:`Synchronisiere...`,forceSyncTooltip:`Alle aktuellen Gerätezustände an verbundene Controller senden`,editFilters:`Filter bearbeiten`,addFilters:`Filter hinzufügen`,bridgeNotRunning:`Bridge läuft nicht. Starte die Bridge, um Kopplungsinformationen zu sehen.`,manualCode:`Manueller Code`,openingWindow:`Kopplungsfenster wird geöffnet...`,bridgeId:`Bridge-ID`,passcode:`Passcode`,discriminator:`Discriminator`,connectedFabrics:`Verbundene Fabrics ({{count}})`,noFabrics:`Noch keine Controller verbunden. Scanne den QR-Code mit deinem Matter-Controller.`,entityFilters:`Entity-Filter`,noFilters:`Keine Filter konfiguriert. Alle unterstützten Entities werden freigegeben.`,scanQrCode:`Scanne diesen QR-Code mit deinem Matter-Controller (Apple Home, Google Home, Alexa, etc.), um diese Bridge einem weiteren Ökosystem hinzuzufügen.`,appleHomeWarning:`Diese Bridge verwendet den erweiterten Flat-Modus. Deaktiviere dies nur, wenn du ausschließlich Apple Home verwendest.`,googleHomeWarning:`Dies kann Probleme mit Apple Home und Google Home verursachen.`,resetSuccess:`Bridge erfolgreich zurückgesetzt`,deleteSuccess:`Bridge erfolgreich gelöscht`,confirmResetTitle:`Bridge zurücksetzen`,confirmResetMessage:`Dies entfernt alle Kopplungsinformationen und setzt die Bridge in den Ausgangszustand zurück. Verbundene Controller verlieren den Zugriff. Dies kann nicht rückgängig gemacht werden.`,confirmDeleteTitle:`Bridge löschen`,confirmDeleteMessage:`Dies löscht die Bridge, alle Kopplungen und Entity-Zuordnungen dauerhaft. Verbundene Controller verlieren den Zugriff. Dies kann nicht rückgängig gemacht werden.`,importTitle:`Bridges importieren`,overwriteExisting:`Bestehende Bridges überschreiben`,iconLabel:`Bridge-Symbol`,google:`Google`,alexa:`Alexa`,serverMode:`Server-Modus`,autoForceSync:`Auto-Synchronisation`,saveSuccess:`Bridge gespeichert`,updateSuccess:`Aktualisierung abgeschlossen`,exportFailed:`Export fehlgeschlagen`,actionStarted:`Gestartet`,actionStopped:`Gestoppt`,actionRestarted:`Neugestartet`,actionFailed:`{{action}} fehlgeschlagen`,actionResult:`{{label}} {{count}} Bridge(s)`,couldNotLoad:`Bridges konnten nicht geladen werden`,showingFirst:`Zeige erste {{count}}`,importParseFailed:`Import-Datei konnte nicht verarbeitet werden. Bitte eine gültige Export-Datei auswählen.`,importing:`Importiere...`,importCount:`{{count}} Bridge(s) importieren`,jsonEditor:`JSON-Editor`,formEditor:`Formular-Editor`},endpoints:{title:`Endpunkte`,searchPlaceholder:`Endpunkte suchen...`,sortBy:`Sortieren`,sortName:`Name`,sortEndpoint:`Endpunkt-ID`,sortType:`Typ`,cardView:`Kartenansicht`,treeView:`Baumansicht`,clusters:`Cluster`,entityUnavailable:`Entity nicht verfügbar`,showUnavailable:`{{count}} nicht verfügbare anzeigen`,showAll:`Alle Entities anzeigen`,uploadImage:`Gerätebild hochladen`,removeImage:`Benutzerdefiniertes Bild entfernen`,editMapping:`Entity-Zuordnung bearbeiten`,homeAssistantEntity:`Home Assistant Entity`,noEndpoints:`Keine Endpunkte gefunden.`,expandAll:`Alle aufklappen`,collapseAll:`Alle zuklappen`,viewAll:`Alle Geräte anzeigen`,haState:`HA-Status`,aboutEndpoint:`Über diesen Endpunkt`,entityId:`Entity-ID`,customName:`Benutzerdefinierter Name`,deviceTypeOverride:`Gerätetyp-Überschreibung`,keyHaAttributes:`Wichtige HA-Attribute`,entityMappings:`Entity-Zuordnungen`,copyData:`Daten in Zwischenablage kopieren`,behavior:`Verhalten`},health:{title:`Status & Diagnose`,version:`Version`,uptime:`Laufzeit`,homeAssistant:`Home Assistant`,connected:`Verbunden`,disconnected:`Getrennt`,bridgeStatus:`Bridge-Status`,refreshHealth:`Statusdaten aktualisieren`,exportDiagnostic:`Diagnose exportieren`,memory:`Speicher`,fabricDetails:`Fabric-Details`,sessions:`Sitzungen`,subscriptions:`Abonnements`,noFabrics:`Keine Fabrics verbunden`,systemMetrics:`Systemmetriken`,heap:`Heap`,rss:`RSS`,external:`Extern`,systemHealth:`Systemstatus`,fetchFailed:`Statusdaten konnten nicht abgerufen werden`,connectionError:`Verbindungsfehler`,exportFailed:`Diagnosedaten konnten nicht exportiert werden`,restartFailed:`Bridge konnte nicht neu gestartet werden`,unableToLoad:`Statusdaten konnten nicht geladen werden`,sortBy:`Sortieren nach`,created:`Erstellt`,ascending:`Aufsteigend`,descending:`Absteigend`,connectedTo:`Verbunden mit`,autoRecovery:`Auto-Wiederherstellung`,recoveryAttempts:`Wiederherstellungsversuche`,fabrics:`Fabrics`,networkDiagnostics:`Netzwerk-Diagnose`,checksPassed:`bestanden`,checksWarning:`Warnungen`,checksFailed:`fehlgeschlagen`,hideDetails:`Details ausblenden`,showDetails:`Details anzeigen`,allChecks:`Alle Prüfungen`,check:`Prüfung`,statusLabel:`Status`,message:`Nachricht`,networkInterfaces:`Netzwerkschnittstellen`,interfaceName:`Schnittstelle`,refresh:`Aktualisieren`},mapping:{title:`Entity-Zuordnungen`,entityId:`Entity-ID`,deviceType:`Gerätetyp`,customName:`Benutzerdefinierter Name`,status:`Status`,addMapping:`Zuordnung hinzufügen`,editMapping:`Zuordnung bearbeiten`,deleteMapping:`Zuordnung löschen`,saved:`Zuordnung für {{entityId}} gespeichert. Starte die Bridge neu, um Änderungen anzuwenden.`,saveFailed:`Zuordnung konnte nicht gespeichert werden: {{error}}`,deleted:`Zuordnung für {{entityId}} gelöscht.`,deleteFailed:`Zuordnung konnte nicht gelöscht werden.`,matterTag:`Matter-Tag`,exportProfile:`Zuordnungsprofil exportieren`,importProfile:`Zuordnungsprofil importieren`,profileName:`Profilname`,match:`Übereinstimmung`,existing:`Vorhanden`,autoDetect:`Automatisch erkennen (Standard)`,customProductName:`Produktname (benutzerdefiniert)`,customProductNameHelp:`Überschreibt den Produktnamen (Modell), der an Matter-Controller gemeldet wird. Einige Controller (z.B. Aqara) zeigen diesen als Gerätenamen an.`,customVendorName:`Herstellername (benutzerdefiniert)`,customVendorNameHelp:`Überschreibt den Hersteller-/Herstellernamen, der an Matter-Controller gemeldet wird.`,customSerialNumber:`Seriennummer (benutzerdefiniert)`,customSerialNumberHelp:`Überschreibt die Seriennummer, die an Matter-Controller gemeldet wird.`,customVendorId:`Vendor-ID (benutzerdefiniert)`,customVendorIdHelp:`Überschreibt die numerische Matter Vendor-ID (z.B. 0x115F für Aqara). Nur Bridge-Modus. Bereich 1..0xFFFE.`,loadFailed:`Entity-Zuordnungen konnten nicht geladen werden`,noMappings:`Keine benutzerdefinierten Entity-Zuordnungen konfiguriert. Verwende Zuordnungen, um Matter-Gerätetypen zu überschreiben, benutzerdefinierte Namen zu setzen oder bestimmte Entities zu deaktivieren.`,applying:`Wird angewendet...`,applyCount:`{{count}} Zuordnung(en) anwenden`},languageSwitcher:{disclaimer:`Übersetzungen können unvollständig sein.`,contribute:`Hilf sie zu verbessern!`},translationEditor:{title:`Übersetzungseditor`,editLanguage:`Sprache bearbeiten`,info:`Bearbeite Übersetzungen direkt im Browser. Änderungen werden lokal gespeichert und sofort angewendet. Exportiere deine Übersetzungen, um sie dem Projekt einzureichen.`,progress:`{{translated}} / {{total}} Schlüssel übersetzt`,localEdits:`{{count}} lokale Bearbeitung(en)`,searchPlaceholder:`Schlüssel oder Werte suchen...`,filterAll:`Alle Schlüssel`,filterMissing:`Fehlend`,filterEdited:`Bearbeitet`,exportJson:`JSON exportieren`,copyJson:`JSON kopieren`,copied:`Kopiert!`,resetAll:`Alle Bearbeitungen zurücksetzen`,resetKey:`Auf Standard zurücksetzen`,noResults:`Keine passenden Übersetzungsschlüssel gefunden.`,addLanguage:`Sprache hinzufügen`,newLanguageCode:`Sprachcode (z.B. pt, ja, ko)`,newLanguageName:`Sprachname (z.B. Português)`,addLanguageButton:`Hinzufügen`,languageExists:`Diese Sprache existiert bereits.`,codeRequired:`Sprachcode ist erforderlich.`,nameRequired:`Sprachname ist erforderlich.`,removeLanguage:`Sprache entfernen`,importJson:`JSON importieren`,importSuccess:`{{count}} Übersetzung(en) importiert.`,importFailed:`Import fehlgeschlagen: ungültiges JSON-Format.`,removeLanguageConfirm:`Benutzerdefinierte Sprache "{{name}}" entfernen? Alle lokalen Bearbeitungen für diese Sprache gehen verloren.`},backup:{title:`Sichern & Wiederherstellen`,description:`Erstelle ein vollständiges Backup deiner Bridges und Entity-Zuordnungen oder stelle ein vorheriges Backup wieder her.`,configBackup:`Konfigurations-Backup`,configBackupDesc:`Exportiere Bridge-Konfigurationen und Entity-Zuordnungen.`,configBackupNote:`Bridges müssen nach der Wiederherstellung neu kommissioniert werden.`,fullBackup:`Vollständiges Backup (mit Identität)`,fullBackupDesc:`Enthält Matter-Identitätsdateien (Schlüsselpaare, Fabric-Anmeldedaten).`,fullBackupWarning:`Erhält den Kommissionierungsstatus über Wiederherstellungen hinweg. NICHT TEILEN!`,restoreFromBackup:`Aus Backup wiederherstellen`,restoreDesc:`Lade eine zuvor erstellte Backup-Datei hoch, um Bridges und Konfigurationen wiederherzustellen.`,restoreTitle:`Backup wiederherstellen`,selectBridges:`Bridges zur Wiederherstellung auswählen`,overwriteExisting:`Vorhandene Bridges überschreiben`,includeMappings:`Entity-Zuordnungen einschließen`,restoreIdentities:`Matter-Identitäten wiederherstellen (keine Neu-Kommissionierung nötig)`,restore:`Wiederherstellen`,downloadSuccess:`Backup erfolgreich heruntergeladen!`,restartRequired:`Neustart erforderlich`,restartMessage:`Bridges wurden aus dem Backup wiederhergestellt. Ein Neustart ist erforderlich, damit die Änderungen wirksam werden.`,restartNote:`Die Anwendung wird neu gestartet und du musst diese Seite möglicherweise aktualisieren.`,restartNow:`Jetzt neu starten`,storedBackups:`Gespeicherte Backups`,createSnapshot:`Backup erstellen`,noSnapshots:`Noch keine gespeicherten Backups. Backups werden automatisch beim Herunterfahren erstellt oder können manuell erstellt werden.`,downloadSnapshot:`Herunterladen`,restoreSnapshot:`Wiederherstellen`,auto:`Auto`,manual:`Manuell`,snapshotCreated:`Backup erfolgreich erstellt!`,snapshotRestored:`{{bridges}} Bridges, {{mappings}} Zuordnungen, {{identities}} Identitäten wiederhergestellt.`,confirmRestore:`Wiederherstellung bestätigen`,confirmRestoreMessage:`Bist du sicher, dass du aus "{{filename}}" wiederherstellen möchtest? Dies überschreibt deine aktuelle Konfiguration.`,restoreWarning:`Alle vorhandenen Bridges und Konfigurationen werden überschrieben. Ein Neustart ist nach der Wiederherstellung erforderlich.`,confirmDelete:`Backup löschen`,confirmDeleteMessage:`Bist du sicher, dass du "{{filename}}" löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.`,settings:`Backup-Einstellungen`,autoBackupLabel:`Automatisches Backup`,autoBackupDesc:`Erstellt automatisch ein vollständiges Backup wenn die Anwendung heruntergefahren oder neu gestartet wird.`,retentionCount:`Backups behalten`,retentionCountDesc:`Anzahl der aufzubewahrenden Backups (älteste werden automatisch gelöscht)`},notFound:{title:`Seite nicht gefunden`,description:`Die gesuchte Seite existiert nicht.`,backToDashboard:`Zurück zum Dashboard`},footer:{github:`GitHub`,documentation:`Dokumentation`,support:`Unterstützen`},devices:{title:`Geräte`,searchPlaceholder:`Geräte suchen...`,filterBridge:`Bridge`,allBridges:`Alle Bridges`,filterDeviceType:`Gerätetyp`,allTypes:`Alle Typen`,sortBy:`Sortieren nach`,sortBridge:`Bridge`,sortType:`Gerätetyp`,sortName:`Name`,deviceCount:`{{count}} Gerät(e)`,filteredCount:`{{filtered}} von {{total}} Geräten`},diagnostics:{title:`Live-Diagnose`,stateUpdate:`Statusänderung`,command:`Befehl`,entityError:`Fehler`,sessionOpen:`Sitzung geöffnet`,sessionClose:`Sitzung geschlossen`,subscription:`Abonnement`,bridgeStart:`Bridge gestartet`,bridgeStop:`Bridge gestoppt`,entityWarning:`Warnung`,filterEvents:`Ereignistypen filtern`,clearEvents:`Alle Ereignisse löschen`,noEvents:`Keine Ereignisse entsprechen den aktuellen Filtern.`},startup:{title:`Startreihenfolge`,description:`Ziehe Bridges per Drag & Drop, um die Startreihenfolge festzulegen. Niedrigere Positionen starten zuerst.`,saveSuccess:`Startreihenfolge erfolgreich gespeichert`,saveFailed:`Startreihenfolge konnte nicht gespeichert werden`,saveChanges:`Änderungen speichern`,unsavedChanges:`Du hast ungespeicherte Änderungen an der Startreihenfolge.`,noBridges:`Noch keine Bridges konfiguriert.`,saveOrder:`Startreihenfolge speichern`},areaSetup:{title:`Bereich-Einrichtung`,heading:`Bereichsbasierte Bridge-Einrichtung`,description:`Erstelle automatisch eine Bridge pro Home Assistant Bereich. Jede Bridge enthält alle unterstützten Entities aus diesem Bereich.`,noAreas:`Keine Bereiche mit unterstützten Entities in Home Assistant gefunden. Stelle sicher, dass deine Geräte in HA Bereichen zugeordnet sind.`,selectController:`1. Controller auswählen (optional)`,selectAreas:`2. Bereiche auswählen ({{selected}} von {{total}})`,clear:`Leeren`,createBridges:`{{count}} Bridge(s) erstellen`,results:`Ergebnisse`,goToBridges:`Zu den Bridges`,createdSuccess:`{{count}} Bridge(s) erfolgreich erstellt`,createdPartial:`{{succeeded}} erstellt, {{failed}} Bridge(s) fehlgeschlagen`,loadFailed:`Bereiche konnten nicht geladen werden`,creating:`Wird erstellt...`,created:`Erstellt`,unknownError:`Unbekannter Fehler`},lockCredentials:{title:`Schloss-Zugangsdaten`,addCredential:`Zugangsdaten hinzufügen`,editCredential:`Zugangsdaten bearbeiten`,lockEntityId:`Schloss-Entity-ID`,lockEntityHelperText:`Die Home Assistant Entity-ID des Schlosses`,pinCode:`PIN-Code`,nameOptional:`Name (optional)`,namePlaceholder:`Haustür`,nameHelperText:`Anzeigename für diese Zugangsdaten`,entityRequired:`Entity-ID ist erforderlich`,pinLength:`PIN muss 4-8 Ziffern lang sein`,pinDigitsOnly:`PIN darf nur Ziffern enthalten`,saveFailed:`Speichern fehlgeschlagen`,loadFailed:`Zugangsdaten konnten nicht geladen werden`,deleteFailed:`Löschen fehlgeschlagen`,updateFailed:`Aktualisierung fehlgeschlagen`,enable:`Aktivieren`,disable:`Deaktivieren`,confirmDeleteTitle:`Zugangsdaten löschen`,confirmDeleteMessage:`Dies löscht die PIN-Zugangsdaten für {{entity}} dauerhaft. Dies kann nicht rückgängig gemacht werden.`},labels:{title:`Filterreferenz`,info:`Durchsuche alle verfügbaren Filterwerte für deine Bridge-Konfiguration. Klicke auf einen Wert, um ihn in die Zwischenablage zu kopieren.`,searchPlaceholder:`Suchen...`,loadFailed:`Daten konnten nicht geladen werden`,labelsSection:`Labels`,labelsHint:`Verwende mit Filtertyp "entity_label" oder "device_label". Du kannst entweder den Anzeigenamen oder die label_id verwenden.`,noLabels:`Keine Labels in Home Assistant gefunden. Erstelle Labels unter Einstellungen > Labels.`,displayName:`Anzeigename`,labelId:`label_id`,areaId:`area_id`,areasSection:`Bereiche`,areasHint:`Verwende mit Filtertyp "area". Bereiche werden auch für die automatische Raumzuweisung in Matter-Controllern verwendet.`,noAreas:`Keine Bereiche in Home Assistant gefunden. Erstelle Bereiche unter Einstellungen > Bereiche.`,otherFilterValues:`Weitere Filterwerte`,domains:`Domains`,domainsHint:`Verwende mit Filtertyp "domain".`,platforms:`Plattformen / Integrationen`,platformsHint:`Verwende mit Filtertyp "platform".`,entityCategories:`Entity-Kategorien`,entityCategoriesHint:`Verwende mit Filtertyp "entity_category".`,deviceClasses:`Geräteklassen`,deviceClassesHint:`Verwende mit Filtertyp "device_class".`,deviceNames:`Gerätenamen`,deviceNamesHint:`Verwende mit Filtertyp "device_name".`,productNames:`Produktnamen`,productNamesHint:`Verwende mit Filtertyp "product_name".`},logs:{title:`Systemlogs`,logLevel:`Log-Level`,error:`Fehler`,warning:`Warnung`,info:`Info`,debug:`Debug`,searchPlaceholder:`Logs durchsuchen...`,noResults:`Keine Logs gefunden`,autoRefresh:`Automatisch aktualisieren`},networkMap:{title:`Netzwerkkarte`,hubLabel:`HAMH`,undoMove:`Letzte Verschiebung rückgängig`,resetLayout:`Layout zurücksetzen`,refreshData:`Daten aktualisieren`,fullscreen:`Vollbild`,exitFullscreen:`Vollbild beenden`,legend:`Legende`,controller:`Controller`,hub:`HAMH Hub`,bridge:`Bridge`,device:`Gerät`,failed:`Fehlgeschlagen`},updateChecker:{title:`Software-Updates`,checkNow:`Jetzt prüfen`,currentVersion:`Aktuelle Version`,latestVersion:`Neueste Version`,updateAvailable:`Update verfügbar!`,upToDate:`Du verwendest die neueste Version.`,releaseNotes:`Versionshinweise`,notAvailable:`Update-Prüfung in dieser Version nicht verfügbar`,checkFailed:`Update-Prüfung fehlgeschlagen`,unreachable:`Server nicht erreichbar`,instructionAddon:`Aktualisiere über Einstellungen → Add-ons in Home Assistant.`,instructionDocker:`Ziehe das neueste Image und erstelle deinen Container neu.`,instructionNpm:`Ausführen: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Bridge-Einrichtungsassistent`,stepTemplate:`Vorlage`,stepController:`Controller`,stepBridgeInfo:`Bridge-Info`,stepEntityFilter:`Entity-Filter`,stepFeatureFlags:`Feature Flags`,stepReview:`Überprüfen & Erstellen`,autoCompose:`Geräte automatisch zusammensetzen`,autoForceSyncFlag:`Auto-Synchronisation`,invertCover:`Abdeckungsrichtung umkehren`,invertCoverDescription:`Öffnen/Schließen-Richtung für Abdeckungen tauschen. Verwende dies, wenn deine Abdeckungen die falsche Position in Matter-Controllern anzeigen.`,includeHidden:`Versteckte Entities einschließen`,includeHiddenDescription:`Auch Entities anzeigen, die in Home Assistant als versteckt markiert sind.`,bridgeName:`Bridge-Name`,portLabel:`Port`,portAutoAssign:`Wird automatisch dem nächsten verfügbaren Port zugewiesen`,nameRequired:`Bitte gib einen Bridge-Namen ein`,createFailed:`Bridge konnte nicht erstellt werden`,bridgeInfoDescription:`Gib deiner Bridge einen Namen und Port.`,serverModeLabel:`Server-Modus (eigenständiges Gerät)`,serverModeTooltip:`Stellt Entities als eigenständige Matter-Geräte statt als Bridge-Geräte bereit, z.B. damit Saugroboter mit Apple Home (Siri) und Alexa funktionieren. Das erste Entity ist das primäre Gerät; mehr als ein Gerät pro Node ist experimentell.`,entityFilterDescription:`Konfiguriere, welche Entities in diese Bridge aufgenommen werden sollen.`,includeAll:`Alle Entities einschließen (Platzhalter)`,entityId:`Entity-ID`,includePattern:`Einschlussmuster`,entityFilters:`Entity-Filter`,serverModeEntityHint:`Gib genaue Entity-IDs ein (z.B. vacuum.mein_saugroboter). Die erste ist das primäre Gerät des Nodes.`,templatePreConfigured:`Durch Vorlage vorkonfiguriert. Nach der Erstellung im vollständigen Editor bearbeiten.`,wildcardHint:`Verwende * für alle, oder Muster wie light.*, switch.*`,commaHint:`Gib spezifische Entity-IDs ein, getrennt durch Kommas`,excludePatterns:`Ausschlussmuster (optional)`,excludeHelperText:`Auszuschließende Muster, durch Kommas getrennt`,skipTemplate:`Vorlage überspringen`,creating:`Wird erstellt...`,createBridge:`Bridge erstellen`,searchRules:`Regeln suchen...`,templateDescription:`Wähle eine Vorlage für einen schnellen Start oder überspringe sie, um eine benutzerdefinierte Bridge zu erstellen.`,controllerDescription:`Welchen Matter-Controller wirst du verwenden? Dies optimiert die Feature Flags für deinen Controller.`,controllerHint:`Du kannst Feature Flags jederzeit in den nächsten Schritten oder nach der Bridge-Erstellung anpassen.`,templateApplied:`Vorlage "{{name}}" angewendet. Passe Name und Port unten an.`,filterPreConfiguredFrom:`Filter ist aus der Vorlage "{{name}}" vorkonfiguriert. Du kannst ihn unten anpassen.`,featureFlagsDescription:`Feature Flags steuern, wie Geräte für Matter-Controller bereitgestellt werden.`,recommendedFlags:`Empfohlene Flags für {{name}} sind vorausgewählt.`,selectFlags:`Wähle die Flags, die zu deiner Einrichtung passen.`,reviewDescription:`Überprüfe deine Bridge-Konfiguration:`,bridgesToCreate:`Zu erstellende Bridges ({{count}})`,bridgesCreated:`{{count}} Bridge(s) bereits in dieser Sitzung erstellt`,addAnother:`Weitere hinzufügen`}},_s={common:{loading:`Loading`,notFound:`Not found`,save:`Save`,cancel:`Cancel`,delete:`Delete`,edit:`Edit`,close:`Close`,refresh:`Refresh`,search:`Search`,enabled:`Enabled`,disabled:`Disabled`,online:`Online`,offline:`Offline`,running:`Running`,stopped:`Stopped`,failed:`Failed`,starting:`Starting`,devices:`Devices`,fabrics:`Fabrics`,port:`Port`,unknown:`Unknown`,confirm:`Confirm`,create:`Create`,back:`Back`,next:`Next`,actions:`Actions`,name:`Name`,type:`Type`,error:`Error`,version:`Version`,copy:`Copy`,copied:`Copied!`,copyId:`Copy ID`,later:`Later`,skip:`Skip`,reset:`Reset`,update:`Update`,all:`All`,ascending:`Ascending`,descending:`Descending`,moveUp:`Move up`,moveDown:`Move down`,selectAll:`Select All`,selectNone:`Select None`,live:`Live`,new:`New`,overwrite:`Overwrite`,active:`Active`,property:`Property`,value:`Value`,custom:`Custom`,startAll:`Start All`,stopAll:`Stop All`,restartAll:`Restart All`,import:`Import`,export:`Export`,exportAll:`Export All`,wizard:`Wizard`},nav:{bridges:`Bridges`,devices:`All Devices`,standaloneDevices:`Standalone Devices`,health:`Health & Diagnostics`,diagnostics:`Live Events`,settings:`Settings`,networkMap:`Network Map`,logs:`Logs`,startupOrder:`Startup Order`,lockCredentials:`Lock Credentials`,filterReference:`Filter Reference`,systemLogs:`System Logs`,lightMode:`Light Mode`,darkMode:`Dark Mode`},standaloneDevices:{title:`Standalone Devices`,subtitle:`Each device runs on its own Matter node with its own pairing code, instead of inside a bridge.`,create:`Add device`,name:`Name`,entity:`Entity`,entityHelp:`Pick the Home Assistant entity to expose.`,additionalEntity:`Additional entity`,addEntity:`Add another entity`,multiHint:`The first entity is the primary and names the device. More than one entity per device is experimental.`,creating:`Creating`,empty:`No standalone devices yet. Add one to expose a single entity as its own Matter device.`,noEntity:`no entity`,openBridge:`Open details and pairing`,created:`Standalone device created`,createFailed:`Could not create device`,deleted:`Standalone device deleted`,deleteFailed:`Could not delete device`,entityInvalid:`Enter a single entity id like vacuum.living_room, wildcards are not allowed.`,entityProblem:`entity problem`,confirmDeleteTitle:`Delete standalone device`,confirmDeleteMessage:`This deletes the device's Matter node and unpairs it from your controllers. This cannot be undone.`},status:{error:`Error`,unhealthy:`Unhealthy`,noBridges:`No Bridges`,loadingHealth:`Loading health status...`,unknown:`Unknown`},errorBoundary:{title:`Something went wrong`,fallbackMessage:`An unexpected error occurred.`,reload:`Reload Page`},settings:{title:`Settings`,language:`Language`,languageDescription:`Select the interface language.`,checkUpdates:`Check for Updates`,backupRestore:`Backup & Restore`,exportBackup:`Export Backup`,importBackup:`Import Backup`,dangerZone:`Danger Zone`,resetAll:`Reset All`,about:`About`,username:`Username`,password:`Password`,enterNewPassword:`Enter new password`,enableAuth:`Enable Authentication`,disableAuth:`Disable Authentication`,disableAuthMessage:`This will remove password protection from the web UI. Anyone on your network will be able to access and modify your bridge configuration.`,disableAuthConfirm:`Disable Auth`,usernamePasswordRequired:`Username and password are required`,authSaveFailed:`Failed to save auth settings`,authLoadFailed:`Failed to load auth settings`,authDisabled:`Authentication disabled.`,authRemoveFailed:`Failed to remove auth settings`},dashboard:{title:`Dashboard`,systemOverview:`System Overview`,quickActions:`Quick Actions`,bridgeOverview:`Bridge Overview`,noBridges:`No bridges configured yet.`,createBridge:`Create Bridge`,viewAll:`View All`,totalDevices:`Total Devices`,customize:`Customize`,startAll:`Start All`,stopAll:`Stop All`,restartAll:`Restart All`,welcome:`Welcome to Home Assistant Matter Hub`,welcomeDescription:`Bridge your Home Assistant devices to Matter controllers like Apple Home, Google Home, and Amazon Alexa.`,bridgeWizard:`Bridge Wizard`,setupByArea:`Setup by Area`,manualSetup:`Manual Setup`,areaSetup:`Area Setup`,documentation:`Documentation`,quickNavigation:`Quick Navigation`,haConnection:`HA Connection`,startupOrder:`Startup Order`,lockCredentials:`Lock Credentials`,filterReference:`Filter Reference`,successMessage:`Your bridges are connected to {{count}} controller fabric(s). Devices should now appear in your controller app.`,noBridgesHint:`No bridges configured yet. Use the Bridge Wizard or create one manually.`,customizeDashboard:`Customize dashboard`,bridgeStatusRunning:`{{running}} running`,bridgeStatusFailed:`{{failed}} failed`,devicesFailed:`{{count}} failed`,uptimeFormat:`{{time}}`},bridge:{name:`Bridge Name`,port:`Port`,status:`Status`,pairHint:`Pair this bridge with your controller`,pairDescription:`Open your controller app (Apple Home, Google Home, or Amazon Alexa), add a new accessory, and scan the QR code below or enter the manual pairing code. Make sure your controller is on the same network as Home Assistant.`,failedEntities:`Failed Entities`,serverModeRecommended:`Server Mode Recommended for Robot Vacuums`,serverModeDescription:`This bridge contains a robot vacuum in bridged mode. Apple Home and Alexa will show the bridge as an additional device, resulting in duplicate entries. Enable Server Mode to expose the vacuum as a standalone Matter device for full Siri/Alexa voice command support and no duplicates.`,enableServerMode:`Enable Server Mode`,enabling:`Enabling...`,start:`Start`,stop:`Stop`,restart:`Restart`,factoryReset:`Factory Reset`,pairingCode:`Pairing Code`,openCommissioning:`Open Commissioning Window`,multiPair:`Multi-Fabric Pairing`,deleteBridge:`Delete Bridge`,deleteConfirm:`Are you sure you want to delete this bridge?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} entity/entities could not be loaded.`,clickToShow:`Click to show details.`,clickToHide:`Click to hide details.`,loadFailed:`Failed to load Bridge details`,refreshHint:`New devices and changes on labels are discovered every 30 seconds.`,refreshingStates:`Refreshing states in {{seconds}} seconds...`,serverModeSingleDeviceNote:`Note: Server Mode requires the vacuum to be the only device on this bridge. Please remove other entities from this bridge first, then enable Server Mode in the bridge settings.`,serverModeEnabled:`Server Mode enabled. The bridge will restart with your vacuum as a standalone device.`,serverModeEnableFailed:`Failed to enable Server Mode: {{error}}`,pairing:`Pairing`,bridgeInfo:`Bridge Info`,commissioned:`Commissioned`,addController:`Add Another Controller`,openingCommissioning:`Opening Commissioning Window...`,fabricTooltip:`A fabric represents a connection to a Matter controller (e.g., Apple Home, Google Home, Alexa). Each controller creates one fabric when paired.`,forceSync:`Force Sync`,syncing:`Syncing...`,forceSyncTooltip:`Push all current device states to connected controllers`,editFilters:`Edit Filters`,addFilters:`Add Filters`,bridgeNotRunning:`Bridge is not running. Start the bridge to see pairing information.`,manualCode:`Manual Code`,openingWindow:`Opening Commissioning Window...`,bridgeId:`Bridge ID`,passcode:`Passcode`,discriminator:`Discriminator`,connectedFabrics:`Connected Fabrics ({{count}})`,noFabrics:`No controllers connected yet. Scan the QR code with your Matter controller to pair this bridge.`,entityFilters:`Entity Filters`,noFilters:`No filters configured. All supported entities will be exposed.`,scanQrCode:`Scan this QR code with your Matter controller (Apple Home, Google Home, Alexa, etc.) to add this bridge to another ecosystem.`,appleHomeWarning:`This bridge uses Extended Flat mode. Only disable this if you exclusively use Apple Home.`,googleHomeWarning:`This may cause issues with Apple Home and Google Home.`,resetSuccess:`Bridge Reset successfully`,deleteSuccess:`Bridge deleted successfully`,confirmResetTitle:`Factory Reset Bridge`,confirmResetMessage:`This will remove all pairing information and reset the bridge to its initial state. Connected controllers will lose access. This cannot be undone.`,confirmDeleteTitle:`Delete Bridge`,confirmDeleteMessage:`This will permanently delete the bridge, all its pairings, and entity mappings. Connected controllers will lose access. This cannot be undone.`,importTitle:`Import Bridges`,overwriteExisting:`Overwrite existing bridges`,iconLabel:`Bridge Icon`,google:`Google`,alexa:`Alexa`,serverMode:`Server Mode`,autoForceSync:`Auto Force Sync`,saveSuccess:`Bridge saved`,updateSuccess:`Update completed`,exportFailed:`Export failed`,actionStarted:`Started`,actionStopped:`Stopped`,actionRestarted:`Restarted`,actionFailed:`{{action}} failed`,actionResult:`{{label}} {{count}} bridge(s)`,couldNotLoad:`Could not load bridges`,showingFirst:`Showing first {{count}}`,importParseFailed:`Failed to parse import file. Please select a valid export file.`,importing:`Importing...`,importCount:`Import {{count}} Bridge(s)`,jsonEditor:`JSON editor`,formEditor:`Form editor`},endpoints:{title:`Endpoints`,searchPlaceholder:`Search endpoints...`,sortBy:`Sort`,sortName:`Name`,sortEndpoint:`Endpoint ID`,sortType:`Type`,cardView:`Card View`,treeView:`Tree View`,clusters:`Clusters`,entityUnavailable:`Entity unavailable`,showUnavailable:`Show {{count}} unavailable`,showAll:`Show all entities`,uploadImage:`Upload device image`,removeImage:`Remove custom image`,editMapping:`Edit Entity Mapping`,homeAssistantEntity:`Home Assistant Entity`,noEndpoints:`No endpoints found.`,expandAll:`Expand All`,collapseAll:`Collapse All`,viewAll:`View All Devices`,haState:`HA State`,aboutEndpoint:`About this endpoint`,entityId:`Entity ID`,customName:`Custom Name`,deviceTypeOverride:`Device Type Override`,keyHaAttributes:`Key HA Attributes`,entityMappings:`Entity Mappings`,copyData:`Copy data to clipboard`,behavior:`Behavior`},health:{title:`Health & Diagnostics`,version:`Version`,uptime:`Uptime`,homeAssistant:`Home Assistant`,connected:`Connected`,disconnected:`Disconnected`,bridgeStatus:`Bridge Status`,refreshHealth:`Refresh health data`,exportDiagnostic:`Export Diagnostic`,memory:`Memory`,fabricDetails:`Fabric Details`,sessions:`Sessions`,subscriptions:`Subscriptions`,noFabrics:`No fabrics connected`,systemMetrics:`System Metrics`,heap:`Heap`,rss:`RSS`,external:`External`,systemHealth:`System Health`,fetchFailed:`Failed to fetch health status`,connectionError:`Connection error`,exportFailed:`Failed to export diagnostic data`,restartFailed:`Failed to restart bridge`,unableToLoad:`Unable to load health status`,sortBy:`Sort by`,created:`Created`,ascending:`Ascending`,descending:`Descending`,connectedTo:`Connected to`,autoRecovery:`Auto Recovery`,recoveryAttempts:`Recovery attempts`,fabrics:`fabrics`,networkDiagnostics:`Network Diagnostics`,checksPassed:`passed`,checksWarning:`warnings`,checksFailed:`failed`,hideDetails:`Hide details`,showDetails:`Show details`,allChecks:`All Checks`,check:`Check`,statusLabel:`Status`,message:`Message`,networkInterfaces:`Network Interfaces`,interfaceName:`Interface`,refresh:`Refresh`},mapping:{title:`Entity Mappings`,entityId:`Entity ID`,deviceType:`Device Type`,customName:`Custom Name`,status:`Status`,addMapping:`Add Mapping`,editMapping:`Edit Mapping`,deleteMapping:`Delete Mapping`,saved:`Mapping saved for {{entityId}}. Restart the bridge to apply changes.`,saveFailed:`Failed to save mapping: {{error}}`,deleted:`Mapping deleted for {{entityId}}.`,deleteFailed:`Failed to delete mapping.`,matterTag:`Matter Tag`,exportProfile:`Export Mapping Profile`,importProfile:`Import Mapping Profile`,profileName:`Profile Name`,match:`Match`,existing:`Existing`,autoDetect:`Auto-detect (default)`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`,customVendorId:`Custom Vendor ID`,customVendorIdHelp:`Override the numeric Matter Vendor ID (e.g. 0x115F for Aqara). Bridge mode only. Range 1..0xFFFE.`,loadFailed:`Failed to load entity mappings`,noMappings:`No custom entity mappings configured. Use mappings to override Matter device types, set custom names, or disable specific entities.`,applying:`Applying...`,applyCount:`Apply {{count}} Mapping(s)`},notFound:{title:`Page not found`,description:`The page you are looking for does not exist.`,backToDashboard:`Back to Dashboard`},devices:{title:`Devices`,searchPlaceholder:`Search devices...`,filterBridge:`Bridge`,allBridges:`All Bridges`,filterDeviceType:`Device Type`,allTypes:`All Types`,sortBy:`Sort By`,sortBridge:`Bridge`,sortType:`Device Type`,sortName:`Name`,deviceCount:`{{count}} device(s)`,filteredCount:`{{filtered}} of {{total}} devices`},diagnostics:{title:`Live Diagnostics`,stateUpdate:`State Update`,command:`Command`,entityError:`Error`,sessionOpen:`Session Open`,sessionClose:`Session Close`,subscription:`Subscription`,bridgeStart:`Bridge Start`,bridgeStop:`Bridge Stop`,entityWarning:`Warning`,filterEvents:`Filter event types`,clearEvents:`Clear all events`,noEvents:`No events match the current filters.`},startup:{title:`Startup Order`,description:`Drag and drop bridges to set the startup order. Lower positions start first.`,saveSuccess:`Startup order saved successfully`,saveFailed:`Failed to save startup order`,saveChanges:`Save Changes`,unsavedChanges:`You have unsaved changes to the startup order.`,noBridges:`No bridges configured yet.`,saveOrder:`Save Startup Order`},areaSetup:{title:`Area Setup`,heading:`Area-based Bridge Setup`,description:`Automatically create one bridge per Home Assistant area. Each bridge will include all supported entities from that area.`,noAreas:`No areas with supported entities found in Home Assistant. Make sure your devices are assigned to areas in HA.`,selectController:`1. Select Controller (optional)`,selectAreas:`2. Select Areas ({{selected}} of {{total}})`,clear:`Clear`,createBridges:`Create {{count}} Bridge(s)`,results:`Results`,goToBridges:`Go to Bridges`,createdSuccess:`Created {{count}} bridge(s) successfully`,createdPartial:`Created {{succeeded}}, failed {{failed}} bridge(s)`,loadFailed:`Failed to load areas`,creating:`Creating...`,created:`Created`,unknownError:`Unknown error`},lockCredentials:{title:`Lock Credentials`,addCredential:`Add Lock Credential`,editCredential:`Edit Lock Credential`,lockEntityId:`Lock Entity ID`,lockEntityHelperText:`The Home Assistant entity ID of the lock`,pinCode:`PIN Code`,nameOptional:`Name (optional)`,namePlaceholder:`Front Door`,nameHelperText:`Friendly name for this credential`,entityRequired:`Entity ID is required`,pinLength:`PIN must be 4-8 digits`,pinDigitsOnly:`PIN must contain only digits`,saveFailed:`Failed to save`,loadFailed:`Failed to load credentials`,deleteFailed:`Failed to delete`,updateFailed:`Failed to update`,enable:`Enable`,disable:`Disable`,confirmDeleteTitle:`Delete Credential`,confirmDeleteMessage:`This will permanently delete the PIN credential for {{entity}}. This cannot be undone.`},labels:{title:`Filter Reference`,info:`Browse all available filter values for your bridge configuration. Click any value to copy it to your clipboard.`,searchPlaceholder:`Search...`,loadFailed:`Failed to load data`,labelsSection:`Labels`,labelsHint:`Use with filter type "entity_label" or "device_label". You can use either the display name or the label_id.`,noLabels:`No labels found in Home Assistant. Create labels under Settings > Labels.`,displayName:`Display Name`,labelId:`label_id`,areaId:`area_id`,areasSection:`Areas`,areasHint:`Use with filter type "area". Areas are also used for automatic room assignment in Matter controllers.`,noAreas:`No areas found in Home Assistant. Create areas under Settings > Areas.`,otherFilterValues:`Other Filter Values`,domains:`Domains`,domainsHint:`Use with filter type "domain".`,platforms:`Platforms / Integrations`,platformsHint:`Use with filter type "platform".`,entityCategories:`Entity Categories`,entityCategoriesHint:`Use with filter type "entity_category".`,deviceClasses:`Device Classes`,deviceClassesHint:`Use with filter type "device_class".`,deviceNames:`Device Names`,deviceNamesHint:`Use with filter type "device_name".`,productNames:`Product Names`,productNamesHint:`Use with filter type "product_name".`},logs:{title:`System Logs`,logLevel:`Log Level`,error:`Error`,warning:`Warning`,info:`Info`,debug:`Debug`,searchPlaceholder:`Search logs...`,noResults:`No logs found`,autoRefresh:`Auto Refresh`},backup:{title:`Backup & Restore`,description:`Create a full backup of your bridges and entity mappings, or restore from a previous backup.`,configBackup:`Config Backup`,configBackupDesc:`Export bridge configurations and entity mappings.`,configBackupNote:`Bridges will need to be re-commissioned after restore.`,fullBackup:`Full Backup (with Identity)`,fullBackupDesc:`Includes Matter identity files (keypairs, fabric credentials).`,fullBackupWarning:`Preserves commissioning state across restores. DONT SHARE!`,restoreFromBackup:`Restore from Backup`,restoreDesc:`Upload a previously created backup file to restore bridges and configurations.`,restoreTitle:`Restore Backup`,selectBridges:`Select bridges to restore`,overwriteExisting:`Overwrite existing bridges`,includeMappings:`Include entity mappings`,restoreIdentities:`Restore Matter identities (no re-commissioning needed)`,restore:`Restore`,downloadSuccess:`Backup downloaded successfully!`,restartRequired:`Restart Required`,restartMessage:`Bridges have been restored from backup. A restart is required for the changes to take effect.`,restartNote:`The application will restart and you may need to refresh this page.`,restartNow:`Restart Now`,storedBackups:`Stored Backups`,createSnapshot:`Create Backup`,noSnapshots:`No stored backups yet. Backups are created automatically on shutdown or can be created manually.`,downloadSnapshot:`Download`,restoreSnapshot:`Restore`,auto:`Auto`,manual:`Manual`,snapshotCreated:`Backup created successfully!`,snapshotRestored:`Restored {{bridges}} bridges, {{mappings}} mappings, {{identities}} identities.`,confirmRestore:`Confirm Restore`,confirmRestoreMessage:`Are you sure you want to restore from "{{filename}}"? This will overwrite your current configuration.`,restoreWarning:`All existing bridges and configurations will be overwritten. A restart is required after restore.`,confirmDelete:`Delete Backup`,confirmDeleteMessage:`Are you sure you want to delete "{{filename}}"? This action cannot be undone.`,settings:`Backup Settings`,autoBackupLabel:`Automatic Backup`,autoBackupDesc:`Automatically create a full backup when the application shuts down or restarts.`,retentionCount:`Keep Backups`,retentionCountDesc:`Number of backups to keep (oldest are deleted automatically)`},networkMap:{title:`Network Map`,hubLabel:`HAMH`,undoMove:`Undo last move`,resetLayout:`Reset layout`,refreshData:`Refresh data`,fullscreen:`Fullscreen`,exitFullscreen:`Exit Fullscreen`,legend:`Legend`,controller:`Controller`,hub:`HAMH Hub`,bridge:`Bridge`,device:`Device`,failed:`Failed`},updateChecker:{title:`Software Updates`,checkNow:`Check Now`,currentVersion:`Current Version`,latestVersion:`Latest Version`,updateAvailable:`Update available!`,upToDate:`You are running the latest version.`,releaseNotes:`Release Notes`,notAvailable:`Update check not available in this version`,checkFailed:`Failed to check for updates`,unreachable:`Unable to reach server`,instructionAddon:`Update via Settings → Add-ons in Home Assistant.`,instructionDocker:`Pull the latest image and recreate your container.`,instructionNpm:`Run: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Bridge Setup Wizard`,stepTemplate:`Template`,stepController:`Controller`,stepBridgeInfo:`Bridge Info`,stepEntityFilter:`Entity Filter`,stepFeatureFlags:`Feature Flags`,stepReview:`Review & Create`,autoCompose:`Auto Compose Devices`,autoForceSyncFlag:`Auto Force Sync`,invertCover:`Invert Cover Direction`,invertCoverDescription:`Swap open/close direction for covers. Use this if your covers show the wrong position in Matter controllers.`,includeHidden:`Include Hidden Entities`,includeHiddenDescription:`Also expose entities that are marked as hidden in Home Assistant.`,bridgeName:`Bridge Name`,portLabel:`Port`,portAutoAssign:`Automatically assigned to next available port`,nameRequired:`Please enter a bridge name`,createFailed:`Failed to create bridge`,bridgeInfoDescription:`Give your bridge a name and port.`,serverModeLabel:`Server Mode (standalone device)`,serverModeTooltip:`Exposes entities as standalone Matter devices instead of bridged ones, e.g. so robot vacuums work with Apple Home (Siri) and Alexa. The first entity is the primary; more than one device per node is experimental.`,entityFilterDescription:`Configure which entities should be included in this bridge.`,includeAll:`Include all entities (wildcard)`,entityId:`Entity ID`,includePattern:`Include Pattern`,entityFilters:`Entity Filters`,serverModeEntityHint:`Enter exact entity IDs (e.g., vacuum.my_vacuum). The first one is the primary device of the node.`,templatePreConfigured:`Pre-configured by template. Edit in the full editor after creation.`,wildcardHint:`Use * for all, or patterns like light.*, switch.*`,commaHint:`Enter specific entity IDs separated by commas`,excludePatterns:`Exclude Patterns (optional)`,excludeHelperText:`Patterns to exclude, comma-separated`,skipTemplate:`Skip Template`,creating:`Creating...`,createBridge:`Create Bridge`,searchRules:`Search rules...`,templateDescription:`Choose a template to get started quickly, or skip to create a custom bridge.`,controllerDescription:`Which Matter controller will you use? This optimizes feature flags for your controller.`,controllerHint:`You can always adjust feature flags in the next steps or after bridge creation.`,templateApplied:`Template "{{name}}" applied. Customize the name and port below.`,filterPreConfiguredFrom:`Filter is pre-configured from the "{{name}}" template. You can adjust it below.`,featureFlagsDescription:`Feature flags control how devices are exposed to Matter controllers.`,recommendedFlags:`Recommended flags for {{name}} are pre-selected.`,selectFlags:`Select the flags that match your setup.`,reviewDescription:`Review your bridge configuration:`,bridgesToCreate:`Bridges to create ({{count}})`,bridgesCreated:`{{count}} bridge(s) already created in this session`,addAnother:`Add Another`},footer:{github:`GitHub`,documentation:`Documentation`,support:`Support`},languageSwitcher:{disclaimer:`Translations may be incomplete.`,contribute:`Help improve them!`},translationEditor:{title:`Translation Editor`,editLanguage:`Edit Language`,info:`Edit translations directly in your browser. Changes are saved locally and applied instantly. Export your translations to submit them to the project.`,progress:`{{translated}} / {{total}} keys translated`,localEdits:`{{count}} local edit(s)`,searchPlaceholder:`Search keys or values...`,filterAll:`All keys`,filterMissing:`Missing`,filterEdited:`Edited`,exportJson:`Export JSON`,copyJson:`Copy JSON`,copied:`Copied!`,resetAll:`Reset all edits`,resetKey:`Reset to default`,noResults:`No matching translation keys found.`,addLanguage:`Add Language`,newLanguageCode:`Language Code (e.g. pt, ja, ko)`,newLanguageName:`Language Name (e.g. Português)`,addLanguageButton:`Add`,languageExists:`This language already exists.`,codeRequired:`Language code is required.`,nameRequired:`Language name is required.`,removeLanguage:`Remove Language`,removeLanguageConfirm:`Remove custom language "{{name}}"? All local edits for this language will be lost.`,importJson:`Import JSON`,importSuccess:`Imported {{count}} translation(s).`,importFailed:`Failed to import: invalid JSON format.`}},vs={common:{loading:`Cargando`,notFound:`No encontrado`,save:`Guardar`,cancel:`Cancelar`,delete:`Eliminar`,edit:`Editar`,close:`Cerrar`,refresh:`Actualizar`,search:`Buscar`,enabled:`Activado`,disabled:`Desactivado`,online:`En línea`,offline:`Sin conexión`,running:`En ejecución`,stopped:`Detenido`,failed:`Fallido`,starting:`Iniciando`,devices:`Dispositivos`,fabrics:`Fabrics`,port:`Puerto`,unknown:`Desconocido`,confirm:`Confirmar`,create:`Crear`,back:`Atrás`,next:`Siguiente`,actions:`Acciones`,name:`Nombre`,type:`Tipo`,error:`Error`,version:`Versión`,copy:`Copiar`,copied:`¡Copiado!`,copyId:`Copiar ID`,later:`Más tarde`,skip:`Omitir`,reset:`Restablecer`,update:`Actualizar`,all:`Todos`,ascending:`Ascendente`,descending:`Descendente`,moveUp:`Mover arriba`,moveDown:`Mover abajo`,selectAll:`Seleccionar todo`,selectNone:`No seleccionar ninguno`,live:`En vivo`,new:`Nuevo`,overwrite:`Sobrescribir`,active:`Activo`,property:`Propiedad`,value:`Valor`,custom:`Personalizado`,startAll:`Iniciar todos`,stopAll:`Detener todos`,restartAll:`Reiniciar todos`,import:`Importar`,export:`Exportar`,exportAll:`Exportar todo`,wizard:`Asistente`},nav:{bridges:`Bridges`,devices:`Todos los dispositivos`,health:`Estado y diagnósticos`,diagnostics:`Eventos en vivo`,settings:`Configuración`,networkMap:`Mapa de red`,logs:`Registros`,startupOrder:`Orden de inicio`,lockCredentials:`Credenciales de cerradura`,filterReference:`Referencia de filtros`,systemLogs:`Registros del sistema`,lightMode:`Modo claro`,darkMode:`Modo oscuro`},status:{error:`Error`,unhealthy:`No saludable`,noBridges:`Sin Bridges`,loadingHealth:`Cargando estado de salud...`,unknown:`Desconocido`},errorBoundary:{title:`Algo salió mal`,fallbackMessage:`Se produjo un error inesperado.`,reload:`Recargar página`},settings:{title:`Configuración`,language:`Idioma`,languageDescription:`Selecciona el idioma de la interfaz.`,checkUpdates:`Buscar actualizaciones`,backupRestore:`Copia de seguridad y restauración`,exportBackup:`Exportar copia de seguridad`,importBackup:`Importar copia de seguridad`,dangerZone:`Zona peligrosa`,resetAll:`Restablecer todo`,about:`Acerca de`,username:`Nombre de usuario`,password:`Contraseña`,enterNewPassword:`Ingresar nueva contraseña`,enableAuth:`Habilitar autenticación`,disableAuth:`Deshabilitar autenticación`,disableAuthMessage:`Esto eliminará la protección por contraseña de la interfaz web. Cualquiera en su red podrá acceder y modificar la configuración de su bridge.`,disableAuthConfirm:`Deshabilitar autenticación`,usernamePasswordRequired:`Se requiere nombre de usuario y contraseña`,authSaveFailed:`Error al guardar la configuración de autenticación`,authLoadFailed:`Error al cargar la configuración de autenticación`,authDisabled:`Autenticación deshabilitada.`,authRemoveFailed:`Error al eliminar la configuración de autenticación`},dashboard:{title:`Panel de control`,systemOverview:`Resumen del sistema`,quickActions:`Acciones rápidas`,bridgeOverview:`Resumen de Bridges`,noBridges:`No hay bridges configurados.`,createBridge:`Crear Bridge`,viewAll:`Ver todo`,totalDevices:`Total de dispositivos`,customize:`Personalizar`,startAll:`Iniciar todos`,stopAll:`Detener todos`,restartAll:`Reiniciar todos`,welcome:`Bienvenido a Home Assistant Matter Hub`,welcomeDescription:`Conecta tus dispositivos de Home Assistant a controladores Matter como Apple Home, Google Home y Amazon Alexa.`,bridgeWizard:`Asistente de Bridge`,setupByArea:`Configurar por área`,manualSetup:`Configuración manual`,areaSetup:`Configuración por área`,documentation:`Documentación`,quickNavigation:`Navegación rápida`,haConnection:`Conexión HA`,startupOrder:`Orden de inicio`,lockCredentials:`Credenciales de cerradura`,filterReference:`Referencia de filtros`,successMessage:`Tus bridges están conectados a {{count}} fabric(s) de controlador. Los dispositivos deberían aparecer ahora en tu aplicación.`,noBridgesHint:`No hay bridges configurados. Usa el asistente o crea uno manualmente.`,customizeDashboard:`Personalizar panel de control`,bridgeStatusRunning:`{{running}} en ejecución`,bridgeStatusFailed:`{{failed}} fallidos`,devicesFailed:`{{count}} fallidos`,uptimeFormat:`{{time}}`},bridge:{name:`Nombre del Bridge`,port:`Puerto`,status:`Estado`,pairHint:`Vincular este bridge con tu controlador`,pairDescription:`Abre tu aplicación de controlador (Apple Home, Google Home o Amazon Alexa), añade un nuevo accesorio y escanea el código QR o introduce el código de vinculación manual. Asegúrate de que tu controlador esté en la misma red que Home Assistant.`,failedEntities:`Entidades fallidas`,serverModeRecommended:`Modo Servidor recomendado para aspiradoras robot`,serverModeDescription:`Este bridge contiene una aspiradora robot en modo puente. Apple Home y Alexa mostrarán el bridge como dispositivo adicional, creando duplicados. Activa el Modo Servidor para exponer la aspiradora como dispositivo Matter independiente.`,enableServerMode:`Activar Modo Servidor`,enabling:`Activando...`,start:`Iniciar`,stop:`Detener`,restart:`Reiniciar`,factoryReset:`Restablecimiento de fábrica`,pairingCode:`Código de vinculación`,openCommissioning:`Abrir ventana de puesta en servicio`,multiPair:`Vinculación Multi-Fabric`,deleteBridge:`Eliminar Bridge`,deleteConfirm:`¿Estás seguro de que quieres eliminar este bridge?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} entidad(es) no se pudieron cargar.`,clickToShow:`Haz clic para mostrar detalles.`,clickToHide:`Haz clic para ocultar detalles.`,loadFailed:`No se pudieron cargar los detalles del Bridge`,refreshHint:`Los nuevos dispositivos y cambios de etiquetas se detectan cada 30 segundos.`,refreshingStates:`Actualizando estados en {{seconds}} segundos...`,serverModeSingleDeviceNote:`Nota: El Modo Servidor requiere que la aspiradora sea el único dispositivo en este bridge. Elimina primero las otras entidades y luego activa el Modo Servidor en la configuración del bridge.`,serverModeEnabled:`Modo Servidor activado. El bridge se reiniciará con tu aspiradora como dispositivo independiente.`,serverModeEnableFailed:`No se pudo activar el Modo Servidor: {{error}}`,pairing:`Vinculación`,bridgeInfo:`Info del Bridge`,commissioned:`Vinculado`,addController:`Añadir otro controlador`,openingCommissioning:`Abriendo ventana de puesta en servicio...`,fabricTooltip:`Un fabric representa una conexión a un controlador Matter (ej. Apple Home, Google Home, Alexa). Cada controlador crea un fabric cuando se vincula.`,forceSync:`Forzar sincronización`,syncing:`Sincronizando...`,forceSyncTooltip:`Sincronizar todos los estados actuales de los dispositivos con los controladores conectados`,editFilters:`Editar filtros`,addFilters:`Añadir filtros`,bridgeNotRunning:`El bridge no está funcionando. Inicia el bridge para ver la información de vinculación.`,manualCode:`Código manual`,openingWindow:`Abriendo ventana de puesta en servicio...`,bridgeId:`ID del Bridge`,passcode:`Código de acceso`,discriminator:`Discriminador`,connectedFabrics:`Fabrics conectados ({{count}})`,noFabrics:`Ningún controlador conectado. Escanea el código QR con tu controlador Matter.`,entityFilters:`Filtros de entidades`,noFilters:`Sin filtros configurados. Todas las entidades compatibles serán expuestas.`,scanQrCode:`Escanea este código QR con tu controlador Matter (Apple Home, Google Home, Alexa, etc.) para añadir este bridge a otro ecosistema.`,appleHomeWarning:`Este bridge utiliza el modo Plano Extendido. Solo desactive esto si usa exclusivamente Apple Home.`,googleHomeWarning:`Esto puede causar problemas con Apple Home y Google Home.`,resetSuccess:`Bridge restablecido correctamente`,deleteSuccess:`Bridge eliminado correctamente`,confirmResetTitle:`Restablecer Bridge`,confirmResetMessage:`Esto eliminará toda la información de vinculación y restablecerá el bridge a su estado inicial. Los controladores conectados perderán el acceso. Esto no se puede deshacer.`,confirmDeleteTitle:`Eliminar Bridge`,confirmDeleteMessage:`Esto eliminará permanentemente el bridge, todas sus vinculaciones y mapeos de entidades. Los controladores conectados perderán el acceso. Esto no se puede deshacer.`,importTitle:`Importar Bridges`,overwriteExisting:`Sobrescribir bridges existentes`,iconLabel:`Icono del Bridge`,google:`Google`,alexa:`Alexa`,serverMode:`Modo Servidor`,autoForceSync:`Sincronización automática`,saveSuccess:`Bridge guardado`,updateSuccess:`Actualización completada`,exportFailed:`Error en la exportación`,actionStarted:`Iniciado`,actionStopped:`Detenido`,actionRestarted:`Reiniciado`,actionFailed:`{{action}} fallido`,actionResult:`{{label}} {{count}} bridge(s)`,couldNotLoad:`No se pudieron cargar los bridges`,showingFirst:`Mostrando los primeros {{count}}`,importParseFailed:`No se pudo analizar el archivo de importación. Selecciona un archivo de exportación válido.`,importing:`Importando...`,importCount:`Importar {{count}} bridge(s)`,jsonEditor:`Editor JSON`,formEditor:`Editor de formulario`},endpoints:{title:`Endpoints`,searchPlaceholder:`Buscar endpoints...`,sortBy:`Ordenar`,sortName:`Nombre`,sortEndpoint:`ID Endpoint`,sortType:`Tipo`,cardView:`Vista de tarjetas`,treeView:`Vista de árbol`,clusters:`Clusters`,entityUnavailable:`Entidad no disponible`,showUnavailable:`Mostrar {{count}} no disponibles`,showAll:`Mostrar todas las entidades`,uploadImage:`Subir imagen de dispositivo`,removeImage:`Eliminar imagen personalizada`,editMapping:`Editar mapeo de entidad`,homeAssistantEntity:`Entidad Home Assistant`,noEndpoints:`No se encontraron endpoints.`,expandAll:`Expandir todo`,collapseAll:`Contraer todo`,viewAll:`Ver todos los dispositivos`,haState:`Estado HA`,aboutEndpoint:`Acerca de este endpoint`,entityId:`ID de entidad`,customName:`Nombre personalizado`,deviceTypeOverride:`Anulación de tipo de dispositivo`,keyHaAttributes:`Atributos HA clave`,entityMappings:`Mapeos de entidades`,copyData:`Copiar datos al portapapeles`,behavior:`Comportamiento`},health:{title:`Estado y diagnósticos`,version:`Versión`,uptime:`Tiempo de actividad`,homeAssistant:`Home Assistant`,connected:`Conectado`,disconnected:`Desconectado`,bridgeStatus:`Estado de Bridges`,refreshHealth:`Actualizar datos de salud`,exportDiagnostic:`Exportar diagnóstico`,memory:`Memoria`,fabricDetails:`Detalles de Fabric`,sessions:`Sesiones`,subscriptions:`Suscripciones`,noFabrics:`No hay fabrics conectados`,systemMetrics:`Métricas del sistema`,heap:`Heap`,rss:`RSS`,external:`Externo`,systemHealth:`Salud del sistema`,fetchFailed:`No se pudo obtener el estado de salud`,connectionError:`Error de conexión`,exportFailed:`No se pudieron exportar los datos de diagnóstico`,restartFailed:`No se pudo reiniciar el bridge`,unableToLoad:`No se pudo cargar el estado de salud`,sortBy:`Ordenar por`,created:`Creado`,ascending:`Ascendente`,descending:`Descendente`,connectedTo:`Conectado a`,autoRecovery:`Recuperación automática`,recoveryAttempts:`Intentos de recuperación`,fabrics:`fabrics`,networkDiagnostics:`Diagnósticos de red`,checksPassed:`aprobados`,checksWarning:`advertencias`,checksFailed:`fallidos`,hideDetails:`Ocultar detalles`,showDetails:`Mostrar detalles`,allChecks:`Todas las comprobaciones`,check:`Comprobación`,statusLabel:`Estado`,message:`Mensaje`,networkInterfaces:`Interfaces de red`,interfaceName:`Interfaz`,refresh:`Actualizar`},mapping:{title:`Mapeos de entidades`,entityId:`ID Entidad`,deviceType:`Tipo de dispositivo`,customName:`Nombre personalizado`,status:`Estado`,addMapping:`Añadir mapeo`,editMapping:`Editar mapeo`,deleteMapping:`Eliminar mapeo`,saved:`Mapeo guardado para {{entityId}}. Reinicia el bridge para aplicar los cambios.`,saveFailed:`No se pudo guardar el mapeo: {{error}}`,deleted:`Mapeo eliminado para {{entityId}}.`,deleteFailed:`No se pudo eliminar el mapeo.`,matterTag:`Etiqueta Matter`,exportProfile:`Exportar perfil de mapeo`,importProfile:`Importar perfil de mapeo`,profileName:`Nombre del perfil`,match:`Coincidencia`,existing:`Existente`,autoDetect:`Detección automática (predeterminado)`,customProductName:`Nombre de producto personalizado`,customProductNameHelp:`Sobrescribe el nombre del producto (modelo) reportado a los controladores Matter. Algunos controladores (ej. Aqara) muestran esto como el nombre del dispositivo.`,customVendorName:`Nombre de proveedor personalizado`,customVendorNameHelp:`Sobrescribe el nombre del proveedor/fabricante reportado a los controladores Matter.`,customSerialNumber:`Número de serie personalizado`,customSerialNumberHelp:`Sobrescribe el número de serie reportado a los controladores Matter.`,loadFailed:`No se pudieron cargar los mapeos de entidades`,noMappings:`No hay mapeos de entidades configurados. Use mapeos para sobrescribir tipos de dispositivos Matter, establecer nombres personalizados o deshabilitar entidades específicas.`,applying:`Aplicando...`,applyCount:`Aplicar {{count}} mapeo(s)`},notFound:{title:`Página no encontrada`,description:`La página que buscas no existe.`,backToDashboard:`Volver al panel de control`},devices:{title:`Dispositivos`,searchPlaceholder:`Buscar dispositivos...`,filterBridge:`Bridge`,allBridges:`Todos los bridges`,filterDeviceType:`Tipo de dispositivo`,allTypes:`Todos los tipos`,sortBy:`Ordenar por`,sortBridge:`Bridge`,sortType:`Tipo de dispositivo`,sortName:`Nombre`,deviceCount:`{{count}} dispositivo(s)`,filteredCount:`{{filtered}} de {{total}} dispositivos`},diagnostics:{title:`Diagnósticos en vivo`,stateUpdate:`Actualización de estado`,command:`Comando`,entityError:`Error`,sessionOpen:`Sesión abierta`,sessionClose:`Sesión cerrada`,subscription:`Suscripción`,bridgeStart:`Inicio de bridge`,bridgeStop:`Parada de bridge`,entityWarning:`Advertencia`,filterEvents:`Filtrar tipos de eventos`,clearEvents:`Borrar todos los eventos`,noEvents:`No hay eventos que coincidan con los filtros actuales.`},startup:{title:`Orden de inicio`,description:`Arrastra y suelta bridges para establecer el orden de inicio. Las posiciones más bajas se inician primero.`,saveSuccess:`Orden de inicio guardado correctamente`,saveFailed:`Error al guardar el orden de inicio`,saveChanges:`Guardar cambios`,unsavedChanges:`Tienes cambios sin guardar en el orden de inicio.`,noBridges:`No hay bridges configurados aún.`,saveOrder:`Guardar orden de inicio`},areaSetup:{title:`Configuración por área`,heading:`Configuración de bridge basada en áreas`,description:`Crea automáticamente un bridge por área de Home Assistant. Cada bridge incluirá todas las entidades compatibles de esa área.`,noAreas:`No se encontraron áreas con entidades compatibles en Home Assistant. Asegúrate de que tus dispositivos estén asignados a áreas en HA.`,selectController:`1. Seleccionar controlador (opcional)`,selectAreas:`2. Seleccionar áreas ({{selected}} de {{total}})`,clear:`Limpiar`,createBridges:`Crear {{count}} bridge(s)`,results:`Resultados`,goToBridges:`Ir a Bridges`,createdSuccess:`{{count}} bridge(s) creados correctamente`,createdPartial:`Creados {{succeeded}}, fallidos {{failed}} bridge(s)`,loadFailed:`Error al cargar las áreas`,creating:`Creando...`,created:`Creado`,unknownError:`Error desconocido`},lockCredentials:{title:`Credenciales de cerradura`,addCredential:`Añadir credencial`,editCredential:`Editar credencial`,lockEntityId:`ID de entidad de cerradura`,lockEntityHelperText:`El ID de entidad de Home Assistant de la cerradura`,pinCode:`Código PIN`,nameOptional:`Nombre (opcional)`,namePlaceholder:`Puerta principal`,nameHelperText:`Nombre descriptivo para esta credencial`,entityRequired:`El ID de entidad es obligatorio`,pinLength:`El PIN debe tener entre 4 y 8 dígitos`,pinDigitsOnly:`El PIN solo debe contener dígitos`,saveFailed:`Error al guardar`,loadFailed:`Error al cargar credenciales`,deleteFailed:`Error al eliminar`,updateFailed:`Error al actualizar`,enable:`Habilitar`,disable:`Deshabilitar`,confirmDeleteTitle:`Eliminar credencial`,confirmDeleteMessage:`Esto eliminará permanentemente la credencial PIN para {{entity}}. Esto no se puede deshacer.`},labels:{title:`Referencia de filtros`,info:`Explora todos los valores de filtro disponibles para la configuración de tu bridge. Haz clic en cualquier valor para copiarlo al portapapeles.`,searchPlaceholder:`Buscar...`,loadFailed:`Error al cargar datos`,labelsSection:`Etiquetas`,labelsHint:`Úsalo con el tipo de filtro "entity_label" o "device_label". Puedes usar el nombre de visualización o el label_id.`,noLabels:`No se encontraron etiquetas en Home Assistant. Crea etiquetas en Configuración > Etiquetas.`,displayName:`Nombre de visualización`,labelId:`label_id`,areaId:`area_id`,areasSection:`Áreas`,areasHint:`Úsalo con el tipo de filtro "area". Las áreas también se usan para la asignación automática de habitaciones en los controladores Matter.`,noAreas:`No se encontraron áreas en Home Assistant. Crea áreas en Configuración > Áreas.`,otherFilterValues:`Otros valores de filtro`,domains:`Dominios`,domainsHint:`Úsalo con el tipo de filtro "domain".`,platforms:`Plataformas / Integraciones`,platformsHint:`Úsalo con el tipo de filtro "platform".`,entityCategories:`Categorías de entidad`,entityCategoriesHint:`Úsalo con el tipo de filtro "entity_category".`,deviceClasses:`Clases de dispositivo`,deviceClassesHint:`Úsalo con el tipo de filtro "device_class".`,deviceNames:`Nombres de dispositivo`,deviceNamesHint:`Úsalo con el tipo de filtro "device_name".`,productNames:`Nombres de producto`,productNamesHint:`Úsalo con el tipo de filtro "product_name".`},logs:{title:`Registros del sistema`,logLevel:`Nivel de registro`,error:`Error`,warning:`Advertencia`,info:`Información`,debug:`Depuración`,searchPlaceholder:`Buscar registros...`,noResults:`No se encontraron registros`,autoRefresh:`Actualización automática`},backup:{title:`Copia de seguridad y restauración`,description:`Crea una copia de seguridad completa de tus bridges y mapeos de entidades, o restaura desde una copia de seguridad anterior.`,configBackup:`Copia de seguridad de configuración`,configBackupDesc:`Exportar configuraciones de bridge y mapeos de entidades.`,configBackupNote:`Los bridges deberán ser puestos en servicio nuevamente después de la restauración.`,fullBackup:`Copia de seguridad completa (con identidad)`,fullBackupDesc:`Incluye archivos de identidad de Matter (pares de claves, credenciales de fabric).`,fullBackupWarning:`Conserva el estado de puesta en servicio en las restauraciones. ¡NO COMPARTIR!`,restoreFromBackup:`Restaurar desde copia de seguridad`,restoreDesc:`Sube un archivo de copia de seguridad creado previamente para restaurar bridges y configuraciones.`,restoreTitle:`Restaurar copia de seguridad`,selectBridges:`Seleccionar bridges para restaurar`,overwriteExisting:`Sobrescribir bridges existentes`,includeMappings:`Incluir mapeos de entidades`,restoreIdentities:`Restaurar identidades Matter (no requiere nueva puesta en servicio)`,restore:`Restaurar`,downloadSuccess:`¡Copia de seguridad descargada correctamente!`,restartRequired:`Reinicio requerido`,restartMessage:`Los bridges han sido restaurados desde la copia de seguridad. Se requiere un reinicio para que los cambios surtan efecto.`,restartNote:`La aplicación se reiniciará y es posible que debas actualizar esta página.`,restartNow:`Reiniciar ahora`,storedBackups:`Copias de seguridad almacenadas`,createSnapshot:`Crear copia de seguridad`,noSnapshots:`No hay copias de seguridad almacenadas aún. Se crean automáticamente al apagar o se pueden crear manualmente.`,downloadSnapshot:`Descargar`,restoreSnapshot:`Restaurar`,auto:`Automático`,manual:`Manual`,snapshotCreated:`¡Copia de seguridad creada correctamente!`,snapshotRestored:`Restaurados {{bridges}} bridges, {{mappings}} mapeos, {{identities}} identidades.`,confirmRestore:`Confirmar restauración`,confirmRestoreMessage:`¿Estás seguro de que quieres restaurar desde "{{filename}}"? Esto sobrescribirá tu configuración actual.`,restoreWarning:`Todos los bridges y configuraciones existentes serán sobrescritos. Se requiere un reinicio después de la restauración.`,confirmDelete:`Eliminar copia de seguridad`,confirmDeleteMessage:`¿Estás seguro de que quieres eliminar "{{filename}}"? Esta acción no se puede deshacer.`,settings:`Configuración de copia de seguridad`,autoBackupLabel:`Copia de seguridad automática`,autoBackupDesc:`Crea automáticamente una copia de seguridad completa cuando la aplicación se apaga o reinicia.`,retentionCount:`Conservar copias de seguridad`,retentionCountDesc:`Número de copias de seguridad a conservar (las más antiguas se eliminan automáticamente)`},networkMap:{title:`Mapa de red`,hubLabel:`HAMH`,undoMove:`Deshacer último movimiento`,resetLayout:`Restablecer diseño`,refreshData:`Actualizar datos`,fullscreen:`Pantalla completa`,exitFullscreen:`Salir de pantalla completa`,legend:`Leyenda`,controller:`Controlador`,hub:`Hub HAMH`,bridge:`Bridge`,device:`Dispositivo`,failed:`Fallido`},updateChecker:{title:`Actualizaciones de software`,checkNow:`Comprobar ahora`,currentVersion:`Versión actual`,latestVersion:`Última versión`,updateAvailable:`¡Actualización disponible!`,upToDate:`Estás ejecutando la última versión.`,releaseNotes:`Notas de la versión`,notAvailable:`Comprobación de actualizaciones no disponible en esta versión`,checkFailed:`Error al comprobar actualizaciones`,unreachable:`No se puede acceder al servidor`,instructionAddon:`Actualiza en Configuración → Complementos en Home Assistant.`,instructionDocker:`Descarga la última imagen y vuelve a crear tu contenedor.`,instructionNpm:`Ejecuta: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Asistente de configuración de Bridge`,stepTemplate:`Plantilla`,stepController:`Controlador`,stepBridgeInfo:`Info del Bridge`,stepEntityFilter:`Filtro de entidades`,stepFeatureFlags:`Feature Flags`,stepReview:`Revisar y crear`,autoCompose:`Composición automática de dispositivos`,autoForceSyncFlag:`Sincronización forzada automática`,invertCover:`Invertir dirección de persiana`,invertCoverDescription:`Intercambia la dirección de abrir/cerrar para persianas. Usa esto si tus persianas muestran la posición incorrecta en los controladores Matter.`,includeHidden:`Incluir entidades ocultas`,includeHiddenDescription:`También expone entidades que están marcadas como ocultas en Home Assistant.`,bridgeName:`Nombre del Bridge`,portLabel:`Puerto`,portAutoAssign:`Asignado automáticamente al siguiente puerto disponible`,nameRequired:`Por favor, introduce un nombre para el bridge`,createFailed:`Error al crear el bridge`,bridgeInfoDescription:`Dale a tu bridge un nombre y un puerto.`,serverModeLabel:`Modo Servidor (para aspiradoras robot)`,serverModeTooltip:`Requerido para que las aspiradoras robot funcionen con Apple Home (Siri) y Alexa. Los bridges en Modo Servidor admiten solo UN dispositivo.`,entityFilterDescription:`Configura qué entidades deben incluirse en este bridge.`,includeAll:`Incluir todas las entidades (comodín)`,entityId:`ID de entidad`,includePattern:`Patrón de inclusión`,entityFilters:`Filtros de entidades`,serverModeEntityHint:`El Modo Servidor admite solo UN dispositivo. Introduce el ID exacto de la entidad (ej. vacuum.mi_aspiradora).`,templatePreConfigured:`Preconfigurado por plantilla. Edítalo en el editor completo después de la creación.`,wildcardHint:`Usa * para todo, o patrones como light.*, switch.*`,commaHint:`Introduce IDs de entidades específicos separados por comas`,excludePatterns:`Patrones de exclusión (opcional)`,excludeHelperText:`Patrones a excluir, separados por comas`,skipTemplate:`Omitir plantilla`,creating:`Creando...`,createBridge:`Crear Bridge`,searchRules:`Buscar reglas...`,templateDescription:`Elige una plantilla para empezar rápidamente, o omite para crear un bridge personalizado.`,controllerDescription:`¿Qué controlador Matter usarás? Esto optimiza los feature flags para tu controlador.`,controllerHint:`Siempre puedes ajustar los feature flags en los siguientes pasos o después de crear el bridge.`,templateApplied:`Plantilla "{{name}}" aplicada. Personaliza el nombre y el puerto a continuación.`,filterPreConfiguredFrom:`El filtro está preconfigurado desde la plantilla "{{name}}". Puedes ajustarlo a continuación.`,featureFlagsDescription:`Los feature flags controlan cómo se exponen los dispositivos a los controladores Matter.`,recommendedFlags:`Los flags recomendados para {{name}} están preseleccionados.`,selectFlags:`Selecciona los flags que coincidan con tu configuración.`,reviewDescription:`Revisa la configuración de tu bridge:`,bridgesToCreate:`Bridges a crear ({{count}})`,bridgesCreated:`{{count}} bridge(s) ya creados en esta sesión`,addAnother:`Añadir otro`},footer:{github:`GitHub`,documentation:`Documentación`,support:`Soporte`},languageSwitcher:{disclaimer:`Las traducciones pueden estar incompletas.`,contribute:`¡Ayuda a mejorarlas!`},translationEditor:{title:`Editor de traducciones`,editLanguage:`Idioma a editar`,info:`Edita traducciones directamente en tu navegador. Los cambios se guardan localmente y se aplican al instante. Exporta tus traducciones para enviarlas al proyecto.`,progress:`{{translated}} / {{total}} claves traducidas`,localEdits:`{{count}} edición(es) local(es)`,searchPlaceholder:`Buscar claves o valores...`,filterAll:`Todas las claves`,filterMissing:`Faltantes`,filterEdited:`Editadas`,exportJson:`Exportar JSON`,copyJson:`Copiar JSON`,copied:`¡Copiado!`,resetAll:`Restablecer todas las ediciones`,resetKey:`Restablecer al valor predeterminado`,noResults:`No se encontraron claves de traducción coincidentes.`,addLanguage:`Añadir idioma`,newLanguageCode:`Código de idioma (ej. pt, ja, ko)`,newLanguageName:`Nombre del idioma (ej. Português)`,addLanguageButton:`Añadir`,languageExists:`Este idioma ya existe.`,codeRequired:`El código de idioma es obligatorio.`,nameRequired:`El nombre del idioma es obligatorio.`,removeLanguage:`Eliminar idioma`,removeLanguageConfirm:`¿Eliminar el idioma personalizado "{{name}}"? Todas las ediciones locales para este idioma se perderán.`,importJson:`Importar JSON`,importSuccess:`{{count}} traducción(es) importada(s).`,importFailed:`Error en la importación: formato JSON inválido.`}},ys={common:{loading:`Chargement`,notFound:`Introuvable`,save:`Enregistrer`,cancel:`Annuler`,delete:`Supprimer`,edit:`Modifier`,close:`Fermer`,refresh:`Actualiser`,search:`Rechercher`,enabled:`Activé`,disabled:`Désactivé`,online:`En ligne`,offline:`Hors ligne`,running:`En cours`,stopped:`Arrêté`,failed:`Échoué`,starting:`Démarrage`,devices:`Appareils`,fabrics:`Fabrics`,port:`Port`,unknown:`Inconnu`,confirm:`Confirmer`,create:`Créer`,back:`Retour`,next:`Suivant`,actions:`Actions`,name:`Nom`,type:`Type`,error:`Erreur`,version:`Version`,copy:`Copier`,copied:`Copié !`,copyId:`Copier l'ID`,later:`Plus tard`,skip:`Passer`,reset:`Réinitialiser`,update:`Mettre à jour`,all:`Tous`,ascending:`Croissant`,descending:`Décroissant`,moveUp:`Monter`,moveDown:`Descendre`,selectAll:`Tout sélectionner`,selectNone:`Aucune sélection`,live:`En direct`,new:`Nouveau`,overwrite:`Écraser`,active:`Actif`,property:`Propriété`,value:`Valeur`,custom:`Personnalisé`,startAll:`Tout démarrer`,stopAll:`Tout arrêter`,restartAll:`Tout redémarrer`,import:`Importer`,export:`Exporter`,exportAll:`Tout exporter`,wizard:`Assistant`},nav:{bridges:`Bridges`,devices:`Tous les appareils`,health:`Santé & Diagnostics`,diagnostics:`Événements en direct`,settings:`Paramètres`,networkMap:`Carte réseau`,logs:`Journaux`,startupOrder:`Ordre de démarrage`,lockCredentials:`Identifiants verrou`,filterReference:`Référence des filtres`,systemLogs:`Journaux système`,lightMode:`Mode clair`,darkMode:`Mode sombre`},status:{error:`Erreur`,unhealthy:`Défaillant`,noBridges:`Aucun Bridge`,loadingHealth:`Chargement de l'état de santé...`,unknown:`Inconnu`},errorBoundary:{title:`Une erreur est survenue`,fallbackMessage:`Une erreur inattendue s'est produite.`,reload:`Recharger la page`},settings:{title:`Paramètres`,language:`Langue`,languageDescription:`Sélectionnez la langue de l'interface.`,checkUpdates:`Vérifier les mises à jour`,backupRestore:`Sauvegarde & Restauration`,exportBackup:`Exporter la sauvegarde`,importBackup:`Importer la sauvegarde`,dangerZone:`Zone dangereuse`,resetAll:`Tout réinitialiser`,about:`À propos`},dashboard:{title:`Tableau de bord`,systemOverview:`Vue d'ensemble du système`,quickActions:`Actions rapides`,bridgeOverview:`Vue d'ensemble des Bridges`,noBridges:`Aucun bridge configuré.`,createBridge:`Créer un Bridge`,viewAll:`Tout afficher`,totalDevices:`Total des appareils`,customize:`Personnaliser`,startAll:`Tout démarrer`,stopAll:`Tout arrêter`,restartAll:`Tout redémarrer`,welcome:`Bienvenue sur Home Assistant Matter Hub`,welcomeDescription:`Connectez vos appareils Home Assistant aux contrôleurs Matter comme Apple Home, Google Home et Amazon Alexa.`,bridgeWizard:`Assistant Bridge`,setupByArea:`Configurer par zone`,manualSetup:`Configuration manuelle`,areaSetup:`Configuration par zone`,documentation:`Documentation`,quickNavigation:`Navigation rapide`,haConnection:`Connexion HA`,startupOrder:`Ordre de démarrage`,lockCredentials:`Identifiants verrou`,filterReference:`Référence des filtres`,successMessage:`Vos bridges sont connectés à {{count}} fabric(s) contrôleur. Les appareils devraient maintenant apparaître dans votre application.`,noBridgesHint:`Aucun bridge configuré. Utilisez l'assistant ou créez-en un manuellement.`,customizeDashboard:`Personnaliser le tableau de bord`},bridge:{name:`Nom du Bridge`,port:`Port`,status:`Statut`,pairHint:`Associer ce bridge à votre contrôleur`,pairDescription:`Ouvrez votre application contrôleur (Apple Home, Google Home ou Amazon Alexa), ajoutez un nouvel accessoire et scannez le QR code ou entrez le code d'appairage manuel. Assurez-vous que votre contrôleur est sur le même réseau que Home Assistant.`,failedEntities:`Entités échouées`,serverModeRecommended:`Mode Serveur recommandé pour les aspirateurs robots`,serverModeDescription:`Ce bridge contient un aspirateur robot en mode ponté. Apple Home et Alexa afficheront le bridge comme appareil supplémentaire, créant des doublons. Activez le Mode Serveur pour exposer l'aspirateur comme appareil Matter autonome.`,enableServerMode:`Activer le Mode Serveur`,enabling:`Activation...`,start:`Démarrer`,stop:`Arrêter`,restart:`Redémarrer`,factoryReset:`Réinitialisation d'usine`,pairingCode:`Code d'appairage`,openCommissioning:`Ouvrir la fenêtre de mise en service`,multiPair:`Appairage Multi-Fabric`,deleteBridge:`Supprimer le Bridge`,deleteConfirm:`Êtes-vous sûr de vouloir supprimer ce bridge ?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} entité(s) n'ont pas pu être chargées.`,clickToShow:`Cliquez pour afficher les détails.`,clickToHide:`Cliquez pour masquer les détails.`,loadFailed:`Impossible de charger les détails du Bridge`,refreshHint:`Les nouveaux appareils et les changements de labels sont détectés toutes les 30 secondes.`,refreshingStates:`Actualisation dans {{seconds}} secondes...`,serverModeSingleDeviceNote:`Remarque : Le Mode Serveur nécessite que l'aspirateur soit le seul appareil sur ce bridge. Supprimez d'abord les autres entités, puis activez le Mode Serveur dans les paramètres du bridge.`,serverModeEnabled:`Mode Serveur activé. Le bridge va redémarrer avec votre aspirateur comme appareil autonome.`,serverModeEnableFailed:`Impossible d'activer le Mode Serveur : {{error}}`,pairing:`Appairage`,bridgeInfo:`Info Bridge`,commissioned:`Appairé`,addController:`Ajouter un autre contrôleur`,forceSync:`Forcer la synchronisation`,syncing:`Synchronisation...`,editFilters:`Modifier les filtres`,addFilters:`Ajouter des filtres`,bridgeNotRunning:`Le bridge ne fonctionne pas. Démarrez le bridge pour voir les informations d'appairage.`,manualCode:`Code manuel`,bridgeId:`ID Bridge`,passcode:`Code d'accès`,discriminator:`Discriminateur`,connectedFabrics:`Fabrics connectés ({{count}})`,noFabrics:`Aucun contrôleur connecté. Scannez le QR code avec votre contrôleur Matter.`,entityFilters:`Filtres d'entités`,noFilters:`Aucun filtre configuré. Toutes les entités prises en charge seront exposées.`,resetSuccess:`Bridge réinitialisé avec succès`,deleteSuccess:`Bridge supprimé avec succès`,confirmResetTitle:`Réinitialiser le Bridge`,confirmDeleteTitle:`Supprimer le Bridge`,importTitle:`Importer des Bridges`,overwriteExisting:`Écraser les bridges existants`,iconLabel:`Icône du Bridge`,google:`Google`,alexa:`Alexa`,serverMode:`Mode Serveur`,autoForceSync:`Synchronisation automatique`,saveSuccess:`Bridge enregistré`,updateSuccess:`Mise à jour terminée`,exportFailed:`Échec de l'export`,actionStarted:`Démarré`,actionStopped:`Arrêté`,actionRestarted:`Redémarré`,actionFailed:`{{action}} échoué`,actionResult:`{{label}} {{count}} bridge(s)`,couldNotLoad:`Impossible de charger les bridges`,showingFirst:`Affichage des {{count}} premiers`,importParseFailed:`Impossible d'analyser le fichier d'import. Veuillez sélectionner un fichier d'export valide.`,importing:`Importation...`,importCount:`Importer {{count}} bridge(s)`,jsonEditor:`Éditeur JSON`,formEditor:`Éditeur de formulaire`},endpoints:{title:`Points de terminaison`,searchPlaceholder:`Rechercher des endpoints...`,sortBy:`Trier`,sortName:`Nom`,sortEndpoint:`ID Endpoint`,sortType:`Type`,cardView:`Vue en cartes`,treeView:`Vue arborescente`,clusters:`Clusters`,entityUnavailable:`Entité indisponible`,showUnavailable:`Afficher {{count}} indisponibles`,showAll:`Afficher toutes les entités`,uploadImage:`Télécharger une image d'appareil`,removeImage:`Supprimer l'image personnalisée`,editMapping:`Modifier le mappage d'entité`,homeAssistantEntity:`Entité Home Assistant`,noEndpoints:`Aucun endpoint trouvé.`,expandAll:`Tout développer`,collapseAll:`Tout réduire`,viewAll:`Voir tous les appareils`,haState:`État HA`,aboutEndpoint:`À propos de cet endpoint`,entityId:`ID Entité`,customName:`Nom personnalisé`,deviceTypeOverride:`Remplacement du type d'appareil`,keyHaAttributes:`Attributs HA clés`,entityMappings:`Mappages d'entités`,copyData:`Copier les données dans le presse-papiers`,behavior:`Comportement`},health:{title:`Santé & Diagnostics`,version:`Version`,uptime:`Temps de fonctionnement`,homeAssistant:`Home Assistant`,connected:`Connecté`,disconnected:`Déconnecté`,bridgeStatus:`Statut des Bridges`,refreshHealth:`Actualiser les données de santé`,exportDiagnostic:`Exporter le diagnostic`,memory:`Mémoire`,fabricDetails:`Détails Fabric`,sessions:`Sessions`,subscriptions:`Abonnements`,noFabrics:`Aucun fabric connecté`,systemMetrics:`Métriques système`,heap:`Heap`,rss:`RSS`,external:`Externe`,systemHealth:`Santé du système`,fetchFailed:`Impossible de récupérer l'état de santé`,connectionError:`Erreur de connexion`,exportFailed:`Impossible d'exporter les données de diagnostic`,restartFailed:`Impossible de redémarrer le bridge`,unableToLoad:`Impossible de charger l'état de santé`,sortBy:`Trier par`,created:`Créé`,ascending:`Croissant`,descending:`Décroissant`,connectedTo:`Connecté à`,autoRecovery:`Récupération automatique`,recoveryAttempts:`Tentatives de récupération`},mapping:{title:`Mappages d'entités`,entityId:`ID Entité`,deviceType:`Type d'appareil`,customName:`Nom personnalisé`,status:`Statut`,addMapping:`Ajouter un mappage`,editMapping:`Modifier le mappage`,deleteMapping:`Supprimer le mappage`,saved:`Mappage enregistré pour {{entityId}}. Redémarrez le bridge pour appliquer les modifications.`,saveFailed:`Impossible d'enregistrer le mappage : {{error}}`,deleted:`Mappage supprimé pour {{entityId}}.`,deleteFailed:`Impossible de supprimer le mappage.`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},languageSwitcher:{disclaimer:`Les traductions peuvent être incomplètes.`,contribute:`Aidez à les améliorer !`},translationEditor:{title:`Éditeur de traductions`,editLanguage:`Langue à modifier`,info:`Modifiez les traductions directement dans votre navigateur. Les modifications sont enregistrées localement et appliquées instantanément. Exportez vos traductions pour les soumettre au projet.`,progress:`{{translated}} / {{total}} clés traduites`,localEdits:`{{count}} modification(s) locale(s)`,searchPlaceholder:`Rechercher des clés ou valeurs...`,filterAll:`Toutes les clés`,filterMissing:`Manquantes`,filterEdited:`Modifiées`,exportJson:`Exporter JSON`,copyJson:`Copier JSON`,copied:`Copié !`,resetAll:`Réinitialiser toutes les modifications`,resetKey:`Réinitialiser par défaut`,noResults:`Aucune clé de traduction correspondante trouvée.`,addLanguage:`Ajouter une langue`,newLanguageCode:`Code langue (ex. pt, ja, ko)`,newLanguageName:`Nom de la langue (ex. Português)`,addLanguageButton:`Ajouter`,languageExists:`Cette langue existe déjà.`,codeRequired:`Le code langue est requis.`,nameRequired:`Le nom de la langue est requis.`,removeLanguage:`Supprimer la langue`,importJson:`Importer JSON`,importSuccess:`{{count}} traduction(s) importée(s).`,importFailed:`Échec de l'import : format JSON invalide.`},notFound:{title:`Page introuvable`,description:`La page que vous recherchez n'existe pas.`,backToDashboard:`Retour au tableau de bord`},footer:{github:`GitHub`,documentation:`Documentation`}},bs={common:{loading:`Betöltés`,notFound:`Nem található`,save:`Mentés`,cancel:`Mégse`,delete:`Törlés`,edit:`Szerkesztés`,close:`Bezárás`,refresh:`Frissítés`,search:`Keresés`,enabled:`Engedélyezve`,disabled:`Letiltva`,online:`Online`,offline:`Offline`,running:`Fut`,stopped:`Leállítva`,failed:`Sikertelen`,starting:`Indítás`,devices:`Eszközök`,fabrics:`Fabricok`,port:`Port`,unknown:`Ismeretlen`,confirm:`Megerősítés`,create:`Létrehozás`,back:`Vissza`,next:`Tovább`,actions:`Műveletek`,name:`Név`,type:`Típus`,error:`Hiba`,version:`Verzió`,copy:`Másolás`,copied:`Másolva!`,copyId:`Azonosító másolása`,later:`Később`,skip:`Kihagyás`,reset:`Visszaállítás`,update:`Frissítés`,all:`Összes`,ascending:`Növekvő`,descending:`Csökkenő`,moveUp:`Mozgatás felfelé`,moveDown:`Mozgatás lefelé`,selectAll:`Összes kijelölése`,selectNone:`Kijelölés megszüntetése`,live:`Élő`,new:`Új`,overwrite:`Felülírás`,active:`Aktív`,property:`Tulajdonság`,value:`Érték`,custom:`Egyéni`,startAll:`Összes indítása`,stopAll:`Összes leállítása`,restartAll:`Összes újraindítása`,import:`Importálás`,export:`Exportálás`,exportAll:`Összes exportálása`,wizard:`Varázsló`},nav:{bridges:`Bridge-ek`,devices:`Összes eszköz`,standaloneDevices:`Önálló eszközök`,health:`Állapot és diagnosztika`,diagnostics:`Élő események`,settings:`Beállítások`,networkMap:`Hálózati térkép`,logs:`Naplók`,startupOrder:`Indítási sorrend`,lockCredentials:`Zár hitelesítő adatok`,filterReference:`Szűrő referencia`,systemLogs:`Rendszernaplók`,lightMode:`Világos mód`,darkMode:`Sötét mód`},standaloneDevices:{title:`Önálló eszközök`,subtitle:`Minden eszköz saját Matter csomóponton fut, saját párosítási kóddal, nem pedig egy bridge-en belül.`,create:`Eszköz hozzáadása`,name:`Név`,entity:`Entitás`,entityHelp:`Pontosan egy entitás jelenik meg ennél az eszköznél.`,creating:`Létrehozás`,empty:`Még nincsenek önálló eszközök. Adjon hozzá egyet, hogy egyetlen entitást saját Matter eszközként tegyen elérhetővé.`,noEntity:`nincs entitás`,openBridge:`Részletek és párosítás megnyitása`,created:`Önálló eszköz létrehozva`,createFailed:`Az eszközt nem sikerült létrehozni`,deleted:`Önálló eszköz törölve`,deleteFailed:`Az eszközt nem sikerült törölni`},status:{error:`Hiba`,unhealthy:`Nem megfelelő`,noBridges:`Nincs Bridge`,loadingHealth:`Állapot betöltése...`,unknown:`Ismeretlen`},errorBoundary:{title:`Valami hiba történt`,fallbackMessage:`Váratlan hiba történt.`,reload:`Oldal újratöltése`},settings:{title:`Beállítások`,language:`Nyelv`,languageDescription:`Válassza ki a felület nyelvét.`,checkUpdates:`Frissítések keresése`,backupRestore:`Mentés és visszaállítás`,exportBackup:`Mentés exportálása`,importBackup:`Mentés importálása`,dangerZone:`Veszélyes műveletek`,resetAll:`Összes visszaállítása`,about:`Névjegy`,username:`Felhasználónév`,password:`Jelszó`,enterNewPassword:`Adja meg az új jelszót`,enableAuth:`Hitelesítés engedélyezése`,disableAuth:`Hitelesítés letiltása`,disableAuthMessage:`Ez eltávolítja a jelszavas védelmet a webes felületről. A hálózaton bárki hozzáférhet a bridge konfigurációjához és módosíthatja azt.`,disableAuthConfirm:`Hitelesítés letiltása`,usernamePasswordRequired:`A felhasználónév és a jelszó megadása kötelező`,authSaveFailed:`A hitelesítési beállítások mentése nem sikerült`,authLoadFailed:`A hitelesítési beállítások betöltése nem sikerült`,authDisabled:`Hitelesítés letiltva.`,authRemoveFailed:`A hitelesítési beállítások eltávolítása nem sikerült`},dashboard:{title:`Irányítópult`,systemOverview:`Rendszer áttekintése`,quickActions:`Gyors műveletek`,bridgeOverview:`Bridge áttekintés`,noBridges:`Még nincsenek bridge-ek konfigurálva.`,createBridge:`Bridge létrehozása`,viewAll:`Összes megtekintése`,totalDevices:`Eszközök száma`,customize:`Testreszabás`,startAll:`Összes indítása`,stopAll:`Összes leállítása`,restartAll:`Összes újraindítása`,welcome:`Üdvözli a Home Assistant Matter Hub`,welcomeDescription:`Csatlakoztassa Home Assistant eszközeit Matter vezérlőkhöz, mint az Apple Home, Google Home és Amazon Alexa.`,bridgeWizard:`Bridge varázsló`,setupByArea:`Beállítás terület szerint`,manualSetup:`Kézi beállítás`,areaSetup:`Terület beállítása`,documentation:`Dokumentáció`,quickNavigation:`Gyors navigáció`,haConnection:`HA kapcsolat`,startupOrder:`Indítási sorrend`,lockCredentials:`Hitelesítő adatok zárolása`,filterReference:`Szűrő referencia`,successMessage:`A bridge-ek {{count}} vezérlő fabric-hoz csatlakoznak. Az eszközöknek mostantól meg kell jelenniük a vezérlő alkalmazásában.`,noBridgesHint:`Még nincsenek bridge-ek konfigurálva. Használja a Bridge varázslót, vagy hozzon létre egyet kézzel.`,customizeDashboard:`Irányítópult testreszabása`,bridgeStatusRunning:`{{running}} fut`,bridgeStatusFailed:`{{failed}} sikertelen`,devicesFailed:`{{count}} sikertelen`,uptimeFormat:`{{time}}`},bridge:{name:`Bridge neve`,port:`Port`,status:`Állapot`,pairHint:`Párosítsa ezt a Bridge-et a vezérlőjével`,pairDescription:`Nyissa meg a vezérlő alkalmazását (Apple Home, Google Home vagy Amazon Alexa), adjon hozzá egy új tartozékot, majd olvassa be az alábbi QR-kódot vagy adja meg a kézi párosítási kódot. Győződjön meg róla, hogy a vezérlő ugyanazon a hálózaton van, mint a Home Assistant.`,failedEntities:`Sikertelen entitások`,serverModeRecommended:`Server Mode ajánlott robotporszívókhoz`,serverModeDescription:`Ez a Bridge egy robotporszívót tartalmaz Bridge módban. Az Apple Home és az Alexa a Bridge-et további eszközként jeleníti meg, ami duplikált bejegyzéseket eredményez. Engedélyezze a Server Mode-ot, hogy a porszívót önálló Matter eszközként tegye elérhetővé, a teljes Siri/Alexa hangvezérlés támogatásával és duplikációk nélkül.`,enableServerMode:`Server Mode engedélyezése`,enabling:`Engedélyezés...`,start:`Indítás`,stop:`Leállítás`,restart:`Újraindítás`,factoryReset:`Gyári visszaállítás`,pairingCode:`Párosítási kód`,openCommissioning:`Üzembe helyezési ablak megnyitása`,multiPair:`Több-Fabric párosítás`,deleteBridge:`Bridge törlése`,deleteConfirm:`Biztosan törli ezt a Bridge-et?`,featureFlags:`Funkciójelzők`,failedEntitiesCount:`{{count}} entitást nem sikerült betölteni.`,clickToShow:`Kattintson a részletek megjelenítéséhez.`,clickToHide:`Kattintson a részletek elrejtéséhez.`,loadFailed:`Nem sikerült betölteni a Bridge részleteit`,refreshHint:`Az új eszközöket és a címkék változásait 30 másodpercenként észleli a rendszer.`,refreshingStates:`Állapotok frissítése {{seconds}} másodperc múlva...`,serverModeSingleDeviceNote:`Megjegyzés: a Server Mode megköveteli, hogy a porszívó legyen az egyetlen eszköz ezen a Bridge-en. Először távolítsa el a többi entitást erről a Bridge-ről, majd engedélyezze a Server Mode-ot a Bridge beállításaiban.`,serverModeEnabled:`Server Mode engedélyezve. A Bridge újraindul, a porszívóval mint önálló eszközzel.`,serverModeEnableFailed:`Nem sikerült engedélyezni a Server Mode-ot: {{error}}`,pairing:`Párosítás`,bridgeInfo:`Bridge információ`,commissioned:`Üzembe helyezve`,addController:`Másik vezérlő hozzáadása`,openingCommissioning:`Üzembe helyezési ablak megnyitása...`,fabricTooltip:`A Fabric egy Matter vezérlővel (pl. Apple Home, Google Home, Alexa) létesített kapcsolatot jelöl. Minden vezérlő egy Fabric-et hoz létre párosításkor.`,forceSync:`Kényszerített szinkronizálás`,syncing:`Szinkronizálás...`,forceSyncTooltip:`Az összes jelenlegi eszközállapot leküldése a csatlakoztatott vezérlőkhöz`,editFilters:`Szűrők szerkesztése`,addFilters:`Szűrők hozzáadása`,bridgeNotRunning:`A Bridge nem fut. Indítsa el a Bridge-et a párosítási információk megtekintéséhez.`,manualCode:`Kézi kód`,openingWindow:`Üzembe helyezési ablak megnyitása...`,bridgeId:`Bridge azonosító`,passcode:`Jelszó`,discriminator:`Diszkriminátor`,connectedFabrics:`Csatlakoztatott Fabric-ek ({{count}})`,noFabrics:`Még nincs csatlakoztatott vezérlő. Olvassa be a QR-kódot a Matter vezérlőjével a Bridge párosításához.`,entityFilters:`Entitásszűrők`,noFilters:`Nincsenek beállított szűrők. Az összes támogatott entitás elérhető lesz.`,scanQrCode:`Olvassa be ezt a QR-kódot a Matter vezérlőjével (Apple Home, Google Home, Alexa stb.), hogy hozzáadja ezt a Bridge-et egy másik ökoszisztémához.`,appleHomeWarning:`Ez a Bridge Extended Flat módot használ. Csak akkor tiltsa le, ha kizárólag Apple Home-ot használ.`,googleHomeWarning:`Ez problémákat okozhat az Apple Home és a Google Home esetén.`,resetSuccess:`A Bridge sikeresen visszaállítva`,deleteSuccess:`A Bridge sikeresen törölve`,confirmResetTitle:`Bridge gyári visszaállítása`,confirmResetMessage:`Ez eltávolítja az összes párosítási információt, és visszaállítja a Bridge-et a kezdeti állapotába. A csatlakoztatott vezérlők elveszítik a hozzáférést. Ez nem vonható vissza.`,confirmDeleteTitle:`Bridge törlése`,confirmDeleteMessage:`Ez véglegesen törli a Bridge-et, az összes párosítását és entitás-hozzárendelését. A csatlakoztatott vezérlők elveszítik a hozzáférést. Ez nem vonható vissza.`,importTitle:`Bridge-ek importálása`,overwriteExisting:`Meglévő Bridge-ek felülírása`,iconLabel:`Bridge ikon`,google:`Google`,alexa:`Alexa`,serverMode:`Server Mode`,autoForceSync:`Automatikus kényszerített szinkronizálás`,saveSuccess:`Bridge mentve`,updateSuccess:`Frissítés befejezve`,exportFailed:`Az exportálás sikertelen`,actionStarted:`Elindítva`,actionStopped:`Leállítva`,actionRestarted:`Újraindítva`,actionFailed:`{{action}} sikertelen`,actionResult:`{{label}} {{count}} Bridge`,couldNotLoad:`Nem sikerült betölteni a Bridge-eket`,showingFirst:`Első {{count}} megjelenítése`,importParseFailed:`Az importálási fájl feldolgozása sikertelen. Válasszon érvényes exportfájlt.`,importing:`Importálás...`,importCount:`{{count}} Bridge importálása`,jsonEditor:`JSON-szerkesztő`,formEditor:`Űrlapszerkesztő`},endpoints:{title:`Endpointok`,searchPlaceholder:`Endpointok keresése...`,sortBy:`Rendezés`,sortName:`Név`,sortEndpoint:`Endpoint azonosító`,sortType:`Típus`,cardView:`Kártyanézet`,treeView:`Fanézet`,clusters:`Klaszterek`,entityUnavailable:`Az entitás nem érhető el`,showUnavailable:`{{count}} nem elérhető megjelenítése`,showAll:`Összes entitás megjelenítése`,uploadImage:`Eszközkép feltöltése`,removeImage:`Egyéni kép eltávolítása`,editMapping:`Entitás-hozzárendelés szerkesztése`,homeAssistantEntity:`Home Assistant entitás`,noEndpoints:`Nem található endpoint.`,expandAll:`Összes kibontása`,collapseAll:`Összes összecsukása`,viewAll:`Összes eszköz megtekintése`,haState:`HA állapot`,aboutEndpoint:`Erről az endpointról`,entityId:`Entitásazonosító`,customName:`Egyéni név`,deviceTypeOverride:`Eszköztípus felülbírálása`,keyHaAttributes:`Fő HA attribútumok`,entityMappings:`Entitás-hozzárendelések`,copyData:`Adatok másolása a vágólapra`,behavior:`Viselkedés`},health:{title:`Állapot és diagnosztika`,version:`Verzió`,uptime:`Üzemidő`,homeAssistant:`Home Assistant`,connected:`Csatlakoztatva`,disconnected:`Leválasztva`,bridgeStatus:`Bridge állapota`,refreshHealth:`Állapotadatok frissítése`,exportDiagnostic:`Diagnosztika exportálása`,memory:`Memória`,fabricDetails:`Fabric részletei`,sessions:`Munkamenetek`,subscriptions:`Feliratkozások`,noFabrics:`Nincs csatlakoztatott Fabric`,systemMetrics:`Rendszermetrikák`,heap:`Heap`,rss:`RSS`,external:`Külső`,systemHealth:`Rendszerállapot`,fetchFailed:`Az állapot lekérése sikertelen`,connectionError:`Kapcsolódási hiba`,exportFailed:`A diagnosztikai adatok exportálása sikertelen`,restartFailed:`A Bridge újraindítása sikertelen`,unableToLoad:`Az állapot nem tölthető be`,sortBy:`Rendezés`,created:`Létrehozva`,ascending:`Növekvő`,descending:`Csökkenő`,connectedTo:`Csatlakoztatva ehhez:`,autoRecovery:`Automatikus helyreállítás`,recoveryAttempts:`Helyreállítási kísérletek`,fabrics:`Fabric`,networkDiagnostics:`Hálózati diagnosztika`,checksPassed:`sikeres`,checksWarning:`figyelmeztetés`,checksFailed:`sikertelen`,hideDetails:`Részletek elrejtése`,showDetails:`Részletek megjelenítése`,allChecks:`Összes ellenőrzés`,check:`Ellenőrzés`,statusLabel:`Állapot`,message:`Üzenet`,networkInterfaces:`Hálózati interfészek`,interfaceName:`Interfész`,refresh:`Frissítés`},mapping:{title:`Entitás-hozzárendelések`,entityId:`Entitásazonosító`,deviceType:`Eszköztípus`,customName:`Egyéni név`,status:`Állapot`,addMapping:`Hozzárendelés hozzáadása`,editMapping:`Hozzárendelés szerkesztése`,deleteMapping:`Hozzárendelés törlése`,saved:`Hozzárendelés mentve a következőhöz: {{entityId}}. A módosítások alkalmazásához indítsa újra a Bridge-et.`,saveFailed:`Nem sikerült menteni a hozzárendelést: {{error}}`,deleted:`Hozzárendelés törölve a következőhöz: {{entityId}}.`,deleteFailed:`Nem sikerült törölni a hozzárendelést.`,matterTag:`Matter címke`,exportProfile:`Hozzárendelési profil exportálása`,importProfile:`Hozzárendelési profil importálása`,profileName:`Profil neve`,match:`Egyezés`,existing:`Meglévő`,autoDetect:`Automatikus felismerés (alapértelmezett)`,customProductName:`Egyéni terméknév`,customProductNameHelp:`Felülírja a Matter vezérlőknek jelentett terméknevet (modell). Egyes vezérlők (pl. Aqara) ezt az eszköz neveként jelenítik meg.`,customVendorName:`Egyéni gyártónév`,customVendorNameHelp:`Felülírja a Matter vezérlőknek jelentett gyártó/szállító nevet.`,customSerialNumber:`Egyéni sorozatszám`,customSerialNumberHelp:`Felülírja a Matter vezérlőknek jelentett sorozatszámot.`,customVendorId:`Egyéni gyártóazonosító`,customVendorIdHelp:`Felülírja a numerikus Matter gyártóazonosítót (pl. 0x115F az Aqara esetén). Csak Bridge módban. Tartomány: 1..0xFFFE.`,loadFailed:`Nem sikerült betölteni az entitás-hozzárendeléseket`,noMappings:`Nincsenek beállítva egyéni entitás-hozzárendelések. A hozzárendelésekkel felülírhatja a Matter eszköztípusokat, egyéni neveket állíthat be, vagy letilthat bizonyos entitásokat.`,applying:`Alkalmazás...`,applyCount:`{{count}} hozzárendelés alkalmazása`},notFound:{title:`Az oldal nem található`,description:`A keresett oldal nem létezik.`,backToDashboard:`Vissza az irányítópultra`},devices:{title:`Eszközök`,searchPlaceholder:`Eszközök keresése...`,filterBridge:`Bridge`,allBridges:`Összes Bridge`,filterDeviceType:`Eszköztípus`,allTypes:`Összes típus`,sortBy:`Rendezés`,sortBridge:`Bridge`,sortType:`Eszköztípus`,sortName:`Név`,deviceCount:`{{count}} eszköz`,filteredCount:`{{total}} eszközből {{filtered}}`},diagnostics:{title:`Élő diagnosztika`,stateUpdate:`Állapotfrissítés`,command:`Parancs`,entityError:`Hiba`,sessionOpen:`Munkamenet megnyitva`,sessionClose:`Munkamenet lezárva`,subscription:`Feliratkozás`,bridgeStart:`Bridge indítása`,bridgeStop:`Bridge leállítása`,entityWarning:`Figyelmeztetés`,filterEvents:`Eseménytípusok szűrése`,clearEvents:`Összes esemény törlése`,noEvents:`Egyetlen esemény sem felel meg a jelenlegi szűrőknek.`},startup:{title:`Indítási sorrend`,description:`Húzza át a Bridge-eket az indítási sorrend beállításához. Az alacsonyabb pozíciók indulnak előbb.`,saveSuccess:`Az indítási sorrend sikeresen mentve`,saveFailed:`Nem sikerült menteni az indítási sorrendet`,saveChanges:`Módosítások mentése`,unsavedChanges:`Mentetlen módosításai vannak az indítási sorrenden.`,noBridges:`Még nincsenek Bridge-ek beállítva.`,saveOrder:`Indítási sorrend mentése`},areaSetup:{title:`Terület beállítása`,heading:`Terület alapú Bridge beállítás`,description:`Automatikusan létrehoz egy Bridge-et minden Home Assistant területhez. Minden Bridge tartalmazza az adott terület összes támogatott entitását.`,noAreas:`Nem található támogatott entitásokkal rendelkező terület a Home Assistant rendszerben. Győződj meg róla, hogy az eszközök hozzá vannak rendelve területekhez a HA-ban.`,selectController:`1. Vezérlő kiválasztása (opcionális)`,selectAreas:`2. Területek kiválasztása ({{selected}} / {{total}})`,clear:`Törlés`,createBridges:`{{count}} Bridge létrehozása`,results:`Eredmények`,goToBridges:`Ugrás a Bridge-ekhez`,createdSuccess:`{{count}} Bridge sikeresen létrehozva`,createdPartial:`{{succeeded}} létrehozva, {{failed}} Bridge sikertelen`,loadFailed:`A területek betöltése sikertelen`,creating:`Létrehozás...`,created:`Létrehozva`,unknownError:`Ismeretlen hiba`},lockCredentials:{title:`Zár hitelesítő adatok`,addCredential:`Zár hitelesítő adat hozzáadása`,editCredential:`Zár hitelesítő adat szerkesztése`,lockEntityId:`Zár entitás azonosító`,lockEntityHelperText:`A zár Home Assistant entitás azonosítója`,pinCode:`PIN-kód`,nameOptional:`Név (opcionális)`,namePlaceholder:`Bejárati ajtó`,nameHelperText:`Barátságos név ehhez a hitelesítő adathoz`,entityRequired:`Az entitás azonosító kötelező`,pinLength:`A PIN-kódnak 4-8 számjegyűnek kell lennie`,pinDigitsOnly:`A PIN-kód csak számjegyeket tartalmazhat`,saveFailed:`A mentés sikertelen`,loadFailed:`A hitelesítő adatok betöltése sikertelen`,deleteFailed:`A törlés sikertelen`,updateFailed:`A frissítés sikertelen`,enable:`Engedélyezés`,disable:`Letiltás`,confirmDeleteTitle:`Hitelesítő adat törlése`,confirmDeleteMessage:`Ez véglegesen törli a(z) {{entity}} PIN-kód hitelesítő adatát. Ez nem vonható vissza.`},labels:{title:`Szűrő referencia`,info:`Böngészd a Bridge konfigurációhoz elérhető összes szűrőértéket. Kattints bármelyik értékre a vágólapra másoláshoz.`,searchPlaceholder:`Keresés...`,loadFailed:`Az adatok betöltése sikertelen`,labelsSection:`Címkék`,labelsHint:`Használd az "entity_label" vagy "device_label" szűrőtípussal. Használhatod a megjelenített nevet vagy a label_id értéket is.`,noLabels:`Nem található címke a Home Assistant rendszerben. Hozz létre címkéket a Beállítások > Címkék menüben.`,displayName:`Megjelenített név`,labelId:`label_id`,areaId:`area_id`,areasSection:`Területek`,areasHint:`Használd az "area" szűrőtípussal. A területeket az automatikus szobahozzárendeléshez is használják a Matter vezérlőkben.`,noAreas:`Nem található terület a Home Assistant rendszerben. Hozz létre területeket a Beállítások > Területek menüben.`,otherFilterValues:`Egyéb szűrőértékek`,domains:`Domainek`,domainsHint:`Használd a "domain" szűrőtípussal.`,platforms:`Platformok / integrációk`,platformsHint:`Használd a "platform" szűrőtípussal.`,entityCategories:`Entitáskategóriák`,entityCategoriesHint:`Használd az "entity_category" szűrőtípussal.`,deviceClasses:`Eszközosztályok`,deviceClassesHint:`Használd a "device_class" szűrőtípussal.`,deviceNames:`Eszköznevek`,deviceNamesHint:`Használd a "device_name" szűrőtípussal.`,productNames:`Terméknevek`,productNamesHint:`Használd a "product_name" szűrőtípussal.`},logs:{title:`Rendszernaplók`,logLevel:`Naplózási szint`,error:`Hiba`,warning:`Figyelmeztetés`,info:`Információ`,debug:`Hibakeresés`,searchPlaceholder:`Naplók keresése...`,noResults:`Nem található napló`,autoRefresh:`Automatikus frissítés`},backup:{title:`Biztonsági mentés és visszaállítás`,description:`Készíts teljes biztonsági mentést a Bridge-ekről és az entitás-hozzárendelésekről, vagy állítsd vissza egy korábbi mentésből.`,configBackup:`Konfiguráció mentése`,configBackupDesc:`Bridge konfigurációk és entitás-hozzárendelések exportálása.`,configBackupNote:`A Bridge-eket a visszaállítás után újra párosítani kell.`,fullBackup:`Teljes biztonsági mentés (identitással)`,fullBackupDesc:`Tartalmazza a Matter identitásfájlokat (kulcspárok, fabric hitelesítő adatok).`,fullBackupWarning:`Megőrzi a párosítási állapotot a visszaállítások során. NE OSZD MEG!`,restoreFromBackup:`Visszaállítás biztonsági mentésből`,restoreDesc:`Tölts fel egy korábban létrehozott mentésfájlt a Bridge-ek és konfigurációk visszaállításához.`,restoreTitle:`Mentés visszaállítása`,selectBridges:`Válaszd ki a visszaállítandó Bridge-eket`,overwriteExisting:`Meglévő Bridge-ek felülírása`,includeMappings:`Entitás-hozzárendelések belefoglalása`,restoreIdentities:`Matter identitások visszaállítása (nincs szükség újrapárosításra)`,restore:`Visszaállítás`,downloadSuccess:`A biztonsági mentés sikeresen letöltve!`,restartRequired:`Újraindítás szükséges`,restartMessage:`A Bridge-ek visszaállítása megtörtént a mentésből. A változások érvénybe lépéséhez újraindítás szükséges.`,restartNote:`Az alkalmazás újraindul, és előfordulhat, hogy frissítened kell ezt az oldalt.`,restartNow:`Újraindítás most`,storedBackups:`Tárolt biztonsági mentések`,createSnapshot:`Biztonsági mentés létrehozása`,noSnapshots:`Még nincsenek tárolt biztonsági mentések. A mentések leállításkor automatikusan vagy manuálisan hozhatók létre.`,downloadSnapshot:`Letöltés`,restoreSnapshot:`Visszaállítás`,auto:`Automatikus`,manual:`Manuális`,snapshotCreated:`A biztonsági mentés sikeresen létrejött!`,snapshotRestored:`{{bridges}} Bridge, {{mappings}} hozzárendelés, {{identities}} identitás visszaállítva.`,confirmRestore:`Visszaállítás megerősítése`,confirmRestoreMessage:`Biztosan vissza szeretnél állítani a következőből: "{{filename}}"? Ez felülírja a jelenlegi konfigurációdat.`,restoreWarning:`Az összes meglévő Bridge és konfiguráció felülíródik. A visszaállítás után újraindítás szükséges.`,confirmDelete:`Biztonsági mentés törlése`,confirmDeleteMessage:`Biztosan törölni szeretnéd a következőt: "{{filename}}"? Ez a művelet nem vonható vissza.`,settings:`Biztonsági mentés beállításai`,autoBackupLabel:`Automatikus biztonsági mentés`,autoBackupDesc:`Automatikusan teljes biztonsági mentés készítése az alkalmazás leállásakor vagy újraindításakor.`,retentionCount:`Mentések megtartása`,retentionCountDesc:`A megtartandó mentések száma (a legrégebbiek automatikusan törlődnek)`},networkMap:{title:`Hálózati térkép`,hubLabel:`HAMH`,undoMove:`Utolsó mozgatás visszavonása`,resetLayout:`Elrendezés visszaállítása`,refreshData:`Adatok frissítése`,fullscreen:`Teljes képernyő`,exitFullscreen:`Kilépés a teljes képernyőből`,legend:`Jelmagyarázat`,controller:`Vezérlő`,hub:`HAMH Hub`,bridge:`Bridge`,device:`Eszköz`,failed:`Sikertelen`},updateChecker:{title:`Szoftverfrissítések`,checkNow:`Ellenőrzés most`,currentVersion:`Jelenlegi verzió`,latestVersion:`Legújabb verzió`,updateAvailable:`Frissítés érhető el!`,upToDate:`A legújabb verziót használod.`,releaseNotes:`Kiadási megjegyzések`,notAvailable:`A frissítésellenőrzés nem érhető el ebben a verzióban`,checkFailed:`A frissítések ellenőrzése sikertelen`,unreachable:`A kiszolgáló nem érhető el`,instructionAddon:`Frissítés a Home Assistant Beállítások → Bővítmények menüpontban.`,instructionDocker:`Töltsd le a legújabb image-et, és hozd létre újra a konténert.`,instructionNpm:`Futtasd: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Bridge beállítási varázsló`,stepTemplate:`Sablon`,stepController:`Vezérlő`,stepBridgeInfo:`Bridge adatai`,stepEntityFilter:`Entitásszűrő`,stepFeatureFlags:`Funkciókapcsolók`,stepReview:`Áttekintés és létrehozás`,autoCompose:`Eszközök automatikus összeállítása`,autoForceSyncFlag:`Automatikus kényszerített szinkronizálás`,invertCover:`Árnyékoló irányának megfordítása`,invertCoverDescription:`Felcseréli a nyitás/zárás irányt az árnyékolóknál. Használd ezt, ha az árnyékolóid rossz pozíciót mutatnak a Matter vezérlőkben.`,includeHidden:`Rejtett entitások belefoglalása`,includeHiddenDescription:`A Home Assistantban rejtettként megjelölt entitások is megjelenjenek.`,bridgeName:`Bridge neve`,portLabel:`Port`,portAutoAssign:`Automatikusan a következő szabad portra rendelve`,nameRequired:`Adjon meg egy Bridge nevet`,createFailed:`Nem sikerült létrehozni a Bridge-et`,bridgeInfoDescription:`Adjon nevet és portot a Bridge-nek.`,serverModeLabel:`Server Mode (robotporszívókhoz)`,serverModeTooltip:`Szükséges ahhoz, hogy a robotporszívók működjenek az Apple Home (Siri) és az Alexa rendszerrel. A Server Mode Bridge-ek csak EGY eszközt támogatnak.`,entityFilterDescription:`Állítsa be, mely entitások szerepeljenek ebben a Bridge-ben.`,includeAll:`Minden entitás belefoglalása (helyettesítő karakter)`,entityId:`Entitásazonosító`,includePattern:`Belefoglalási minta`,entityFilters:`Entitásszűrők`,serverModeEntityHint:`A Server Mode csak EGY eszközt támogat. Adja meg a pontos entitásazonosítót (pl. vacuum.my_vacuum).`,templatePreConfigured:`Sablon által előre beállítva. Létrehozás után szerkesztheti a teljes szerkesztőben.`,wildcardHint:`Használja a * karaktert mindenhez, vagy mintákat, mint light.*, switch.*`,commaHint:`Adjon meg konkrét entitásazonosítókat vesszővel elválasztva`,excludePatterns:`Kizárási minták (opcionális)`,excludeHelperText:`Kizárandó minták, vesszővel elválasztva`,skipTemplate:`Sablon kihagyása`,creating:`Létrehozás...`,createBridge:`Bridge létrehozása`,searchRules:`Szabályok keresése...`,templateDescription:`Válasszon sablont a gyors kezdéshez, vagy hagyja ki egyéni Bridge létrehozásához.`,controllerDescription:`Melyik Matter vezérlőt fogja használni? Ez optimalizálja a funkciójelzőket a vezérlőhöz.`,controllerHint:`A funkciójelzőket bármikor módosíthatja a következő lépésekben vagy a Bridge létrehozása után.`,templateApplied:`A(z) "{{name}}" sablon alkalmazva. Testreszabhatja a nevet és a portot lent.`,filterPreConfiguredFrom:`A szűrő a(z) "{{name}}" sablonból van előre beállítva. Lent módosíthatja.`,featureFlagsDescription:`A funkciójelzők szabályozzák, hogyan jelennek meg az eszközök a Matter vezérlők számára.`,recommendedFlags:`A(z) {{name}} ajánlott jelzői előre kiválasztva.`,selectFlags:`Válassza ki a beállításának megfelelő jelzőket.`,reviewDescription:`Tekintse át a Bridge konfigurációját:`,bridgesToCreate:`Létrehozandó Bridge-ek ({{count}})`,bridgesCreated:`{{count}} Bridge már létrehozva ebben a munkamenetben`,addAnother:`Másik hozzáadása`},footer:{github:`GitHub`,documentation:`Dokumentáció`,support:`Támogatás`},languageSwitcher:{disclaimer:`A fordítások hiányosak lehetnek.`,contribute:`Segítsen javítani rajtuk!`},translationEditor:{title:`Fordításszerkesztő`,editLanguage:`Nyelv szerkesztése`,info:`Szerkessze a fordításokat közvetlenül a böngészőben. A módosítások helyileg mentődnek és azonnal érvénybe lépnek. Exportálja a fordításokat, hogy beküldhesse őket a projektbe.`,progress:`{{translated}} / {{total}} kulcs lefordítva`,localEdits:`{{count}} helyi módosítás`,searchPlaceholder:`Kulcsok vagy értékek keresése...`,filterAll:`Minden kulcs`,filterMissing:`Hiányzó`,filterEdited:`Szerkesztett`,exportJson:`JSON exportálása`,copyJson:`JSON másolása`,copied:`Másolva!`,resetAll:`Minden módosítás visszaállítása`,resetKey:`Visszaállítás alapértelmezettre`,noResults:`Nem található megfelelő fordítási kulcs.`,addLanguage:`Nyelv hozzáadása`,newLanguageCode:`Nyelvi kód (pl. pt, ja, ko)`,newLanguageName:`Nyelv neve (pl. Português)`,addLanguageButton:`Hozzáadás`,languageExists:`Ez a nyelv már létezik.`,codeRequired:`A nyelvi kód megadása kötelező.`,nameRequired:`A nyelv nevének megadása kötelező.`,removeLanguage:`Nyelv eltávolítása`,removeLanguageConfirm:`Eltávolítja a(z) "{{name}}" egyéni nyelvet? A nyelvhez tartozó összes helyi módosítás elvész.`,importJson:`JSON importálása`,importSuccess:`{{count}} fordítás importálva.`,importFailed:`Importálás sikertelen: érvénytelen JSON formátum.`}},xs={common:{loading:`Caricamento`,notFound:`Non trovato`,save:`Salva`,cancel:`Annulla`,delete:`Elimina`,edit:`Modifica`,close:`Chiudi`,refresh:`Aggiorna`,search:`Cerca`,enabled:`Abilitato`,disabled:`Disabilitato`,online:`Online`,offline:`Offline`,running:`In esecuzione`,stopped:`Arrestato`,failed:`Fallito`,starting:`Avvio`,devices:`Dispositivi`,fabrics:`Fabrics`,port:`Porta`,unknown:`Sconosciuto`,confirm:`Conferma`,create:`Crea`,back:`Indietro`,next:`Avanti`,actions:`Azioni`,name:`Nome`,type:`Tipo`,error:`Errore`,version:`Versione`,copy:`Copia`,copied:`Copiato!`,copyId:`Copia ID`,later:`Più tardi`,skip:`Salta`,reset:`Ripristina`,update:`Aggiorna`,all:`Tutti`,ascending:`Crescente`,descending:`Decrescente`,moveUp:`Sposta su`,moveDown:`Sposta giù`,selectAll:`Seleziona tutto`,selectNone:`Deseleziona tutto`,live:`Live`,new:`Nuovo`,overwrite:`Sovrascrivi`,active:`Attivo`,property:`Proprietà`,value:`Valore`,custom:`Personalizzato`,startAll:`Avvia tutti`,stopAll:`Arresta tutti`,restartAll:`Riavvia tutti`,import:`Importa`,export:`Esporta`,exportAll:`Esporta tutto`,wizard:`Procedura guidata`},nav:{bridges:`Bridges`,devices:`Tutti i dispositivi`,health:`Stato & Diagnostica`,diagnostics:`Eventi in tempo reale`,settings:`Impostazioni`,networkMap:`Mappa di rete`,logs:`Log`,startupOrder:`Ordine di avvio`,lockCredentials:`Credenziali serratura`,filterReference:`Riferimento filtri`,systemLogs:`Log di sistema`,lightMode:`Modalità chiara`,darkMode:`Modalità scura`},status:{error:`Errore`,unhealthy:`Non integro`,noBridges:`Nessun Bridge`,loadingHealth:`Caricamento stato di salute...`,unknown:`Sconosciuto`},errorBoundary:{title:`Qualcosa è andato storto`,fallbackMessage:`Si è verificato un errore imprevisto.`,reload:`Ricarica pagina`},settings:{title:`Impostazioni`,language:`Lingua`,languageDescription:`Seleziona la lingua dell'interfaccia.`,checkUpdates:`Controlla aggiornamenti`,backupRestore:`Backup e ripristino`,exportBackup:`Esporta backup`,importBackup:`Importa backup`,dangerZone:`Zona pericolosa`,resetAll:`Ripristina tutto`,about:`Informazioni`},dashboard:{title:`Dashboard`,systemOverview:`Panoramica del sistema`,quickActions:`Azioni rapide`,bridgeOverview:`Panoramica dei Bridge`,noBridges:`Nessun bridge configurato.`,createBridge:`Crea Bridge`,viewAll:`Mostra tutto`,totalDevices:`Dispositivi totali`,customize:`Personalizza`,startAll:`Avvia tutti`,stopAll:`Arresta tutti`,restartAll:`Riavvia tutti`,welcome:`Benvenuto su Home Assistant Matter Hub`,welcomeDescription:`Collega i tuoi dispositivi Home Assistant ai controller Matter come Apple Home, Google Home e Amazon Alexa.`,bridgeWizard:`Procedura guidata Bridge`,setupByArea:`Configura per area`,manualSetup:`Configurazione manuale`,areaSetup:`Configurazione area`,documentation:`Documentazione`,quickNavigation:`Navigazione rapida`,haConnection:`Connessione HA`,startupOrder:`Ordine di avvio`,lockCredentials:`Credenziali serratura`,filterReference:`Riferimento filtri`,successMessage:`I tuoi bridge sono connessi a {{count}} fabric controller. I dispositivi dovrebbero ora apparire nella tua app.`,noBridgesHint:`Nessun bridge configurato. Usa la procedura guidata o creane uno manualmente.`,customizeDashboard:`Personalizza dashboard`},bridge:{name:`Nome Bridge`,port:`Porta`,status:`Stato`,pairHint:`Associa questo bridge al tuo controller`,pairDescription:`Apri la tua app controller (Apple Home, Google Home o Amazon Alexa), aggiungi un nuovo accessorio e scansiona il codice QR o inserisci il codice di abbinamento manuale. Assicurati che il controller sia sulla stessa rete di Home Assistant.`,failedEntities:`Entità fallite`,serverModeRecommended:`Modalità Server consigliata per aspirapolvere robot`,serverModeDescription:`Questo bridge contiene un aspirapolvere robot in modalità bridge. Apple Home e Alexa mostreranno il bridge come dispositivo aggiuntivo, creando duplicati. Abilita la Modalità Server per esporre l'aspirapolvere come dispositivo Matter autonomo.`,enableServerMode:`Abilita Modalità Server`,enabling:`Abilitazione...`,start:`Avvia`,stop:`Arresta`,restart:`Riavvia`,factoryReset:`Ripristino di fabbrica`,pairingCode:`Codice di abbinamento`,openCommissioning:`Apri finestra di commissioning`,multiPair:`Abbinamento Multi-Fabric`,deleteBridge:`Elimina Bridge`,deleteConfirm:`Sei sicuro di voler eliminare questo bridge?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} entità non sono state caricate.`,clickToShow:`Clicca per mostrare i dettagli.`,clickToHide:`Clicca per nascondere i dettagli.`,loadFailed:`Impossibile caricare i dettagli del Bridge`,refreshHint:`Nuovi dispositivi e modifiche alle etichette vengono rilevati ogni 30 secondi.`,refreshingStates:`Aggiornamento tra {{seconds}} secondi...`,serverModeSingleDeviceNote:`Nota: La Modalità Server richiede che l'aspirapolvere sia l'unico dispositivo su questo bridge. Rimuovi prima le altre entità, poi abilita la Modalità Server nelle impostazioni del bridge.`,serverModeEnabled:`Modalità Server abilitata. Il bridge si riavvierà con il tuo aspirapolvere come dispositivo autonomo.`,serverModeEnableFailed:`Impossibile abilitare la Modalità Server: {{error}}`,pairing:`Abbinamento`,bridgeInfo:`Info Bridge`,commissioned:`Abbinato`,addController:`Aggiungi un altro controller`,forceSync:`Forza sincronizzazione`,syncing:`Sincronizzazione...`,editFilters:`Modifica filtri`,addFilters:`Aggiungi filtri`,bridgeNotRunning:`Il bridge non è in esecuzione. Avvia il bridge per vedere le informazioni di abbinamento.`,manualCode:`Codice manuale`,bridgeId:`ID Bridge`,passcode:`Codice di accesso`,discriminator:`Discriminatore`,connectedFabrics:`Fabric connessi ({{count}})`,noFabrics:`Nessun controller connesso. Scansiona il codice QR con il tuo controller Matter.`,entityFilters:`Filtri entità`,noFilters:`Nessun filtro configurato. Tutte le entità supportate saranno esposte.`,resetSuccess:`Bridge ripristinato con successo`,deleteSuccess:`Bridge eliminato con successo`,confirmResetTitle:`Ripristina Bridge`,confirmDeleteTitle:`Elimina Bridge`,importTitle:`Importa Bridge`,overwriteExisting:`Sovrascrivi bridge esistenti`,iconLabel:`Icona Bridge`,google:`Google`,alexa:`Alexa`,serverMode:`Modalità Server`,autoForceSync:`Sincronizzazione automatica`,saveSuccess:`Bridge salvato`,updateSuccess:`Aggiornamento completato`,exportFailed:`Esportazione fallita`,actionStarted:`Avviato`,actionStopped:`Arrestato`,actionRestarted:`Riavviato`,actionFailed:`{{action}} fallito`,actionResult:`{{label}} {{count}} bridge`,couldNotLoad:`Impossibile caricare i bridge`,showingFirst:`Mostro i primi {{count}}`,importParseFailed:`Impossibile analizzare il file di importazione. Seleziona un file di esportazione valido.`,importing:`Importazione...`,importCount:`Importa {{count}} bridge`,jsonEditor:`Editor JSON`,formEditor:`Editor modulo`},endpoints:{title:`Endpoint`,searchPlaceholder:`Cerca endpoint...`,sortBy:`Ordina`,sortName:`Nome`,sortEndpoint:`ID Endpoint`,sortType:`Tipo`,cardView:`Vista schede`,treeView:`Vista ad albero`,clusters:`Cluster`,entityUnavailable:`Entità non disponibile`,showUnavailable:`Mostra {{count}} non disponibili`,showAll:`Mostra tutte le entità`,uploadImage:`Carica immagine dispositivo`,removeImage:`Rimuovi immagine personalizzata`,editMapping:`Modifica mappatura entità`,homeAssistantEntity:`Entità Home Assistant`,noEndpoints:`Nessun endpoint trovato.`,expandAll:`Espandi tutto`,collapseAll:`Comprimi tutto`,viewAll:`Vedi tutti i dispositivi`,haState:`Stato HA`,aboutEndpoint:`Informazioni su questo endpoint`,entityId:`ID Entità`,customName:`Nome personalizzato`,deviceTypeOverride:`Override tipo dispositivo`,keyHaAttributes:`Attributi HA chiave`,entityMappings:`Mappature entità`,copyData:`Copia dati negli appunti`,behavior:`Comportamento`},health:{title:`Stato & Diagnostica`,version:`Versione`,uptime:`Tempo di attività`,homeAssistant:`Home Assistant`,connected:`Connesso`,disconnected:`Disconnesso`,bridgeStatus:`Stato Bridge`,refreshHealth:`Aggiorna dati di salute`,exportDiagnostic:`Esporta diagnostica`,memory:`Memoria`,fabricDetails:`Dettagli Fabric`,sessions:`Sessioni`,subscriptions:`Abbonamenti`,noFabrics:`Nessun fabric connesso`,systemMetrics:`Metriche di sistema`,heap:`Heap`,rss:`RSS`,external:`Esterno`,systemHealth:`Salute del sistema`,fetchFailed:`Impossibile recuperare lo stato di salute`,connectionError:`Errore di connessione`,exportFailed:`Impossibile esportare i dati di diagnostica`,restartFailed:`Impossibile riavviare il bridge`,unableToLoad:`Impossibile caricare lo stato di salute`,sortBy:`Ordina per`,created:`Creato`,ascending:`Crescente`,descending:`Decrescente`,connectedTo:`Connesso a`,autoRecovery:`Recupero automatico`,recoveryAttempts:`Tentativi di recupero`},mapping:{title:`Mappature entità`,entityId:`ID Entità`,deviceType:`Tipo dispositivo`,customName:`Nome personalizzato`,status:`Stato`,addMapping:`Aggiungi mappatura`,editMapping:`Modifica mappatura`,deleteMapping:`Elimina mappatura`,saved:`Mappatura salvata per {{entityId}}. Riavvia il bridge per applicare le modifiche.`,saveFailed:`Impossibile salvare la mappatura: {{error}}`,deleted:`Mappatura eliminata per {{entityId}}.`,deleteFailed:`Impossibile eliminare la mappatura.`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},languageSwitcher:{disclaimer:`Le traduzioni potrebbero essere incomplete.`,contribute:`Aiutaci a migliorarle!`},translationEditor:{title:`Editor traduzioni`,editLanguage:`Lingua da modificare`,info:`Modifica le traduzioni direttamente nel browser. Le modifiche vengono salvate localmente e applicate immediatamente. Esporta le tue traduzioni per inviarle al progetto.`,progress:`{{translated}} / {{total}} chiavi tradotte`,localEdits:`{{count}} modifica/e locale/i`,searchPlaceholder:`Cerca chiavi o valori...`,filterAll:`Tutte le chiavi`,filterMissing:`Mancanti`,filterEdited:`Modificate`,exportJson:`Esporta JSON`,copyJson:`Copia JSON`,copied:`Copiato!`,resetAll:`Ripristina tutte le modifiche`,resetKey:`Ripristina predefinito`,noResults:`Nessuna chiave di traduzione corrispondente trovata.`,addLanguage:`Aggiungi lingua`,newLanguageCode:`Codice lingua (es. pt, ja, ko)`,newLanguageName:`Nome lingua (es. Português)`,addLanguageButton:`Aggiungi`,languageExists:`Questa lingua esiste già.`,codeRequired:`Il codice lingua è obbligatorio.`,nameRequired:`Il nome della lingua è obbligatorio.`,removeLanguage:`Rimuovi lingua`,importJson:`Importa JSON`,importSuccess:`{{count}} traduzione/i importata/e.`,importFailed:`Importazione fallita: formato JSON non valido.`},notFound:{title:`Pagina non trovata`,description:`La pagina che stai cercando non esiste.`,backToDashboard:`Torna alla dashboard`},footer:{github:`GitHub`,documentation:`Documentazione`}},Ss={common:{loading:`読み込み中`,notFound:`見つかりませんでした`,save:`保存`,cancel:`キャンセル`,delete:`削除`,edit:`編集`,close:`閉じる`,refresh:`再読み込み`,search:`検索`,enabled:`有効`,disabled:`無効`,online:`オンライン`,offline:`オフライン`,running:`動作中`,stopped:`停止済み`,failed:`失敗`,starting:`起動中`,devices:`デバイス`,fabrics:`ファブリック`,port:`ポート`,unknown:`不明`,confirm:`適用`,create:`作成`,back:`戻る`,next:`次へ`,actions:`アクション`,name:`名前`,type:`タイプ`,error:`エラー`,version:`バージョン`,copy:`コピー`,copied:`コピーしました!`,copyId:`IDのコピー`,later:`後で`,skip:`スキップ`,reset:`リセット`,update:`更新`,all:`すべて`,ascending:`昇順`,descending:`降順`,moveUp:`上に移動`,moveDown:`下に移動`,selectAll:`すべて選択`,selectNone:`未選択`,live:`ライブ`,new:`新しい`,overwrite:`上書き`,active:`アクティブ`,property:`プロパティ`,value:`値`,custom:`カスタム`,startAll:`すべて起動`,stopAll:`すべて停止`,restartAll:`すべて再起動`,import:`インポート`,export:`エクスポート`,exportAll:`すべてエクスポート`,wizard:`ウィザード`},nav:{bridges:`ブリッジ`,devices:`すべてのデバイス`,health:`健康状態と診断`,diagnostics:`ライブイベント`,settings:`設定`,networkMap:`ネットワークマップ`,logs:`ログ`,startupOrder:`開始の順序`,lockCredentials:`スマートロックの認証情報`,filterReference:`フィルター値を参照`,systemLogs:`システムログ`,lightMode:`ライトモード`,darkMode:`ダークモード`},status:{error:`エラー`,unhealthy:`不健康`,noBridges:`ブリッジなし`,loadingHealth:`健康状態を読み込んでいます...`,unknown:`不明`},errorBoundary:{title:`何かがうまくいかなかったようです`,fallbackMessage:`予期しないエラーが発生しました。`,reload:`ページを再読み込み`},settings:{title:`設定`,language:`言語`,languageDescription:`UIの言語を選択してください。`,checkUpdates:`アップデートを確認`,backupRestore:`バックアップと復元`,exportBackup:`バックアップを書き出す`,importBackup:`バックアップを読み込む`,dangerZone:`危険なゾーン`,resetAll:`すべて再起動`,about:`について`,username:`ユーザー名`,password:`パスワード`,enterNewPassword:`新しいパスワード`,enableAuth:`認証を有効にする`,disableAuth:`認証を無効にする`,disableAuthMessage:`この操作により、Web UI からパスワード保護が削除されます。ネットワーク上の誰でもブリッジ設定にアクセスでき、変更できるようになります。`,disableAuthConfirm:`認証を無効化`,usernamePasswordRequired:`ユーザー名とパスワードが必要です`,authSaveFailed:`認証設定の保存に失敗しました`,authLoadFailed:`認証設定の読み込みに失敗しました`,authDisabled:`認証は無効になっています。`,authRemoveFailed:`認証設定の削除に失敗しました`},dashboard:{title:`ダッシュボード`,systemOverview:`システムの概要`,quickActions:`クイックアクション`,bridgeOverview:`ブリッジの概要`,noBridges:`ブリッジがまだ構成されていません。`,createBridge:`ブリッジを作成`,viewAll:`すべて表示`,totalDevices:`合計デバイス`,customize:`カスタマイズ`,startAll:`すべて開始`,stopAll:`すべて停止`,restartAll:`すべて再起動`,welcome:`Home Assistant Matter Hub へようこそ`,welcomeDescription:`Home AssistantのデバイスをApple HomeやGoogle Home、Amazon AlexaなどのMatterコントローラーに接続できます。`,bridgeWizard:`ブリッジ構成ウィザード`,setupByArea:`エリアでセットアップ`,manualSetup:`手動で構成`,areaSetup:`エリアで構成`,documentation:`ドキュメント`,quickNavigation:`クイックナビゲーション`,haConnection:`HAコネクション`,startupOrder:`ブリッジの起動順序`,lockCredentials:`スマートロックの認証情報`,filterReference:`フィルター値を参照`,successMessage:`ブリッジは {{count}} 個のコントローラーに接続されています。デバイスは現在、コントローラーアプリに表示されているはずです。`,noBridgesHint:`ブリッジがまだ構成されていません。ブリッジウィザードを使用するか、手動で作成してください。`,customizeDashboard:`ダッシュボードのカスタマイズ`,bridgeStatusRunning:`{{running}} 動作中`,bridgeStatusFailed:`{{failed}} 失敗`,devicesFailed:`{{count}} 失敗`,uptimeFormat:`稼働時間 {{time}}`},bridge:{name:`ブリッジ名`,port:`ポート`,status:`状態`,pairHint:`このブリッジをコントローラーとペアリングしてください`,pairDescription:`コントローラーアプリ(Apple HomeやGoogle Home、Amazon Alexaなど)を開き、新しいアクセサリを追加から、QRコードをスキャンするか、手動ペアリングコードを入力してください。また、コントローラーがHome Assistantと同じネットワークに接続されていることを確認してください。`,failedEntities:`失敗したエンティティ`,serverModeRecommended:`ロボット掃除機が含まれている場合、サーバーモードが推奨されます`,serverModeDescription:`このブリッジには、ロボット掃除機が含まれています。Apple HomeとAlexaでは、このブリッジが追加デバイスとして表示されるため、重複したエントリが発生します。サーバーモードを有効にすると、掃除機が単一のMatterデバイスとして認識されるため、Siri/Alexaの音声コマンドに完全対応し、重複したエントリも表示されなくなります。`,enableServerMode:`サーバーモードを有効にする`,enabling:`有効化しています...`,start:`起動`,stop:`停止`,restart:`再起動`,factoryReset:`初期状態にリセット`,pairingCode:`ペアリングコード`,openCommissioning:`コミッショニングウィンドウを開く`,multiPair:`マルチファブリックペアリング`,deleteBridge:`ブリッジを削除`,deleteConfirm:`本当にこのブリッジを削除しますか?`,featureFlags:`機能フラグ`,failedEntitiesCount:`{{count}} エンティティをロードできませんでした。`,clickToShow:`クリックして詳細を表示`,clickToHide:`クリックして詳細を隠す`,loadFailed:`ブリッジの詳細の読み込みに失敗しました`,refreshHint:`新しいデバイスやラベルの変更は、30秒ごとに検出されます。`,refreshingStates:`あと {{seconds}} 秒で状態を更新...`,serverModeSingleDeviceNote:`注:サーバーモードを使用する場合、このブリッジ上のデバイスはロボット掃除機のみである必要があります。まず、このブリッジから他のデバイスを削除してから、ブリッジの設定でサーバーモードを有効にしてください。`,serverModeEnabled:`サーバーモードが有効になりました。ブリッジはロボット掃除機のみで単一のデバイスとして再起動します。`,serverModeEnableFailed:`サーバーモードの有効化に失敗しました: {{error}}`,pairing:`ペアリング`,bridgeInfo:`ブリッジ情報`,commissioned:`接続済み`,addController:`別のコントローラーを追加`,openingCommissioning:`コミッショニングウィンドウを開いています...`,fabricTooltip:`ファブリックは、Matterコントローラー(例:Apple Home、Google Home、Alexa)との接続を表すものです。各コントローラーはペアリングされると、1つのファブリックを作成します。`,forceSync:`強制的に同期`,syncing:`同期中...`,forceSyncTooltip:`すべての現在のデバイス状態を接続されているコントローラに同期する`,editFilters:`フィルターを編集`,addFilters:`フィルターを追加`,bridgeNotRunning:`ブリッジが起動していません。ブリッジを起動し、ペアリング情報を確認してください。`,manualCode:`手動ペアリングコード`,openingWindow:`コミッショニングウィンドウを開いています...`,bridgeId:`ブリッジID`,passcode:`パスコード`,discriminator:`識別子`,connectedFabrics:`接続済みのファブリック ({{count}})`,noFabrics:`コントローラが接続されていません。MatterコントローラーでQRコードをスキャンして、このブリッジをペアリングしてください。`,entityFilters:`エンティティフィルター`,noFilters:`フィルターが設定されていません。サポートされているすべてのエンティティが公開されます。`,scanQrCode:`Matterコントローラー(Apple Home、Google Home、Alexaなど)でこのQRコードをスキャンして、このブリッジを別のエコシステムに追加してください。`,appleHomeWarning:`このブリッジは拡張フラットモードを使用しています。Apple Home のみを使用している場合にのみ、無効にしてください。`,googleHomeWarning:`これにより、Apple Home および Google Home に問題が生じる可能性があります。`,resetSuccess:`ブリッジのリセットに成功しました`,deleteSuccess:`ブリッジの削除に成功しました`,confirmResetTitle:`ブリッジを初期状態にリセット`,confirmResetMessage:`これにより、すべてのペアリング情報が削除され、ブリッジが初期状態にリセットされます。接続されているコントローラはアクセスを失います。この操作は元に戻せません。`,confirmDeleteTitle:`ブリッジを削除`,confirmDeleteMessage:`これにより、ブリッジとそのすべてのペアリング、およびエンティティマッピングが永久に削除されます。接続されているコントローラはアクセスを失います。この操作は元に戻せません。`,importTitle:`ブリッジを読み込む`,overwriteExisting:`既存のブリッジを上書きする`,iconLabel:`ブリッジアイコン`,google:`Google`,alexa:`Alexa`,serverMode:`サーバーモード`,autoForceSync:`自動強制同期`,saveSuccess:`ブリッジを保存しました`,updateSuccess:`アップデートが完了しました`,exportFailed:`書き出しに失敗しました`,actionStarted:`起動済み`,actionStopped:`停止済み`,actionRestarted:`再起動済み`,actionFailed:`{{action}} 失敗`,actionResult:` {{label}} {{count}} ブリッジ`,couldNotLoad:`ブリッジを読み込めませんでした`,showingFirst:`最初の {{count}} を表示中`,importParseFailed:`読み込んだファイルの解析に失敗しました。有効なエクスポートしたファイルを選んでください。`,importing:`インポート中...`,importCount:`{{count}} ブリッジをインポート`,jsonEditor:`JSONエディター`,formEditor:`フォームエディター`},endpoints:{title:`エンドポイント`,searchPlaceholder:`エンドポイントを検索...`,sortBy:`並び替え`,sortName:`名前`,sortEndpoint:`エンドポイントID`,sortType:`タイプ`,cardView:`カードビュー`,treeView:`ツリービュー`,clusters:`クラスター`,entityUnavailable:`エンティティが利用できません`,showUnavailable:`{{count}} の利用不可を表示`,showAll:`すべてのエンティティを表示`,uploadImage:`デバイスイメージをアップロード`,removeImage:`カスタムイメージを削除`,editMapping:`エンティティマッピングを編集`,homeAssistantEntity:`Home Assistant エンティティ`,noEndpoints:`エンドポイントが見つかりませんでした。`,expandAll:`すべて展開`,collapseAll:`すべて折りたたむ`,viewAll:`すべてのデバイスを見る`,haState:`HAでの状態`,aboutEndpoint:`このエンドポイントについて`,entityId:`エンティティID`,customName:`カスタム名`,deviceTypeOverride:`デバイスタイプの上書き`,keyHaAttributes:`主要なHAの属性`,entityMappings:`エンティティマッピング`,copyData:`データをクリップボードにコピー`,behavior:`振る舞い`},health:{title:`健康状態と診断`,version:`バージョン`,uptime:`稼働時間`,homeAssistant:`Home Assistant`,connected:`接続済み`,disconnected:`切断済み`,bridgeStatus:`ブリッジの状態`,refreshHealth:`健康データを更新`,exportDiagnostic:`診断を書き出す`,memory:`メモリ`,fabricDetails:`ファブリックの詳細`,sessions:`セッション`,subscriptions:`登録数`,noFabrics:`接続されているファブリックはありません`,systemMetrics:`システムメトリクス`,heap:`ヒープ`,rss:`RSS`,external:`外部`,systemHealth:`システムの健康状態`,fetchFailed:`健康状態の取得に失敗しました`,connectionError:`設定エラー`,exportFailed:`診断データの書き出しに失敗しました`,restartFailed:`ブリッジの再起動に失敗しました`,unableToLoad:`健康状態を読み込めません`,sortBy:`並び替え`,created:`作成済み`,ascending:`昇順`,descending:`降順`,connectedTo:`接続済み`,autoRecovery:`自動回復`,recoveryAttempts:`回復試行数`,fabrics:`ファブリック`,networkDiagnostics:`ネットワーク診断`,checksPassed:`合格`,checksWarning:`警告`,checksFailed:`失敗`,hideDetails:`詳細を非表示`,showDetails:`詳細を表示`,allChecks:`すべてチェック`,check:`チェック`,statusLabel:`状態`,message:`メッセージ`,networkInterfaces:`ネットワークインタフェース`,interfaceName:`インタフェース`,refresh:`更新`},mapping:{title:`エンティティマッピング`,entityId:`エンティティID`,deviceType:`デバイスタイプ`,customName:`カスタム名`,status:`状態`,addMapping:`マッピングを追加`,editMapping:`マッピングを編集`,deleteMapping:`マッピングを削除`,saved:`{{entityId}} のマッピングが保存されました。変更を保存するためにブリッジを再起動してください。`,saveFailed:`マッピングの保存に失敗しました:{{error}}`,deleted:`{{entityId}} のマッピングが削除されました。`,deleteFailed:`マッピングの削除に失敗しました。`,matterTag:`Matterタグ`,exportProfile:`マッピングプロファイルを書き出す`,importProfile:`マッピングプロファイルを読み込む`,profileName:`プロファイル名`,match:`マッチ`,existing:`存在`,autoDetect:`自動検出(デフォルト)`,customProductName:`カスタム製品名`,customProductNameHelp:`Matterコントローラに表示する製品名(モデル)を上書きします。一部のコントローラ(Aqaraなど)はこれをデバイス名として表示します。`,customVendorName:`カスタムベンダー名`,customVendorNameHelp:`Matterコントローラに表示するベンダー/メーカー名を上書きします。`,customSerialNumber:`カスタムシリアルナンバー`,customSerialNumberHelp:`Matterコントローラに表示するシリアル番号を上書きします。`,loadFailed:`エンティティマッピングの読み込みに失敗しました`,noMappings:`カスタムエンティティマッピングが設定されていません。マッピングを使用すると、Matter デバイスタイプを上書きしたり、カスタム名を設定したり、特定のエンティティを無効にしたりできます。`,applying:`適用中...`,applyCount:`{{count}} のマッピングを適用しました`},notFound:{title:`ページが見つかりませんでした`,description:`お探しのページは存在しません。`,backToDashboard:`ダッシュボードへ戻る`},devices:{title:`デバイス`,searchPlaceholder:`デバイスを検索...`,filterBridge:`ブリッジ`,allBridges:`すべてのブリッジ`,filterDeviceType:`デバイスタイプ`,allTypes:`すべてのタイプ`,sortBy:`並び替え`,sortBridge:`ブリッジ`,sortType:`デバイスタイプ`,sortName:`名前`,deviceCount:`{{count}} デバイス`,filteredCount:`{{total}} 中 {{filtered}} のデバイス`},diagnostics:{title:`ライブ診断`,stateUpdate:`状態アップデート`,command:`コマンド`,entityError:`エラー`,sessionOpen:`セッションオープン`,sessionClose:`セッションクローズ`,subscription:`登録`,bridgeStart:`ブリッジ起動`,bridgeStop:`ブリッジ停止`,entityWarning:`警告`,filterEvents:`イベントタイプをフィルタリング`,clearEvents:`すべてのイベントをクリア`,noEvents:`現在のフィルターに一致するイベントはありません。`},startup:{title:`ブリッジの起動順序`,description:`ドラッグ&ドロップでブリッジの起動順序をセットしてください。小さい番号から先に起動されます。`,saveSuccess:`起動順序の保存に成功しました`,saveFailed:`起動順序の保存に失敗しました`,saveChanges:`変更を保存`,unsavedChanges:`未保存の起動順序の変更があります。`,noBridges:`ブリッジがまだ構成されていません。`,saveOrder:`起動順序を保存`},areaSetup:{title:`エリアセットアップ`,heading:`エリアを元にしたブリッジセットアップ`,description:`Home Assistantのエリアごとに、自動的に1つのブリッジを作成します。各ブリッジには、そのエリアからサポートされているすべてのエンティティが含まれます。`,noAreas:`Home Assistant でサポートされているエンティティがあるエリアは見つかりませんでした。HA のエリアにデバイスが割り当てられていることを確認してください。`,selectController:`1. コントローラーを選択(任意)`,selectAreas:`2. エリアを選択({{total}} 中 {{selected}} 選択済み)`,clear:`クリア`,createBridges:`{{count}} ブリッジを作成`,results:`結果`,goToBridges:`ブリッジ一覧に移動`,createdSuccess:`{{count}} のブリッジの作成に成功しました`,createdPartial:`{{succeeded}} のブリッジが作成済み、 {{failed}} のブリッジは作成失敗`,loadFailed:`エリアの読み込みに失敗しました`,creating:`作成中...`,created:`作成しました`,unknownError:`不明なエラー`},lockCredentials:{title:`スマートロックの認証情報`,addCredential:`認証情報を追加`,editCredential:`ロックの認証情報を編集`,lockEntityId:`ロックのエンティティID`,lockEntityHelperText:`ロックの Home Assistant エンティティID`,pinCode:`暗証番号`,nameOptional:`名前(任意)`,namePlaceholder:`玄関`,nameHelperText:`この認証情報の名前`,entityRequired:`エンティティIDが必要です`,pinLength:`暗証番号は4-8桁である必要があります`,pinDigitsOnly:`暗証番号は数字のみでなければいけません`,saveFailed:`保存に失敗しました`,loadFailed:`認証情報の読み込みに失敗しました`,deleteFailed:`削除に失敗しました`,updateFailed:`更新に失敗しました`,enable:`有効`,disable:`無効`,confirmDeleteTitle:`認証情報を削除`,confirmDeleteMessage:`これにより {{entity}} の認証情報が永久に削除されます。この操作は元に戻せません。`},labels:{title:`フィルター値を参照`,info:`ブリッジ設定に利用可能なすべてのフィルター値を確認できます。任意の値をクリックして、クリップボードにコピーしてください。`,searchPlaceholder:`検索...`,loadFailed:`データの読み込みに失敗しました`,labelsSection:`ラベル`,labelsHint:`フィルタータイプ "entity_label" または "device_label" を使用してください。表示名またはlabel_idのどちらでも使用できます。`,noLabels:`Home Assistantからラベルが見つかりませんでした。HAの設定→ラベルからラベルを作成してください。`,displayName:`表示名`,labelId:`label_id`,areaId:`area_id`,areasSection:`エリア`,areasHint:`フィルタータイプ "area" を使用してください。エリアはMatterコントローラーの自動的な部屋割り当てにも使用されます。`,noAreas:`Home Assistantからエリアが見つかりませんでした。`,otherFilterValues:`その他のフィルター値`,domains:`ドメイン`,domainsHint:`フィルタータイプ "domain" を使用してください。`,platforms:`プラットフォーム / インテグレーション`,platformsHint:`フィルタータイプ "platform" を使用してください。`,entityCategories:`エンティティカテゴリ`,entityCategoriesHint:`フィルタータイプ "entity_category" を使用してください。`,deviceClasses:`デバイスクラス`,deviceClassesHint:`フィルタータイプ "device_class" を使用してください。`,deviceNames:`デバイス名`,deviceNamesHint:`フィルタータイプ "device_name" を使用してください。`,productNames:`製品名`,productNamesHint:`フィルタータイプ "product_name" を使用してください。`},logs:{title:`システムログ`,logLevel:`ログレベル`,error:`エラー`,warning:`警告`,info:`情報`,debug:`デバッグ`,searchPlaceholder:`ログを検索...`,noResults:`ログが見つかりません`,autoRefresh:`自動更新`},backup:{title:`バックアップと復元`,description:`ブリッジとエンティティマッピングの完全なバックアップを作成するか、または以前のバックアップから復元することができます。`,configBackup:`バックアップを作成`,configBackupDesc:`ブリッジ構成とエンティティマッピングを書き出します。`,configBackupNote:`ブリッジは復元後に再コミッションする必要があります。`,fullBackup:`完全バックアップ(識別付き)`,fullBackupDesc:`Matter の識別ファイル(キーペア、ファブリック認証情報)を含みます。`,fullBackupWarning:`復元全体にわたって、コミッショニングの状態を保持します。共有しないでください!`,restoreFromBackup:`バックアップから復元`,restoreDesc:`以前に作成したバックアップファイルをアップロードして、ブリッジと設定を復元します。`,restoreTitle:`バックアップを復元`,selectBridges:`復元するブリッジを選択してください`,overwriteExisting:`既存のブリッジを上書き`,includeMappings:`エンティティマッピングを含める`,restoreIdentities:`Matter識別情報を復元(再コミッショニングの必要はありません)`,restore:`復元`,downloadSuccess:`バックアップのダウンロードに成功しました!`,restartRequired:`再起動が必要です`,restartMessage:`バックアップからブリッジが復元されました。変更を有効にするには、再起動が必要です。`,restartNote:`アプリケーションが再起動されるため、このページを再読み込みする必要がある可能性があります。`,restartNow:`今すぐ再起動`,storedBackups:`保存されているバックアップ`,createSnapshot:`バックアップを作成`,noSnapshots:`まだ保存されたバックアップはありません。バックアップはシャットダウン時に自動的に作成されるか、または手動で作成することもできます。`,downloadSnapshot:`ダウンロード`,restoreSnapshot:`復元`,auto:`自動`,manual:`手動`,snapshotCreated:`バックアップの作成に成功しました!`,snapshotRestored:`{{bridges}} のブリッジ、 {{mappings}} のマッピング、 {{identities}} の識別を復元済みです。`,confirmRestore:`復元を確認`,confirmRestoreMessage:`本当に "{{filename}}" から復元しますか?これにより、現在の設定が上書きされます。`,restoreWarning:`既存のすべてのブリッジと設定はすべて上書きされます。復元後は再起動が必要です。`,confirmDelete:`バックアップを削除`,confirmDeleteMessage:`本当に "{{filename}}" を削除しますか?この操作は取り消せません。`,settings:`バックアップの設定`,autoBackupLabel:`自動バックアップ`,autoBackupDesc:`アプリがシャットダウンまたは再起動した際に、自動的に完全バックアップを作成します。`,retentionCount:`バックアップの保持数`,retentionCountDesc:`バックアップの保持数(古い物から自動的に削除されます)`},networkMap:{title:`ネットワークマップ`,hubLabel:`HAMH`,undoMove:`直前の操作を元に戻す`,resetLayout:`レイアウトをリセット`,refreshData:`データを更新`,fullscreen:`フルスクリーン`,exitFullscreen:`フルスクリーンを終了`,legend:`図の説明`,controller:`コントローラ`,hub:`HAMHハブ`,bridge:`ブリッジ`,device:`デバイス`,failed:`失敗`},updateChecker:{title:`ソフトウェアアップデート`,checkNow:`今すぐ確認する`,currentVersion:`現在のバージョン`,latestVersion:`最新のバージョン`,updateAvailable:`アップデートが利用可能になりました!`,upToDate:`既に最新のバージョンを実行しています。`,releaseNotes:`リリースノート`,notAvailable:`このバージョンではアップデートの確認が利用できません`,checkFailed:`アップデートの確認に失敗しました`,unreachable:`サーバーに接続できません`,instructionAddon:`Home Assistantの設定 → アドオン(アプリ)から更新できます。`,instructionDocker:`最新のイメージを取得し、コンテナを再作成してください。`,instructionNpm:`実行:npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`ブリッジ構成ウィザード`,stepTemplate:`テンプレート`,stepController:`コントローラー`,stepBridgeInfo:`ブリッジ情報`,stepEntityFilter:`エンティティフィルター`,stepFeatureFlags:`機能フラグ`,stepReview:`確認と作成`,autoCompose:`自動構成デバイス`,autoForceSyncFlag:`自動強制同期`,invertCover:`カバーの方向を反転`,invertCoverDescription:`カバーの開閉の方向を逆にします。Matterコントローラでカバーの位置が間違って表示される場合に使用してください。`,includeHidden:`非表示のエンティティを含める`,includeHiddenDescription:`Home Assistantで非表示となっているエンティティも公開します。`,bridgeName:`ブリッジ名`,portLabel:`ポート`,portAutoAssign:`自動的に次に利用可能なポートが割り当てられます`,nameRequired:`ブリッジ名を入力してください`,createFailed:`ブリッジの作成に失敗しました`,bridgeInfoDescription:`ブリッジの名前とポートを指定してください。`,serverModeLabel:`サーバーモード(ロボット掃除機用)`,serverModeTooltip:`ロボット掃除機をApple Home(Siri)およびAlexaで使用するために必要です。サーバーモードは1台のデバイスのみです。`,entityFilterDescription:`このブリッジに含める必要があるエンティティを設定してください。`,includeAll:`すべてのエンティティを含める(ワイルドカード)`,entityId:`エンティティID`,includePattern:`パターンを含める`,entityFilters:`エンティティフィルター`,serverModeEntityHint:`サーバーモードは1台のデバイスのみです。正確なエンティティIDを入力してください。(例:vacuum.my_vacuum)`,templatePreConfigured:`テンプレートによって事前に構成されています。作成後、フルエディターで編集してください。`,wildcardHint:`すべて選択したい場合にそのままアスタリスク「*」 を使用するか、次のように「*」を使用してください:「light.* 」「switch.*」`,commaHint:`コンマで区切られている特定のエンティティIDを入力してください`,excludePatterns:`除外するパターン(任意)`,excludeHelperText:`除外するパターンをカンマ「,」で区切ります`,skipTemplate:`テンプレートをスキップ`,creating:`作成中です...`,createBridge:`ブリッジを作成`,searchRules:`ルールを検索...`,templateDescription:`テンプレートを選択してブリッジを作成するか、スキップしてカスタムのブリッジを作成できます。`,controllerDescription:`どのMatterコントローラーを使用しますか?これにより、コントローラーの機能フラグが最適化されます。`,controllerHint:`次のステップやブリッジ作成後でも、いつでも機能フラグを調整できます。`,templateApplied:`テンプレート"{{name}}"が適用されました。名前とポートをカスタマイズしてください。`,filterPreConfiguredFrom:`フィルターは"{{name}}"テンプレートで事前に設定されています。以下で調整できます。`,featureFlagsDescription:`機能フラグは、デバイスがMatterコントローラーにどのように公開されるかを制御します。`,recommendedFlags:`{{name}} の機能フラグは事前に選択されています。`,selectFlags:`お使いの設定に合った機能フラグを選択してください。`,reviewDescription:`ブリッジの設定をご確認ください:`,bridgesToCreate:`作成するブリッジ({{count}})`,bridgesCreated:`{{count}} 件のブリッジがこのセッションで既に作成されています`,addAnother:`さらにブリッジを追加`},footer:{github:`GitHub`,documentation:`ドキュメント`,support:`サポート`},languageSwitcher:{disclaimer:`翻訳が不完全な場合があります。`,contribute:`改善にご協力をお願いします!`},translationEditor:{title:`翻訳エディター`,editLanguage:`言語を編集`,info:`ブラウザ上で直接翻訳を編集できます。変更はローカルに保存され、即座に適用されます。翻訳を書き出して、プロジェクトに提出してください。`,progress:`{{translated}} / {{total}} のキーが翻訳済み`,localEdits:`{{count}} ローカル編集`,searchPlaceholder:`キーまたは値を検索...`,filterAll:`全てのキー`,filterMissing:`欠落`,filterEdited:`編集済み`,exportJson:`JSONを書き出す`,copyJson:`JSONをコピー`,copied:`コピーしました!`,resetAll:`すべての編集をリセット`,resetKey:`デフォルトにリセット`,noResults:`一致する翻訳のキーが見つかりませんでした。`,addLanguage:`言語を追加`,newLanguageCode:`言語コード(例:pt, ja, ko)`,newLanguageName:`言語名(例:Português)`,addLanguageButton:`追加`,languageExists:`その言語はすでに存在しています。`,codeRequired:`言語コードが必要です。`,nameRequired:`言語名が必要です。`,removeLanguage:`言語を削除`,removeLanguageConfirm:`カスタム言語 "{{name}}" を削除しますか? この言語の全ての編集は失われます。`,importJson:`JSONを読み込む`,importSuccess:`{{count}} 翻訳を読み込みました`,importFailed:`読み込みに失敗しました:無効なJSONフォーマットです。`}},Cs={common:{loading:`Ładowanie`,notFound:`Nie znaleziono`,save:`Zapisz`,cancel:`Anuluj`,delete:`Usuń`,edit:`Edytuj`,close:`Zamknij`,refresh:`Odśwież`,search:`Szukaj`,enabled:`Włączone`,disabled:`Wyłączone`,online:`Online`,offline:`Offline`,running:`Działa`,stopped:`Zatrzymane`,failed:`Niepowodzenie`,starting:`Uruchamianie`,devices:`Urządzenia`,fabrics:`Fabryki`,port:`Port`,unknown:`Nieznane`,confirm:`Potwierdź`,create:`Utwórz`,back:`Wstecz`,next:`Dalej`,actions:`Akcje`,name:`Nazwa`,type:`Typ`,error:`Błąd`,version:`Wersja`,copy:`Kopiuj`,copied:`Skopiowano!`,copyId:`Kopiuj ID`,later:`Później`,skip:`Pomiń`,reset:`Resetuj`,update:`Aktualizuj`,all:`Wszystkie`,ascending:`Rosnąco`,descending:`Malejąco`,moveUp:`Przesuń w górę`,moveDown:`Przesuń w dół`,selectAll:`Zaznacz wszystko`,selectNone:`Odznacz wszystko`,live:`Na żywo`,new:`Nowe`,overwrite:`Nadpisz`,active:`Aktywne`,property:`Właściwość`,value:`Wartość`,custom:`Własne`,startAll:`Uruchom wszystkie`,stopAll:`Zatrzymaj wszystkie`,restartAll:`Zrestartuj wszystkie`,import:`Importuj`,export:`Eksportuj`,exportAll:`Eksportuj wszystko`,wizard:`Kreator`},nav:{bridges:`Mostki`,devices:`Wszystkie urządzenia`,health:`Stan i diagnostyka`,diagnostics:`Zdarzenia na żywo`,settings:`Ustawienia`,networkMap:`Mapa sieci`,logs:`Logi`,startupOrder:`Kolejność uruchamiania`,lockCredentials:`Dane dostępu do zamków`,filterReference:`Referencja filtrów`,systemLogs:`Logi systemowe`,lightMode:`Tryb jasny`,darkMode:`Tryb ciemny`},status:{error:`Błąd`,unhealthy:`Niezdrowy`,noBridges:`Brak mostków`,loadingHealth:`Ładowanie stanu zdrowia...`,unknown:`Nieznany`},errorBoundary:{title:`Coś poszło nie tak`,fallbackMessage:`Wystąpił nieoczekiwany błąd.`,reload:`Odśwież stronę`},settings:{title:`Ustawienia`,language:`Język`,languageDescription:`Wybierz język interfejsu.`,checkUpdates:`Sprawdź aktualizacje`,backupRestore:`Kopia i przywracanie`,exportBackup:`Eksportuj kopię`,importBackup:`Importuj kopię`,dangerZone:`Strefa zagrożenia`,resetAll:`Resetuj wszystko`,about:`O aplikacji`,username:`Nazwa użytkownika`,password:`Hasło`,enterNewPassword:`Wpisz nowe hasło`,enableAuth:`Włącz uwierzytelnianie`,disableAuth:`Wyłącz uwierzytelnianie`,disableAuthMessage:`To usunie ochronę hasłem z interfejsu WWW. Każda osoba w Twojej sieci będzie mogła uzyskać dostęp i modyfikować konfigurację mostków.`,disableAuthConfirm:`Wyłącz uwierzytelnianie`,usernamePasswordRequired:`Nazwa użytkownika i hasło są wymagane`,authSaveFailed:`Nie udało się zapisać ustawień uwierzytelniania`,authLoadFailed:`Nie udało się wczytać ustawień uwierzytelniania`,authDisabled:`Uwierzytelnianie wyłączone.`,authRemoveFailed:`Nie udało się usunąć ustawień uwierzytelniania`},dashboard:{title:`Pulpit`,systemOverview:`Przegląd systemu`,quickActions:`Szybkie akcje`,bridgeOverview:`Przegląd mostków`,noBridges:`Nie skonfigurowano jeszcze żadnych mostków.`,createBridge:`Utwórz mostek`,viewAll:`Zobacz wszystkie`,totalDevices:`Łącznie urządzeń`,customize:`Dostosuj`,startAll:`Uruchom wszystkie`,stopAll:`Zatrzymaj wszystkie`,restartAll:`Zrestartuj wszystkie`,welcome:`Witamy w Home Assistant Matter Hub`,welcomeDescription:`Połącz swoje urządzenia Home Assistant z kontrolerami Matter, takimi jak Apple Home, Google Home i Amazon Alexa.`,bridgeWizard:`Kreator mostka`,setupByArea:`Konfiguracja wg obszaru`,manualSetup:`Konfiguracja ręczna`,areaSetup:`Konfiguracja obszaru`,documentation:`Dokumentacja`,quickNavigation:`Szybka nawigacja`,haConnection:`Połączenie HA`,startupOrder:`Kolejność uruchamiania`,lockCredentials:`Dane dostępu do zamków`,filterReference:`Referencja filtrów`,successMessage:`Twoje mostki są połączone z {{count}} fabryką(-ami) kontrolera. Urządzenia powinny być teraz widoczne w aplikacji kontrolera.`,noBridgesHint:`Nie skonfigurowano jeszcze mostków. Użyj Kreatora mostka lub utwórz mostek ręcznie.`,customizeDashboard:`Dostosuj pulpit`,bridgeStatusRunning:`{{running}} uruchomione`,bridgeStatusFailed:`{{failed}} nieudane`,devicesFailed:`{{count}} nieudane`,uptimeFormat:`{{time}}`},bridge:{name:`Nazwa mostka`,port:`Port`,status:`Status`,pairHint:`Sparuj ten mostek ze swoim kontrolerem`,pairDescription:`Otwórz aplikację kontrolera (Apple Home, Google Home lub Amazon Alexa), dodaj nowe akcesorium i zeskanuj kod QR poniżej albo wpisz ręczny kod parowania. Upewnij się, że kontroler jest w tej samej sieci co Home Assistant.`,failedEntities:`Nieudane encje`,serverModeRecommended:`Tryb serwera zalecany dla odkurzaczy robotycznych`,serverModeDescription:`Ten mostek zawiera odkurzacz robotyczny w trybie bridge. Apple Home i Alexa pokażą mostek jako dodatkowe urządzenie, co spowoduje duplikaty. Włącz tryb serwera, aby udostępnić odkurzacz jako niezależne urządzenie Matter z pełną obsługą komend głosowych Siri/Alexa i bez duplikatów.`,enableServerMode:`Włącz tryb serwera`,enabling:`Włączanie...`,start:`Uruchom`,stop:`Zatrzymaj`,restart:`Restartuj`,factoryReset:`Przywróć ustawienia fabryczne`,pairingCode:`Kod parowania`,openCommissioning:`Otwórz okno komisjonowania`,multiPair:`Parowanie Multi-Fabric`,deleteBridge:`Usuń mostek`,deleteConfirm:`Czy na pewno chcesz usunąć ten mostek?`,featureFlags:`Flagi funkcji`,failedEntitiesCount:`Nie udało się załadować {{count}} encji.`,clickToShow:`Kliknij, aby pokazać szczegóły.`,clickToHide:`Kliknij, aby ukryć szczegóły.`,loadFailed:`Nie udało się wczytać szczegółów mostka`,refreshHint:`Nowe urządzenia i zmiany etykiet są wykrywane co 30 sekund.`,refreshingStates:`Odświeżanie stanów za {{seconds}} s...`,serverModeSingleDeviceNote:`Uwaga: tryb serwera wymaga, aby odkurzacz był jedynym urządzeniem na tym mostku. Najpierw usuń inne encje z mostka, a następnie włącz tryb serwera w ustawieniach mostka.`,serverModeEnabled:`Tryb serwera włączony. Mostek uruchomi się ponownie z odkurzaczem jako niezależnym urządzeniem.`,serverModeEnableFailed:`Nie udało się włączyć trybu serwera: {{error}}`,pairing:`Parowanie`,bridgeInfo:`Informacje o mostku`,commissioned:`Skomisjonowano`,addController:`Dodaj kolejny kontroler`,openingCommissioning:`Otwieranie okna komisjonowania...`,fabricTooltip:`Fabric reprezentuje połączenie z kontrolerem Matter (np. Apple Home, Google Home, Alexa). Każdy kontroler tworzy jedną fabric podczas parowania.`,forceSync:`Wymuś synchronizację`,syncing:`Synchronizacja...`,forceSyncTooltip:`Wypchnij wszystkie bieżące stany urządzeń do podłączonych kontrolerów`,editFilters:`Edytuj filtry`,addFilters:`Dodaj filtry`,bridgeNotRunning:`Mostek nie jest uruchomiony. Uruchom mostek, aby zobaczyć informacje o parowaniu.`,manualCode:`Kod ręczny`,openingWindow:`Otwieranie okna komisjonowania...`,bridgeId:`ID mostka`,passcode:`Kod dostępu`,discriminator:`Dyskryminator`,connectedFabrics:`Połączone fabrics ({{count}})`,noFabrics:`Nie podłączono jeszcze kontrolerów. Zeskanuj kod QR kontrolerem Matter, aby sparować ten mostek.`,entityFilters:`Filtry encji`,noFilters:`Brak skonfigurowanych filtrów. Wszystkie wspierane encje zostaną udostępnione.`,scanQrCode:`Zeskanuj ten kod QR swoim kontrolerem Matter (Apple Home, Google Home, Alexa itd.), aby dodać ten mostek do kolejnego ekosystemu.`,appleHomeWarning:`Ten mostek używa trybu Extended Flat. Wyłącz to tylko wtedy, gdy używasz wyłącznie Apple Home.`,googleHomeWarning:`Może to powodować problemy z Apple Home i Google Home.`,resetSuccess:`Mostek został pomyślnie zresetowany`,deleteSuccess:`Mostek został pomyślnie usunięty`,confirmResetTitle:`Reset fabryczny mostka`,confirmResetMessage:`To usunie wszystkie informacje parowania i zresetuje mostek do stanu początkowego. Podłączone kontrolery utracą dostęp. Operacji nie można cofnąć.`,confirmDeleteTitle:`Usuń mostek`,confirmDeleteMessage:`To trwale usunie mostek, wszystkie parowania i mapowania encji. Podłączone kontrolery utracą dostęp. Operacji nie można cofnąć.`,importTitle:`Importuj mostki`,overwriteExisting:`Nadpisz istniejące mostki`,iconLabel:`Ikona mostka`,google:`Google`,alexa:`Alexa`,serverMode:`Tryb serwera`,autoForceSync:`Automatyczne wymuszanie synchronizacji`,saveSuccess:`Mostek zapisany`,updateSuccess:`Aktualizacja zakończona`,exportFailed:`Eksport nie powiódł się`,actionStarted:`Uruchomiono`,actionStopped:`Zatrzymano`,actionRestarted:`Zrestartowano`,actionFailed:`{{action}} nie powiodło się`,actionResult:`{{label}} {{count}} mostek(ów)`,couldNotLoad:`Nie udało się wczytać mostków`,showingFirst:`Wyświetlanie pierwszych {{count}}`,importParseFailed:`Nie udało się przetworzyć pliku importu. Wybierz prawidłowy plik eksportu.`,importing:`Importowanie...`,importCount:`Importuj {{count}} mostek(ów)`,jsonEditor:`Edytor JSON`,formEditor:`Edytor formularza`},endpoints:{title:`Endpointy`,searchPlaceholder:`Szukaj endpointów...`,sortBy:`Sortuj`,sortName:`Nazwa`,sortEndpoint:`ID endpointu`,sortType:`Typ`,cardView:`Widok kart`,treeView:`Widok drzewa`,clusters:`Klastry`,entityUnavailable:`Encja niedostępna`,showUnavailable:`Pokaż {{count}} niedostępnych`,showAll:`Pokaż wszystkie encje`,uploadImage:`Prześlij obraz urządzenia`,removeImage:`Usuń niestandardowy obraz`,editMapping:`Edytuj mapowanie encji`,homeAssistantEntity:`Encja Home Assistant`,noEndpoints:`Nie znaleziono endpointów.`,expandAll:`Rozwiń wszystko`,collapseAll:`Zwiń wszystko`,viewAll:`Zobacz wszystkie urządzenia`,haState:`Stan HA`,aboutEndpoint:`O tym endpoincie`,entityId:`ID encji`,customName:`Nazwa własna`,deviceTypeOverride:`Nadpisanie typu urządzenia`,keyHaAttributes:`Kluczowe atrybuty HA`,entityMappings:`Mapowania encji`,copyData:`Skopiuj dane do schowka`,behavior:`Zachowanie`},health:{title:`Stan i diagnostyka`,version:`Wersja`,uptime:`Czas działania`,homeAssistant:`Home Assistant`,connected:`Połączono`,disconnected:`Rozłączono`,bridgeStatus:`Status mostka`,refreshHealth:`Odśwież dane stanu`,exportDiagnostic:`Eksportuj diagnostykę`,memory:`Pamięć`,fabricDetails:`Szczegóły fabric`,sessions:`Sesje`,subscriptions:`Subskrypcje`,noFabrics:`Brak podłączonych fabrics`,systemMetrics:`Metryki systemu`,heap:`Heap`,rss:`RSS`,external:`Zewnętrzne`,systemHealth:`Stan systemu`,fetchFailed:`Nie udało się pobrać stanu`,connectionError:`Błąd połączenia`,exportFailed:`Nie udało się wyeksportować danych diagnostycznych`,restartFailed:`Nie udało się zrestartować mostka`,unableToLoad:`Nie można wczytać stanu`,sortBy:`Sortuj według`,created:`Utworzono`,ascending:`Rosnąco`,descending:`Malejąco`,connectedTo:`Połączono z`,autoRecovery:`Automatyczne odzyskiwanie`,recoveryAttempts:`Próby odzyskania`,fabrics:`Fabryki`,networkDiagnostics:`Diagnostyka sieci`,checksPassed:`udane`,checksWarning:`ostrzeżenia`,checksFailed:`nieudane`,hideDetails:`Ukryj szczegóły`,showDetails:`Pokaż szczegóły`,allChecks:`Wszystkie testy`,check:`Test`,statusLabel:`Etykieta statusu`,message:`Wiadomość`,networkInterfaces:`Interfejsy sieciowe`,interfaceName:`Nazwa interfejsu`,refresh:`Odśwież`},mapping:{title:`Mapowania encji`,entityId:`ID encji`,deviceType:`Typ urządzenia`,customName:`Nazwa własna`,status:`Status`,addMapping:`Dodaj mapowanie`,editMapping:`Edytuj mapowanie`,deleteMapping:`Usuń mapowanie`,saved:`Mapowanie zapisano dla {{entityId}}. Uruchom ponownie mostek, aby zastosować zmiany.`,saveFailed:`Nie udało się zapisać mapowania: {{error}}`,deleted:`Mapowanie usunięto dla {{entityId}}.`,deleteFailed:`Nie udało się usunąć mapowania.`,matterTag:`Tag Matter`,exportProfile:`Eksportuj profil mapowania`,importProfile:`Importuj profil mapowania`,profileName:`Nazwa profilu`,match:`Dopasowanie`,existing:`Istniejące`,autoDetect:`Auto-wykrywanie (domyślne)`,customProductName:`Nazwa produktu`,customProductNameHelp:`Niestandardowa nazwa produktu`,customVendorName:`Nazwa producenta`,customVendorNameHelp:`Niestandardowa nazwa producenta`,customSerialNumber:`Numer seryjny`,customSerialNumberHelp:`Niestandardowy numer seryjny`,loadFailed:`Nie udało się wczytać mapowań encji`,noMappings:`Nie skonfigurowano niestandardowych mapowań encji. Użyj mapowań, aby nadpisać typy urządzeń Matter, ustawić własne nazwy lub wyłączyć konkretne encje.`,applying:`Zastosowywanie...`,applyCount:`Zastosuj {{count}} mapowań`},notFound:{title:`Nie znaleziono strony`,description:`Strona, której szukasz, nie istnieje.`,backToDashboard:`Wróć do pulpitu`},devices:{title:`Urządzenia`,searchPlaceholder:`Szukaj urządzeń...`,filterBridge:`Mostek`,allBridges:`Wszystkie mostki`,filterDeviceType:`Typ urządzenia`,allTypes:`Wszystkie typy`,sortBy:`Sortuj według`,sortBridge:`Mostek`,sortType:`Typ urządzenia`,sortName:`Nazwa`,deviceCount:`{{count}} urządzeń`,filteredCount:`{{filtered}} z {{total}} urządzeń`},diagnostics:{title:`Diagnostyka na żywo`,stateUpdate:`Aktualizacja stanu`,command:`Komenda`,entityError:`Błąd`,sessionOpen:`Otwarcie sesji`,sessionClose:`Zamknięcie sesji`,subscription:`Subskrypcja`,bridgeStart:`Start mostka`,bridgeStop:`Stop mostka`,entityWarning:`Ostrzeżenie`,filterEvents:`Filtruj typy zdarzeń`,clearEvents:`Wyczyść wszystkie zdarzenia`,noEvents:`Brak zdarzeń pasujących do aktualnych filtrów.`},startup:{title:`Kolejność uruchamiania`,description:`Przeciągnij i upuść mostki, aby ustawić kolejność uruchamiania. Niższe pozycje uruchamiane są jako pierwsze.`,saveSuccess:`Kolejność uruchamiania została zapisana`,saveFailed:`Nie udało się zapisać kolejności uruchamiania`,saveChanges:`Zapisz zmiany`,unsavedChanges:`Masz niezapisane zmiany kolejności uruchamiania.`,noBridges:`Nie skonfigurowano jeszcze żadnych mostków.`,saveOrder:`Zapisz kolejność uruchamiania`},areaSetup:{title:`Konfiguracja obszaru`,heading:`Konfiguracja mostków wg obszarów`,description:`Automatycznie utwórz jeden mostek dla każdego obszaru Home Assistant. Każdy mostek będzie zawierał wszystkie wspierane encje z tego obszaru.`,noAreas:`Nie znaleziono obszarów ze wspieranymi encjami w Home Assistant. Upewnij się, że Twoje urządzenia są przypisane do obszarów w HA.`,selectController:`1. Wybierz kontroler (opcjonalnie)`,selectAreas:`2. Wybierz obszary ({{selected}} z {{total}})`,clear:`Wyczyść`,createBridges:`Utwórz {{count}} mostek(ów)`,results:`Wyniki`,goToBridges:`Przejdź do mostków`,createdSuccess:`Pomyślnie utworzono {{count}} mostek(ów)`,createdPartial:`Utworzono {{succeeded}}, niepowodzenia {{failed}} mostek(ów)`,loadFailed:`Nie udało się wczytać obszarów`,creating:`Tworzenie...`,created:`Utworzono`,unknownError:`Nieznany błąd`},lockCredentials:{title:`Dane dostępu do zamków`,addCredential:`Dodaj dane dostępu do zamka`,editCredential:`Edytuj dane dostępu do zamka`,lockEntityId:`ID encji zamka`,lockEntityHelperText:`ID encji zamka w Home Assistant`,pinCode:`Kod PIN`,nameOptional:`Nazwa (opcjonalnie)`,namePlaceholder:`Drzwi wejściowe`,nameHelperText:`Przyjazna nazwa dla tych danych dostępu`,entityRequired:`ID encji jest wymagane`,pinLength:`PIN musi mieć 4-8 cyfr`,pinDigitsOnly:`PIN może zawierać tylko cyfry`,saveFailed:`Nie udało się zapisać`,loadFailed:`Nie udało się wczytać danych dostępu`,deleteFailed:`Nie udało się usunąć`,updateFailed:`Nie udało się zaktualizować`,enable:`Włącz`,disable:`Wyłącz`,confirmDeleteTitle:`Usuń dane dostępu`,confirmDeleteMessage:`To trwale usunie kod PIN dla {{entity}}. Operacji nie można cofnąć.`},labels:{title:`Referencja filtrów`,info:`Przeglądaj wszystkie dostępne wartości filtrów dla konfiguracji mostka. Kliknij dowolną wartość, aby skopiować ją do schowka.`,searchPlaceholder:`Szukaj...`,loadFailed:`Nie udało się wczytać danych`,labelsSection:`Etykiety`,labelsHint:`Użyj z typem filtra "entity_label" lub "device_label". Możesz użyć nazwy wyświetlanej albo label_id.`,noLabels:`Nie znaleziono etykiet w Home Assistant. Utwórz etykiety w Ustawienia > Etykiety.`,displayName:`Nazwa wyświetlana`,labelId:`label_id`,areaId:`area_id`,areasSection:`Obszary`,areasHint:`Użyj z typem filtra "area". Obszary są także używane do automatycznego przypisywania pomieszczeń w kontrolerach Matter.`,noAreas:`Nie znaleziono obszarów w Home Assistant. Utwórz obszary w Ustawienia > Obszary.`,otherFilterValues:`Inne wartości filtrów`,domains:`Domeny`,domainsHint:`Użyj z typem filtra "domain".`,platforms:`Platformy / Integracje`,platformsHint:`Użyj z typem filtra "platform".`,entityCategories:`Kategorie encji`,entityCategoriesHint:`Użyj z typem filtra "entity_category".`,deviceClasses:`Klasy urządzeń`,deviceClassesHint:`Użyj z typem filtra "device_class".`,deviceNames:`Nazwy urządzeń`,deviceNamesHint:`Użyj z typem filtra "device_name".`,productNames:`Nazwy produktów`,productNamesHint:`Użyj z typem filtra "product_name".`},logs:{title:`Logi systemowe`,logLevel:`Poziom logowania`,error:`Błąd`,warning:`Ostrzeżenie`,info:`Informacja`,debug:`Debug`,searchPlaceholder:`Szukaj w logach...`,noResults:`Nie znaleziono logów`,autoRefresh:`Automatyczne odświeżanie`},backup:{title:`Kopia i przywracanie`,description:`Utwórz pełną kopię zapasową mostków i mapowań encji albo przywróć z poprzedniej kopii.`,configBackup:`Kopia konfiguracji`,configBackupDesc:`Eksportuj konfiguracje mostków i mapowania encji.`,configBackupNote:`Po przywróceniu mostki będą wymagały ponownego komisjonowania.`,fullBackup:`Pełna kopia (z tożsamością)`,fullBackupDesc:`Zawiera pliki tożsamości Matter (pary kluczy, poświadczenia fabric).`,fullBackupWarning:`Zachowuje stan komisjonowania między przywróceniami. NIE UDOSTĘPNIAJ!`,restoreFromBackup:`Przywróć z kopii`,restoreDesc:`Prześlij wcześniej utworzony plik kopii, aby przywrócić mostki i konfiguracje.`,restoreTitle:`Przywróć kopię`,selectBridges:`Wybierz mostki do przywrócenia`,overwriteExisting:`Nadpisz istniejące mostki`,includeMappings:`Uwzględnij mapowania encji`,restoreIdentities:`Przywróć tożsamości Matter (bez ponownego komisjonowania)`,restore:`Przywróć`,downloadSuccess:`Kopia została pobrana pomyślnie!`,restartRequired:`Wymagany restart`,restartMessage:`Mostki zostały przywrócone z kopii. Aby zastosować zmiany, wymagany jest restart.`,restartNote:`Aplikacja zostanie uruchomiona ponownie i może być konieczne odświeżenie tej strony.`,restartNow:`Restartuj teraz`,storedBackups:`Zapisane kopie`,createSnapshot:`Utwórz kopię`,noSnapshots:`Brak zapisanych kopii. Kopie są tworzone automatycznie przy zamykaniu lub można je utworzyć ręcznie.`,downloadSnapshot:`Pobierz`,restoreSnapshot:`Przywróć`,auto:`Automatyczna`,manual:`Ręczna`,snapshotCreated:`Kopia została utworzona pomyślnie!`,snapshotRestored:`Przywrócono {{bridges}} mostek(ów), {{mappings}} mapowań, {{identities}} tożsamości.`,confirmRestore:`Potwierdź przywracanie`,confirmRestoreMessage:`Czy na pewno chcesz przywrócić z "{{filename}}"? To nadpisze bieżącą konfigurację.`,restoreWarning:`Wszystkie istniejące mostki i konfiguracje zostaną nadpisane. Po przywróceniu wymagany jest restart.`,confirmDelete:`Usuń kopię`,confirmDeleteMessage:`Czy na pewno chcesz usunąć "{{filename}}"? Tej akcji nie można cofnąć.`,settings:`Ustawienia kopii`,autoBackupLabel:`Automatyczna kopia`,autoBackupDesc:`Automatycznie twórz pełną kopię podczas zamykania lub restartu aplikacji.`,retentionCount:`Liczba przechowywanych kopii`,retentionCountDesc:`Liczba kopii do zachowania (najstarsze są usuwane automatycznie)`},networkMap:{title:`Mapa sieci`,hubLabel:`HAMH`,undoMove:`Cofnij ostatnie przesunięcie`,resetLayout:`Resetuj układ`,refreshData:`Odśwież dane`,fullscreen:`Pełny ekran`,exitFullscreen:`Wyjdź z pełnego ekranu`,legend:`Legenda`,controller:`Kontroler`,hub:`Hub HAMH`,bridge:`Mostek`,device:`Urządzenie`,failed:`Niepowodzenie`},updateChecker:{title:`Aktualizacje oprogramowania`,checkNow:`Sprawdź teraz`,currentVersion:`Obecna wersja`,latestVersion:`Najnowsza wersja`,updateAvailable:`Dostępna aktualizacja!`,upToDate:`Używasz najnowszej wersji.`,releaseNotes:`Informacje o wydaniu`,notAvailable:`Sprawdzanie aktualizacji niedostępne w tej wersji`,checkFailed:`Nie udało się sprawdzić aktualizacji`,unreachable:`Nie można połączyć się z serwerem`,instructionAddon:`Zaktualizuj przez Ustawienia → Dodatki w Home Assistant.`,instructionDocker:`Pobierz najnowszy obraz i odtwórz kontener.`,instructionNpm:`Uruchom: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Kreator konfiguracji mostka`,stepTemplate:`Szablon`,stepController:`Kontroler`,stepBridgeInfo:`Informacje o mostku`,stepEntityFilter:`Filtr encji`,stepFeatureFlags:`Flagi funkcji`,stepReview:`Przegląd i utworzenie`,autoCompose:`Automatyczne komponowanie urządzeń`,autoForceSyncFlag:`Automatyczne wymuszanie synchronizacji`,invertCover:`Odwróć kierunek rolet`,invertCoverDescription:`Zamień kierunek otwierania/zamykania rolet. Użyj, jeśli rolety pokazują błędną pozycję w kontrolerach Matter.`,includeHidden:`Uwzględnij ukryte encje`,includeHiddenDescription:`Udostępnij również encje oznaczone jako ukryte w Home Assistant.`,bridgeName:`Nazwa mostka`,portLabel:`Port`,portAutoAssign:`Automatycznie przypisany do kolejnego wolnego portu`,nameRequired:`Wpisz nazwę mostka`,createFailed:`Nie udało się utworzyć mostka`,bridgeInfoDescription:`Nadaj mostkowi nazwę i port.`,serverModeLabel:`Tryb serwera (dla odkurzaczy robotycznych)`,serverModeTooltip:`Wymagany, aby odkurzacze robotyczne działały z Apple Home (Siri) i Alexą. Mostki w trybie serwera obsługują tylko JEDNO urządzenie.`,entityFilterDescription:`Skonfiguruj, które encje mają być uwzględnione w tym mostku.`,includeAll:`Uwzględnij wszystkie encje (wildcard)`,entityId:`ID encji`,includePattern:`Wzorzec uwzględniania`,entityFilters:`Filtry encji`,serverModeEntityHint:`Tryb serwera obsługuje tylko JEDNO urządzenie. Wpisz dokładne ID encji (np. vacuum.my_vacuum).`,templatePreConfigured:`Skonfigurowane przez szablon. Edytuj w pełnym edytorze po utworzeniu.`,wildcardHint:`Użyj * dla wszystkich lub wzorców typu light.*, switch.*`,commaHint:`Wpisz konkretne ID encji rozdzielone przecinkami`,excludePatterns:`Wzorce wykluczeń (opcjonalnie)`,excludeHelperText:`Wzorce do wykluczenia, rozdzielone przecinkami`,skipTemplate:`Pomiń szablon`,creating:`Tworzenie...`,createBridge:`Utwórz mostek`,searchRules:`Szukaj reguł...`,templateDescription:`Wybierz szablon, aby szybko zacząć, lub pomiń, by utworzyć własny mostek.`,controllerDescription:`Którego kontrolera Matter będziesz używać? To zoptymalizuje flagi funkcji dla Twojego kontrolera.`,controllerHint:`Możesz zawsze dostosować flagi funkcji w kolejnych krokach lub po utworzeniu mostka.`,templateApplied:`Zastosowano szablon "{{name}}". Dostosuj poniżej nazwę i port.`,filterPreConfiguredFrom:`Filtr jest wstępnie skonfigurowany z szablonu "{{name}}". Możesz go dostosować poniżej.`,featureFlagsDescription:`Flagi funkcji kontrolują sposób udostępniania urządzeń kontrolerom Matter.`,recommendedFlags:`Zalecane flagi dla {{name}} są wstępnie zaznaczone.`,selectFlags:`Wybierz flagi pasujące do Twojej konfiguracji.`,reviewDescription:`Sprawdź konfigurację mostka:`,bridgesToCreate:`Mostki do utworzenia ({{count}})`,bridgesCreated:`{{count}} mostek(ów) już utworzono w tej sesji`,addAnother:`Dodaj kolejny`},footer:{github:`GitHub`,documentation:`Dokumentacja`,support:`Pomoc`},languageSwitcher:{disclaimer:`Tłumaczenia mogą być niekompletne.`,contribute:`Pomóż je ulepszyć!`},translationEditor:{title:`Edytor tłumaczeń`,editLanguage:`Edytuj język`,info:`Edytuj tłumaczenia bezpośrednio w przeglądarce. Zmiany są zapisywane lokalnie i stosowane natychmiast. Wyeksportuj tłumaczenia, aby przesłać je do projektu.`,progress:`Przetłumaczono {{translated}} / {{total}} kluczy`,localEdits:`{{count}} lokalnych edycji`,searchPlaceholder:`Szukaj kluczy lub wartości...`,filterAll:`Wszystkie klucze`,filterMissing:`Brakujące`,filterEdited:`Edytowane`,exportJson:`Eksportuj JSON`,copyJson:`Kopiuj JSON`,copied:`Skopiowano!`,resetAll:`Resetuj wszystkie edycje`,resetKey:`Przywróć domyślne`,noResults:`Nie znaleziono pasujących kluczy tłumaczenia.`,addLanguage:`Dodaj język`,newLanguageCode:`Kod języka (np. pt, ja, ko)`,newLanguageName:`Nazwa języka (np. Português)`,addLanguageButton:`Dodaj`,languageExists:`Ten język już istnieje.`,codeRequired:`Kod języka jest wymagany.`,nameRequired:`Nazwa języka jest wymagana.`,removeLanguage:`Usuń język`,removeLanguageConfirm:`Usunąć niestandardowy język "{{name}}"? Wszystkie lokalne edycje tego języka zostaną utracone.`,importJson:`Importuj JSON`,importSuccess:`Zaimportowano {{count}} tłumaczeń.`,importFailed:`Import nie powiódł się: nieprawidłowy format JSON.`}},ws={common:{loading:`Загрузка`,notFound:`Не найдено`,save:`Сохранить`,cancel:`Отмена`,delete:`Удалить`,edit:`Редактировать`,close:`Закрыть`,refresh:`Обновить`,search:`Поиск`,enabled:`Включено`,disabled:`Отключено`,online:`В сети`,offline:`Не в сети`,running:`Работает`,stopped:`Остановлено`,failed:`Ошибка`,starting:`Запуск`,devices:`Устройства`,fabrics:`Fabric-соединения`,port:`Порт`,unknown:`Неизвестно`,confirm:`Подтвердить`,create:`Создать`,back:`Назад`,next:`Далее`,actions:`Действия`,name:`Имя`,type:`Тип`,error:`Ошибка`,version:`Версия`,copy:`Копировать`,copied:`Скопировано!`,copyId:`Копировать ID`,later:`Позже`,skip:`Пропустить`,reset:`Сбросить`,update:`Обновить`,all:`Все`,ascending:`По возрастанию`,descending:`По убыванию`,moveUp:`Вверх`,moveDown:`Вниз`,selectAll:`Выбрать все`,selectNone:`Снять выбор`,live:`Живой`,new:`Новый`,overwrite:`Перезаписать`,active:`Активно`,property:`Свойство`,value:`Значение`,custom:`Пользовательский`,startAll:`Запустить все`,stopAll:`Остановить все`,restartAll:`Перезапустить все`,import:`Импорт`,export:`Экспорт`,exportAll:`Экспортировать все`,wizard:`Мастер настройки`},nav:{bridges:`Мосты`,devices:`Все устройства`,health:`Состояние и диагностика`,diagnostics:`События в реальном времени`,settings:`Настройки`,networkMap:`Карта сети`,logs:`Журналы`,startupOrder:`Порядок запуска`,lockCredentials:`Учётные данные замков`,filterReference:`Справочник фильтров`,systemLogs:`Системные журналы`,lightMode:`Светлая тема`,darkMode:`Тёмная тема`},status:{error:`Ошибка`,unhealthy:`Неисправно`,noBridges:`Нет мостов`,loadingHealth:`Загрузка состояния...`,unknown:`Неизвестно`},errorBoundary:{title:`Что-то пошло не так`,fallbackMessage:`Произошла непредвиденная ошибка.`,reload:`Перезагрузить страницу`},settings:{title:`Настройки`,language:`Язык`,languageDescription:`Выберите язык интерфейса.`,checkUpdates:`Проверить обновления`,backupRestore:`Резервное копирование и восстановление`,exportBackup:`Экспорт резервной копии`,importBackup:`Импорт резервной копии`,dangerZone:`Опасная зона`,resetAll:`Сбросить все`,about:`О программе`,username:`Имя пользователя`,password:`Пароль`,enterNewPassword:`Введите новый пароль`,enableAuth:`Включить аутентификацию`,disableAuth:`Отключить аутентификацию`,disableAuthMessage:`Это удалит защиту паролем с веб-интерфейса. Любой в вашей сети сможет получить доступ к конфигурации мостов и изменять её.`,disableAuthConfirm:`Отключить аутентификацию`,usernamePasswordRequired:`Имя пользователя и пароль обязательны`,authSaveFailed:`Не удалось сохранить настройки аутентификации`,authLoadFailed:`Не удалось загрузить настройки аутентификации`,authDisabled:`Аутентификация отключена.`,authRemoveFailed:`Не удалось удалить настройки аутентификации`},dashboard:{title:`Панель управления`,systemOverview:`Обзор системы`,quickActions:`Быстрые действия`,bridgeOverview:`Обзор мостов`,noBridges:`Мосты пока не настроены.`,createBridge:`Создать мост`,viewAll:`Показать все`,totalDevices:`Всего устройств`,customize:`Настроить`,startAll:`Запустить все`,stopAll:`Остановить все`,restartAll:`Перезапустить все`,welcome:`Добро пожаловать в Home Assistant Matter Hub`,welcomeDescription:`Подключите устройства Home Assistant к Matter-контроллерам, таким как Apple Home, Google Home и Amazon Alexa.`,bridgeWizard:`Мастер настройки моста`,setupByArea:`Настройка по зонам`,manualSetup:`Ручная настройка`,areaSetup:`Настройка зон`,documentation:`Документация`,quickNavigation:`Быстрая навигация`,haConnection:`Подключение к HA`,startupOrder:`Порядок запуска`,lockCredentials:`Учётные данные замков`,filterReference:`Справочник фильтров`,successMessage:`Ваши мосты подключены к {{count}} fabric-соединениям контроллеров. Устройства должны появиться в приложении контроллера.`,noBridgesHint:`Мосты пока не настроены. Используйте мастер настройки или создайте мост вручную.`,customizeDashboard:`Настроить панель управления`,bridgeStatusRunning:`{{running}} работает`,bridgeStatusFailed:`{{failed}} с ошибками`,devicesFailed:`{{count}} с ошибками`,uptimeFormat:`{{time}}`},bridge:{name:`Имя моста`,port:`Порт`,status:`Статус`,pairHint:`Подключите этот мост к вашему контроллеру`,pairDescription:`Откройте приложение контроллера (Apple Home, Google Home или Amazon Alexa), добавьте новое устройство и отсканируйте QR-код ниже или введите код сопряжения вручную. Убедитесь, что контроллер находится в одной сети с Home Assistant.`,failedEntities:`Ошибочные объекты`,serverModeRecommended:`Серверный режим рекомендуется для роботов-пылесосов`,serverModeDescription:`Этот мост содержит робот-пылесос в режиме моста. Apple Home и Alexa покажут мост как дополнительное устройство, что приведёт к дублированию. Включите серверный режим, чтобы представить пылесос как самостоятельное Matter-устройство.`,enableServerMode:`Включить серверный режим`,enabling:`Включение...`,start:`Запустить`,stop:`Остановить`,restart:`Перезапустить`,factoryReset:`Сброс к заводским настройкам`,pairingCode:`Код сопряжения`,openCommissioning:`Открыть окно сопряжения`,multiPair:`Мульти-fabric сопряжение`,deleteBridge:`Удалить мост`,deleteConfirm:`Вы уверены, что хотите удалить этот мост?`,featureFlags:`Флаги функций`,failedEntitiesCount:`{{count}} объект(ов) не удалось загрузить.`,clickToShow:`Нажмите для просмотра деталей.`,clickToHide:`Нажмите, чтобы скрыть детали.`,loadFailed:`Не удалось загрузить данные моста`,refreshHint:`Новые устройства и изменения меток обнаруживаются каждые 30 секунд.`,refreshingStates:`Обновление состояний через {{seconds}} сек...`,serverModeSingleDeviceNote:`Примечание: серверный режим требует, чтобы пылесос был единственным устройством на этом мосту. Сначала удалите другие объекты, затем включите серверный режим в настройках моста.`,serverModeEnabled:`Серверный режим включён. Мост перезапустится с пылесосом как самостоятельным устройством.`,serverModeEnableFailed:`Не удалось включить серверный режим: {{error}}`,pairing:`Сопряжение`,bridgeInfo:`Информация о мосте`,commissioned:`Подключён`,addController:`Добавить ещё контроллер`,openingCommissioning:`Открытие окна сопряжения...`,fabricTooltip:`Fabric представляет подключение к Matter-контроллеру (например, Apple Home, Google Home, Alexa). Каждый контроллер создаёт один fabric при сопряжении.`,forceSync:`Принудительная синхронизация`,syncing:`Синхронизация...`,forceSyncTooltip:`Отправить все текущие состояния устройств подключённым контроллерам`,editFilters:`Редактировать фильтры`,addFilters:`Добавить фильтры`,bridgeNotRunning:`Мост не запущен. Запустите мост, чтобы увидеть информацию о сопряжении.`,manualCode:`Код для ввода вручную`,openingWindow:`Открытие окна сопряжения...`,bridgeId:`ID моста`,passcode:`Пароль`,discriminator:`Дискриминатор`,connectedFabrics:`Подключённые fabric-соединения ({{count}})`,noFabrics:`Контроллеры пока не подключены. Отсканируйте QR-код вашим Matter-контроллером для сопряжения.`,entityFilters:`Фильтры объектов`,noFilters:`Фильтры не настроены. Все поддерживаемые объекты будут доступны.`,scanQrCode:`Отсканируйте этот QR-код вашим Matter-контроллером (Apple Home, Google Home, Alexa и др.), чтобы добавить мост в другую экосистему.`,appleHomeWarning:`Этот мост использует расширенный Flat-режим. Отключайте только если вы используете исключительно Apple Home.`,googleHomeWarning:`Это может вызвать проблемы с Apple Home и Google Home.`,resetSuccess:`Мост успешно сброшен`,deleteSuccess:`Мост успешно удалён`,confirmResetTitle:`Сброс моста к заводским настройкам`,confirmResetMessage:`Это удалит всю информацию о сопряжении и вернёт мост в исходное состояние. Подключённые контроллеры потеряют доступ. Это действие нельзя отменить.`,confirmDeleteTitle:`Удалить мост`,confirmDeleteMessage:`Это навсегда удалит мост, все его сопряжения и привязки объектов. Подключённые контроллеры потеряют доступ. Это действие нельзя отменить.`,importTitle:`Импорт мостов`,overwriteExisting:`Перезаписать существующие мосты`,iconLabel:`Иконка моста`,google:`Google`,alexa:`Alexa`,serverMode:`Серверный режим`,autoForceSync:`Автоматическая синхронизация`,saveSuccess:`Мост сохранён`,updateSuccess:`Обновление завершено`,exportFailed:`Ошибка экспорта`,actionStarted:`Запущено`,actionStopped:`Остановлено`,actionRestarted:`Перезапущено`,actionFailed:`{{action}}, ошибка`,actionResult:`{{label}} {{count}} мост(ов)`,couldNotLoad:`Не удалось загрузить мосты`,showingFirst:`Показаны первые {{count}}`,importParseFailed:`Не удалось разобрать файл импорта. Выберите корректный файл экспорта.`,importing:`Импорт...`,importCount:`Импортировать {{count}} мост(ов)`,jsonEditor:`JSON-редактор`,formEditor:`Редактор форм`},endpoints:{title:`Конечные точки`,searchPlaceholder:`Поиск конечных точек...`,sortBy:`Сортировка`,sortName:`Имя`,sortEndpoint:`ID конечной точки`,sortType:`Тип`,cardView:`Карточки`,treeView:`Дерево`,clusters:`Кластеры`,entityUnavailable:`Объект недоступен`,showUnavailable:`Показать {{count}} недоступных`,showAll:`Показать все объекты`,uploadImage:`Загрузить изображение устройства`,removeImage:`Удалить пользовательское изображение`,editMapping:`Редактировать привязку объекта`,homeAssistantEntity:`Объект Home Assistant`,noEndpoints:`Конечные точки не найдены.`,expandAll:`Развернуть все`,collapseAll:`Свернуть все`,viewAll:`Все устройства`,haState:`Состояние HA`,aboutEndpoint:`Об этой конечной точке`,entityId:`ID объекта`,customName:`Пользовательское имя`,deviceTypeOverride:`Переопределение типа устройства`,keyHaAttributes:`Ключевые атрибуты HA`,entityMappings:`Привязки объектов`,copyData:`Копировать данные в буфер обмена`,behavior:`Поведение`},health:{title:`Состояние и диагностика`,version:`Версия`,uptime:`Время работы`,homeAssistant:`Home Assistant`,connected:`Подключено`,disconnected:`Отключено`,bridgeStatus:`Статус моста`,refreshHealth:`Обновить данные о состоянии`,exportDiagnostic:`Экспорт диагностики`,memory:`Память`,fabricDetails:`Данные fabric`,sessions:`Сессии`,subscriptions:`Подписки`,noFabrics:`Нет подключённых fabric`,systemMetrics:`Системные метрики`,heap:`Heap`,rss:`RSS`,external:`Внешняя`,systemHealth:`Состояние системы`,fetchFailed:`Не удалось получить данные о состоянии`,connectionError:`Ошибка подключения`,exportFailed:`Не удалось экспортировать данные диагностики`,restartFailed:`Не удалось перезапустить мост`,unableToLoad:`Не удалось загрузить данные о состоянии`,sortBy:`Сортировать по`,created:`Создано`,ascending:`По возрастанию`,descending:`По убыванию`,connectedTo:`Подключено к`,autoRecovery:`Автовосстановление`,recoveryAttempts:`Попытки восстановления`,fabrics:`фабрик`,networkDiagnostics:`Диагностика сети`,checksPassed:`пройдено`,checksWarning:`предупреждения`,checksFailed:`ошибки`,hideDetails:`Скрыть детали`,showDetails:`Показать детали`,allChecks:`Все проверки`,check:`Проверка`,statusLabel:`Статус`,message:`Сообщение`,networkInterfaces:`Сетевые интерфейсы`,interfaceName:`Интерфейс`,refresh:`Обновить`},mapping:{title:`Привязки объектов`,entityId:`ID объекта`,deviceType:`Тип устройства`,customName:`Пользовательское имя`,status:`Статус`,addMapping:`Добавить привязку`,editMapping:`Редактировать привязку`,deleteMapping:`Удалить привязку`,saved:`Привязка для {{entityId}} сохранена. Перезапустите мост для применения изменений.`,saveFailed:`Не удалось сохранить привязку: {{error}}`,deleted:`Привязка для {{entityId}} удалена.`,deleteFailed:`Не удалось удалить привязку.`,matterTag:`Matter-тег`,exportProfile:`Экспорт профиля привязок`,importProfile:`Импорт профиля привязок`,profileName:`Имя профиля`,match:`Совпадение`,existing:`Существует`,autoDetect:`Автоопределение (по умолчанию)`,loadFailed:`Не удалось загрузить привязки объектов`,noMappings:`Пользовательские привязки не настроены. Используйте привязки для переопределения типов Matter-устройств, установки пользовательских имён или отключения отдельных объектов.`,applying:`Применение...`,applyCount:`Применить {{count}} привязку(и)`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},notFound:{title:`Страница не найдена`,description:`Запрашиваемая страница не существует.`,backToDashboard:`Вернуться на панель управления`},devices:{title:`Устройства`,searchPlaceholder:`Поиск устройств...`,filterBridge:`Мост`,allBridges:`Все мосты`,filterDeviceType:`Тип устройства`,allTypes:`Все типы`,sortBy:`Сортировать по`,sortBridge:`Мост`,sortType:`Тип устройства`,sortName:`Имя`,deviceCount:`{{count}} устройство(а)`,filteredCount:`{{filtered}} из {{total}} устройств`},diagnostics:{title:`Диагностика в реальном времени`,stateUpdate:`Обновление состояния`,command:`Команда`,entityError:`Ошибка`,sessionOpen:`Сессия открыта`,sessionClose:`Сессия закрыта`,subscription:`Подписка`,bridgeStart:`Мост запущен`,bridgeStop:`Мост остановлен`,entityWarning:`Предупреждение`,filterEvents:`Фильтр типов событий`,clearEvents:`Очистить все события`,noEvents:`Нет событий, соответствующих текущим фильтрам.`},startup:{title:`Порядок запуска`,description:`Перетаскивайте мосты для настройки порядка запуска. Мосты с меньшей позицией запускаются первыми.`,saveSuccess:`Порядок запуска успешно сохранён`,saveFailed:`Не удалось сохранить порядок запуска`,saveChanges:`Сохранить изменения`,unsavedChanges:`У вас есть несохранённые изменения порядка запуска.`,noBridges:`Мосты пока не настроены.`,saveOrder:`Сохранить порядок запуска`},areaSetup:{title:`Настройка зон`,heading:`Настройка мостов по зонам`,description:`Автоматически создать по одному мосту на каждую зону Home Assistant. Каждый мост будет содержать все поддерживаемые объекты из этой зоны.`,noAreas:`Не найдено зон с поддерживаемыми объектами в Home Assistant. Убедитесь, что ваши устройства назначены зонам в HA.`,selectController:`1. Выберите контроллер (необязательно)`,selectAreas:`2. Выберите зоны ({{selected}} из {{total}})`,clear:`Очистить`,createBridges:`Создать {{count}} мост(ов)`,results:`Результаты`,goToBridges:`Перейти к мостам`,createdSuccess:`Успешно создано {{count}} мост(ов)`,createdPartial:`Создано {{succeeded}}, ошибка у {{failed}} мост(ов)`,loadFailed:`Не удалось загрузить зоны`,creating:`Создание...`,created:`Создано`,unknownError:`Неизвестная ошибка`},lockCredentials:{title:`Учётные данные замков`,addCredential:`Добавить учётные данные`,editCredential:`Редактировать учётные данные`,lockEntityId:`ID объекта замка`,lockEntityHelperText:`ID объекта Home Assistant для замка`,pinCode:`PIN-код`,nameOptional:`Имя (необязательно)`,namePlaceholder:`Входная дверь`,nameHelperText:`Понятное имя для этих учётных данных`,entityRequired:`ID объекта обязателен`,pinLength:`PIN должен содержать 4-8 цифр`,pinDigitsOnly:`PIN должен содержать только цифры`,saveFailed:`Не удалось сохранить`,loadFailed:`Не удалось загрузить учётные данные`,deleteFailed:`Не удалось удалить`,updateFailed:`Не удалось обновить`,enable:`Включить`,disable:`Отключить`,confirmDeleteTitle:`Удалить учётные данные`,confirmDeleteMessage:`Это навсегда удалит PIN-код для {{entity}}. Это действие нельзя отменить.`},labels:{title:`Справочник фильтров`,info:`Просматривайте все доступные значения фильтров для конфигурации моста. Нажмите на значение, чтобы скопировать его в буфер обмена.`,searchPlaceholder:`Поиск...`,loadFailed:`Не удалось загрузить данные`,labelsSection:`Метки`,labelsHint:`Используйте с типом фильтра "entity_label" или "device_label". Можно использовать как отображаемое имя, так и label_id.`,noLabels:`Метки в Home Assistant не найдены. Создайте метки в разделе Настройки > Метки.`,displayName:`Отображаемое имя`,labelId:`label_id`,areaId:`area_id`,areasSection:`Зоны`,areasHint:`Используйте с типом фильтра "area". Зоны также используются для автоматического назначения комнат в Matter-контроллерах.`,noAreas:`Зоны в Home Assistant не найдены. Создайте зоны в разделе Настройки > Зоны.`,otherFilterValues:`Другие значения фильтров`,domains:`Домены`,domainsHint:`Используйте с типом фильтра "domain".`,platforms:`Платформы / Интеграции`,platformsHint:`Используйте с типом фильтра "platform".`,entityCategories:`Категории объектов`,entityCategoriesHint:`Используйте с типом фильтра "entity_category".`,deviceClasses:`Классы устройств`,deviceClassesHint:`Используйте с типом фильтра "device_class".`,deviceNames:`Имена устройств`,deviceNamesHint:`Используйте с типом фильтра "device_name".`,productNames:`Названия продуктов`,productNamesHint:`Используйте с типом фильтра "product_name".`},logs:{title:`Системные журналы`,logLevel:`Уровень журнала`,error:`Ошибка`,warning:`Предупреждение`,info:`Информация`,debug:`Отладка`,searchPlaceholder:`Поиск в журналах...`,noResults:`Записи не найдены`,autoRefresh:`Автообновление`},backup:{title:`Резервное копирование и восстановление`,description:`Создайте полную резервную копию мостов и привязок объектов или восстановите из предыдущей копии.`,configBackup:`Резервная копия конфигурации`,configBackupDesc:`Экспорт конфигураций мостов и привязок объектов.`,configBackupNote:`После восстановления мосты потребуют повторного сопряжения.`,fullBackup:`Полная резервная копия (с идентификацией)`,fullBackupDesc:`Включает файлы идентификации Matter (ключи, учётные данные fabric).`,fullBackupWarning:`Сохраняет состояние сопряжения при восстановлении. НЕ ПЕРЕДАВАЙТЕ!`,restoreFromBackup:`Восстановить из резервной копии`,restoreDesc:`Загрузите ранее созданный файл резервной копии для восстановления мостов и конфигураций.`,restoreTitle:`Восстановление из резервной копии`,selectBridges:`Выберите мосты для восстановления`,overwriteExisting:`Перезаписать существующие мосты`,includeMappings:`Включить привязки объектов`,restoreIdentities:`Восстановить идентификации Matter (без повторного сопряжения)`,restore:`Восстановить`,downloadSuccess:`Резервная копия успешно загружена!`,restartRequired:`Требуется перезапуск`,restartMessage:`Мосты восстановлены из резервной копии. Для применения изменений необходим перезапуск.`,restartNote:`Приложение перезапустится, и вам может потребоваться обновить эту страницу.`,restartNow:`Перезапустить сейчас`,storedBackups:`Сохранённые резервные копии`,createSnapshot:`Создать резервную копию`,noSnapshots:`Сохранённых резервных копий пока нет. Копии создаются автоматически при завершении работы или могут быть созданы вручную.`,downloadSnapshot:`Скачать`,restoreSnapshot:`Восстановить`,auto:`Авто`,manual:`Вручную`,snapshotCreated:`Резервная копия успешно создана!`,snapshotRestored:`Восстановлено: {{bridges}} мостов, {{mappings}} привязок, {{identities}} идентификаций.`,confirmRestore:`Подтвердить восстановление`,confirmRestoreMessage:`Вы уверены, что хотите восстановить из "{{filename}}"? Это перезапишет текущую конфигурацию.`,restoreWarning:`Все существующие мосты и конфигурации будут перезаписаны. После восстановления потребуется перезапуск.`,confirmDelete:`Удалить резервную копию`,confirmDeleteMessage:`Вы уверены, что хотите удалить "{{filename}}"? Это действие нельзя отменить.`,settings:`Настройки резервного копирования`,autoBackupLabel:`Автоматическое резервное копирование`,autoBackupDesc:`Автоматически создавать полную резервную копию при завершении или перезапуске приложения.`,retentionCount:`Хранить копий`,retentionCountDesc:`Количество резервных копий для хранения (старые удаляются автоматически)`},networkMap:{title:`Карта сети`,hubLabel:`HAMH`,undoMove:`Отменить перемещение`,resetLayout:`Сбросить расположение`,refreshData:`Обновить данные`,fullscreen:`Полный экран`,exitFullscreen:`Выйти из полного экрана`,legend:`Легенда`,controller:`Контроллер`,hub:`HAMH Hub`,bridge:`Мост`,device:`Устройство`,failed:`Ошибка`},updateChecker:{title:`Обновления программного обеспечения`,checkNow:`Проверить сейчас`,currentVersion:`Текущая версия`,latestVersion:`Последняя версия`,updateAvailable:`Доступно обновление!`,upToDate:`Вы используете последнюю версию.`,releaseNotes:`Примечания к выпуску`,notAvailable:`Проверка обновлений недоступна в этой версии`,checkFailed:`Не удалось проверить обновления`,unreachable:`Сервер недоступен`,instructionAddon:`Обновите через Настройки → Дополнения в Home Assistant.`,instructionDocker:`Загрузите последний образ и пересоздайте контейнер.`,instructionNpm:`Выполните: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Мастер настройки моста`,stepTemplate:`Шаблон`,stepController:`Контроллер`,stepBridgeInfo:`Информация о мосте`,stepEntityFilter:`Фильтр объектов`,stepFeatureFlags:`Флаги функций`,stepReview:`Проверка и создание`,autoCompose:`Автоматическое объединение устройств`,autoForceSyncFlag:`Автоматическая синхронизация`,invertCover:`Инвертировать направление штор`,invertCoverDescription:`Поменять местами направления открытия/закрытия штор. Используйте, если шторы показывают неправильное положение в Matter-контроллерах.`,includeHidden:`Включить скрытые объекты`,includeHiddenDescription:`Также отображать объекты, отмеченные как скрытые в Home Assistant.`,bridgeName:`Имя моста`,portLabel:`Порт`,portAutoAssign:`Автоматически назначается следующий доступный порт`,nameRequired:`Пожалуйста, введите имя моста`,createFailed:`Не удалось создать мост`,bridgeInfoDescription:`Задайте имя и порт для моста.`,serverModeLabel:`Серверный режим (для роботов-пылесосов)`,serverModeTooltip:`Необходим для работы роботов-пылесосов с Apple Home (Siri) и Alexa. Мосты в серверном режиме поддерживают только ОДНО устройство.`,entityFilterDescription:`Настройте, какие объекты должны быть включены в этот мост.`,includeAll:`Включить все объекты (подстановочный знак)`,entityId:`ID объекта`,includePattern:`Шаблон включения`,entityFilters:`Фильтры объектов`,serverModeEntityHint:`Серверный режим поддерживает только ОДНО устройство. Введите точный ID объекта (например, vacuum.my_vacuum).`,templatePreConfigured:`Предварительно настроено шаблоном. Редактируйте в полном редакторе после создания.`,wildcardHint:`Используйте * для всех или шаблоны вроде light.*, switch.*`,commaHint:`Введите конкретные ID объектов через запятую`,excludePatterns:`Шаблоны исключения (необязательно)`,excludeHelperText:`Шаблоны для исключения через запятую`,skipTemplate:`Пропустить шаблон`,creating:`Создание...`,createBridge:`Создать мост`,searchRules:`Поиск правил...`,templateDescription:`Выберите шаблон для быстрого старта или пропустите для создания пользовательского моста.`,controllerDescription:`Какой Matter-контроллер вы будете использовать? Это оптимизирует флаги функций для вашего контроллера.`,controllerHint:`Вы можете изменить флаги функций на следующих шагах или после создания моста.`,templateApplied:`Шаблон "{{name}}" применён. Настройте имя и порт ниже.`,filterPreConfiguredFrom:`Фильтр предварительно настроен из шаблона "{{name}}". Вы можете изменить его ниже.`,featureFlagsDescription:`Флаги функций управляют тем, как устройства представляются Matter-контроллерам.`,recommendedFlags:`Рекомендуемые флаги для {{name}} предварительно выбраны.`,selectFlags:`Выберите флаги, подходящие для вашей конфигурации.`,reviewDescription:`Проверьте конфигурацию моста:`,bridgesToCreate:`Мосты для создания ({{count}})`,bridgesCreated:`{{count}} мост(ов) уже создано в этой сессии`,addAnother:`Добавить ещё`},footer:{github:`GitHub`,documentation:`Документация`},languageSwitcher:{disclaimer:`Переводы могут быть неполными.`,contribute:`Помогите их улучшить!`},translationEditor:{title:`Редактор переводов`,editLanguage:`Язык для редактирования`,info:`Редактируйте переводы прямо в браузере. Изменения сохраняются локально и применяются мгновенно. Экспортируйте переводы для отправки в проект.`,progress:`{{translated}} / {{total}} ключей переведено`,localEdits:`{{count}} локальных правок`,searchPlaceholder:`Поиск ключей или значений...`,filterAll:`Все ключи`,filterMissing:`Отсутствующие`,filterEdited:`Изменённые`,exportJson:`Экспорт JSON`,copyJson:`Копировать JSON`,copied:`Скопировано!`,resetAll:`Сбросить все правки`,resetKey:`Сбросить к значению по умолчанию`,noResults:`Совпадающие ключи перевода не найдены.`,addLanguage:`Добавить язык`,newLanguageCode:`Код языка (например, pt, ja, ko)`,newLanguageName:`Название языка (например, Português)`,addLanguageButton:`Добавить`,languageExists:`Этот язык уже существует.`,codeRequired:`Код языка обязателен.`,nameRequired:`Название языка обязательно.`,removeLanguage:`Удалить язык`,removeLanguageConfirm:`Удалить пользовательский язык "{{name}}"? Все локальные правки для этого языка будут потеряны.`,importJson:`Импорт JSON`,importSuccess:`Импортировано {{count}} перевод(ов).`,importFailed:`Ошибка импорта: недопустимый формат JSON.`}},Ts={common:{loading:`Laddar`,notFound:`Hittades inte`,save:`Spara`,cancel:`Avbryt`,delete:`Radera`,edit:`Redigera`,close:`Stäng`,refresh:`Uppdatera`,search:`Sök`,enabled:`Aktiverad`,disabled:`Inaktiverad`,online:`Online`,offline:`Offline`,running:`Körs`,stopped:`Stoppad`,failed:`Misslyckades`,starting:`Startar`,devices:`Enheter`,fabrics:`Märken`,port:`Port`,unknown:`Okänd`,confirm:`Bekräfta`,create:`Skapa`,back:`Tillbaka`,next:`Nästa`,actions:`Åtgärder`,name:`Namn`,type:`Typ`,error:`Fel`,version:`Version`,copy:`Kopiera`,copied:`Kopierat!`,copyId:`Kopiera ID`,later:`Senare`,skip:`Hoppa över`,reset:`Återställ`,update:`Uppdatera`,all:`Alla`,ascending:`Stigande`,descending:`Fallande`,moveUp:`Flytta upp`,moveDown:`Flytta ner`,selectAll:`Välj alla`,selectNone:`Avmarkera alla`,live:`Live`,new:`Ny`,overwrite:`Skriv över`,active:`Aktiv`,property:`Egenskap`,value:`Värde`,custom:`Anpassad`,startAll:`Starta alla`,stopAll:`Stoppa alla`,restartAll:`Starta om alla`,import:`Importera`,export:`Exportera`,exportAll:`Exportera alla`,wizard:`Guide`},nav:{bridges:`Bryggor`,devices:`Alla enheter`,health:`Hälsa & Diagnostik`,diagnostics:`Livehändelser`,settings:`Inställningar`,networkMap:`Nätverkskarta`,logs:`Loggar`,startupOrder:`Uppstartsordning`,lockCredentials:`Låsuppgifter`,filterReference:`Filterreferens`,systemLogs:`Systemloggar`,lightMode:`Ljust läge`,darkMode:`Mörkt läge`},status:{error:`Fel`,unhealthy:`Ohälsosam`,noBridges:`Inga Bryggor`,loadingHealth:`Laddar hälsostatus...`,unknown:`Okänd`},errorBoundary:{title:`Något gick fel`,fallbackMessage:`Ett oväntat fel inträffade.`,reload:`Ladda om sidan`},settings:{title:`Inställningar`,language:`Språk`,languageDescription:`Välj gränssnittets språk.`,checkUpdates:`Sök efter uppdateringar`,backupRestore:`Säkerhetskopiering & Återställning`,exportBackup:`Exportera säkerhetskopia`,importBackup:`Importera säkerhetskopia`,dangerZone:`Farozon`,resetAll:`Återställ allt`,about:`Om`,username:`Användarnamn`,password:`Lösenord`,enterNewPassword:`Ange nytt lösenord`,enableAuth:`Aktivera autentisering`,disableAuth:`Avaktivera autentisering`,disableAuthMessage:`Detta tar bort lösenordsskyddet från webbgränssnittet. Alla i ditt nätverk kommer att kunna komma åt och ändra din bryggkonfiguration.`,disableAuthConfirm:`Inaktivera autentisering`,usernamePasswordRequired:`Användarnamn och lösenord krävs`,authSaveFailed:`Kunde inte spara autentiseringsinställningarna`,authLoadFailed:`Misslyckades med att läsa in autentiseringsinställningarna`,authDisabled:`Autentisering inaktiverad.`,authRemoveFailed:`Misslyckades med att ta bort autentiseringsinställningarna`},dashboard:{title:`Instrumentpanel`,systemOverview:`Systemöversikt`,quickActions:`Snabbåtgärder`,bridgeOverview:`Brygg-översikt`,noBridges:`Inga bryggor konfigurerade.`,createBridge:`Skapa Brygga`,viewAll:`Visa alla`,totalDevices:`Totalt antal enheter`,customize:`Anpassa`,startAll:`Starta alla`,stopAll:`Stoppa alla`,restartAll:`Starta om alla`,welcome:`Välkommen till Home Assistant Matter Hub`,welcomeDescription:`Koppla dina Home Assistant-enheter till Matter-kontroller som Apple Home, Google Home och Amazon Alexa.`,bridgeWizard:`Brygg-guide`,setupByArea:`Konfigurera efter område`,manualSetup:`Manuell konfiguration`,areaSetup:`Områdeskonfiguration`,documentation:`Dokumentation`,quickNavigation:`Snabbnavigering`,haConnection:`HA-anslutning`,startupOrder:`Startordning`,lockCredentials:`Låsuppgifter`,filterReference:`Filterreferens`,successMessage:`Dina bryggor är anslutna till {{count}} kontroller-fabric(s). Enheter bör nu visas i din kontroller-app.`,noBridgesHint:`Inga bryggor konfigurerade. Använd Brygg-guiden eller skapa en manuellt.`,customizeDashboard:`Anpassa instrumentpanelen`,bridgeStatusRunning:`{{running}} Körs`,bridgeStatusFailed:`{{failed}} misslyckades`,devicesFailed:`{{count}} misslyckades`,uptimeFormat:`{{time}}`},bridge:{name:`Brygg-namn`,port:`Port`,status:`Status`,pairHint:`Koppla denna brygga med din kontroller`,pairDescription:`Öppna din kontroller-app (Apple Home, Google Home eller Amazon Alexa), lägg till ett nytt tillbehör och skanna QR-koden nedan eller ange den manuella kopplingskoden. Se till att din kontroller är på samma nätverk som Home Assistant.`,failedEntities:`Misslyckade entiteter`,serverModeRecommended:`Serverläge rekommenderas för robotdammsugare`,serverModeDescription:`Denna brygga innehåller en robotdammsugare i bryggläge. Apple Home och Alexa visar bryggan som en extra enhet, vilket skapar dubbletter. Aktivera Serverläge för att exponera dammsugaren som en fristående Matter-enhet.`,enableServerMode:`Aktivera Serverläge`,enabling:`Aktiverar...`,start:`Starta`,stop:`Stoppa`,restart:`Starta om`,factoryReset:`Fabriksåterställning`,pairingCode:`Kopplingskod`,openCommissioning:`Öppna kopplingsfönster`,multiPair:`Multi-Fabric-koppling`,deleteBridge:`Radera brygga`,deleteConfirm:`Är du säker på att du vill radera denna brygga?`,featureFlags:`Funktionsflaggor`,failedEntitiesCount:`{{count}} entitet(er) kunde inte laddas.`,clickToShow:`Klicka för att visa detaljer.`,clickToHide:`Klicka för att dölja detaljer.`,loadFailed:`Kunde inte ladda Brygg-detaljer`,refreshHint:`Nya enheter och etikettändringar upptäcks var 30:e sekund.`,refreshingStates:`Uppdaterar tillstånd om {{seconds}} sekunder...`,serverModeSingleDeviceNote:`Obs: Serverläge kräver att dammsugaren är den enda enheten på denna brygga. Ta bort andra entiteter först, aktivera sedan Serverläge i brygg-inställningarna.`,serverModeEnabled:`Serverläge aktiverat. Bryggan startar om med din dammsugare som fristående enhet.`,serverModeEnableFailed:`Kunde inte aktivera Serverläge: {{error}}`,pairing:`Koppling`,bridgeInfo:`Brygg-info`,commissioned:`Kopplad`,addController:`Lägg till en annan kontroller`,openingCommissioning:`Öppnar driftsättningsfönstret...`,fabricTooltip:`En fabric representerar en anslutning till en Matter-kontroller (t.ex. Apple Home, Google Home, Alexa). Varje kontroller skapar en fabric när den paras ihop.`,forceSync:`Tvinga synkronisering`,syncing:`Synkroniserar...`,forceSyncTooltip:`Skicka alla aktuella enhetstillstånd till anslutna styrenheter`,editFilters:`Redigera filter`,addFilters:`Lägg till filter`,bridgeNotRunning:`Bridgen körs inte. Starta bridgen för att se kopplingsinformation.`,manualCode:`Manuell kod`,openingWindow:`Öppnar driftsättningsfönstret...`,bridgeId:`Brygg-ID`,passcode:`Lösenkod`,discriminator:`Diskriminator`,connectedFabrics:`Anslutna Märken ({{count}})`,noFabrics:`Ingen kontroller ansluten. Skanna QR-koden med din Matter-kontroller.`,entityFilters:`Entitetsfilter`,noFilters:`Inga filter konfigurerade. Alla stödda entiteter kommer att exponeras.`,scanQrCode:`Skanna den här QR-koden med din Matter-kontroll (Apple Home, Google Home, Alexa, etc.) för att lägga till den här bryggan i ett annat ekosystem.`,appleHomeWarning:`Den här bryggan använder utökat platt läge. Inaktivera endast detta om du uteslutande använder Apple Home.`,googleHomeWarning:`Detta kan orsaka problem med Apple Home och Google Home.`,resetSuccess:`Brygga återställd`,deleteSuccess:`Brygga raderad`,confirmResetTitle:`Återställ Brygga`,confirmResetMessage:`Detta tar bort all parkopplingsinformation och återställer bryggan till sitt ursprungliga tillstånd. Anslutna handkontroller förlorar åtkomst. Detta kan inte ångras.`,confirmDeleteTitle:`Radera Brygga`,confirmDeleteMessage:`Detta kommer att permanent ta bort bryggan, alla dess parkopplingar och entitetsmappningar. Anslutna styrenheter kommer att förlora åtkomst. Detta kan inte ångras.`,importTitle:`Importera Brygga`,overwriteExisting:`Skriv över befintliga brygga`,iconLabel:`Brygg-ikon`,google:`Google`,alexa:`Alexa`,serverMode:`Serverläge`,autoForceSync:`Automatisk synkronisering`,saveSuccess:`Brygga sparad`,updateSuccess:`Uppdatering slutförd`,exportFailed:`Export misslyckades`,actionStarted:`Startad`,actionStopped:`Stoppad`,actionRestarted:`Omstartad`,actionFailed:`{{action}} misslyckades`,actionResult:`{{label}} {{count}} brygga(or)`,couldNotLoad:`Kunde inte ladda bryggor`,showingFirst:`Visar första {{count}}`,importParseFailed:`Kunde inte tolka importfilen. Välj en giltig exportfil.`,importing:`Importerar...`,importCount:`Importera {{count}} brygga(or)`,jsonEditor:`JSON-redigerare`,formEditor:`Formulärredigerare`},endpoints:{title:`Slutpunkter`,searchPlaceholder:`Sök slutpunkter...`,sortBy:`Sortera`,sortName:`Namn`,sortEndpoint:`Slutpunkts-ID`,sortType:`Typ`,cardView:`Kortvy`,treeView:`Trädvy`,clusters:`Kluster`,entityUnavailable:`Entitet otillgänglig`,showUnavailable:`Visa {{count}} otillgängliga`,showAll:`Visa alla entiteter`,uploadImage:`Ladda upp enhetsbild`,removeImage:`Ta bort anpassad bild`,editMapping:`Redigera entitetsmappning`,homeAssistantEntity:`Home Assistant-entitet`,noEndpoints:`Inga slutpunkter hittades.`,expandAll:`Expandera alla`,collapseAll:`Komprimera alla`,viewAll:`Visa alla enheter`,haState:`HA-status`,aboutEndpoint:`Om denna slutpunkt`,entityId:`Entitets-ID`,customName:`Anpassat namn`,deviceTypeOverride:`Åsidosatt enhetstyp`,keyHaAttributes:`Viktiga HA-attribut`,entityMappings:`Entitetsmappningar`,copyData:`Kopiera data till urklipp`,behavior:`Beteende`},health:{title:`Hälsa & Diagnostik`,version:`Version`,uptime:`Drifttid`,homeAssistant:`Home Assistant`,connected:`Ansluten`,disconnected:`Frånkopplad`,bridgeStatus:`Brygg-status`,refreshHealth:`Uppdatera hälsodata`,exportDiagnostic:`Exportera diagnostik`,memory:`Minne`,fabricDetails:`Fabric-detaljer`,sessions:`Sessioner`,subscriptions:`Prenumerationer`,noFabrics:`Inga Märken anslutna`,systemMetrics:`Systemmått`,heap:`Heap`,rss:`RSS`,external:`Extern`,systemHealth:`Systemhälsa`,fetchFailed:`Kunde inte hämta hälsostatus`,connectionError:`Anslutningsfel`,exportFailed:`Kunde inte exportera diagnostikdata`,restartFailed:`Kunde inte starta om bridge`,unableToLoad:`Kunde inte ladda hälsostatus`,sortBy:`Sortera efter`,created:`Skapad`,ascending:`Stigande`,descending:`Fallande`,connectedTo:`Ansluten till`,autoRecovery:`Automatisk återställning`,recoveryAttempts:`Återställningsförsök`,fabrics:`Märke`,networkDiagnostics:`Nätverks diagnostik`,checksPassed:`Godkänd`,checksWarning:`Varning`,checksFailed:`misslyckades`,hideDetails:`Dölj detaljer`,showDetails:`Visa detaljer`,allChecks:`Alla Kontroller`,check:`Kontroller`,statusLabel:`Status`,message:`Meddelande`,networkInterfaces:`Nätverksgränssnitt`,interfaceName:`Gränssnitt`,refresh:`Uppdatera`},mapping:{title:`Entitetsmappningar`,entityId:`Entitets-ID`,deviceType:`Enhetstyp`,customName:`Anpassat namn`,status:`Status`,addMapping:`Lägg till mappning`,editMapping:`Redigera mappning`,deleteMapping:`Radera mappning`,saved:`Mappning sparad för {{entityId}}. Starta om bridgen för att tillämpa ändringar.`,saveFailed:`Kunde inte spara mappning: {{error}}`,deleted:`Mappning raderad för {{entityId}}.`,deleteFailed:`Kunde inte radera mappning.`,matterTag:`Matter Tag`,exportProfile:`Exportera mappningsprofil`,importProfile:`Importera mappningsprofil`,profileName:`Profilnamn`,match:`Match`,existing:`Existerande`,autoDetect:`Automatisk identifiering (standard)`,customProductName:`Anpassat produktnamn`,customProductNameHelp:`Åsidosätt produktnamnet (modellen) som rapporterats till Matter-kontroller. Vissa kontroller (t.ex. Aqara) visar detta som enhetsnamn`,customVendorName:`Anpassat leverantörsnamn`,customVendorNameHelp:`Åsidosätt leverantörs-/tillverkarenamnet som rapporterats till ärendeansvariga`,customSerialNumber:`Anpassat serienummer`,customSerialNumberHelp:`Åsidosätt serienumret som rapporteras till ärendekontroller`,loadFailed:`Misslyckades med att läsa in entitetsmappningar`,noMappings:`Inga anpassade entitetsmappningar har konfigurerats. Använd mappningar för att åsidosätta enhetstyper för Matter, ange anpassade namn eller inaktivera specifika entiteter.`,applying:`Tillämpar`,applyCount:`Tillämpa {{count}} mappning(ar)`},notFound:{title:`Sidan hittades inte`,description:`Sidan du letar efter finns inte.`,backToDashboard:`Tillbaka till instrumentpanelen`},devices:{title:`Enheter`,searchPlaceholder:`Sök enheter`,filterBridge:`Brygga`,allBridges:`Alla bryggor`,filterDeviceType:`Enhetstyp`,allTypes:`Alla typer`,sortBy:`Sortera efter`,sortBridge:`Brygga`,sortType:`Enhetstyp`,sortName:`Namn`,deviceCount:`{{count}} Enheter`,filteredCount:`{{filtered}} av {{total}} enheter`},diagnostics:{title:`Live diagnostik`,stateUpdate:`Uppdatering om tillstånd`,command:`Kommando`,entityError:`Fel`,sessionOpen:`Session öppen`,sessionClose:`Session stängd`,subscription:`Prenumeration`,bridgeStart:`Brygg start`,bridgeStop:`Brygg stop`,entityWarning:`Varning`,filterEvents:`Filtrera händelsetyper`,clearEvents:`Rensa alla händelser`,noEvents:`Inga händelser matchar de aktuella filtren.`},startup:{title:`Uppstartsordning`,description:`Dra och släpp bryggor för att ställa in startordningen. Lägre positioner börjar först.`,saveSuccess:`Startordern har sparats`,saveFailed:`Kunde inte spara startordningen`,saveChanges:`Spara ändringar`,unsavedChanges:`Du har osparade ändringar i startordningen.`,noBridges:`Inga bryggor konfigurerade än.`,saveOrder:`Spara Uppstartsordning`},areaSetup:{title:`Områdes inställning`,heading:`Områdesbaserad brygginstallation`,description:`Skapa automatiskt en brygga per Home Assistant-område. Varje brygga kommer att inkludera alla enheter som stöds från det området.`,noAreas:`Inga områden med stödda enheter hittades i Home Assistant. Se till att dina enheter är tilldelade områden i HA.`,selectController:`1. Välj styrenhet (valfritt)`,selectAreas:`2. Välj områden ({{selected}} av {{total}})`,clear:`Rensa`,createBridges:`Skapa {{count}} brygga(or)`,results:`Resultat`,goToBridges:`Gå till bryggor`,createdSuccess:`{{count}} brygga(or) har skapats`,createdPartial:`Skapade {{succeeded}}, misslyckades med {{failed}} brygga(or)`,loadFailed:`Misslyckades med att ladda områden`,creating:`Skapande...`,created:`Skapad`,unknownError:`Okänt fel`},lockCredentials:{title:`Lås inloggningsuppgifter`,addCredential:`Lägg till låsuppgifter`,editCredential:`Redigera låsuppgifter`,lockEntityId:`Lås enhets-ID`,lockEntityHelperText:`Låsets enhets-ID för Home Assistant`,pinCode:`PIN-kod`,nameOptional:`Namn (valfritt)`,namePlaceholder:`Ytterdörr`,nameHelperText:`Vänligt namn för denna autentiseringsuppgift`,entityRequired:`Enhets-ID krävs`,pinLength:`PIN-koden måste vara 4-8 siffror`,pinDigitsOnly:`PIN-koden får endast innehålla siffror`,saveFailed:`Misslyckades med att spara`,loadFailed:`Misslyckades med att ladda inloggningsuppgifterna`,deleteFailed:`Misslyckades med att radera`,updateFailed:`Misslyckades med att uppdatera`,enable:`Aktivera`,disable:`Inaktivera`,confirmDeleteTitle:`Ta bort autentiseringsuppgifter`,confirmDeleteMessage:`Detta kommer att permanent radera PIN-uppgifterna för {{entity}}. Detta kan inte ångras.`},labels:{title:`Filterreferens`,info:`Bläddra bland alla tillgängliga filtervärden för din bryggkonfiguration. Klicka på valfritt värde för att kopiera det till urklipp.`,searchPlaceholder:`Sök`,loadFailed:`Misslyckades med att ladda data`,labelsSection:`Etiketter`,labelsHint:`Använd med filtertypen "entity_label" eller "device_label". Du kan använda antingen visningsnamnet eller etikett_id.`,noLabels:`Inga etiketter hittades i Home Assistant. Skapa etiketter under Inställningar > Etiketter.`,displayName:`Visningsnamn`,labelId:`etikett_id`,areaId:`områdes-id`,areasSection:`Områden`,areasHint:`Använd med filtertypen "område". Områden används även för automatisk rumstilldelning i Matter-regulatorer.`,noAreas:`Inga områden hittades i Home Assistant. Skapa områden under Inställningar > Områden.`,otherFilterValues:`Andra filtervärden`,domains:`Domäner`,domainsHint:`Använd med filtertypen "domän".`,platforms:`Plattformar / Integrationer`,platformsHint:`Använd med filtertypen "plattform".`,entityCategories:`Enhetskategorier`,entityCategoriesHint:`Använd med filtertypen "entitetskategori".`,deviceClasses:`Enhetsklasser`,deviceClassesHint:`Använd med filtertypen "device_class".`,deviceNames:`Enhetsnamn`,deviceNamesHint:`Använd med filtertypen "enhetsnamn".`,productNames:`Produktnamn`,productNamesHint:`Använd med filtertypen "produktnamn".`},logs:{title:`Systemloggar`,logLevel:`Loggnivå`,error:`Fel`,warning:`Varning`,info:`Info`,debug:`Felsök`,searchPlaceholder:`Sök i loggar...`,noResults:`Inga loggar hittades`,autoRefresh:`Automatisk uppdatering`},backup:{title:`Säkerhetskopiering & Återställning`,description:`Skapa en fullständig säkerhetskopia av dina bryggor och entitetsmappningar, eller återställ från en tidigare säkerhetskopia.`,configBackup:`Enkel säkerhetskopia`,configBackupDesc:`Exportera bryggkonfigurationer och entitetsmappningar.`,configBackupNote:`Bryggorna kommer att behöva tas i bruk igen efter återställning.`,fullBackup:`Full säkerhetskopia (med identitet)`,fullBackupDesc:`Inkluderar ärendeidentitetsfiler (nyckelpar, fabric-inloggningsuppgifter).`,fullBackupWarning:`Bevarar driftsättningstillståndet vid återställningar. DELA INTE!`,restoreFromBackup:`Återställ från säkerhetskopia`,restoreDesc:`Ladda upp en tidigare skapad säkerhetskopia för att återställa bryggor och konfigurationer.`,restoreTitle:`Återställ säkerhetskopia`,selectBridges:`Välj bryggor att återställa`,overwriteExisting:`Skriv över befintliga bryggor`,includeMappings:`Inkludera entitetsmappningar`,restoreIdentities:`Återställ Matter-identiteter (ingen återinsättning krävs)`,restore:`Återställ`,downloadSuccess:`Säkerhetskopieringen har laddats ner!`,restartRequired:`Omstart krävs`,restartMessage:`Bryggorna har återställts från säkerhetskopian. En omstart krävs för att ändringarna ska träda i kraft.`,restartNote:`Applikationen startar om och du kan behöva uppdatera sidan.`,restartNow:`Starta om nu`,storedBackups:`Lagrade säkerhetskopior`,createSnapshot:`Skapa säkerhetskopia`,noSnapshots:`Inga lagrade säkerhetskopior ännu. Säkerhetskopior skapas automatiskt vid avstängning eller så kan de skapas manuellt.`,downloadSnapshot:`Ladda ner`,restoreSnapshot:`Återställ`,auto:`Auto`,manual:`Manuell`,snapshotCreated:`Säkerhetskopiering skapad!`,snapshotRestored:`Återställda {{bridges}} bryggor, {{mappings}} mappningar, {{identities}} identiteter.`,confirmRestore:`Bekräfta återställning`,confirmRestoreMessage:`Är du säker på att du vill återställa från "{{filename}}"? Detta kommer att skriva över din nuvarande konfiguration.`,restoreWarning:`Alla befintliga bryggor och konfigurationer kommer att skrivas över. En omstart krävs efter återställningen.`,confirmDelete:`Ta bort säkerhetskopia`,confirmDeleteMessage:`Är du säker på att du vill ta bort "{{filename}}"? Den här åtgärden kan inte ångras.`,settings:`Säkerhetskopieringsinställningar`,autoBackupLabel:`Automatisk säkerhetskopiering`,autoBackupDesc:`Skapar automatiskt en fullständig säkerhetskopia när programmet stängs av eller startas om.`,retentionCount:`Behåll säkerhetskopior`,retentionCountDesc:`Antal säkerhetskopior att behålla (de äldsta raderas automatiskt)`},networkMap:{title:`Nätverkskarta`,hubLabel:`HAMH`,undoMove:`Ångra senaste drag`,resetLayout:`Nollställ utseende`,refreshData:`Uppdatera data`,fullscreen:`Fullskärm`,exitFullscreen:`Avsluta fullskärm`,legend:`Legend`,controller:`Kontroller`,hub:`HAMH Hub`,bridge:`Brygga`,device:`Enhet`,failed:`Misslyckades`},updateChecker:{title:`Programvaru uppdatering`,checkNow:`Kontrollera nu`,currentVersion:`Nuvarande version`,latestVersion:`Senaste version`,updateAvailable:`Uppdatering tillgänglig`,upToDate:`Du kör den senaste versionen`,releaseNotes:`Versionsinformation`,notAvailable:`Uppdateringskontroll är inte tillgänglig i den här versionen`,checkFailed:`Misslyckades med att söka efter uppdateringar`,unreachable:`Det gick inte att nå servern`,instructionAddon:`Uppdatera via Inställningar → Appar i Home Assistant.`,instructionDocker:`Hämta den senaste avbildningen och återskapa din container.`,instructionNpm:`Kör: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Guiden för brygginstallation`,stepTemplate:`Template`,stepController:`Kontroller`,stepBridgeInfo:`Brygg info`,stepEntityFilter:`Entitetsfilter`,stepFeatureFlags:`Funktionsflaggor`,stepReview:`Granska & skapa`,autoCompose:`Auto Komponera enheter`,autoForceSyncFlag:`Automatisk tvångssynkronisering`,invertCover:`Invertera rullgardin`,invertCoverDescription:`Byt öppnings-/stängningsriktning för omslag. Använd detta om dina omslag visar fel position i Matter-kontrollerna.`,includeHidden:`Inkludera gömda enheter`,includeHiddenDescription:`Visa även enheter som är markerade som dolda i Home Assistant.`,bridgeName:`Brygg namn`,portLabel:`Port`,portAutoAssign:`Tilldelas automatiskt till nästa tillgängliga port`,nameRequired:`Ange ett namn på en brygga`,createFailed:`Misslyckades att skapa brygga`,bridgeInfoDescription:`Ge din brygga ett namn och en port.`,serverModeLabel:`Serverläge (för robotdammsugare)`,serverModeTooltip:`Krävs för att robotdammsugare ska fungera med Apple Home (Siri) och Alexa. Serverlägesbryggor stödjer endast EN enhet.`,entityFilterDescription:`Konfigurera vilka entiteter som ska inkluderas i den här bryggan.`,includeAll:`Inkludera alla entiteter (jokertecken)`,entityId:`Enhets-ID`,includePattern:`Inkludera mönster`,entityFilters:`Entitetsfilter`,serverModeEntityHint:`Serverläget stödjer endast EN enhet. Ange exakt enhets-ID (t.ex. vacuum.my_vacuum).`,templatePreConfigured:`Förkonfigurerad av mall. Redigera i den fullständiga redigeraren efter skapandet.`,wildcardHint:`Använd * för alla, eller mönster som light.*, switch.*`,commaHint:`Ange specifika enhets-ID:n separerade med kommatecken`,excludePatterns:`Uteslut mönster (valfritt)`,excludeHelperText:`Mönster att utesluta, kommaseparerade`,skipTemplate:`Hoppa över mall`,creating:`Skapar`,createBridge:`Skapa brygga`,searchRules:`Sök regler`,templateDescription:`Välj en mall för att komma igång snabbt, eller hoppa över för att skapa en anpassad brygga.`,controllerDescription:`Vilken Matter-kontroller kommer du att använda? Detta optimerar funktionsflaggor för din kontroller.`,controllerHint:`Du kan alltid justera funktionsflaggor i nästa steg eller efter att bryggan har skapats.`,templateApplied:`Mallen "{{name}}" har tillämpats. Anpassa namnet och porten nedan.`,filterPreConfiguredFrom:`Filtret är förkonfigurerat från mallen "{{name}}". Du kan justera det nedan.`,featureFlagsDescription:`Funktionsflaggor styr hur enheter exponeras för Matter-kontroller.`,recommendedFlags:`Rekommenderade flaggor för {{name}} är förvalda.`,selectFlags:`Välj de flaggor som matchar din inställning.`,reviewDescription:`Granska din bryggkonfiguration:`,bridgesToCreate:`Bryggor att skapa ({{count}})`,bridgesCreated:`{{count}} brygga(or) har redan skapats i den här sessionen`,addAnother:`Lägg till ytterligare en`},footer:{github:`GitHub`,documentation:`Dokumentation`,support:`Support`},languageSwitcher:{disclaimer:`Översättningar kan vara ofullständiga.`,contribute:`Hjälp till att förbättra dem!`},translationEditor:{title:`Översättningsredigerare`,editLanguage:`Redigera språk`,info:`Redigera översättningar direkt i din webbläsare. Ändringar sparas lokalt och tillämpas direkt. Exportera dina översättningar för att skicka in dem till projektet.`,progress:`{{translated}} / {{total}} nycklar översatta`,localEdits:`{{count}} lokal(a) redigering(ar)`,searchPlaceholder:`Sök nycklar eller värden...`,filterAll:`Alla nycklar`,filterMissing:`Saknade`,filterEdited:`Redigerade`,exportJson:`Exportera JSON`,copyJson:`Kopiera JSON`,copied:`Kopierat!`,resetAll:`Återställ alla redigeringar`,resetKey:`Återställ till standard`,noResults:`Inga matchande översättningsnycklar hittades.`,addLanguage:`Lägg till språk`,newLanguageCode:`Språkkod (t.ex. pt, ja, ko)`,newLanguageName:`Språknamn (t.ex. Português)`,addLanguageButton:`Lägg till`,languageExists:`Detta språk finns redan.`,codeRequired:`Språkkod krävs.`,nameRequired:`Språknamn krävs.`,removeLanguage:`Ta bort språk`,removeLanguageConfirm:`Vill du ta bort det anpassade språket "{{name}}"? Alla lokala redigeringar för det här språket kommer att gå förlorade.`,importJson:`Importera JSON`,importSuccess:`{{count}} översättning(ar) importerade.`,importFailed:`Import misslyckades: ogiltigt JSON-format.`}},Es={common:{loading:`กำลังโหลด`,notFound:`ไม่พบ`,save:`บันทึก`,cancel:`ยกเลิก`,delete:`ลบ`,edit:`แก้ไข`,close:`ปิด`,refresh:`รีเฟรช`,search:`ค้นหา`,enabled:`เปิดใช้งาน`,disabled:`ปิดใช้งาน`,online:`ออนไลน์`,offline:`ออฟไลน์`,running:`กำลังทำงาน`,stopped:`หยุดแล้ว`,failed:`ล้มเหลว`,starting:`กำลังเริ่ม`,devices:`อุปกรณ์`,fabrics:`Fabrics`,port:`พอร์ต`,unknown:`ไม่ทราบ`,confirm:`ยืนยัน`,create:`สร้าง`,back:`ย้อนกลับ`,next:`ถัดไป`,actions:`การดำเนินการ`,name:`ชื่อ`,type:`ประเภท`,error:`ข้อผิดพลาด`,version:`เวอร์ชัน`,copy:`คัดลอก`,copied:`คัดลอกแล้ว!`,copyId:`คัดลอก ID`,later:`ภายหลัง`,skip:`ข้าม`,reset:`รีเซ็ต`,update:`อัปเดต`,all:`ทั้งหมด`,ascending:`น้อยไปมาก`,descending:`มากไปน้อย`,moveUp:`เลื่อนขึ้น`,moveDown:`เลื่อนลง`,selectAll:`เลือกทั้งหมด`,selectNone:`ไม่เลือก`,live:`สด`,new:`ใหม่`,overwrite:`เขียนทับ`,active:`ใช้งานอยู่`,property:`คุณสมบัติ`,value:`ค่า`,custom:`กำหนดเอง`,startAll:`เริ่มทั้งหมด`,stopAll:`หยุดทั้งหมด`,restartAll:`รีสตาร์ททั้งหมด`,import:`นำเข้า`,export:`ส่งออก`,exportAll:`ส่งออกทั้งหมด`,wizard:`ตัวช่วยสร้าง`},nav:{bridges:`Bridges`,devices:`อุปกรณ์ทั้งหมด`,health:`สุขภาพและการวินิจฉัย`,diagnostics:`เหตุการณ์สด`,settings:`การตั้งค่า`,networkMap:`แผนผังเครือข่าย`,logs:`บันทึก`,startupOrder:`ลำดับการเริ่มต้น`,lockCredentials:`ข้อมูลรับรองล็อค`,filterReference:`อ้างอิงตัวกรอง`,systemLogs:`บันทึกระบบ`,lightMode:`โหมดสว่าง`,darkMode:`โหมดมืด`},status:{error:`ข้อผิดพลาด`,unhealthy:`ไม่ปกติ`,noBridges:`ไม่มี Bridge`,loadingHealth:`กำลังโหลดสถานะสุขภาพ...`,unknown:`ไม่ทราบ`},errorBoundary:{title:`เกิดข้อผิดพลาด`,fallbackMessage:`เกิดข้อผิดพลาดที่ไม่คาดคิด`,reload:`โหลดหน้าใหม่`},settings:{title:`การตั้งค่า`,language:`ภาษา`,languageDescription:`เลือกภาษาของอินเทอร์เฟซ`,checkUpdates:`ตรวจสอบการอัปเดต`,backupRestore:`สำรองข้อมูลและกู้คืน`,exportBackup:`ส่งออกข้อมูลสำรอง`,importBackup:`นำเข้าข้อมูลสำรอง`,dangerZone:`โซนอันตราย`,resetAll:`รีเซ็ตทั้งหมด`,about:`เกี่ยวกับ`},dashboard:{title:`แดชบอร์ด`,systemOverview:`ภาพรวมระบบ`,quickActions:`การดำเนินการด่วน`,bridgeOverview:`ภาพรวม Bridge`,noBridges:`ยังไม่มี Bridge ที่กำหนดค่า`,createBridge:`สร้าง Bridge`,viewAll:`ดูทั้งหมด`,totalDevices:`อุปกรณ์ทั้งหมด`,customize:`ปรับแต่ง`,startAll:`เริ่มทั้งหมด`,stopAll:`หยุดทั้งหมด`,restartAll:`รีสตาร์ททั้งหมด`,welcome:`ยินดีต้อนรับสู่ Home Assistant Matter Hub`,welcomeDescription:`เชื่อมต่ออุปกรณ์ Home Assistant ของคุณกับคอนโทรลเลอร์ Matter เช่น Apple Home, Google Home และ Amazon Alexa`,bridgeWizard:`ตัวช่วยสร้าง Bridge`,setupByArea:`ตั้งค่าตามพื้นที่`,manualSetup:`ตั้งค่าด้วยตนเอง`,areaSetup:`ตั้งค่าพื้นที่`,documentation:`เอกสาร`,quickNavigation:`นำทางด่วน`,haConnection:`การเชื่อมต่อ HA`,startupOrder:`ลำดับการเริ่มต้น`,lockCredentials:`ข้อมูลรับรองล็อค`,filterReference:`อ้างอิงตัวกรอง`,successMessage:`Bridge ของคุณเชื่อมต่อกับ {{count}} Fabric คอนโทรลเลอร์แล้ว อุปกรณ์ควรปรากฏในแอปคอนโทรลเลอร์ของคุณ`,noBridgesHint:`ยังไม่มี Bridge ที่กำหนดค่า ใช้ตัวช่วยสร้าง Bridge หรือสร้างด้วยตนเอง`,customizeDashboard:`ปรับแต่งแดชบอร์ด`},bridge:{name:`ชื่อ Bridge`,port:`พอร์ต`,status:`สถานะ`,pairHint:`จับคู่ Bridge นี้กับคอนโทรลเลอร์ของคุณ`,pairDescription:`เปิดแอปคอนโทรลเลอร์ (Apple Home, Google Home หรือ Amazon Alexa) เพิ่มอุปกรณ์เสริมใหม่ แล้วสแกน QR โค้ดด้านล่างหรือป้อนรหัสจับคู่ด้วยตนเอง ตรวจสอบให้แน่ใจว่าคอนโทรลเลอร์อยู่ในเครือข่ายเดียวกับ Home Assistant`,failedEntities:`เอนทิตีที่ล้มเหลว`,serverModeRecommended:`แนะนำโหมดเซิร์ฟเวอร์สำหรับหุ่นยนต์ดูดฝุ่น`,serverModeDescription:`Bridge นี้มีหุ่นยนต์ดูดฝุ่นในโหมดบริดจ์ Apple Home และ Alexa จะแสดง Bridge เป็นอุปกรณ์เพิ่มเติม ทำให้เกิดรายการซ้ำ เปิดใช้โหมดเซิร์ฟเวอร์เพื่อเปิดเผยหุ่นยนต์ดูดฝุ่นเป็นอุปกรณ์ Matter แบบสแตนด์อโลน`,enableServerMode:`เปิดใช้โหมดเซิร์ฟเวอร์`,enabling:`กำลังเปิดใช้...`,start:`เริ่ม`,stop:`หยุด`,restart:`รีสตาร์ท`,factoryReset:`รีเซ็ตเป็นค่าโรงงาน`,pairingCode:`รหัสจับคู่`,openCommissioning:`เปิดหน้าต่างจับคู่`,multiPair:`จับคู่ Multi-Fabric`,deleteBridge:`ลบ Bridge`,deleteConfirm:`คุณแน่ใจหรือไม่ว่าต้องการลบ Bridge นี้?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} เอนทิตีไม่สามารถโหลดได้`,clickToShow:`คลิกเพื่อแสดงรายละเอียด`,clickToHide:`คลิกเพื่อซ่อนรายละเอียด`,loadFailed:`ไม่สามารถโหลดรายละเอียด Bridge`,refreshHint:`อุปกรณ์ใหม่และการเปลี่ยนแปลงป้ายกำกับจะถูกตรวจพบทุก 30 วินาที`,refreshingStates:`รีเฟรชสถานะใน {{seconds}} วินาที...`,serverModeSingleDeviceNote:`หมายเหตุ: โหมดเซิร์ฟเวอร์ต้องการให้หุ่นยนต์ดูดฝุ่นเป็นอุปกรณ์เดียวบน Bridge นี้ กรุณาลบเอนทิตีอื่นออกก่อน แล้วเปิดใช้โหมดเซิร์ฟเวอร์ในการตั้งค่า Bridge`,serverModeEnabled:`เปิดใช้โหมดเซิร์ฟเวอร์แล้ว Bridge จะรีสตาร์ทโดยมีหุ่นยนต์ดูดฝุ่นเป็นอุปกรณ์สแตนด์อโลน`,serverModeEnableFailed:`ไม่สามารถเปิดใช้โหมดเซิร์ฟเวอร์: {{error}}`,pairing:`การจับคู่`,bridgeInfo:`ข้อมูล Bridge`,commissioned:`จับคู่แล้ว`,addController:`เพิ่มคอนโทรลเลอร์อื่น`,forceSync:`บังคับซิงค์`,syncing:`กำลังซิงค์...`,editFilters:`แก้ไขตัวกรอง`,addFilters:`เพิ่มตัวกรอง`,bridgeNotRunning:`Bridge ไม่ได้ทำงาน เริ่ม Bridge เพื่อดูข้อมูลการจับคู่`,manualCode:`รหัสด้วยตนเอง`,bridgeId:`ID Bridge`,passcode:`รหัสผ่าน`,discriminator:`Discriminator`,connectedFabrics:`Fabric ที่เชื่อมต่อ ({{count}})`,noFabrics:`ยังไม่มีคอนโทรลเลอร์เชื่อมต่อ สแกน QR โค้ดด้วยคอนโทรลเลอร์ Matter`,entityFilters:`ตัวกรองเอนทิตี`,noFilters:`ไม่มีตัวกรองที่กำหนดค่า เอนทิตีที่รองรับทั้งหมดจะถูกเปิดเผย`,resetSuccess:`รีเซ็ต Bridge สำเร็จ`,deleteSuccess:`ลบ Bridge สำเร็จ`,confirmResetTitle:`รีเซ็ต Bridge`,confirmDeleteTitle:`ลบ Bridge`,importTitle:`นำเข้า Bridges`,overwriteExisting:`เขียนทับ Bridge ที่มีอยู่`,iconLabel:`ไอคอน Bridge`,google:`Google`,alexa:`Alexa`,serverMode:`โหมดเซิร์ฟเวอร์`,autoForceSync:`ซิงค์อัตโนมัติ`,saveSuccess:`บันทึก Bridge แล้ว`,updateSuccess:`อัปเดตเสร็จสิ้น`,exportFailed:`ส่งออกล้มเหลว`,actionStarted:`เริ่มแล้ว`,actionStopped:`หยุดแล้ว`,actionRestarted:`รีสตาร์ทแล้ว`,actionFailed:`{{action}} ล้มเหลว`,actionResult:`{{label}} {{count}} Bridge`,couldNotLoad:`ไม่สามารถโหลด Bridge`,showingFirst:`แสดง {{count}} รายการแรก`,importParseFailed:`ไม่สามารถแยกวิเคราะห์ไฟล์นำเข้า กรุณาเลือกไฟล์ส่งออกที่ถูกต้อง`,importing:`กำลังนำเข้า...`,importCount:`นำเข้า {{count}} Bridge`,jsonEditor:`ตัวแก้ไข JSON`,formEditor:`ตัวแก้ไขแบบฟอร์ม`},endpoints:{title:`จุดปลายทาง`,searchPlaceholder:`ค้นหาจุดปลายทาง...`,sortBy:`เรียงลำดับ`,sortName:`ชื่อ`,sortEndpoint:`ID จุดปลายทาง`,sortType:`ประเภท`,cardView:`มุมมองการ์ด`,treeView:`มุมมองต้นไม้`,clusters:`คลัสเตอร์`,entityUnavailable:`เอนทิตีไม่พร้อมใช้งาน`,showUnavailable:`แสดง {{count}} ที่ไม่พร้อมใช้งาน`,showAll:`แสดงเอนทิตีทั้งหมด`,uploadImage:`อัปโหลดรูปภาพอุปกรณ์`,removeImage:`ลบรูปภาพที่กำหนดเอง`,editMapping:`แก้ไขการแมปเอนทิตี`,homeAssistantEntity:`เอนทิตี Home Assistant`,noEndpoints:`ไม่พบจุดปลายทาง`,expandAll:`ขยายทั้งหมด`,collapseAll:`ยุบทั้งหมด`,viewAll:`ดูอุปกรณ์ทั้งหมด`,haState:`สถานะ HA`,aboutEndpoint:`เกี่ยวกับจุดปลายทางนี้`,entityId:`ID เอนทิตี`,customName:`ชื่อที่กำหนดเอง`,deviceTypeOverride:`แทนที่ประเภทอุปกรณ์`,keyHaAttributes:`แอตทริบิวต์ HA สำคัญ`,entityMappings:`การแมปเอนทิตี`,copyData:`คัดลอกข้อมูลไปยังคลิปบอร์ด`,behavior:`พฤติกรรม`},health:{title:`สุขภาพและการวินิจฉัย`,version:`เวอร์ชัน`,uptime:`เวลาทำงาน`,homeAssistant:`Home Assistant`,connected:`เชื่อมต่อแล้ว`,disconnected:`ยกเลิกการเชื่อมต่อ`,bridgeStatus:`สถานะ Bridge`,refreshHealth:`รีเฟรชข้อมูลสุขภาพ`,exportDiagnostic:`ส่งออกการวินิจฉัย`,memory:`หน่วยความจำ`,fabricDetails:`รายละเอียด Fabric`,sessions:`เซสชัน`,subscriptions:`การสมัครรับข้อมูล`,noFabrics:`ไม่มี Fabric เชื่อมต่อ`,systemMetrics:`เมตริกระบบ`,heap:`Heap`,rss:`RSS`,external:`ภายนอก`,systemHealth:`สุขภาพระบบ`,fetchFailed:`ไม่สามารถดึงข้อมูลสถานะสุขภาพ`,connectionError:`ข้อผิดพลาดในการเชื่อมต่อ`,exportFailed:`ไม่สามารถส่งออกข้อมูลการวินิจฉัย`,restartFailed:`ไม่สามารถรีสตาร์ท Bridge`,unableToLoad:`ไม่สามารถโหลดสถานะสุขภาพ`,sortBy:`เรียงตาม`,created:`สร้างเมื่อ`,ascending:`น้อยไปมาก`,descending:`มากไปน้อย`,connectedTo:`เชื่อมต่อกับ`,autoRecovery:`การกู้คืนอัตโนมัติ`,recoveryAttempts:`ความพยายามในการกู้คืน`},mapping:{title:`การแมปเอนทิตี`,entityId:`ID เอนทิตี`,deviceType:`ประเภทอุปกรณ์`,customName:`ชื่อที่กำหนดเอง`,status:`สถานะ`,addMapping:`เพิ่มการแมป`,editMapping:`แก้ไขการแมป`,deleteMapping:`ลบการแมป`,saved:`บันทึกการแมปสำหรับ {{entityId}} แล้ว รีสตาร์ท Bridge เพื่อใช้การเปลี่ยนแปลง`,saveFailed:`ไม่สามารถบันทึกการแมป: {{error}}`,deleted:`ลบการแมปสำหรับ {{entityId}} แล้ว`,deleteFailed:`ไม่สามารถลบการแมป`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},languageSwitcher:{disclaimer:`การแปลอาจไม่สมบูรณ์`,contribute:`ช่วยปรับปรุงการแปล!`},translationEditor:{title:`ตัวแก้ไขการแปล`,editLanguage:`แก้ไขภาษา`,info:`แก้ไขการแปลโดยตรงในเบราว์เซอร์ของคุณ การเปลี่ยนแปลงจะถูกบันทึกในเครื่องและใช้งานได้ทันที ส่งออกการแปลของคุณเพื่อส่งให้โครงการ`,progress:`{{translated}} / {{total}} คีย์ที่แปลแล้ว`,localEdits:`{{count}} การแก้ไขในเครื่อง`,searchPlaceholder:`ค้นหาคีย์หรือค่า...`,filterAll:`คีย์ทั้งหมด`,filterMissing:`ขาดหายไป`,filterEdited:`แก้ไขแล้ว`,exportJson:`ส่งออก JSON`,copyJson:`คัดลอก JSON`,copied:`คัดลอกแล้ว!`,resetAll:`รีเซ็ตการแก้ไขทั้งหมด`,resetKey:`รีเซ็ตเป็นค่าเริ่มต้น`,noResults:`ไม่พบคีย์การแปลที่ตรงกัน`,addLanguage:`เพิ่มภาษา`,newLanguageCode:`รหัสภาษา (เช่น pt, ja, ko)`,newLanguageName:`ชื่อภาษา (เช่น Português)`,addLanguageButton:`เพิ่ม`,languageExists:`ภาษานี้มีอยู่แล้ว`,codeRequired:`ต้องระบุรหัสภาษา`,nameRequired:`ต้องระบุชื่อภาษา`,removeLanguage:`ลบภาษา`,importJson:`นำเข้า JSON`,importSuccess:`นำเข้า {{count}} การแปลแล้ว`,importFailed:`นำเข้าล้มเหลว: รูปแบบ JSON ไม่ถูกต้อง`},notFound:{title:`ไม่พบหน้า`,description:`หน้าที่คุณกำลังมองหาไม่มีอยู่`,backToDashboard:`กลับไปยังแดชบอร์ด`},footer:{github:`GitHub`,documentation:`เอกสาร`}},Ds={common:{loading:`Yükleniyor`,notFound:`Bulunamadı`,save:`Kaydet`,cancel:`İptal`,delete:`Sil`,edit:`Düzenle`,close:`Kapat`,refresh:`Yenile`,search:`Ara`,enabled:`Etkin`,disabled:`Devre dışı`,online:`Çevrimiçi`,offline:`Çevrimdışı`,running:`Çalışıyor`,stopped:`Durduruldu`,failed:`Başarısız`,starting:`Başlatılıyor`,devices:`Cihazlar`,fabrics:`Fabric'ler`,port:`Port`,unknown:`Bilinmiyor`,confirm:`Onayla`,create:`Oluştur`,back:`Geri`,next:`İleri`,actions:`İşlemler`,name:`Ad`,type:`Tür`,error:`Hata`,version:`Sürüm`,copy:`Kopyala`,copied:`Kopyalandı`,copyId:`Kimliği kopyala`,later:`Daha sonra`,skip:`Atla`,reset:`Sıfırla`,update:`Güncelle`,all:`Tümü`,ascending:`Artan`,descending:`Azalan`,moveUp:`Yukarı taşı`,moveDown:`Aşağı taşı`,selectAll:`Tümünü seç`,selectNone:`Seçimi kaldır`,live:`Canlı`,new:`Yeni`,overwrite:`Üzerine yaz`,active:`Aktif`,property:`Özellik`,value:`Değer`,custom:`Özel`,startAll:`Tümünü başlat`,stopAll:`Tümünü durdur`,restartAll:`Tümünü yeniden başlat`,import:`İçe aktar`,export:`Dışa aktar`,exportAll:`Tümünü dışa aktar`,wizard:`Sihirbaz`},nav:{bridges:`Köprüler`,devices:`Cihazlar`,health:`Sağlık`,diagnostics:`Tanılama`,settings:`Ayarlar`,networkMap:`Ağ haritası`,logs:`Kayıtlar`,startupOrder:`Başlangıç sırası`,lockCredentials:`Kilit kimlik bilgileri`,filterReference:`Filtre referansı`,systemLogs:`Sistem kayıtları`,lightMode:`Açık mod`,darkMode:`Koyu mod`},status:{error:`Hata`,unhealthy:`Sağlıksız`,noBridges:`Köprü yok`,loadingHealth:`Sağlık durumu yükleniyor`,unknown:`Bilinmiyor`},errorBoundary:{title:`Bir hata oluştu`,fallbackMessage:`Beklenmeyen bir sorun oluştu. Lütfen sayfayı yeniden yükleyin.`,reload:`Yeniden yükle`},settings:{title:`Ayarlar`,language:`Dil`,languageDescription:`Arayüz dilini seçin.`,checkUpdates:`Güncellemeleri kontrol et`,backupRestore:`Yedekleme ve geri yükleme`,exportBackup:`Yedeği dışa aktar`,importBackup:`Yedek içe aktar`,dangerZone:`Tehlikeli bölge`,resetAll:`Her şeyi sıfırla`,about:`Hakkında`,username:`Kullanıcı adı`,password:`Şifre`,enterNewPassword:`Yeni şifreyi girin`,enableAuth:`Kimlik doğrulamayı etkinleştir`,disableAuth:`Kimlik doğrulamayı devre dışı bırak`,disableAuthMessage:`Kimlik doğrulamayı devre dışı bırakmak sistemi korumasız hale getirebilir.`,disableAuthConfirm:`Kimlik doğrulamayı devre dışı bırakmak istediğinize emin misiniz?`,usernamePasswordRequired:`Kullanıcı adı ve şifre gerekli.`,authSaveFailed:`Kimlik doğrulama ayarları kaydedilemedi.`,authLoadFailed:`Kimlik doğrulama ayarları yüklenemedi.`,authDisabled:`Kimlik doğrulama devre dışı bırakıldı.`,authRemoveFailed:`Kimlik doğrulama kaldırılamadı.`},dashboard:{title:`Gösterge paneli`,systemOverview:`Sistem özeti`,quickActions:`Hızlı işlemler`,bridgeOverview:`Köprü özeti`,noBridges:`Henüz köprü yok`,createBridge:`Köprü oluştur`,viewAll:`Tümünü görüntüle`,totalDevices:`Toplam cihaz`,customize:`Özelleştir`,startAll:`Tümünü başlat`,stopAll:`Tümünü durdur`,restartAll:`Tümünü yeniden başlat`,welcome:`Hoş geldiniz`,welcomeDescription:`Sisteminizi buradan hızlıca yönetebilirsiniz.`,bridgeWizard:`Köprü sihirbazı`,setupByArea:`Alana göre kurulum`,manualSetup:`Manuel kurulum`,areaSetup:`Alan kurulumu`,documentation:`Dokümantasyon`,quickNavigation:`Hızlı gezinme`,haConnection:`Home Assistant bağlantısı`,startupOrder:`Başlangıç sırası`,lockCredentials:`Kilit kimlik bilgileri`,filterReference:`Filtre referansı`,successMessage:`İşlem başarıyla tamamlandı.`,noBridgesHint:`Başlamak için ilk köprünüzü oluşturun.`,customizeDashboard:`Gösterge panelini özelleştir`,bridgeStatusRunning:`Çalışan köprüler`,bridgeStatusFailed:`Başarısız köprüler`,devicesFailed:`Hatalı cihazlar`,uptimeFormat:`Çalışma süresi: {value}`},bridge:{name:`Ad`,port:`Port`,status:`Durum`,pairHint:`Eşleştirme için aşağıdaki bilgileri kullanın.`,pairDescription:`Bu köprüyü desteklenen ekosistemlerle eşleştirebilirsiniz.`,failedEntities:`Başarısız varlıklar`,serverModeRecommended:`Sunucu modu önerilir`,serverModeDescription:`Sunucu modu, tek cihaz yerine daha kararlı bir bağlantı deneyimi sunar.`,enableServerMode:`Sunucu modunu etkinleştir`,enabling:`Etkinleştiriliyor`,start:`Başlat`,stop:`Durdur`,restart:`Yeniden başlat`,factoryReset:`Fabrika ayarlarına sıfırla`,pairingCode:`Eşleştirme kodu`,openCommissioning:`Komisyon penceresini aç`,multiPair:`Çoklu eşleştirme`,deleteBridge:`Köprüyü sil`,deleteConfirm:`Bu köprüyü silmek istediğinize emin misiniz?`,featureFlags:`Özellik bayrakları`,failedEntitiesCount:`Başarısız varlık sayısı`,clickToShow:`Göstermek için tıklayın`,clickToHide:`Gizlemek için tıklayın`,loadFailed:`Yüklenemedi`,refreshHint:`Durumu güncellemek için yenileyin.`,refreshingStates:`Durumlar yenileniyor`,serverModeSingleDeviceNote:`Sunucu modu, tek cihaz yapılandırmalarında farklı davranabilir.`,serverModeEnabled:`Sunucu modu etkin`,serverModeEnableFailed:`Sunucu modu etkinleştirilemedi`,pairing:`Eşleştirme`,bridgeInfo:`Köprü bilgisi`,commissioned:`Komisyonlandı`,addController:`Denetleyici ekle`,openingCommissioning:`Komisyon penceresi açılıyor`,fabricTooltip:`Bu köprüye bağlı fabric bilgileri`,forceSync:`Zorla eşitle`,syncing:`Eşitleniyor`,forceSyncTooltip:`Tüm varlıkları yeniden eşitlemeye zorlar.`,editFilters:`Filtreleri düzenle`,addFilters:`Filtre ekle`,bridgeNotRunning:`Köprü çalışmıyor`,manualCode:`Manuel kod`,openingWindow:`Pencere açılıyor`,bridgeId:`Köprü kimliği`,passcode:`Geçiş kodu`,discriminator:`Ayırt edici`,connectedFabrics:`Bağlı fabric'ler`,noFabrics:`Fabric yok`,entityFilters:`Varlık filtreleri`,noFilters:`Filtre yok`,scanQrCode:`QR kodu tara`,appleHomeWarning:`Apple Home ile eşleştirmeden önce mevcut yapılandırmayı kontrol edin.`,googleHomeWarning:`Google Home ile eşleştirmeden önce mevcut yapılandırmayı kontrol edin.`,resetSuccess:`Sıfırlama başarılı`,deleteSuccess:`Silme başarılı`,confirmResetTitle:`Sıfırlamayı onayla`,confirmResetMessage:`Bu köprüyü fabrika ayarlarına sıfırlamak istediğinize emin misiniz?`,confirmDeleteTitle:`Silmeyi onayla`,confirmDeleteMessage:`Bu köprü kalıcı olarak silinecek. Devam etmek istiyor musunuz?`,importTitle:`Köprü içe aktar`,overwriteExisting:`Mevcut olanların üzerine yaz`,iconLabel:`Simge etiketi`,google:`Google`,alexa:`Alexa`,serverMode:`Sunucu modu`,autoForceSync:`Otomatik zorla eşitle`,saveSuccess:`Başarıyla kaydedildi`,updateSuccess:`Başarıyla güncellendi`,exportFailed:`Dışa aktarma başarısız`,actionStarted:`İşlem başlatıldı`,actionStopped:`İşlem durduruldu`,actionRestarted:`İşlem yeniden başlatıldı`,actionFailed:`İşlem başarısız oldu`,actionResult:`İşlem sonucu`,couldNotLoad:`Yüklenemedi`,showingFirst:`İlk {count} kayıt gösteriliyor`,importParseFailed:`İçe aktarılan veri çözümlenemedi`,importing:`İçe aktarılıyor`,importCount:`{count} öğe içe aktarılacak`,jsonEditor:`JSON düzenleyici`,formEditor:`Form düzenleyici`},endpoints:{title:`Uç noktalar`,searchPlaceholder:`Uç nokta ara`,sortBy:`Sıralama ölçütü`,sortName:`Ada göre sırala`,sortEndpoint:`Uç noktaya göre sırala`,sortType:`Türe göre sırala`,cardView:`Kart görünümü`,treeView:`Ağaç görünümü`,clusters:`Kümeler`,entityUnavailable:`Varlık kullanılamıyor`,showUnavailable:`Kullanılamayanları göster`,showAll:`Tümünü göster`,uploadImage:`Görsel yükle`,removeImage:`Görseli kaldır`,editMapping:`Eşlemeyi düzenle`,homeAssistantEntity:`Home Assistant varlığı`,noEndpoints:`Uç nokta yok`,expandAll:`Tümünü genişlet`,collapseAll:`Tümünü daralt`,viewAll:`Tümünü görüntüle`,haState:`HA durumu`,aboutEndpoint:`Uç nokta hakkında`,entityId:`Varlık kimliği`,customName:`Özel ad`,deviceTypeOverride:`Cihaz türünü geçersiz kıl`,keyHaAttributes:`Ana HA öznitelikleri`,entityMappings:`Varlık eşlemeleri`,copyData:`Veriyi kopyala`,behavior:`Davranış`},health:{title:`Sağlık durumu`,version:`Sürüm`,uptime:`Çalışma süresi`,homeAssistant:`Home Assistant`,connected:`Bağlı`,disconnected:`Bağlantı yok`,bridgeStatus:`Köprü durumu`,refreshHealth:`Sağlık durumunu yenile`,exportDiagnostic:`Tanılama verisini dışa aktar`,memory:`Bellek`,fabricDetails:`Fabric detayları`,sessions:`Oturumlar`,subscriptions:`Abonelikler`,noFabrics:`Fabric yok`,systemMetrics:`Sistem metrikleri`,heap:`Heap`,rss:`RSS`,external:`Harici`,systemHealth:`Sistem sağlığı`,fetchFailed:`Veri alınamadı`,connectionError:`Bağlantı hatası`,exportFailed:`Dışa aktarma başarısız`,restartFailed:`Yeniden başlatma başarısız`,unableToLoad:`Yüklenemiyor`,sortBy:`Sırala`,created:`Oluşturulma`,ascending:`Artan`,descending:`Azalan`,connectedTo:`Bağlı olduğu yer`,autoRecovery:`Otomatik kurtarma`,recoveryAttempts:`Kurtarma denemeleri`,fabrics:`fabric`,networkDiagnostics:`Ağ Tanılama`,checksPassed:`başarılı`,checksWarning:`uyarılar`,checksFailed:`başarısız`,hideDetails:`Detayları gizle`,showDetails:`Detayları göster`,allChecks:`Tüm Kontroller`,check:`Kontrol`,statusLabel:`Durum`,message:`Mesaj`,networkInterfaces:`Ağ Arayüzleri`,interfaceName:`Arayüz`,refresh:`Yenile`},mapping:{title:`Eşleme`,entityId:`Varlık kimliği`,deviceType:`Cihaz türü`,customName:`Özel ad`,status:`Durum`,addMapping:`Eşleme ekle`,editMapping:`Eşlemeyi düzenle`,deleteMapping:`Eşlemeyi sil`,saved:`Kaydedildi`,saveFailed:`Kaydetme başarısız`,deleted:`Silindi`,deleteFailed:`Silme başarısız`,matterTag:`Matter etiketi`,exportProfile:`Profili dışa aktar`,importProfile:`Profil içe aktar`,profileName:`Profil adı`,match:`Eşleşme`,existing:`Mevcut`,autoDetect:`Otomatik algıla`,loadFailed:`Yükleme başarısız`,noMappings:`Eşleme yok`,applying:`Uygulanıyor`,applyCount:`{count} eşleme uygulanacak`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},notFound:{title:`Sayfa bulunamadı`,description:`Aradığınız sayfa mevcut değil veya taşınmış olabilir.`,backToDashboard:`Gösterge paneline dön`},devices:{title:`Cihazlar`,searchPlaceholder:`Cihaz ara`,filterBridge:`Köprüye göre filtrele`,allBridges:`Tüm köprüler`,filterDeviceType:`Cihaz türüne göre filtrele`,allTypes:`Tüm türler`,sortBy:`Sırala`,sortBridge:`Köprüye göre sırala`,sortType:`Türe göre sırala`,sortName:`Ada göre sırala`,deviceCount:`Cihaz sayısı`,filteredCount:`Filtrelenmiş kayıt sayısı`},diagnostics:{title:`Tanılama`,stateUpdate:`Durum güncellemesi`,command:`Komut`,entityError:`Varlık hatası`,sessionOpen:`Oturum açıldı`,sessionClose:`Oturum kapandı`,subscription:`Abonelik`,bridgeStart:`Köprü başlatıldı`,bridgeStop:`Köprü durduruldu`,entityWarning:`Uyarı`,filterEvents:`Olayları filtrele`,clearEvents:`Olayları temizle`,noEvents:`Olay yok`},startup:{title:`Başlangıç sırası`,description:`Köprülerin başlangıç sırasını belirleyin.`,saveSuccess:`Başlangıç sırası kaydedildi`,saveFailed:`Başlangıç sırası kaydedilemedi`,saveChanges:`Değişiklikleri kaydet`,unsavedChanges:`Kaydedilmemiş değişiklikler var`,noBridges:`Köprü yok`,saveOrder:`Sırayı kaydet`},areaSetup:{title:`Alan kurulumu`,heading:`Alanlara göre köprü oluştur`,description:`Seçilen alanlara göre otomatik köprüler oluşturun.`,noAreas:`Alan bulunamadı`,selectController:`Denetleyici seçin`,selectAreas:`Alanları seçin`,clear:`Temizle`,createBridges:`Köprüleri oluştur`,results:`Sonuçlar`,goToBridges:`Köprülere git`,createdSuccess:`Köprüler başarıyla oluşturuldu`,createdPartial:`Bazı köprüler oluşturuldu`,loadFailed:`Veri yüklenemedi`,creating:`Oluşturuluyor`,created:`Oluşturuldu`,unknownError:`Bilinmeyen hata`},lockCredentials:{title:`Kilit kimlik bilgileri`,addCredential:`Kimlik bilgisi ekle`,editCredential:`Kimlik bilgisini düzenle`,lockEntityId:`Kilit varlık kimliği`,lockEntityHelperText:`Kimlik bilgisinin uygulanacağı kilit varlığını girin.`,pinCode:`PIN kodu`,nameOptional:`Ad (isteğe bağlı)`,namePlaceholder:`Örn. Misafir PIN`,nameHelperText:`Bu kimlik bilgisini daha kolay ayırt etmek için bir ad verin.`,entityRequired:`Varlık gerekli`,pinLength:`PIN uzunluğu geçersiz`,pinDigitsOnly:`PIN yalnızca rakamlardan oluşmalıdır`,saveFailed:`Kaydetme başarısız`,loadFailed:`Yükleme başarısız`,deleteFailed:`Silme başarısız`,updateFailed:`Güncelleme başarısız`,enable:`Etkinleştir`,disable:`Devre dışı bırak`,confirmDeleteTitle:`Silmeyi onayla`,confirmDeleteMessage:`Bu kimlik bilgisini silmek istediğinize emin misiniz?`},labels:{title:`Etiketler`,info:`Filtreleme ve referans için kullanılabilecek etiketler ve alanlar.`,searchPlaceholder:`Etiket ara`,loadFailed:`Etiketler yüklenemedi`,labelsSection:`Etiketler`,labelsHint:`Mevcut etiket değerleri`,noLabels:`Etiket yok`,displayName:`Görünen ad`,labelId:`Etiket kimliği`,areaId:`Alan kimliği`,areasSection:`Alanlar`,areasHint:`Mevcut alan değerleri`,noAreas:`Alan yok`,otherFilterValues:`Diğer filtre değerleri`,domains:`Domain'ler`,domainsHint:`Kullanılabilir domain değerleri`,platforms:`Platformlar`,platformsHint:`Kullanılabilir platform değerleri`,entityCategories:`Varlık kategorileri`,entityCategoriesHint:`Kullanılabilir varlık kategori değerleri`,deviceClasses:`Cihaz sınıfları`,deviceClassesHint:`Kullanılabilir cihaz sınıfı değerleri`,deviceNames:`Cihaz adları`,deviceNamesHint:`Kullanılabilir cihaz adı değerleri`,productNames:`Ürün adları`,productNamesHint:`Kullanılabilir ürün adı değerleri`},logs:{title:`Kayıtlar`,logLevel:`Kayıt seviyesi`,error:`Hata`,warning:`Uyarı`,info:`Bilgi`,debug:`Hata ayıklama`,searchPlaceholder:`Kayıtlarda ara`,noResults:`Sonuç yok`,autoRefresh:`Otomatik yenile`},backup:{title:`Yedekleme`,description:`Yapılandırmalarınızı ve verilerinizi yedekleyin veya geri yükleyin.`,configBackup:`Yapılandırma yedeği`,configBackupDesc:`Yalnızca yapılandırma ayarlarını yedekler.`,configBackupNote:`Bu seçenek cihaz verilerini içermez.`,fullBackup:`Tam yedek`,fullBackupDesc:`Tüm yapılandırmaları ve ilişkili verileri yedekler.`,fullBackupWarning:`Tam yedekler daha büyük boyutlu olabilir.`,restoreFromBackup:`Yedekten geri yükle`,restoreDesc:`Daha önce alınmış bir yedeği geri yükleyin.`,restoreTitle:`Yedeği geri yükle`,selectBridges:`Köprüleri seç`,overwriteExisting:`Mevcut olanların üzerine yaz`,includeMappings:`Eşlemeleri dahil et`,restoreIdentities:`Kimlikleri geri yükle`,restore:`Geri yükle`,downloadSuccess:`İndirme başarılı`,restartRequired:`Yeniden başlatma gerekiyor`,restartMessage:`Değişikliklerin uygulanması için sistem yeniden başlatılmalıdır.`,restartNote:`Kaydedilmemiş işlemler etkilenebilir.`,restartNow:`Şimdi yeniden başlat`,storedBackups:`Kayıtlı yedekler`,createSnapshot:`Anlık görüntü oluştur`,noSnapshots:`Anlık görüntü yok`,downloadSnapshot:`Anlık görüntüyü indir`,restoreSnapshot:`Anlık görüntüyü geri yükle`,auto:`Otomatik`,manual:`Manuel`,snapshotCreated:`Anlık görüntü oluşturuldu`,snapshotRestored:`Anlık görüntü geri yüklendi`,confirmRestore:`Geri yüklemeyi onayla`,confirmRestoreMessage:`Bu işlem mevcut yapılandırmayı değiştirebilir. Devam etmek istiyor musunuz?`,restoreWarning:`Geri yükleme mevcut verilerin üzerine yazabilir.`,confirmDelete:`Silmeyi onayla`,confirmDeleteMessage:`Bu yedeği silmek istediğinize emin misiniz?`,settings:`Ayarlar`,autoBackupLabel:`Otomatik yedekleme`,autoBackupDesc:`Belirli aralıklarla otomatik yedek oluştur.`,retentionCount:`Saklama adedi`,retentionCountDesc:`Saklanacak otomatik yedek sayısı`},networkMap:{title:`Ağ haritası`,hubLabel:`Merkez`,undoMove:`Taşımayı geri al`,resetLayout:`Yerleşimi sıfırla`,refreshData:`Veriyi yenile`,fullscreen:`Tam ekran`,exitFullscreen:`Tam ekrandan çık`,legend:`Lejant`,controller:`Denetleyici`,hub:`Merkez`,bridge:`Köprü`,device:`Cihaz`,failed:`Başarısız`},updateChecker:{title:`Güncelleme denetleyicisi`,checkNow:`Şimdi kontrol et`,currentVersion:`Mevcut sürüm`,latestVersion:`En son sürüm`,updateAvailable:`Güncelleme mevcut`,upToDate:`Güncel`,releaseNotes:`Sürüm notları`,notAvailable:`Bilgi mevcut değil`,checkFailed:`Güncelleme kontrolü başarısız`,unreachable:`Erişilemiyor`,instructionAddon:`Eklentiyi güncellemek için ilgili paket yöneticisini kullanın.`,instructionDocker:`Docker imajını güncellemek için en son sürümü çekin ve yeniden başlatın.`,instructionNpm:`npm üzerinden güncellemek için en son paketi yükleyin.`},bridgeWizard:{title:`Köprü sihirbazı`,stepTemplate:`Şablon`,stepController:`Denetleyici`,stepBridgeInfo:`Köprü bilgisi`,stepEntityFilter:`Varlık filtresi`,stepFeatureFlags:`Özellik bayrakları`,stepReview:`Gözden geçir`,autoCompose:`Otomatik oluştur`,autoForceSyncFlag:`Otomatik zorla eşitle`,invertCover:`Kapak yönünü ters çevir`,invertCoverDescription:`Kapak yönünü ters çevirmek için bu seçeneği etkinleştirin.`,includeHidden:`Gizlileri dahil et`,includeHiddenDescription:`Gizli varlıkları da dahil eder.`,bridgeName:`Köprü adı`,portLabel:`Port`,portAutoAssign:`Portu otomatik ata`,nameRequired:`Ad gerekli`,createFailed:`Köprü oluşturulamadı`,bridgeInfoDescription:`Köprü için temel bilgileri girin.`,serverModeLabel:`Sunucu modu`,serverModeTooltip:`Sunucu modu daha kararlı bağlantı sağlayabilir.`,entityFilterDescription:`Hangi varlıkların dahil edileceğini belirleyin.`,includeAll:`Tümünü dahil et`,entityId:`Varlık kimliği`,includePattern:`Dahil etme deseni`,entityFilters:`Varlık filtreleri`,serverModeEntityHint:`Sunucu modunda bazı varlık davranışları değişebilir.`,templatePreConfigured:`Şablon önceden yapılandırılmış`,wildcardHint:`Joker karakter olarak * kullanabilirsiniz.`,commaHint:`Birden fazla değeri virgülle ayırın.`,excludePatterns:`Hariç tutma desenleri`,excludeHelperText:`Hariç tutulacak varlık desenlerini girin.`,skipTemplate:`Şablonu atla`,creating:`Oluşturuluyor`,createBridge:`Köprü oluştur`,searchRules:`Arama kuralları`,templateDescription:`Hazır şablonlardan biriyle hızlı başlangıç yapın.`,controllerDescription:`Bu köprünün bağlanacağı denetleyiciyi seçin.`,controllerHint:`Uygun denetleyiciyi listeden seçin.`,templateApplied:`Şablon uygulandı`,filterPreConfiguredFrom:`Filtre şuradan önceden yapılandırıldı:`,featureFlagsDescription:`İsteğe bağlı özellikleri etkinleştirin veya devre dışı bırakın.`,recommendedFlags:`Önerilen bayraklar`,selectFlags:`Bayrak seçin`,reviewDescription:`Oluşturmadan önce yapılandırmanızı gözden geçirin.`,bridgesToCreate:`Oluşturulacak köprüler`,bridgesCreated:`Köprüler oluşturuldu`,addAnother:`Bir tane daha ekle`},footer:{github:`GitHub`,documentation:`Dokümantasyon`},languageSwitcher:{disclaimer:`Çeviriler topluluk katkıları içerebilir.`,contribute:`Katkıda bulun`},translationEditor:{title:`Çeviri düzenleyici`,editLanguage:`Dili düzenle`,info:`Eksik veya değiştirilmiş çevirileri buradan yönetebilirsiniz.`,progress:`İlerleme`,localEdits:`Yerel düzenlemeler`,searchPlaceholder:`Anahtar veya çeviri ara`,filterAll:`Tümü`,filterMissing:`Eksik olanlar`,filterEdited:`Düzenlenenler`,exportJson:`JSON dışa aktar`,copyJson:`JSON'u kopyala`,copied:`Kopyalandı`,resetAll:`Tümünü sıfırla`,resetKey:`Anahtarı sıfırla`,noResults:`Sonuç yok`,addLanguage:`Dil ekle`,newLanguageCode:`Yeni dil kodu`,newLanguageName:`Yeni dil adı`,addLanguageButton:`Dili ekle`,languageExists:`Bu dil zaten mevcut`,codeRequired:`Dil kodu gerekli`,nameRequired:`Dil adı gerekli`,removeLanguage:`Dili kaldır`,removeLanguageConfirm:`Bu dili kaldırmak istediğinize emin misiniz?`,importJson:`JSON içe aktar`,importSuccess:`İçe aktarma başarılı`,importFailed:`İçe aktarma başarısız`}},Os={common:{loading:`加载中`,notFound:`未找到`,save:`保存`,cancel:`取消`,delete:`删除`,edit:`编辑`,close:`关闭`,refresh:`刷新`,search:`搜索`,enabled:`已启用`,disabled:`已禁用`,online:`在线`,offline:`离线`,running:`运行中`,stopped:`已停止`,failed:`失败`,starting:`启动中`,devices:`设备`,fabrics:`Fabrics`,port:`端口`,unknown:`未知`,confirm:`确认`,create:`创建`,back:`返回`,next:`下一步`,actions:`操作`,name:`名称`,type:`类型`,error:`错误`,version:`版本`,copy:`复制`,copied:`已复制!`,copyId:`复制 ID`,later:`稍后`,skip:`跳过`,reset:`重置`,update:`更新`,all:`全部`,ascending:`升序`,descending:`降序`,moveUp:`上移`,moveDown:`下移`,selectAll:`全选`,selectNone:`取消全选`,live:`实时`,new:`新建`,overwrite:`覆盖`,active:`活动`,property:`属性`,value:`值`,custom:`自定义`,startAll:`全部启动`,stopAll:`全部停止`,restartAll:`全部重启`,import:`导入`,export:`导出`,exportAll:`全部导出`,wizard:`向导`},nav:{bridges:`Bridges`,devices:`所有设备`,health:`健康与诊断`,diagnostics:`实时事件`,settings:`设置`,networkMap:`网络拓扑`,logs:`日志`,startupOrder:`启动顺序`,lockCredentials:`锁具凭证`,filterReference:`过滤器参考`,systemLogs:`系统日志`,lightMode:`浅色模式`,darkMode:`深色模式`},status:{error:`错误`,unhealthy:`异常`,noBridges:`无 Bridge`,loadingHealth:`正在加载健康状态...`,unknown:`未知`},errorBoundary:{title:`出现错误`,fallbackMessage:`发生了意外错误。`,reload:`重新加载页面`},settings:{title:`设置`,language:`语言`,languageDescription:`选择界面语言。`,checkUpdates:`检查更新`,backupRestore:`备份与恢复`,exportBackup:`导出备份`,importBackup:`导入备份`,dangerZone:`危险操作`,resetAll:`全部重置`,about:`关于`},dashboard:{title:`仪表盘`,systemOverview:`系统概览`,quickActions:`快捷操作`,bridgeOverview:`Bridge 概览`,noBridges:`尚未配置 Bridge。`,createBridge:`创建 Bridge`,viewAll:`查看全部`,totalDevices:`设备总数`,customize:`自定义`,startAll:`全部启动`,stopAll:`全部停止`,restartAll:`全部重启`,welcome:`欢迎使用 Home Assistant Matter Hub`,welcomeDescription:`将你的 Home Assistant 设备桥接到 Apple Home、Google Home 和 Amazon Alexa 等 Matter 控制器。`,bridgeWizard:`Bridge 向导`,setupByArea:`按区域设置`,manualSetup:`手动设置`,areaSetup:`区域设置`,documentation:`文档`,quickNavigation:`快捷导航`,haConnection:`HA 连接`,startupOrder:`启动顺序`,lockCredentials:`锁具凭证`,filterReference:`过滤器参考`,successMessage:`你的 Bridge 已连接到 {{count}} 个控制器 Fabric。设备现在应该出现在你的控制器应用中。`,noBridgesHint:`尚未配置 Bridge。使用 Bridge 向导或手动创建一个。`,customizeDashboard:`自定义仪表盘`},bridge:{name:`Bridge 名称`,port:`端口`,status:`状态`,pairHint:`将此 Bridge 与你的控制器配对`,pairDescription:`打开你的控制器应用(Apple Home、Google Home 或 Amazon Alexa),添加新配件,扫描下方的二维码或输入手动配对码。确保你的控制器与 Home Assistant 在同一网络上。`,failedEntities:`失败的实体`,serverModeRecommended:`推荐为扫地机器人启用服务器模式`,serverModeDescription:`此 Bridge 包含一个桥接模式的扫地机器人。Apple Home 和 Alexa 会将 Bridge 显示为额外设备,导致重复条目。启用服务器模式可将扫地机器人作为独立的 Matter 设备公开。`,enableServerMode:`启用服务器模式`,enabling:`正在启用...`,start:`启动`,stop:`停止`,restart:`重启`,factoryReset:`恢复出厂设置`,pairingCode:`配对码`,openCommissioning:`打开配对窗口`,multiPair:`多 Fabric 配对`,deleteBridge:`删除 Bridge`,deleteConfirm:`确定要删除此 Bridge 吗?`,featureFlags:`功能标志`,failedEntitiesCount:`{{count}} 个实体无法加载。`,clickToShow:`点击显示详情。`,clickToHide:`点击隐藏详情。`,loadFailed:`无法加载 Bridge 详情`,refreshHint:`新设备和标签更改每 30 秒检测一次。`,refreshingStates:`{{seconds}} 秒后刷新状态...`,serverModeSingleDeviceNote:`注意:服务器模式要求扫地机器人是此 Bridge 上的唯一设备。请先移除其他实体,然后在 Bridge 设置中启用服务器模式。`,serverModeEnabled:`服务器模式已启用。Bridge 将以你的扫地机器人作为独立设备重启。`,serverModeEnableFailed:`无法启用服务器模式:{{error}}`,pairing:`配对`,bridgeInfo:`Bridge 信息`,commissioned:`已配对`,addController:`添加其他控制器`,forceSync:`强制同步`,syncing:`同步中...`,editFilters:`编辑过滤器`,addFilters:`添加过滤器`,bridgeNotRunning:`Bridge 未运行。启动 Bridge 以查看配对信息。`,manualCode:`手动代码`,bridgeId:`Bridge ID`,passcode:`密码`,discriminator:`Discriminator`,connectedFabrics:`已连接的 Fabric ({{count}})`,noFabrics:`尚无控制器连接。请使用 Matter 控制器扫描二维码。`,entityFilters:`实体过滤器`,noFilters:`未配置过滤器。所有支持的实体将被公开。`,resetSuccess:`Bridge 重置成功`,deleteSuccess:`Bridge 删除成功`,confirmResetTitle:`重置 Bridge`,confirmDeleteTitle:`删除 Bridge`,importTitle:`导入 Bridge`,overwriteExisting:`覆盖现有 Bridge`,iconLabel:`Bridge 图标`,google:`Google`,alexa:`Alexa`,serverMode:`服务器模式`,autoForceSync:`自动同步`,saveSuccess:`Bridge 已保存`,updateSuccess:`更新完成`,exportFailed:`导出失败`,actionStarted:`已启动`,actionStopped:`已停止`,actionRestarted:`已重启`,actionFailed:`{{action}} 失败`,actionResult:`{{label}} {{count}} 个 Bridge`,couldNotLoad:`无法加载 Bridge`,showingFirst:`显示前 {{count}} 个`,importParseFailed:`无法解析导入文件。请选择有效的导出文件。`,importing:`导入中...`,importCount:`导入 {{count}} 个 Bridge`,jsonEditor:`JSON 编辑器`,formEditor:`表单编辑器`},endpoints:{title:`端点`,searchPlaceholder:`搜索端点...`,sortBy:`排序`,sortName:`名称`,sortEndpoint:`端点 ID`,sortType:`类型`,cardView:`卡片视图`,treeView:`树状视图`,clusters:`集群`,entityUnavailable:`实体不可用`,showUnavailable:`显示 {{count}} 个不可用`,showAll:`显示所有实体`,uploadImage:`上传设备图片`,removeImage:`移除自定义图片`,editMapping:`编辑实体映射`,homeAssistantEntity:`Home Assistant 实体`,noEndpoints:`未找到端点。`,expandAll:`全部展开`,collapseAll:`全部折叠`,viewAll:`查看所有设备`,haState:`HA 状态`,aboutEndpoint:`关于此端点`,entityId:`实体 ID`,customName:`自定义名称`,deviceTypeOverride:`设备类型覆盖`,keyHaAttributes:`关键 HA 属性`,entityMappings:`实体映射`,copyData:`复制数据到剪贴板`,behavior:`行为`},health:{title:`健康与诊断`,version:`版本`,uptime:`运行时间`,homeAssistant:`Home Assistant`,connected:`已连接`,disconnected:`已断开`,bridgeStatus:`Bridge 状态`,refreshHealth:`刷新健康数据`,exportDiagnostic:`导出诊断`,memory:`内存`,fabricDetails:`Fabric 详情`,sessions:`会话`,subscriptions:`订阅`,noFabrics:`无 Fabric 连接`,systemMetrics:`系统指标`,heap:`堆内存`,rss:`RSS`,external:`外部`,systemHealth:`系统健康`,fetchFailed:`无法获取健康状态`,connectionError:`连接错误`,exportFailed:`无法导出诊断数据`,restartFailed:`无法重启 Bridge`,unableToLoad:`无法加载健康状态`,sortBy:`排序方式`,created:`创建时间`,ascending:`升序`,descending:`降序`,connectedTo:`已连接到`,autoRecovery:`自动恢复`,recoveryAttempts:`恢复尝试`},mapping:{title:`实体映射`,entityId:`实体 ID`,deviceType:`设备类型`,customName:`自定义名称`,status:`状态`,addMapping:`添加映射`,editMapping:`编辑映射`,deleteMapping:`删除映射`,saved:`已为 {{entityId}} 保存映射。重启 Bridge 以应用更改。`,saveFailed:`无法保存映射:{{error}}`,deleted:`已删除 {{entityId}} 的映射。`,deleteFailed:`无法删除映射。`,customProductName:`自定义产品名称`,customProductNameHelp:`覆盖报告给 Matter 控制器的产品名称(型号)。某些控制器(如 Aqara)会将此显示为设备名称。`,customVendorName:`自定义厂商名称`,customVendorNameHelp:`覆盖报告给 Matter 控制器的厂商/制造商名称。`,customSerialNumber:`自定义序列号`,customSerialNumberHelp:`覆盖报告给 Matter 控制器的序列号。`},languageSwitcher:{disclaimer:`翻译可能不完整。`,contribute:`帮助改进翻译!`},translationEditor:{title:`翻译编辑器`,editLanguage:`编辑语言`,info:`直接在浏览器中编辑翻译。更改会本地保存并立即应用。导出你的翻译以提交给项目。`,progress:`{{translated}} / {{total}} 个键已翻译`,localEdits:`{{count}} 处本地编辑`,searchPlaceholder:`搜索键或值...`,filterAll:`所有键`,filterMissing:`缺失`,filterEdited:`已编辑`,exportJson:`导出 JSON`,copyJson:`复制 JSON`,copied:`已复制!`,resetAll:`重置所有编辑`,resetKey:`重置为默认值`,noResults:`未找到匹配的翻译键。`,addLanguage:`添加语言`,newLanguageCode:`语言代码(如 pt、ja、ko)`,newLanguageName:`语言名称(如 Português)`,addLanguageButton:`添加`,languageExists:`该语言已存在。`,codeRequired:`语言代码为必填项。`,nameRequired:`语言名称为必填项。`,removeLanguage:`移除语言`,importJson:`导入 JSON`,importSuccess:`已导入 {{count}} 条翻译。`,importFailed:`导入失败:JSON 格式无效。`},notFound:{title:`页面未找到`,description:`您要查找的页面不存在。`,backToDashboard:`返回仪表盘`},footer:{github:`GitHub`,documentation:`文档`}},ks={common:{loading:`載入中`,notFound:`未找到`,save:`儲存`,cancel:`取消`,delete:`刪除`,edit:`編輯`,close:`關閉`,refresh:`重新整理`,search:`搜尋`,enabled:`已啟用`,disabled:`已停用`,online:`上線`,offline:`離線`,running:`執行中`,stopped:`已停止`,failed:`失敗`,starting:`啟動中`,devices:`裝置`,fabrics:`Fabrics`,port:`連接埠`,unknown:`未知`,confirm:`確認`,create:`建立`,back:`返回`,next:`下一步`,actions:`操作`,name:`名稱`,type:`類型`,error:`錯誤`,version:`版本`,copy:`複製`,copied:`已複製!`,copyId:`複製 ID`,later:`稍後`,skip:`跳過`,reset:`重設`,update:`更新`,all:`全部`,ascending:`遞增`,descending:`遞減`,moveUp:`上移`,moveDown:`下移`,selectAll:`全選`,selectNone:`全不選`,live:`即時`,new:`新增`,overwrite:`覆蓋`,active:`活動`,property:`屬性`,value:`值`,custom:`自定義`,startAll:`全部啟動`,stopAll:`全部停止`,restartAll:`全部重新啟動`,import:`匯入`,export:`匯出`,exportAll:`全部匯出`,wizard:`設定精靈`},nav:{bridges:`橋接器 (Bridges)`,devices:`所有裝置`,health:`狀態診斷`,diagnostics:`即時事件`,settings:`設定`,networkMap:`網路拓撲`,logs:`日誌`,startupOrder:`啟動順序`,lockCredentials:`鎖具憑證`,filterReference:`篩選器參考`,systemLogs:`系統日誌`,lightMode:`淺色模式`,darkMode:`深色模式`},status:{error:`錯誤`,unhealthy:`異常`,noBridges:`無橋接器`,loadingHealth:`正在載入健康狀態...`,unknown:`未知`},errorBoundary:{title:`發生錯誤`,fallbackMessage:`發生預料之外的錯誤。`,reload:`重新載入頁面`},settings:{title:`設定`,language:`語言`,languageDescription:`選擇介面語言。`,checkUpdates:`檢查更新`,backupRestore:`備份與還原`,exportBackup:`匯出備份`,importBackup:`匯入備份`,dangerZone:`危險區域`,resetAll:`全部重設`,about:`關於`,username:`使用者名稱`,password:`密碼`,enterNewPassword:`輸入新密碼`,enableAuth:`啟用驗證`,disableAuth:`停用驗證`,disableAuthMessage:`您確定要停用身份驗證嗎?這將允許任何存取此網址的使用者控制您的裝置。`,disableAuthConfirm:`確認停用`,usernamePasswordRequired:`需要使用者名稱和密碼`,authSaveFailed:`儲存驗證設定失敗`,authLoadFailed:`載入驗證設定失敗`,authDisabled:`驗證已停用`,authRemoveFailed:`移除驗證失敗`},dashboard:{title:`儀表板`,systemOverview:`系統概覽`,quickActions:`快速操作`,bridgeOverview:`橋接器概覽`,noBridges:`尚未設定橋接器。`,createBridge:`建立橋接器`,viewAll:`查看全部`,totalDevices:`裝置總數`,customize:`自定義`,startAll:`全部啟動`,stopAll:`全部停止`,restartAll:`全部重新啟動`,welcome:`歡迎使用 Home Assistant Matter Hub`,welcomeDescription:`將您的 Home Assistant 裝置橋接到 Apple Home、Google Home 和 Amazon Alexa 等 Matter 控制器。`,bridgeWizard:`橋接器精靈`,setupByArea:`按區域設定`,manualSetup:`手動設定`,areaSetup:`區域設定`,documentation:`文件`,quickNavigation:`快速導覽`,haConnection:`HA 連線`,startupOrder:`啟動順序`,lockCredentials:`鎖具憑證`,filterReference:`篩選器參考`,successMessage:`您的橋接器已連線到 {{count}} 個控制器 Fabric。裝置現在應該會出現在您的控制器 App 中。`,noBridgesHint:`尚未設定橋接器。請使用精靈或手動建立一個。`,customizeDashboard:`自定義儀表板`,bridgeStatusRunning:`橋接器運作中`,bridgeStatusFailed:`橋接器異常`,devicesFailed:`裝置失敗`,uptimeFormat:`已運行時間`},bridge:{name:`橋接器名稱`,port:`連接埠`,status:`狀態`,pairHint:`將此橋接器與您的控制器配對`,pairDescription:`開啟您的控制器 App(Apple Home、Google Home 或 Amazon Alexa),新增配件,掃描下方的 QR Code 或輸入手動配對碼。請確保您的控制器與 Home Assistant 位於同一網路環境。`,failedEntities:`失敗的實體`,serverModeRecommended:`建議為掃地機器人啟用伺服器模式`,serverModeDescription:`此橋接器包含一個橋接模式的掃地機器人。Apple Home 和 Alexa 會將橋接器顯示為額外裝置,導致重複項目。啟用伺服器模式可將掃地機器人作為獨立的 Matter 裝置公開。`,enableServerMode:`啟用伺服器模式`,enabling:`啟用中...`,start:`啟動`,stop:`停止`,restart:`重新啟動`,factoryReset:`恢復出廠設定`,pairingCode:`配對碼`,openCommissioning:`開啟配對視窗`,multiPair:`多 Fabric 配對`,deleteBridge:`刪除橋接器`,deleteConfirm:`確定要刪除此橋接器嗎?`,featureFlags:`功能旗標`,failedEntitiesCount:`{{count}} 個實體無法載入。`,clickToShow:`點擊顯示詳情`,clickToHide:`點擊隱藏詳情`,loadFailed:`無法載入橋接器詳情`,refreshHint:`每 30 秒會偵測一次新裝置和標籤更改。`,refreshingStates:`{{seconds}} 秒後重新整理狀態...`,serverModeSingleDeviceNote:`注意:伺服器模式要求掃地機器人為此橋接器上的唯一裝置。請先移除其他實體,再於設定中啟用伺服器模式。`,serverModeEnabled:`伺服器模式已啟用。橋接器將以掃地機器人作為獨立裝置重新啟動。`,serverModeEnableFailed:`無法啟用伺服器模式:{{error}}`,pairing:`配對`,bridgeInfo:`橋接器資訊`,commissioned:`已配對`,addController:`新增其他控制器`,openingCommissioning:`正在開啟配對視窗...`,fabricTooltip:`Fabric 詳情`,forceSync:`強制同步`,syncing:`同步中...`,forceSyncTooltip:`強制與 Home Assistant 同步實體`,editFilters:`編輯篩選器`,addFilters:`新增篩選器`,bridgeNotRunning:`橋接器未執行。請啟動以查看配對資訊。`,manualCode:`手動代碼`,openingWindow:`開啟視窗中...`,bridgeId:`橋接器 ID`,passcode:`配對密碼`,discriminator:`辨別碼 (Discriminator)`,connectedFabrics:`已連接的 Fabric ({{count}})`,noFabrics:`尚無控制器連接。請使用 Matter 控制器掃描 QR Code。`,entityFilters:`實體篩選器`,noFilters:`未設定篩選器。所有支援的實體都將公開。`,scanQrCode:`掃描 QR Code`,appleHomeWarning:`Apple Home 限制`,googleHomeWarning:`Google Home 限制`,resetSuccess:`橋接器重設成功`,deleteSuccess:`橋接器刪除成功`,confirmResetTitle:`重設橋接器`,confirmResetMessage:`確定要重設此橋接器嗎?這將移除所有配對資訊。`,confirmDeleteTitle:`刪除橋接器`,confirmDeleteMessage:`確定要永久刪除此橋接器嗎?此操作無法復原。`,importTitle:`匯入橋接器`,overwriteExisting:`覆蓋現有橋接器`,iconLabel:`橋接器圖示`,google:`Google`,alexa:`Alexa`,serverMode:`伺服器模式`,autoForceSync:`自動同步`,saveSuccess:`橋接器已儲存`,updateSuccess:`更新完成`,exportFailed:`匯出失敗`,actionStarted:`已啟動`,actionStopped:`已停止`,actionRestarted:`已重新啟動`,actionFailed:`{{action}} 失敗`,actionResult:`{{label}} {{count}} 個橋接器`,couldNotLoad:`無法載入橋接器`,showingFirst:`顯示前 {{count}} 個`,importParseFailed:`無法解析匯入檔案。請選擇正確的匯出檔案。`,importing:`匯入中...`,importCount:`匯入 {{count}} 個橋接器`,jsonEditor:`JSON 編輯器`,formEditor:`表單編輯器`},endpoints:{title:`端點 (Endpoints)`,searchPlaceholder:`搜尋端點...`,sortBy:`排序`,sortName:`名稱`,sortEndpoint:`端點 ID`,sortType:`類型`,cardView:`卡片檢視`,treeView:`樹狀檢視`,clusters:`叢集 (Clusters)`,entityUnavailable:`實體不可用`,showUnavailable:`顯示 {{count}} 個不可用項目`,showAll:`顯示所有實體`,uploadImage:`上傳裝置圖片`,removeImage:`移除自定義圖片`,editMapping:`編輯實體對應`,homeAssistantEntity:`Home Assistant 實體`,noEndpoints:`未找到端點。`,expandAll:`全部展開`,collapseAll:`全部摺疊`,viewAll:`查看所有裝置`,haState:`HA 狀態`,aboutEndpoint:`關於此端點`,entityId:`實體 ID`,customName:`自定義名稱`,deviceTypeOverride:`裝置類型覆蓋`,keyHaAttributes:`關鍵 HA 屬性`,entityMappings:`實體對應`,copyData:`複製數據到剪貼簿`,behavior:`行為`},health:{title:`狀態與診斷`,version:`版本`,uptime:`運行時間`,homeAssistant:`Home Assistant`,connected:`已連線`,disconnected:`已斷開`,bridgeStatus:`橋接器狀態`,refreshHealth:`重新整理狀態`,exportDiagnostic:`匯出診斷數據`,memory:`記憶體`,fabricDetails:`Fabric 詳情`,sessions:`工作階段 (Sessions)`,subscriptions:`訂閱 (Subscriptions)`,noFabrics:`無 Fabric 連接`,systemMetrics:`系統指標`,heap:`堆積記憶體 (Heap)`,rss:`常駐集大小 (RSS)`,external:`外部`,systemHealth:`系統健康度`,fetchFailed:`無法取得狀態`,connectionError:`連線錯誤`,exportFailed:`無法匯出診斷數據`,restartFailed:`無法重新啟動橋接器`,unableToLoad:`無法載入健康狀態`,sortBy:`排序方式`,created:`建立時間`,ascending:`遞增`,descending:`遞減`,connectedTo:`已連線至`,autoRecovery:`自動恢復`,recoveryAttempts:`恢復嘗試`},mapping:{title:`實體對應`,entityId:`實體 ID`,deviceType:`裝置類型`,customName:`自定義名稱`,status:`狀態`,addMapping:`新增對應`,editMapping:`編輯對應`,deleteMapping:`刪除對應`,saved:`已為 {{entityId}} 儲存對應。請重啟橋接器以套用變更。`,saveFailed:`無法儲存對應:{{error}}`,deleted:`已刪除 {{entityId}} 的對應。`,deleteFailed:`無法刪除對應。`,matterTag:`Matter 標籤`,exportProfile:`匯出設定檔`,importProfile:`匯入設定檔`,profileName:`設定檔名稱`,match:`匹配`,existing:`現有`,autoDetect:`自動偵測`,loadFailed:`載入失敗`,noMappings:`無對應資料`,applying:`套用中...`,applyCount:`套用數量`},notFound:{title:`找不到頁面`,description:`您搜尋的頁面不存在。`,backToDashboard:`返回儀表板`},devices:{title:`裝置列表`,searchPlaceholder:`搜尋裝置...`,filterBridge:`按橋接器篩選`,allBridges:`所有橋接器`,filterDeviceType:`按裝置類型篩選`,allTypes:`所有類型`,sortBy:`排序方式`,sortBridge:`橋接器`,sortType:`類型`,sortName:`名稱`,deviceCount:`裝置總數`,filteredCount:`已篩選數量`},diagnostics:{title:`即時事件`,stateUpdate:`狀態更新`,command:`指令`,entityError:`實體錯誤`,sessionOpen:`工作階段開啟`,sessionClose:`工作階段關閉`,subscription:`訂閱`,bridgeStart:`橋接器啟動`,bridgeStop:`橋接器停止`,filterEvents:`篩選事件`,clearEvents:`清除事件`,noEvents:`尚無事件`},startup:{title:`啟動設定`,description:`設定橋接器的啟動順序與延遲。`,saveSuccess:`啟動設定已儲存`,saveFailed:`儲存失敗`,saveChanges:`儲存變更`,unsavedChanges:`有未儲存的變更`,noBridges:`沒有可設定的橋接器`,saveOrder:`儲存順序`},areaSetup:{title:`按區域設定`,heading:`區域橋接器精靈`,description:`為每個 Home Assistant 區域建立獨立的橋接器。`,noAreas:`找不到區域。`,selectController:`選擇目標控制器`,selectAreas:`選擇區域`,clear:`清除`,createBridges:`建立橋接器`,results:`結果`,goToBridges:`前往橋接器頁面`,createdSuccess:`成功建立橋接器`,createdPartial:`部分橋接器建立失敗`,loadFailed:`無法載入區域`,creating:`正在建立...`,created:`已建立`,unknownError:`發生未知錯誤`},lockCredentials:{title:`門鎖憑證`,addCredential:`新增憑證`,editCredential:`編輯憑證`,lockEntityId:`門鎖實體`,lockEntityHelperText:`選擇要套用此憑證的門鎖實體。`,pinCode:`PIN 碼`,nameOptional:`名稱 (選填)`,namePlaceholder:`例如:清潔人員`,nameHelperText:`用來識別此憑證的易記名稱。`,entityRequired:`必須選擇實體`,pinLength:`PIN 碼長度必須在 4 到 8 位之間`,pinDigitsOnly:`PIN 碼只能包含數字`,saveFailed:`儲存憑證失敗`,loadFailed:`載入憑證失敗`,deleteFailed:`刪除憑證失敗`,updateFailed:`更新憑證失敗`,enable:`啟用`,disable:`停用`,confirmDeleteTitle:`刪除憑證`,confirmDeleteMessage:`確定要刪除此憑證嗎?`},labels:{title:`標籤與過濾`,info:`使用標籤來組織和篩選您的實體。`,searchPlaceholder:`搜尋標籤...`,loadFailed:`載入標籤失敗`,labelsSection:`標籤`,labelsHint:`按 Home Assistant 標籤篩選`,noLabels:`未發現標籤`,displayName:`顯示名稱`,labelId:`標籤 ID`,areaId:`區域 ID`,areasSection:`區域`,areasHint:`按區域篩選實體`,noAreas:`無可用區域`,otherFilterValues:`其他篩選值`,domains:`領域 (Domains)`,domainsHint:`按實體領域篩選`,platforms:`平台 (Platforms)`,platformsHint:`按整合平台篩選`,entityCategories:`實體類別`,entityCategoriesHint:`按類別篩選 (如:組態、診斷)`,deviceClasses:`裝置類別`,deviceClassesHint:`按裝置類別篩選`,deviceNames:`裝置名稱`,deviceNamesHint:`按裝置名稱篩選`,productNames:`產品名稱`,productNamesHint:`按產品型號篩選`},logs:{title:`日誌`,logLevel:`日誌層級`,error:`錯誤`,warning:`警告`,info:`資訊`,debug:`除錯`,searchPlaceholder:`搜尋日誌...`,noResults:`未找到日誌項目`,autoRefresh:`自動重新整理`},backup:{title:`備份與還原`,description:`管理您的配置備份以防止數據遺失。`,configBackup:`配置備份`,configBackupDesc:`僅備份橋接器設定與對應關係。`,configBackupNote:`不包含 Matter 配對身份資訊。`,fullBackup:`完整備份`,fullBackupDesc:`備份所有數據,包含 Matter 配對身份資訊。`,fullBackupWarning:`注意:還原完整備份會覆蓋現有的所有 Matter 憑證。`,restoreFromBackup:`從備份還原`,restoreDesc:`上傳備份檔案以還原設定。`,restoreTitle:`還原設定`,selectBridges:`選擇橋接器`,overwriteExisting:`覆蓋現有項目`,includeMappings:`包含實體對應`,restoreIdentities:`還原配對身份`,restore:`還原`,downloadSuccess:`下載成功`,restartRequired:`需要重新啟動`,restartMessage:`必須重新啟動套件以完成還原。`,restartNote:`重啟過程中連線將暫時中斷。`,restartNow:`立即重新啟動`,storedBackups:`已儲存的備份`,createSnapshot:`建立快照`,noSnapshots:`尚無快照`,downloadSnapshot:`下載快照`,restoreSnapshot:`還原快照`,auto:`自動`,manual:`手動`,snapshotCreated:`快照已建立`,snapshotRestored:`快照已還原`,confirmRestore:`確認還原`,confirmRestoreMessage:`確定要從此快照還原嗎?現有設定將被覆蓋。`,restoreWarning:`此操作無法撤銷。`,confirmDelete:`確認刪除`,confirmDeleteMessage:`確定要刪除此備份嗎?`,settings:`備份設定`,autoBackupLabel:`自動備份`,autoBackupDesc:`每天自動建立快照`,retentionCount:`保留數量`,retentionCountDesc:`要保留的快照份數`},networkMap:{title:`網路拓撲圖`,hubLabel:`Matter Hub`,undoMove:`復原移動`,resetLayout:`重置佈局`,refreshData:`重新整理數據`,fullscreen:`全螢幕`,exitFullscreen:`結束全螢幕`,legend:`圖例`,controller:`控制器`,hub:`集線器 (Hub)`,bridge:`橋接器`,device:`裝置`,failed:`失敗`},updateChecker:{title:`更新檢查`,checkNow:`立即檢查`,currentVersion:`目前版本`,latestVersion:`最新版本`,updateAvailable:`有可用更新!`,upToDate:`軟體已是最新狀態`,releaseNotes:`版本說明`,notAvailable:`無法取得版本資訊`,checkFailed:`檢查更新失敗`,unreachable:`無法連線至更新伺服器`,instructionAddon:`請在 Home Assistant Add-on 商店中更新。`,instructionDocker:`請拉取最新的 Docker 映像檔。`,instructionNpm:`請執行 npm install 以更新。`},bridgeWizard:{title:`建立橋接器精靈`,stepTemplate:`選擇範本`,stepController:`目標控制器`,stepBridgeInfo:`基本資訊`,stepEntityFilter:`實體篩選`,stepFeatureFlags:`功能旗標`,stepReview:`確認設定`,autoCompose:`自動組合`,autoForceSyncFlag:`自動強制同步`,invertCover:`反轉窗簾/捲簾方向`,invertCoverDescription:`若窗簾狀態相反,請啟用此項。`,includeHidden:`包含隱藏實體`,includeHiddenDescription:`是否顯示在 HA 中被隱藏的實體。`,bridgeName:`橋接器名稱`,portLabel:`連接埠號碼`,portAutoAssign:`自動分配連接埠`,nameRequired:`必須輸入名稱`,createFailed:`建立橋接器失敗`,bridgeInfoDescription:`為您的橋接器設定名稱與通訊埠。`,serverModeLabel:`啟用伺服器模式`,serverModeTooltip:`將此裝置作為單獨的 Matter 裝置公開,而非橋接模式。`,entityFilterDescription:`選擇哪些實體要透過此橋接器公開。`,includeAll:`包含所有支援的實體`,entityId:`實體 ID`,includePattern:`包含規則 (Pattern)`,entityFilters:`實體篩選器`,serverModeEntityHint:`伺服器模式僅支援單一實體。`,templatePreConfigured:`預設範本`,wildcardHint:`支援萬用字元如 light.*`,commaHint:`使用逗號分隔多個項目`,excludePatterns:`排除規則`,excludeHelperText:`排除特定實體,即使符合包含規則也會被過濾。`,skipTemplate:`不使用範本`,creating:`建立中...`,createBridge:`建立橋接器`,searchRules:`搜尋規則`,templateDescription:`範本可協助您快速預設篩選器和旗標。`,controllerDescription:`選擇您預計使用的控制器以套用推薦的最佳設定。`,controllerHint:`這將自動調整功能旗標以達到最佳相容性。`,templateApplied:`範本已套用`,filterPreConfiguredFrom:`篩選器已根據 {{template}} 預設`,featureFlagsDescription:`調整特殊功能以改善特定控制器的行為。`,recommendedFlags:`推薦旗標`,selectFlags:`選擇旗標`,reviewDescription:`請確認您的橋接器設定。`,bridgesToCreate:`待建立的橋接器`,bridgesCreated:`橋接器已建立`,addAnother:`新增另一個`},footer:{github:`GitHub`,documentation:`說明文件`},languageSwitcher:{disclaimer:`翻譯可能不完全完整。`,contribute:`協助改進翻譯!`},translationEditor:{title:`翻譯編輯器`,editLanguage:`編輯語言`,info:`直接在瀏覽器中編輯翻譯。變更會立即儲存在本地並生效。您可以匯出翻譯檔案並提交給專案。`,progress:`已翻譯 {{translated}} / {{total}} 個項目`,localEdits:`有 {{count}} 處本地修改`,searchPlaceholder:`搜尋鍵或翻譯內容...`,filterAll:`所有項目`,filterMissing:`未翻譯`,filterEdited:`已編輯`,exportJson:`匯出 JSON`,copyJson:`複製 JSON`,copied:`已複製!`,resetAll:`重置所有修改`,resetKey:`重置為預設值`,noResults:`未找到匹配的翻譯項目。`,addLanguage:`新增語言`,newLanguageCode:`語言代碼 (如 pt、ja、ko)`,newLanguageName:`語言名稱 (如 Português)`,addLanguageButton:`新增`,languageExists:`此語言已存在。`,codeRequired:`語言代碼為必填。`,nameRequired:`語言名稱為必填。`,removeLanguage:`移除語言`,removeLanguageConfirm:`確定要移除此語言嗎?所有未導出的本地修改都將丟失。`,importJson:`匯入 JSON`,importSuccess:`已成功匯入 {{count}} 條翻譯。`,importFailed:`匯入失敗:JSON 格式無效。`}},As=`hamh-translation-overrides`,js=`hamh-custom-languages`;function Ms(e,t=``){let n={};for(let[r,i]of Object.entries(e)){let e=t?`${t}.${r}`:r;typeof i==`object`&&i&&!Array.isArray(i)?Object.assign(n,Ms(i,e)):n[e]=String(i??``)}return n}function Ns(e){let t={};for(let[n,r]of Object.entries(e)){let e=n.split(`.`),i=t;for(let t=0;t<e.length-1;t++)e[t]in i||(i[e[t]]={}),i=i[e[t]];i[e[e.length-1]]=r}return t}function Ps(){try{let e=localStorage.getItem(As);if(!e)return;let t=JSON.parse(e);for(let[e,n]of Object.entries(t)){if(!n||Object.keys(n).length===0)continue;let t=vo.getResourceBundle(e,`translation`),r=Ns({...t?Ms(t):{},...n});vo.addResourceBundle(e,`translation`,r,!0,!0)}}catch{}}function Fs(){try{let e=localStorage.getItem(js);if(!e)return;let t=JSON.parse(e);for(let e of t)vo.hasResourceBundle(e.code,`translation`)||vo.addResourceBundle(e.code,`translation`,{},!0,!0)}catch{}}vo.use(Ho).use(ss).init({resources:{en:{translation:_s},de:{translation:gs},hu:{translation:bs},fr:{translation:ys},it:{translation:xs},ja:{translation:Ss},es:{translation:vs},zh:{translation:Os},"zh-TW":{translation:ks},th:{translation:Es},sv:{translation:Ts},tr:{translation:Ds},ru:{translation:ws},pl:{translation:Cs}},fallbackLng:`en`,interpolation:{escapeValue:!1},detection:{order:[`localStorage`,`navigator`,`htmlTag`],caches:[`localStorage`]}}),Fs(),Ps();var Is=vo;function Ls(e,...t){let n=new URL(`https://mui.com/production-error/?code=${e}`);return t.forEach(e=>n.searchParams.append(`args[]`,e)),`Minified MUI error #${e}; visit ${n} for the full message.`}function Rs(e){if(typeof e!=`string`)throw Error(Ls(7));return e.charAt(0).toUpperCase()+e.slice(1)}var zs=s((e=>{var t=Symbol.for(`react.fragment`),n=Symbol.for(`react.strict_mode`),r=Symbol.for(`react.profiler`),i=Symbol.for(`react.consumer`),a=Symbol.for(`react.context`),o=Symbol.for(`react.forward_ref`),s=Symbol.for(`react.suspense`),c=Symbol.for(`react.suspense_list`),l=Symbol.for(`react.memo`),u=Symbol.for(`react.lazy`),d=Symbol.for(`react.client.reference`);e.isValidElementType=function(e){return!!(typeof e==`string`||typeof e==`function`||e===t||e===r||e===n||e===s||e===c||typeof e==`object`&&e&&(e.$$typeof===u||e.$$typeof===l||e.$$typeof===a||e.$$typeof===i||e.$$typeof===o||e.$$typeof===d||e.getModuleId!==void 0))}})),Bs=s(((e,t)=>{t.exports=zs()}))();function Vs(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function Hs(e){if(C.isValidElement(e)||(0,Bs.isValidElementType)(e)||!Vs(e))return e;let t={};return Object.keys(e).forEach(n=>{t[n]=Hs(e[n])}),t}function Us(e,t,n={clone:!0}){let r=n.clone?{...e}:e;return Vs(e)&&Vs(t)&&Object.keys(t).forEach(i=>{C.isValidElement(t[i])||(0,Bs.isValidElementType)(t[i])?r[i]=t[i]:Vs(t[i])&&Object.prototype.hasOwnProperty.call(e,i)&&Vs(e[i])?r[i]=Us(e[i],t[i],n):n.clone?r[i]=Vs(t[i])?Hs(t[i]):t[i]:r[i]=t[i]}),r}function Ws(e,t){return t?Us(e,t,{clone:!1}):e}function Gs(e,t){if(!e.containerQueries)return t;let n=Object.keys(t).filter(e=>e.startsWith(`@container`)).sort((e,t)=>{let n=/min-width:\s*([0-9.]+)/;return(e.match(n)?.[1]||0)-+(t.match(n)?.[1]||0)});return n.length?n.reduce((e,n)=>{let r=t[n];return delete e[n],e[n]=r,e},{...t}):t}function Ks(e,t){return t===`@`||t.startsWith(`@`)&&(e.some(e=>t.startsWith(`@${e}`))||!!t.match(/^@\d/))}function qs(e,t){let n=t.match(/^@([^/]+)?\/?(.+)?$/);if(!n)return null;let[,r,i]=n,a=Number.isNaN(+r)?r||0:+r;return e.containerQueries(i).up(a)}function Js(e){let t=(e,t)=>e.replace(`@media`,t?`@container ${t}`:`@container`);function n(n,r){n.up=(...n)=>t(e.breakpoints.up(...n),r),n.down=(...n)=>t(e.breakpoints.down(...n),r),n.between=(...n)=>t(e.breakpoints.between(...n),r),n.only=(...n)=>t(e.breakpoints.only(...n),r),n.not=(...n)=>{let i=t(e.breakpoints.not(...n),r);return i.includes(`not all and`)?i.replace(`not all and `,``).replace(`min-width:`,`width<`).replace(`max-width:`,`width>`).replace(`and`,`or`):i}}let r={},i=e=>(n(r,e),r);return n(i),{...e,containerQueries:i}}var Ys={xs:0,sm:600,md:900,lg:1200,xl:1536},Xs={keys:[`xs`,`sm`,`md`,`lg`,`xl`],up:e=>`@media (min-width:${Ys[e]}px)`},Zs={containerQueries:e=>({up:t=>{let n=typeof t==`number`?t:Ys[t]||t;return typeof n==`number`&&(n=`${n}px`),e?`@container ${e} (min-width:${n})`:`@container (min-width:${n})`}})};function Qs(e,t,n){let r=e.theme||{};if(Array.isArray(t)){let e=r.breakpoints||Xs;return t.reduce((r,i,a)=>(r[e.up(e.keys[a])]=n(t[a]),r),{})}if(typeof t==`object`){let e=r.breakpoints||Xs;return Object.keys(t).reduce((i,a)=>{if(Ks(e.keys,a)){let e=qs(r.containerQueries?r:Zs,a);e&&(i[e]=n(t[a],a))}else if(Object.keys(e.values||Ys).includes(a)){let r=e.up(a);i[r]=n(t[a],a)}else{let e=a;i[e]=t[e]}return i},{})}return n(t)}function $s(e={}){return e.keys?.reduce((t,n)=>{let r=e.up(n);return t[r]={},t},{})||{}}function ec(e,t){return e.reduce((e,t)=>{let n=e[t];return(!n||Object.keys(n).length===0)&&delete e[t],e},t)}function tc(e,...t){let n=$s(e),r=[n,...t].reduce((e,t)=>Us(e,t),{});return ec(Object.keys(n),r)}function nc(e,t){if(typeof e!=`object`)return{};let n={},r=Object.keys(t);return Array.isArray(e)?r.forEach((t,r)=>{r<e.length&&(n[t]=!0)}):r.forEach(t=>{e[t]!=null&&(n[t]=!0)}),n}function rc({values:e,breakpoints:t,base:n}){let r=n||nc(e,t),i=Object.keys(r);if(i.length===0)return e;let a;return i.reduce((t,n,r)=>(Array.isArray(e)?(t[n]=e[r]==null?e[a]:e[r],a=r):typeof e==`object`?(t[n]=e[n]==null?e[a]:e[n],a=n):t[n]=e,t),{})}function ic(e,t,n=!0){if(!t||typeof t!=`string`)return null;if(e&&e.vars&&n){let n=`vars.${t}`.split(`.`).reduce((e,t)=>e&&e[t]?e[t]:null,e);if(n!=null)return n}return t.split(`.`).reduce((e,t)=>e&&e[t]!=null?e[t]:null,e)}function ac(e,t,n,r=n){let i;return i=typeof e==`function`?e(n):Array.isArray(e)?e[n]||r:ic(e,n)||r,t&&(i=t(i,r,e)),i}function oc(e){let{prop:t,cssProperty:n=e.prop,themeKey:r,transform:i}=e,a=e=>{if(e[t]==null)return null;let a=e[t],o=e.theme,s=ic(o,r)||{};return Qs(e,a,e=>{let r=ac(s,i,e);return e===r&&typeof e==`string`&&(r=ac(s,i,`${t}${e===`default`?``:Rs(e)}`,e)),n===!1?r:{[n]:r}})};return a.propTypes={},a.filterProps=[t],a}function sc(e){let t={};return n=>(t[n]===void 0&&(t[n]=e(n)),t[n])}var cc={m:`margin`,p:`padding`},lc={t:`Top`,r:`Right`,b:`Bottom`,l:`Left`,x:[`Left`,`Right`],y:[`Top`,`Bottom`]},uc={marginX:`mx`,marginY:`my`,paddingX:`px`,paddingY:`py`},dc=sc(e=>{if(e.length>2)if(uc[e])e=uc[e];else return[e];let[t,n]=e.split(``),r=cc[t],i=lc[n]||``;return Array.isArray(i)?i.map(e=>r+e):[r+i]}),fc=[`m`,`mt`,`mr`,`mb`,`ml`,`mx`,`my`,`margin`,`marginTop`,`marginRight`,`marginBottom`,`marginLeft`,`marginX`,`marginY`,`marginInline`,`marginInlineStart`,`marginInlineEnd`,`marginBlock`,`marginBlockStart`,`marginBlockEnd`],pc=[`p`,`pt`,`pr`,`pb`,`pl`,`px`,`py`,`padding`,`paddingTop`,`paddingRight`,`paddingBottom`,`paddingLeft`,`paddingX`,`paddingY`,`paddingInline`,`paddingInlineStart`,`paddingInlineEnd`,`paddingBlock`,`paddingBlockStart`,`paddingBlockEnd`],mc=[...fc,...pc];function hc(e,t,n,r){let i=ic(e,t,!0)??n;return typeof i==`number`||typeof i==`string`?e=>typeof e==`string`?e:typeof i==`string`?i.startsWith(`var(`)&&e===0?0:i.startsWith(`var(`)&&e===1?i:`calc(${e} * ${i})`:i*e:Array.isArray(i)?e=>{if(typeof e==`string`)return e;let t=i[Math.abs(e)];return e>=0?t:typeof t==`number`?-t:typeof t==`string`&&t.startsWith(`var(`)?`calc(-1 * ${t})`:`-${t}`}:typeof i==`function`?i:()=>void 0}function gc(e){return hc(e,`spacing`,8,`spacing`)}function _c(e,t){return typeof t==`string`||t==null?t:e(t)}function vc(e,t){return n=>e.reduce((e,r)=>(e[r]=_c(t,n),e),{})}function yc(e,t,n,r){if(!t.includes(n))return null;let i=vc(dc(n),r),a=e[n];return Qs(e,a,i)}function bc(e,t){let n=gc(e.theme);return Object.keys(e).map(r=>yc(e,t,r,n)).reduce(Ws,{})}function xc(e){return bc(e,fc)}xc.propTypes={},xc.filterProps=fc;function Sc(e){return bc(e,pc)}Sc.propTypes={},Sc.filterProps=pc;function Cc(e){return bc(e,mc)}Cc.propTypes={},Cc.filterProps=mc;function wc(...e){let t=e.reduce((e,t)=>(t.filterProps.forEach(n=>{e[n]=t}),e),{}),n=e=>Object.keys(e).reduce((n,r)=>t[r]?Ws(n,t[r](e)):n,{});return n.propTypes={},n.filterProps=e.reduce((e,t)=>e.concat(t.filterProps),[]),n}function Tc(e){return typeof e==`number`?`${e}px solid`:e}function Ec(e,t){return oc({prop:e,themeKey:`borders`,transform:t})}var Dc=Ec(`border`,Tc),Oc=Ec(`borderTop`,Tc),kc=Ec(`borderRight`,Tc),Ac=Ec(`borderBottom`,Tc),jc=Ec(`borderLeft`,Tc),Mc=Ec(`borderColor`),Nc=Ec(`borderTopColor`),Pc=Ec(`borderRightColor`),Fc=Ec(`borderBottomColor`),Ic=Ec(`borderLeftColor`),Lc=Ec(`outline`,Tc),Rc=Ec(`outlineColor`),zc=e=>{if(e.borderRadius!==void 0&&e.borderRadius!==null){let t=hc(e.theme,`shape.borderRadius`,4,`borderRadius`);return Qs(e,e.borderRadius,e=>({borderRadius:_c(t,e)}))}return null};zc.propTypes={},zc.filterProps=[`borderRadius`],wc(Dc,Oc,kc,Ac,jc,Mc,Nc,Pc,Fc,Ic,zc,Lc,Rc);var Bc=e=>{if(e.gap!==void 0&&e.gap!==null){let t=hc(e.theme,`spacing`,8,`gap`);return Qs(e,e.gap,e=>({gap:_c(t,e)}))}return null};Bc.propTypes={},Bc.filterProps=[`gap`];var Vc=e=>{if(e.columnGap!==void 0&&e.columnGap!==null){let t=hc(e.theme,`spacing`,8,`columnGap`);return Qs(e,e.columnGap,e=>({columnGap:_c(t,e)}))}return null};Vc.propTypes={},Vc.filterProps=[`columnGap`];var Hc=e=>{if(e.rowGap!==void 0&&e.rowGap!==null){let t=hc(e.theme,`spacing`,8,`rowGap`);return Qs(e,e.rowGap,e=>({rowGap:_c(t,e)}))}return null};Hc.propTypes={},Hc.filterProps=[`rowGap`],wc(Bc,Vc,Hc,oc({prop:`gridColumn`}),oc({prop:`gridRow`}),oc({prop:`gridAutoFlow`}),oc({prop:`gridAutoColumns`}),oc({prop:`gridAutoRows`}),oc({prop:`gridTemplateColumns`}),oc({prop:`gridTemplateRows`}),oc({prop:`gridTemplateAreas`}),oc({prop:`gridArea`}));function Uc(e,t){return t===`grey`?t:e}wc(oc({prop:`color`,themeKey:`palette`,transform:Uc}),oc({prop:`bgcolor`,cssProperty:`backgroundColor`,themeKey:`palette`,transform:Uc}),oc({prop:`backgroundColor`,themeKey:`palette`,transform:Uc}));function Wc(e){return e<=1&&e!==0?`${e*100}%`:e}var Gc=oc({prop:`width`,transform:Wc}),Kc=e=>e.maxWidth!==void 0&&e.maxWidth!==null?Qs(e,e.maxWidth,t=>{let n=e.theme?.breakpoints?.values?.[t]||Ys[t];return n?e.theme?.breakpoints?.unit===`px`?{maxWidth:n}:{maxWidth:`${n}${e.theme.breakpoints.unit}`}:{maxWidth:Wc(t)}}):null;Kc.filterProps=[`maxWidth`];var qc=oc({prop:`minWidth`,transform:Wc}),Jc=oc({prop:`height`,transform:Wc}),Yc=oc({prop:`maxHeight`,transform:Wc}),Xc=oc({prop:`minHeight`,transform:Wc});oc({prop:`size`,cssProperty:`width`,transform:Wc}),oc({prop:`size`,cssProperty:`height`,transform:Wc}),wc(Gc,Kc,qc,Jc,Yc,Xc,oc({prop:`boxSizing`}));var Zc={border:{themeKey:`borders`,transform:Tc},borderTop:{themeKey:`borders`,transform:Tc},borderRight:{themeKey:`borders`,transform:Tc},borderBottom:{themeKey:`borders`,transform:Tc},borderLeft:{themeKey:`borders`,transform:Tc},borderColor:{themeKey:`palette`},borderTopColor:{themeKey:`palette`},borderRightColor:{themeKey:`palette`},borderBottomColor:{themeKey:`palette`},borderLeftColor:{themeKey:`palette`},outline:{themeKey:`borders`,transform:Tc},outlineColor:{themeKey:`palette`},borderRadius:{themeKey:`shape.borderRadius`,style:zc},color:{themeKey:`palette`,transform:Uc},bgcolor:{themeKey:`palette`,cssProperty:`backgroundColor`,transform:Uc},backgroundColor:{themeKey:`palette`,transform:Uc},p:{style:Sc},pt:{style:Sc},pr:{style:Sc},pb:{style:Sc},pl:{style:Sc},px:{style:Sc},py:{style:Sc},padding:{style:Sc},paddingTop:{style:Sc},paddingRight:{style:Sc},paddingBottom:{style:Sc},paddingLeft:{style:Sc},paddingX:{style:Sc},paddingY:{style:Sc},paddingInline:{style:Sc},paddingInlineStart:{style:Sc},paddingInlineEnd:{style:Sc},paddingBlock:{style:Sc},paddingBlockStart:{style:Sc},paddingBlockEnd:{style:Sc},m:{style:xc},mt:{style:xc},mr:{style:xc},mb:{style:xc},ml:{style:xc},mx:{style:xc},my:{style:xc},margin:{style:xc},marginTop:{style:xc},marginRight:{style:xc},marginBottom:{style:xc},marginLeft:{style:xc},marginX:{style:xc},marginY:{style:xc},marginInline:{style:xc},marginInlineStart:{style:xc},marginInlineEnd:{style:xc},marginBlock:{style:xc},marginBlockStart:{style:xc},marginBlockEnd:{style:xc},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:Bc},rowGap:{style:Hc},columnGap:{style:Vc},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:`zIndex`},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:`shadows`},width:{transform:Wc},maxWidth:{style:Kc},minWidth:{transform:Wc},height:{transform:Wc},maxHeight:{transform:Wc},minHeight:{transform:Wc},boxSizing:{},font:{themeKey:`font`},fontFamily:{themeKey:`typography`},fontSize:{themeKey:`typography`},fontStyle:{themeKey:`typography`},fontWeight:{themeKey:`typography`},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:`typography`}};function Qc(...e){let t=e.reduce((e,t)=>e.concat(Object.keys(t)),[]),n=new Set(t);return e.every(e=>n.size===Object.keys(e).length)}function $c(e,t){return typeof e==`function`?e(t):e}function el(){function e(e,t,n,r){let i={[e]:t,theme:n},a=r[e];if(!a)return{[e]:t};let{cssProperty:o=e,themeKey:s,transform:c,style:l}=a;if(t==null)return null;if(s===`typography`&&t===`inherit`)return{[e]:t};let u=ic(n,s)||{};return l?l(i):Qs(i,t,t=>{let n=ac(u,c,t);return t===n&&typeof t==`string`&&(n=ac(u,c,`${e}${t===`default`?``:Rs(t)}`,t)),o===!1?n:{[o]:n}})}function t(n){let{sx:r,theme:i={},nested:a}=n||{};if(!r)return null;let o=i.unstable_sxConfig??Zc;function s(n){let r=n;if(typeof n==`function`)r=n(i);else if(typeof n!=`object`)return n;if(!r)return null;let s=$s(i.breakpoints),c=Object.keys(s),l=s;return Object.keys(r).forEach(n=>{let a=$c(r[n],i);if(a!=null)if(typeof a==`object`)if(o[n])l=Ws(l,e(n,a,i,o));else{let e=Qs({theme:i},a,e=>({[n]:e}));Qc(e,a)?l[n]=t({sx:a,theme:i,nested:!0}):l=Ws(l,e)}else l=Ws(l,e(n,a,i,o))}),!a&&i.modularCssLayers?{"@layer sx":Gs(i,ec(c,l))}:Gs(i,ec(c,l))}return Array.isArray(r)?r.map(s):s(r)}return t}var tl=el();tl.filterProps=[`sx`];var nl=e=>{let t={systemProps:{},otherProps:{}},n=e?.theme?.unstable_sxConfig??Zc;return Object.keys(e).forEach(r=>{n[r]?t.systemProps[r]=e[r]:t.otherProps[r]=e[r]}),t};function rl(e){let{sx:t,...n}=e,{systemProps:r,otherProps:i}=nl(n),a;return a=Array.isArray(t)?[r,...t]:typeof t==`function`?(...e)=>{let n=t(...e);return Vs(n)?{...r,...n}:r}:{...r,...t},{...i,sx:a}}function il(){return il=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},il.apply(null,arguments)}var al=!1;function ol(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}function sl(e){var t=document.createElement(`style`);return t.setAttribute(`data-emotion`,e.key),e.nonce!==void 0&&t.setAttribute(`nonce`,e.nonce),t.appendChild(document.createTextNode(``)),t.setAttribute(`data-s`,``),t}var cl=function(){function e(e){var t=this;this._insertTag=function(e){var n=t.tags.length===0?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling;t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=e.speedy===void 0?!al:e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(sl(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=ol(t);try{n.insertRule(e,n.cssRules.length)}catch{}}else t.appendChild(document.createTextNode(e));this.ctr++},t.flush=function(){this.tags.forEach(function(e){return e.parentNode?.removeChild(e)}),this.tags=[],this.ctr=0},e}(),ll=`-ms-`,ul=`-moz-`,dl=`-webkit-`,fl=`comm`,pl=`rule`,ml=`decl`,hl=`@import`,gl=`@keyframes`,_l=`@layer`,vl=Math.abs,yl=String.fromCharCode,bl=Object.assign;function xl(e,t){return El(e,0)^45?(((t<<2^El(e,0))<<2^El(e,1))<<2^El(e,2))<<2^El(e,3):0}function Sl(e){return e.trim()}function Cl(e,t){return(e=t.exec(e))?e[0]:e}function wl(e,t,n){return e.replace(t,n)}function Tl(e,t){return e.indexOf(t)}function El(e,t){return e.charCodeAt(t)|0}function Dl(e,t,n){return e.slice(t,n)}function Ol(e){return e.length}function kl(e){return e.length}function Al(e,t){return t.push(e),e}function jl(e,t){return e.map(t).join(``)}var Ml=1,Nl=1,Pl=0,Fl=0,Il=0,Ll=``;function Rl(e,t,n,r,i,a,o){return{value:e,root:t,parent:n,type:r,props:i,children:a,line:Ml,column:Nl,length:o,return:``}}function zl(e,t){return bl(Rl(``,null,null,``,null,null,0),e,{length:-e.length},t)}function Bl(){return Il}function Vl(){return Il=Fl>0?El(Ll,--Fl):0,Nl--,Il===10&&(Nl=1,Ml--),Il}function Hl(){return Il=Fl<Pl?El(Ll,Fl++):0,Nl++,Il===10&&(Nl=1,Ml++),Il}function Ul(){return El(Ll,Fl)}function Wl(){return Fl}function Gl(e,t){return Dl(Ll,e,t)}function Kl(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function ql(e){return Ml=Nl=1,Pl=Ol(Ll=e),Fl=0,[]}function Jl(e){return Ll=``,e}function Yl(e){return Sl(Gl(Fl-1,Ql(e===91?e+2:e===40?e+1:e)))}function Xl(e){for(;(Il=Ul())&&Il<33;)Hl();return Kl(e)>2||Kl(Il)>3?``:` `}function Zl(e,t){for(;--t&&Hl()&&!(Il<48||Il>102||Il>57&&Il<65||Il>70&&Il<97););return Gl(e,Wl()+(t<6&&Ul()==32&&Hl()==32))}function Ql(e){for(;Hl();)switch(Il){case e:return Fl;case 34:case 39:e!==34&&e!==39&&Ql(Il);break;case 40:e===41&&Ql(e);break;case 92:Hl();break}return Fl}function $l(e,t){for(;Hl()&&e+Il!==57&&!(e+Il===84&&Ul()===47););return`/*`+Gl(t,Fl-1)+`*`+yl(e===47?e:Hl())}function eu(e){for(;!Kl(Ul());)Hl();return Gl(e,Fl)}function tu(e){return Jl(nu(``,null,null,null,[``],e=ql(e),0,[0],e))}function nu(e,t,n,r,i,a,o,s,c){for(var l=0,u=0,d=o,f=0,p=0,m=0,h=1,g=1,_=1,v=0,y=``,b=i,x=a,S=r,C=y;g;)switch(m=v,v=Hl()){case 40:if(m!=108&&El(C,d-1)==58){Tl(C+=wl(Yl(v),`&`,`&\f`),`&\f`)!=-1&&(_=-1);break}case 34:case 39:case 91:C+=Yl(v);break;case 9:case 10:case 13:case 32:C+=Xl(m);break;case 92:C+=Zl(Wl()-1,7);continue;case 47:switch(Ul()){case 42:case 47:Al(iu($l(Hl(),Wl()),t,n),c);break;default:C+=`/`}break;case 123*h:s[l++]=Ol(C)*_;case 125*h:case 59:case 0:switch(v){case 0:case 125:g=0;case 59+u:_==-1&&(C=wl(C,/\f/g,``)),p>0&&Ol(C)-d&&Al(p>32?au(C+`;`,r,n,d-1):au(wl(C,` `,``)+`;`,r,n,d-2),c);break;case 59:C+=`;`;default:if(Al(S=ru(C,t,n,l,u,i,s,y,b=[],x=[],d),a),v===123)if(u===0)nu(C,t,S,S,b,a,d,s,x);else switch(f===99&&El(C,3)===110?100:f){case 100:case 108:case 109:case 115:nu(e,S,S,r&&Al(ru(e,S,S,0,0,i,s,y,i,b=[],d),x),i,x,d,s,r?b:x);break;default:nu(C,S,S,S,[``],x,0,s,x)}}l=u=p=0,h=_=1,y=C=``,d=o;break;case 58:d=1+Ol(C),p=m;default:if(h<1){if(v==123)--h;else if(v==125&&h++==0&&Vl()==125)continue}switch(C+=yl(v),v*h){case 38:_=u>0?1:(C+=`\f`,-1);break;case 44:s[l++]=(Ol(C)-1)*_,_=1;break;case 64:Ul()===45&&(C+=Yl(Hl())),f=Ul(),u=d=Ol(y=C+=eu(Wl())),v++;break;case 45:m===45&&Ol(C)==2&&(h=0)}}return a}function ru(e,t,n,r,i,a,o,s,c,l,u){for(var d=i-1,f=i===0?a:[``],p=kl(f),m=0,h=0,g=0;m<r;++m)for(var _=0,v=Dl(e,d+1,d=vl(h=o[m])),y=e;_<p;++_)(y=Sl(h>0?f[_]+` `+v:wl(v,/&\f/g,f[_])))&&(c[g++]=y);return Rl(e,t,n,i===0?pl:s,c,l,u)}function iu(e,t,n){return Rl(e,t,n,fl,yl(Bl()),Dl(e,2,-2),0)}function au(e,t,n,r){return Rl(e,t,n,ml,Dl(e,0,r),Dl(e,r+1,-1),r)}function ou(e,t){for(var n=``,r=kl(e),i=0;i<r;i++)n+=t(e[i],i,e,t)||``;return n}function su(e,t,n,r){switch(e.type){case _l:if(e.children.length)break;case hl:case ml:return e.return=e.return||e.value;case fl:return``;case gl:return e.return=e.value+`{`+ou(e.children,r)+`}`;case pl:e.value=e.props.join(`,`)}return Ol(n=ou(e.children,r))?e.return=e.value+`{`+n+`}`:``}function cu(e){var t=kl(e);return function(n,r,i,a){for(var o=``,s=0;s<t;s++)o+=e[s](n,r,i,a)||``;return o}}function lu(e){return function(t){t.root||(t=t.return)&&e(t)}}function uu(e){var t=Object.create(null);return function(n){return t[n]===void 0&&(t[n]=e(n)),t[n]}}var du=function(e,t,n){for(var r=0,i=0;r=i,i=Ul(),r===38&&i===12&&(t[n]=1),!Kl(i);)Hl();return Gl(e,Fl)},fu=function(e,t){var n=-1,r=44;do switch(Kl(r)){case 0:r===38&&Ul()===12&&(t[n]=1),e[n]+=du(Fl-1,t,n);break;case 2:e[n]+=Yl(r);break;case 4:if(r===44){e[++n]=Ul()===58?`&\f`:``,t[n]=e[n].length;break}default:e[n]+=yl(r)}while(r=Hl());return e},pu=function(e,t){return Jl(fu(ql(e),t))},mu=new WeakMap,hu=function(e){if(!(e.type!==`rule`||!e.parent||e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;n.type!==`rule`;)if(n=n.parent,!n)return;if(!(e.props.length===1&&t.charCodeAt(0)!==58&&!mu.get(n))&&!r){mu.set(e,!0);for(var i=[],a=pu(t,i),o=n.props,s=0,c=0;s<a.length;s++)for(var l=0;l<o.length;l++,c++)e.props[c]=i[s]?a[s].replace(/&\f/g,o[l]):o[l]+` `+a[s]}}},gu=function(e){if(e.type===`decl`){var t=e.value;t.charCodeAt(0)===108&&t.charCodeAt(2)===98&&(e.return=``,e.value=``)}};function _u(e,t){switch(xl(e,t)){case 5103:return dl+`print-`+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return dl+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return dl+e+ul+e+ll+e+e;case 6828:case 4268:return dl+e+ll+e+e;case 6165:return dl+e+ll+`flex-`+e+e;case 5187:return dl+e+wl(e,/(\w+).+(:[^]+)/,dl+`box-$1$2`+ll+`flex-$1$2`)+e;case 5443:return dl+e+ll+`flex-item-`+wl(e,/flex-|-self/,``)+e;case 4675:return dl+e+ll+`flex-line-pack`+wl(e,/align-content|flex-|-self/,``)+e;case 5548:return dl+e+ll+wl(e,`shrink`,`negative`)+e;case 5292:return dl+e+ll+wl(e,`basis`,`preferred-size`)+e;case 6060:return dl+`box-`+wl(e,`-grow`,``)+dl+e+ll+wl(e,`grow`,`positive`)+e;case 4554:return dl+wl(e,/([^-])(transform)/g,`$1`+dl+`$2`)+e;case 6187:return wl(wl(wl(e,/(zoom-|grab)/,dl+`$1`),/(image-set)/,dl+`$1`),e,``)+e;case 5495:case 3959:return wl(e,/(image-set\([^]*)/,dl+"$1$`$1");case 4968:return wl(wl(e,/(.+:)(flex-)?(.*)/,dl+`box-pack:$3`+ll+`flex-pack:$3`),/s.+-b[^;]+/,`justify`)+dl+e+e;case 4095:case 3583:case 4068:case 2532:return wl(e,/(.+)-inline(.+)/,dl+`$1$2`)+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(Ol(e)-1-t>6)switch(El(e,t+1)){case 109:if(El(e,t+4)!==45)break;case 102:return wl(e,/(.+:)(.+)-([^]+)/,`$1`+dl+`$2-$3$1`+ul+(El(e,t+3)==108?`$3`:`$2-$3`))+e;case 115:return~Tl(e,`stretch`)?_u(wl(e,`stretch`,`fill-available`),t)+e:e}break;case 4949:if(El(e,t+1)!==115)break;case 6444:switch(El(e,Ol(e)-3-(~Tl(e,`!important`)&&10))){case 107:return wl(e,`:`,`:`+dl)+e;case 101:return wl(e,/(.+:)([^;!]+)(;|!.+)?/,`$1`+dl+(El(e,14)===45?`inline-`:``)+`box$3$1`+dl+`$2$3$1`+ll+`$2box$3`)+e}break;case 5936:switch(El(e,t+11)){case 114:return dl+e+ll+wl(e,/[svh]\w+-[tblr]{2}/,`tb`)+e;case 108:return dl+e+ll+wl(e,/[svh]\w+-[tblr]{2}/,`tb-rl`)+e;case 45:return dl+e+ll+wl(e,/[svh]\w+-[tblr]{2}/,`lr`)+e}return dl+e+ll+e+e}return e}var vu=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case ml:e.return=_u(e.value,e.length);break;case gl:return ou([zl(e,{value:wl(e.value,`@`,`@`+dl)})],r);case pl:if(e.length)return jl(e.props,function(t){switch(Cl(t,/(::plac\w+|:read-\w+)/)){case`:read-only`:case`:read-write`:return ou([zl(e,{props:[wl(t,/:(read-\w+)/,`:`+ul+`$1`)]})],r);case`::placeholder`:return ou([zl(e,{props:[wl(t,/:(plac\w+)/,`:`+dl+`input-$1`)]}),zl(e,{props:[wl(t,/:(plac\w+)/,`:`+ul+`$1`)]}),zl(e,{props:[wl(t,/:(plac\w+)/,ll+`input-$1`)]})],r)}return``})}}],yu=function(e){var t=e.key;if(t===`css`){var n=document.querySelectorAll(`style[data-emotion]:not([data-s])`);Array.prototype.forEach.call(n,function(e){e.getAttribute(`data-emotion`).indexOf(` `)!==-1&&(document.head.appendChild(e),e.setAttribute(`data-s`,``))})}var r=e.stylisPlugins||vu,i={},a,o=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll(`style[data-emotion^="`+t+` "]`),function(e){for(var t=e.getAttribute(`data-emotion`).split(` `),n=1;n<t.length;n++)i[t[n]]=!0;o.push(e)});var s,c=[hu,gu],l,u=[su,lu(function(e){l.insert(e)})],d=cu(c.concat(r,u)),f=function(e){return ou(tu(e),d)};s=function(e,t,n,r){l=n,f(e?e+`{`+t.styles+`}`:t.styles),r&&(p.inserted[t.name]=!0)};var p={key:t,sheet:new cl({key:t,container:a,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:i,registered:{},insert:s};return p.sheet.hydrate(o),p},bu=s((e=>{var t=typeof Symbol==`function`&&Symbol.for,n=t?Symbol.for(`react.element`):60103,r=t?Symbol.for(`react.portal`):60106,i=t?Symbol.for(`react.fragment`):60107,a=t?Symbol.for(`react.strict_mode`):60108,o=t?Symbol.for(`react.profiler`):60114,s=t?Symbol.for(`react.provider`):60109,c=t?Symbol.for(`react.context`):60110,l=t?Symbol.for(`react.async_mode`):60111,u=t?Symbol.for(`react.concurrent_mode`):60111,d=t?Symbol.for(`react.forward_ref`):60112,f=t?Symbol.for(`react.suspense`):60113,p=t?Symbol.for(`react.suspense_list`):60120,m=t?Symbol.for(`react.memo`):60115,h=t?Symbol.for(`react.lazy`):60116,g=t?Symbol.for(`react.block`):60121,_=t?Symbol.for(`react.fundamental`):60117,v=t?Symbol.for(`react.responder`):60118,y=t?Symbol.for(`react.scope`):60119;function b(e){if(typeof e==`object`&&e){var t=e.$$typeof;switch(t){case n:switch(e=e.type,e){case l:case u:case i:case o:case a:case f:return e;default:switch(e&&=e.$$typeof,e){case c:case d:case h:case m:case s:return e;default:return t}}case r:return t}}}function x(e){return b(e)===u}e.AsyncMode=l,e.ConcurrentMode=u,e.ContextConsumer=c,e.ContextProvider=s,e.Element=n,e.ForwardRef=d,e.Fragment=i,e.Lazy=h,e.Memo=m,e.Portal=r,e.Profiler=o,e.StrictMode=a,e.Suspense=f,e.isAsyncMode=function(e){return x(e)||b(e)===l},e.isConcurrentMode=x,e.isContextConsumer=function(e){return b(e)===c},e.isContextProvider=function(e){return b(e)===s},e.isElement=function(e){return typeof e==`object`&&!!e&&e.$$typeof===n},e.isForwardRef=function(e){return b(e)===d},e.isFragment=function(e){return b(e)===i},e.isLazy=function(e){return b(e)===h},e.isMemo=function(e){return b(e)===m},e.isPortal=function(e){return b(e)===r},e.isProfiler=function(e){return b(e)===o},e.isStrictMode=function(e){return b(e)===a},e.isSuspense=function(e){return b(e)===f},e.isValidElementType=function(e){return typeof e==`string`||typeof e==`function`||e===i||e===u||e===o||e===a||e===f||e===p||typeof e==`object`&&!!e&&(e.$$typeof===h||e.$$typeof===m||e.$$typeof===s||e.$$typeof===c||e.$$typeof===d||e.$$typeof===_||e.$$typeof===v||e.$$typeof===y||e.$$typeof===g)},e.typeOf=b})),xu=s(((e,t)=>{t.exports=bu()})),Su=s(((e,t)=>{var n=xu(),r={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};s[n.ForwardRef]=a,s[n.Memo]=o;function c(e){return n.isMemo(e)?o:s[e.$$typeof]||r}var l=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;function h(e,t,n){if(typeof t!=`string`){if(m){var r=p(t);r&&r!==m&&h(e,r,n)}var a=u(t);d&&(a=a.concat(d(t)));for(var o=c(e),s=c(t),g=0;g<a.length;++g){var _=a[g];if(!i[_]&&!(n&&n[_])&&!(s&&s[_])&&!(o&&o[_])){var v=f(t,_);try{l(e,_,v)}catch{}}}}return e}t.exports=h})),Cu=!0;function wu(e,t,n){var r=``;return n.split(` `).forEach(function(n){e[n]===void 0?n&&(r+=n+` `):t.push(e[n]+`;`)}),r}var Tu=function(e,t,n){var r=e.key+`-`+t.name;(n===!1||Cu===!1)&&e.registered[r]===void 0&&(e.registered[r]=t.styles)},Eu=function(e,t,n){Tu(e,t,n);var r=e.key+`-`+t.name;if(e.inserted[t.name]===void 0){var i=t;do e.insert(t===i?`.`+r:``,i,e.sheet,!0),i=i.next;while(i!==void 0)}};function Du(e){for(var t=0,n,r=0,i=e.length;i>=4;++r,i-=4)n=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(i){case 3:t^=(e.charCodeAt(r+2)&255)<<16;case 2:t^=(e.charCodeAt(r+1)&255)<<8;case 1:t^=e.charCodeAt(r)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var Ou={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},ku=!1,Au=/[A-Z]|^ms/g,ju=/_EMO_([^_]+?)_([^]*?)_EMO_/g,Mu=function(e){return e.charCodeAt(1)===45},Nu=function(e){return e!=null&&typeof e!=`boolean`},Pu=uu(function(e){return Mu(e)?e:e.replace(Au,`-$&`).toLowerCase()}),Fu=function(e,t){switch(e){case`animation`:case`animationName`:if(typeof t==`string`)return t.replace(ju,function(e,t,n){return Bu={name:t,styles:n,next:Bu},t})}return Ou[e]!==1&&!Mu(e)&&typeof t==`number`&&t!==0?t+`px`:t},Iu=`Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.`;function Lu(e,t,n){if(n==null)return``;var r=n;if(r.__emotion_styles!==void 0)return r;switch(typeof n){case`boolean`:return``;case`object`:var i=n;if(i.anim===1)return Bu={name:i.name,styles:i.styles,next:Bu},i.name;var a=n;if(a.styles!==void 0){var o=a.next;if(o!==void 0)for(;o!==void 0;)Bu={name:o.name,styles:o.styles,next:Bu},o=o.next;return a.styles+`;`}return Ru(e,t,n);case`function`:if(e!==void 0){var s=Bu,c=n(e);return Bu=s,Lu(e,t,c)}break}var l=n;if(t==null)return l;var u=t[l];return u===void 0?l:u}function Ru(e,t,n){var r=``;if(Array.isArray(n))for(var i=0;i<n.length;i++)r+=Lu(e,t,n[i])+`;`;else for(var a in n){var o=n[a];if(typeof o!=`object`){var s=o;t!=null&&t[s]!==void 0?r+=a+`{`+t[s]+`}`:Nu(s)&&(r+=Pu(a)+`:`+Fu(a,s)+`;`)}else{if(a===`NO_COMPONENT_SELECTOR`&&ku)throw Error(Iu);if(Array.isArray(o)&&typeof o[0]==`string`&&(t==null||t[o[0]]===void 0))for(var c=0;c<o.length;c++)Nu(o[c])&&(r+=Pu(a)+`:`+Fu(a,o[c])+`;`);else{var l=Lu(e,t,o);switch(a){case`animation`:case`animationName`:r+=Pu(a)+`:`+l+`;`;break;default:r+=a+`{`+l+`}`}}}}return r}var zu=/label:\s*([^\s;{]+)\s*(;|$)/g,Bu;function Vu(e,t,n){if(e.length===1&&typeof e[0]==`object`&&e[0]!==null&&e[0].styles!==void 0)return e[0];var r=!0,i=``;Bu=void 0;var a=e[0];a==null||a.raw===void 0?(r=!1,i+=Lu(n,t,a)):i+=a[0];for(var o=1;o<e.length;o++)i+=Lu(n,t,e[o]),r&&(i+=a[o]);zu.lastIndex=0;for(var s=``,c;(c=zu.exec(i))!==null;)s+=`-`+c[1];return{name:Du(i)+s,styles:i,next:Bu}}var Hu=function(e){return e()},Uu=C.useInsertionEffect?C.useInsertionEffect:!1,Wu=Uu||Hu,Gu=Uu||C.useLayoutEffect,Ku=C.createContext(typeof HTMLElement<`u`?yu({key:`css`}):null);Ku.Provider;var qu=function(e){return(0,C.forwardRef)(function(t,n){return e(t,(0,C.useContext)(Ku),n)})},Ju=C.createContext({}),Yu={}.hasOwnProperty,Xu=`__EMOTION_TYPE_PLEASE_DO_NOT_USE__`,Zu=function(e,t){var n={};for(var r in t)Yu.call(t,r)&&(n[r]=t[r]);return n[Xu]=e,n},Qu=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return Tu(t,n,r),Wu(function(){return Eu(t,n,r)}),null},$u=qu(function(e,t,n){var r=e.css;typeof r==`string`&&t.registered[r]!==void 0&&(r=t.registered[r]);var i=e[Xu],a=[r],o=``;typeof e.className==`string`?o=wu(t.registered,a,e.className):e.className!=null&&(o=e.className+` `);var s=Vu(a,void 0,C.useContext(Ju));o+=t.key+`-`+s.name;var c={};for(var l in e)Yu.call(e,l)&&l!==`css`&&l!==Xu&&(c[l]=e[l]);return c.className=o,n&&(c.ref=n),C.createElement(C.Fragment,null,C.createElement(Qu,{cache:t,serialized:s,isStringTag:typeof i==`string`}),C.createElement(i,c))});Su();var ed=function(e,t){var n=arguments;if(t==null||!Yu.call(t,`css`))return C.createElement.apply(void 0,n);var r=n.length,i=Array(r);i[0]=$u,i[1]=Zu(e,t);for(var a=2;a<r;a++)i[a]=n[a];return C.createElement.apply(null,i)};(function(e){var t;(function(e){})(t||=e.JSX||={})})(ed||={});var td=qu(function(e,t){var n=e.styles,r=Vu([n],void 0,C.useContext(Ju)),i=C.useRef();return Gu(function(){var e=t.key+`-global`,n=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),a=!1,o=document.querySelector(`style[data-emotion="`+e+` `+r.name+`"]`);return t.sheet.tags.length&&(n.before=t.sheet.tags[0]),o!==null&&(a=!0,o.setAttribute(`data-emotion`,e),n.hydrate([o])),i.current=[n,a],function(){n.flush()}},[t]),Gu(function(){var e=i.current,n=e[0];if(e[1]){e[1]=!1;return}r.next!==void 0&&Eu(t,r.next,!0),n.tags.length&&(n.before=n.tags[n.tags.length-1].nextElementSibling,n.flush()),t.insert(``,r,n,!1)},[t,r.name]),null});function nd(){return Vu([...arguments])}function rd(){var e=nd.apply(void 0,arguments),t=`animation-`+e.name;return{name:t,styles:`@keyframes `+t+`{`+e.styles+`}`,anim:1,toString:function(){return`_EMO_`+this.name+`_`+this.styles+`_EMO_`}}}var id=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,ad=uu(function(e){return id.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91}),od=!1,sd=ad,cd=function(e){return e!==`theme`},ld=function(e){return typeof e==`string`&&e.charCodeAt(0)>96?sd:cd},ud=function(e,t,n){var r;if(t){var i=t.shouldForwardProp;r=e.__emotion_forwardProp&&i?function(t){return e.__emotion_forwardProp(t)&&i(t)}:i}return typeof r!=`function`&&n&&(r=e.__emotion_forwardProp),r},dd=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return Tu(t,n,r),Wu(function(){return Eu(t,n,r)}),null},fd=function e(t,n){var r=t.__emotion_real===t,i=r&&t.__emotion_base||t,a,o;n!==void 0&&(a=n.label,o=n.target);var s=ud(t,n,r),c=s||ld(i),l=!c(`as`);return function(){var u=arguments,d=r&&t.__emotion_styles!==void 0?t.__emotion_styles.slice(0):[];if(a!==void 0&&d.push(`label:`+a+`;`),u[0]==null||u[0].raw===void 0)d.push.apply(d,u);else{var f=u[0];d.push(f[0]);for(var p=u.length,m=1;m<p;m++)d.push(u[m],f[m])}var h=qu(function(e,t,n){var r=l&&e.as||i,a=``,u=[],f=e;if(e.theme==null){for(var p in f={},e)f[p]=e[p];f.theme=C.useContext(Ju)}typeof e.className==`string`?a=wu(t.registered,u,e.className):e.className!=null&&(a=e.className+` `);var m=Vu(d.concat(u),t.registered,f);a+=t.key+`-`+m.name,o!==void 0&&(a+=` `+o);var h=l&&s===void 0?ld(r):c,g={};for(var _ in e)l&&_===`as`||h(_)&&(g[_]=e[_]);return g.className=a,n&&(g.ref=n),C.createElement(C.Fragment,null,C.createElement(dd,{cache:t,serialized:m,isStringTag:typeof r==`string`}),C.createElement(r,g))});return h.displayName=a===void 0?`Styled(`+(typeof i==`string`?i:i.displayName||i.name||`Component`)+`)`:a,h.defaultProps=t.defaultProps,h.__emotion_real=h,h.__emotion_base=i,h.__emotion_styles=d,h.__emotion_forwardProp=s,Object.defineProperty(h,`toString`,{value:function(){return o===void 0&&od?`NO_COMPONENT_SELECTOR`:`.`+o}}),h.withComponent=function(t,r){return e(t,il({},n,r,{shouldForwardProp:ud(h,r,!0)})).apply(void 0,d)},h}},pd=`a.abbr.address.area.article.aside.audio.b.base.bdi.bdo.big.blockquote.body.br.button.canvas.caption.cite.code.col.colgroup.data.datalist.dd.del.details.dfn.dialog.div.dl.dt.em.embed.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.iframe.img.input.ins.kbd.keygen.label.legend.li.link.main.map.mark.marquee.menu.menuitem.meta.meter.nav.noscript.object.ol.optgroup.option.output.p.param.picture.pre.progress.q.rp.rt.ruby.s.samp.script.section.select.small.source.span.strong.style.sub.summary.sup.table.tbody.td.textarea.tfoot.th.thead.time.title.tr.track.u.ul.var.video.wbr.circle.clipPath.defs.ellipse.foreignObject.g.image.line.linearGradient.mask.path.pattern.polygon.polyline.radialGradient.rect.stop.svg.text.tspan`.split(`.`),md=fd.bind(null);pd.forEach(function(e){md[e]=md(e)});var hd=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),W=s(((e,t)=>{t.exports=hd()}))();function gd(e){return e==null||Object.keys(e).length===0}function _d(e){let{styles:t,defaultTheme:n={}}=e;return(0,W.jsx)(td,{styles:typeof t==`function`?e=>t(gd(e)?n:e):t})}function vd(e,t){return md(e,t)}function yd(e,t){Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}var bd=[];function xd(e){return bd[0]=e,Vu(bd)}var Sd=e=>{let t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>({...e,[t.key]:t.val}),{})};function Cd(e){let{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n=`px`,step:r=5,...i}=e,a=Sd(t),o=Object.keys(a);function s(e){return`@media (min-width:${typeof t[e]==`number`?t[e]:e}${n})`}function c(e){return`@media (max-width:${(typeof t[e]==`number`?t[e]:e)-r/100}${n})`}function l(e,i){let a=o.indexOf(i);return`@media (min-width:${typeof t[e]==`number`?t[e]:e}${n}) and (max-width:${(a!==-1&&typeof t[o[a]]==`number`?t[o[a]]:i)-r/100}${n})`}function u(e){return o.indexOf(e)+1<o.length?l(e,o[o.indexOf(e)+1]):s(e)}function d(e){let t=o.indexOf(e);return t===0?s(o[1]):t===o.length-1?c(o[t]):l(e,o[o.indexOf(e)+1]).replace(`@media`,`@media not all and`)}return{keys:o,values:a,up:s,down:c,between:l,only:u,not:d,unit:n,...i}}var wd={borderRadius:4};function Td(e=8,t=gc({spacing:e})){if(e.mui)return e;let n=(...e)=>(e.length===0?[1]:e).map(e=>{let n=t(e);return typeof n==`number`?`${n}px`:n}).join(` `);return n.mui=!0,n}function Ed(e,t){let n=this;if(n.vars){if(!n.colorSchemes?.[e]||typeof n.getColorSchemeSelector!=`function`)return{};let r=n.getColorSchemeSelector(e);return r===`&`?t:((r.includes(`data-`)||r.includes(`.`))&&(r=`*:where(${r.replace(/\s*&$/,``)}) &`),{[r]:t})}return n.palette.mode===e?t:{}}function Dd(e={},...t){let{breakpoints:n={},palette:r={},spacing:i,shape:a={},...o}=e,s=Cd(n),c=Td(i),l=Us({breakpoints:s,direction:`ltr`,components:{},palette:{mode:`light`,...r},spacing:c,shape:{...wd,...a}},o);return l=Js(l),l.applyStyles=Ed,l=t.reduce((e,t)=>Us(e,t),l),l.unstable_sxConfig={...Zc,...o?.unstable_sxConfig},l.unstable_sx=function(e){return tl({sx:e,theme:this})},l}function Od(e){return Object.keys(e).length===0}function kd(e=null){let t=C.useContext(Ju);return!t||Od(t)?e:t}var Ad=Dd();function jd(e=Ad){return kd(e)}function Md(e){let t=xd(e);return e!==t&&t.styles?(t.styles.match(/^@layer\s+[^{]*$/)||(t.styles=`@layer global{${t.styles}}`),t):e}function Nd({styles:e,themeId:t,defaultTheme:n={}}){let r=jd(n),i=t&&r[t]||r,a=typeof e==`function`?e(i):e;return i.modularCssLayers&&(a=Array.isArray(a)?a.map(e=>Md(typeof e==`function`?e(i):e)):Md(a)),(0,W.jsx)(_d,{styles:a})}var Pd=e=>e,Fd=(()=>{let e=Pd;return{configure(t){e=t},generate(t){return e(t)},reset(){e=Pd}}})();function Id(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=Id(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function G(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=Id(e))&&(r&&(r+=` `),r+=t);return r}function Ld(e={}){let{themeId:t,defaultTheme:n,defaultClassName:r=`MuiBox-root`,generateClassName:i}=e,a=vd(`div`,{shouldForwardProp:e=>e!==`theme`&&e!==`sx`&&e!==`as`})(tl);return C.forwardRef(function(e,o){let s=jd(n),{className:c,component:l=`div`,...u}=rl(e);return(0,W.jsx)(a,{as:l,ref:o,className:G(c,i?i(r):r),theme:t&&s[t]||s,...u})})}var Rd={active:`active`,checked:`checked`,completed:`completed`,disabled:`disabled`,error:`error`,expanded:`expanded`,focused:`focused`,focusVisible:`focusVisible`,open:`open`,readOnly:`readOnly`,required:`required`,selected:`selected`};function zd(e,t,n=`Mui`){let r=Rd[t];return r?`${n}-${r}`:`${Fd.generate(e)}-${t}`}function K(e,t,n=`Mui`){let r={};return t.forEach(t=>{r[t]=zd(e,t,n)}),r}function Bd(e){let{variants:t,...n}=e,r={variants:t,style:xd(n),isProcessed:!0};return r.style===n||t&&t.forEach(e=>{typeof e.style!=`function`&&(e.style=xd(e.style))}),r}var Vd=Dd();function Hd(e){return e!==`ownerState`&&e!==`theme`&&e!==`sx`&&e!==`as`}function Ud(e,t){return t&&e&&typeof e==`object`&&e.styles&&!e.styles.startsWith(`@layer`)&&(e.styles=`@layer ${t}{${String(e.styles)}}`),e}function Wd(e){return e?(t,n)=>n[e]:null}function Gd(e,t,n){e.theme=Yd(e.theme)?n:e.theme[t]||e.theme}function Kd(e,t,n){let r=typeof t==`function`?t(e):t;if(Array.isArray(r))return r.flatMap(t=>Kd(e,t,n));if(Array.isArray(r?.variants)){let t;if(r.isProcessed)t=n?Ud(r.style,n):r.style;else{let{variants:e,...i}=r;t=n?Ud(xd(i),n):i}return qd(e,r.variants,[t],n)}return r?.isProcessed?n?Ud(xd(r.style),n):r.style:n?Ud(xd(r),n):r}function qd(e,t,n=[],r=void 0){let i;variantLoop:for(let a=0;a<t.length;a+=1){let o=t[a];if(typeof o.props==`function`){if(i??={...e,...e.ownerState,ownerState:e.ownerState},!o.props(i))continue}else for(let t in o.props)if(e[t]!==o.props[t]&&e.ownerState?.[t]!==o.props[t])continue variantLoop;typeof o.style==`function`?(i??={...e,...e.ownerState,ownerState:e.ownerState},n.push(r?Ud(xd(o.style(i)),r):o.style(i))):n.push(r?Ud(xd(o.style),r):o.style)}return n}function Jd(e={}){let{themeId:t,defaultTheme:n=Vd,rootShouldForwardProp:r=Hd,slotShouldForwardProp:i=Hd}=e;function a(e){Gd(e,t,n)}return(e,t={})=>{yd(e,e=>e.filter(e=>e!==tl));let{name:n,slot:o,skipVariantsResolver:s,skipSx:c,overridesResolver:l=Wd(Zd(o)),...u}=t,d=n&&n.startsWith(`Mui`)||o?`components`:`custom`,f=s===void 0?o&&o!==`Root`&&o!==`root`||!1:s,p=c||!1,m=Hd;o===`Root`||o===`root`?m=r:o?m=i:Xd(e)&&(m=void 0);let h=vd(e,{shouldForwardProp:m,label:void 0,...u}),g=e=>{if(e.__emotion_real===e)return e;if(typeof e==`function`)return function(t){return Kd(t,e,t.theme.modularCssLayers?d:void 0)};if(Vs(e)){let t=Bd(e);return function(e){return t.variants?Kd(e,t,e.theme.modularCssLayers?d:void 0):e.theme.modularCssLayers?Ud(t.style,d):t.style}}return e},_=(...t)=>{let r=[],i=t.map(g),o=[];if(r.push(a),n&&l&&o.push(function(e){let t=e.theme.components?.[n]?.styleOverrides;if(!t)return null;let r={};for(let n in t)r[n]=Kd(e,t[n],e.theme.modularCssLayers?`theme`:void 0);return l(e,r)}),n&&!f&&o.push(function(e){let t=e.theme?.components?.[n]?.variants;return t?qd(e,t,[],e.theme.modularCssLayers?`theme`:void 0):null}),p||o.push(tl),Array.isArray(i[0])){let e=i.shift(),t=Array(r.length).fill(``),n=Array(o.length).fill(``),a;a=[...t,...e,...n],a.raw=[...t,...e.raw,...n],r.unshift(a)}let s=h(...r,...i,...o);return e.muiName&&(s.muiName=e.muiName),s};return h.withConfig&&(_.withConfig=h.withConfig),_}}function Yd(e){for(let t in e)return!1;return!0}function Xd(e){return typeof e==`string`&&e.charCodeAt(0)>96}function Zd(e){return e&&e.charAt(0).toLowerCase()+e.slice(1)}var Qd=Jd();function $d(e,t,n=!1){let r={...t};for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let a=i;if(a===`components`||a===`slots`)r[a]={...e[a],...r[a]};else if(a===`componentsProps`||a===`slotProps`){let i=e[a],o=t[a];if(!o)r[a]=i||{};else if(!i)r[a]=o;else{r[a]={...o};for(let e in i)if(Object.prototype.hasOwnProperty.call(i,e)){let t=e;r[a][t]=$d(i[t],o[t],n)}}}else a===`className`&&n&&t.className?r.className=G(e?.className,t?.className):a===`style`&&n&&t.style?r.style={...e?.style,...t?.style}:r[a]===void 0&&(r[a]=e[a])}return r}function ef(e){let{theme:t,name:n,props:r}=e;return!t||!t.components||!t.components[n]||!t.components[n].defaultProps?r:$d(t.components[n].defaultProps,r)}function tf({props:e,name:t,defaultTheme:n,themeId:r}){let i=jd(n);return r&&(i=i[r]||i),ef({theme:i,name:t,props:e})}var nf=typeof window<`u`?C.useLayoutEffect:C.useEffect;function rf(e,t,n,r,i){let[a,o]=C.useState(()=>i&&n?n(e).matches:r?r(e).matches:t);return nf(()=>{if(!n)return;let t=n(e),r=()=>{o(t.matches)};return r(),t.addEventListener(`change`,r),()=>{t.removeEventListener(`change`,r)}},[e,n]),a}var af={...C}.useSyncExternalStore;function of(e,t,n,r,i){let a=C.useCallback(()=>t,[t]),o=C.useMemo(()=>{if(i&&n)return()=>n(e).matches;if(r!==null){let{matches:t}=r(e);return()=>t}return a},[a,e,r,i,n]),[s,c]=C.useMemo(()=>{if(n===null)return[a,()=>()=>{}];let t=n(e);return[()=>t.matches,e=>(t.addEventListener(`change`,e),()=>{t.removeEventListener(`change`,e)})]},[a,n,e]);return af(c,s,o)}function sf(e={}){let{themeId:t}=e;return function(e,n={}){let r=kd();r&&t&&(r=r[t]||r);let i=typeof window<`u`&&window.matchMedia!==void 0,{defaultMatches:a=!1,matchMedia:o=i?window.matchMedia:null,ssrMatchMedia:s=null,noSsr:c=!1}=ef({name:`MuiUseMediaQuery`,props:n,theme:r}),l=typeof e==`function`?e(r):e;return l=l.replace(/^@media( ?)/m,``),l.includes(`print`)&&console.warn(["MUI: You have provided a `print` query to the `useMediaQuery` hook.",`Using the print media query to modify print styles can lead to unexpected results.`,"Consider using the `displayPrint` field in the `sx` prop instead.","More information about `displayPrint` on our docs: https://mui.com/system/display/#display-in-print."].join(`
12
+ Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=br(),d;if(t){let e=typeof t==`string`?be(t):t;he(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=Me(e,{pathname:p});U(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),U(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let h=Ir(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:ct([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:ct([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?C.createElement(ur.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,unstable_mask:void 0,...d},navigationType:`POP`}},h):h}function Ar(){let e=Gr(),t=mt(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=C.createElement(C.Fragment,null,C.createElement(`p`,null,`💿 Hey developer 👋`),C.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,C.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,C.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),C.createElement(C.Fragment,null,C.createElement(`h2`,null,`Unexpected Application Error!`),C.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?C.createElement(`pre`,{style:i},n):null,o)}var jr=C.createElement(Ar,null),Mr=class extends C.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=_r(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:C.createElement(dr.Provider,{value:this.props.routeContext},C.createElement(fr.Provider,{value:e,children:this.props.component}));return this.context?C.createElement(Pr,{error:e},t):t}};Mr.contextType=ir;var Nr=new WeakMap;function Pr({children:e,error:t}){let{basename:n}=C.useContext(lr);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=gr(t.digest);if(e){let r=Nr.get(t);if(r)throw r;let i=_t(e.location,n);if(gt&&!Nr.get(t))if(i.isExternal||e.reloadDocument)window.location.href=i.absoluteURL||i.to;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:e.replace}));throw Nr.set(t,n),n}return C.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${i.absoluteURL||i.to}`})}}return e}function Fr({routeContext:e,match:t,children:n}){let r=C.useContext(nr);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),C.createElement(dr.Provider,{value:e},n)}function Ir(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);he(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e<i.length;e++){let t=i[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){let{loaderData:e,errors:a}=r,c=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!a||a[t.route.id]===void 0);if(t.route.lazy||c){n.isStatic&&(o=!0),i=s>=0?i.slice(0,s+1):[i[0]];break}}}}let c=n?.onError,l=r&&c?(e,t)=>{c(e,{location:r.location,params:r.matches?.[0]?.params??{},unstable_pattern:ht(r.matches),errorInfo:t})}:void 0;return i.reduceRight((e,n,c)=>{let u,d=!1,f=null,p=null;r&&(u=a&&n.route.id?a[n.route.id]:void 0,f=n.route.errorElement||jr,o&&(s<0&&c===0?(Jr(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),d=!0,p=null):s===c&&(d=!0,p=n.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,c+1)),h=()=>{let t;return t=u?f:d?p:n.route.Component?C.createElement(n.route.Component,null):n.route.element?n.route.element:e,C.createElement(Fr,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?C.createElement(Mr,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function Lr(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Rr(e){let t=C.useContext(nr);return he(t,Lr(e)),t}function zr(e){let t=C.useContext(rr);return he(t,Lr(e)),t}function Br(e){let t=C.useContext(dr);return he(t,Lr(e)),t}function Vr(e){let t=Br(e),n=t.matches[t.matches.length-1];return he(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function Hr(){return Vr(`useRouteId`)}function Ur(){return zr(`useNavigation`).navigation}function Wr(){let{matches:e,loaderData:t}=zr(`useMatches`);return C.useMemo(()=>e.map(e=>Pe(e,t)),[e,t])}function Gr(){let e=C.useContext(fr),t=zr(`useRouteError`),n=Vr(`useRouteError`);return e===void 0?t.errors?.[n]:e}function Kr(){let{router:e}=Rr(`useNavigate`),t=Vr(`useNavigate`),n=C.useRef(!1);return Sr(()=>{n.current=!0}),C.useCallback(async(r,i={})=>{U(n.current,xr),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var qr={};function Jr(e,t,n){!t&&!qr[e]&&(qr[e]=!0,U(!1,n))}var Yr={};function Xr(e,t){!e&&!Yr[t]&&(Yr[t]=!0,console.warn(t))}var Zr=C.useOptimistic,Qr=()=>void 0;function $r(e){return Zr?Zr(e):[e,Qr]}function ei(e){let t={hasErrorBoundary:e.hasErrorBoundary||e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&(e.element&&U(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(t,{element:C.createElement(e.Component),Component:void 0})),e.HydrateFallback&&(e.hydrateFallbackElement&&U(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(t,{hydrateFallbackElement:C.createElement(e.HydrateFallback),HydrateFallback:void 0})),e.ErrorBoundary&&(e.errorElement&&U(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(t,{errorElement:C.createElement(e.ErrorBoundary),ErrorBoundary:void 0})),t}var ti=[`HydrateFallback`,`hydrateFallbackElement`],ni=class{constructor(){this.status=`pending`,this.promise=new Promise((e,t)=>{this.resolve=t=>{this.status===`pending`&&(this.status=`resolved`,e(t))},this.reject=e=>{this.status===`pending`&&(this.status=`rejected`,t(e))}})}};function ri({router:e,flushSync:t,onError:n,unstable_useTransitions:r}){r=ar()||r;let[i,a]=C.useState(e.state),[o,s]=$r(i),[c,l]=C.useState(),[u,d]=C.useState({isTransitioning:!1}),[f,p]=C.useState(),[m,h]=C.useState(),[g,_]=C.useState(),v=C.useRef(new Map),y=C.useCallback((i,{deletedFetchers:o,newErrors:c,flushSync:u,viewTransitionOpts:g})=>{c&&n&&Object.values(c).forEach(e=>n(e,{location:i.location,params:i.matches[0]?.params??{},unstable_pattern:ht(i.matches)})),i.fetchers.forEach((e,t)=>{e.data!==void 0&&v.current.set(t,e.data)}),o.forEach(e=>v.current.delete(e)),Xr(u===!1||t!=null,'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let y=e.window!=null&&e.window.document!=null&&typeof e.window.document.startViewTransition==`function`;if(Xr(g==null||y,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!g||!y){t&&u?t(()=>a(i)):r===!1?a(i):C.startTransition(()=>{r===!0&&s(e=>ii(e,i)),a(i)});return}if(t&&u){t(()=>{m&&(f?.resolve(),m.skipTransition()),d({isTransitioning:!0,flushSync:!0,currentLocation:g.currentLocation,nextLocation:g.nextLocation})});let n=e.window.document.startViewTransition(()=>{t(()=>a(i))});n.finished.finally(()=>{t(()=>{p(void 0),h(void 0),l(void 0),d({isTransitioning:!1})})}),t(()=>h(n));return}m?(f?.resolve(),m.skipTransition(),_({state:i,currentLocation:g.currentLocation,nextLocation:g.nextLocation})):(l(i),d({isTransitioning:!0,flushSync:!1,currentLocation:g.currentLocation,nextLocation:g.nextLocation}))},[e.window,t,m,f,r,s,n]);C.useLayoutEffect(()=>e.subscribe(y),[e,y]);let b=o.initialized;C.useLayoutEffect(()=>{!b&&e.state.initialized&&y(e.state,{deletedFetchers:[],flushSync:!1,newErrors:null})},[b,y,e.state]),C.useEffect(()=>{u.isTransitioning&&!u.flushSync&&p(new ni)},[u]),C.useEffect(()=>{if(f&&c&&e.window){let t=c,n=f.promise,i=e.window.document.startViewTransition(async()=>{r===!1?a(t):C.startTransition(()=>{r===!0&&s(e=>ii(e,t)),a(t)}),await n});i.finished.finally(()=>{p(void 0),h(void 0),l(void 0),d({isTransitioning:!1})}),h(i)}},[c,f,e.window,r,s]),C.useEffect(()=>{f&&c&&o.location.key===c.location.key&&f.resolve()},[f,m,o.location,c]),C.useEffect(()=>{!u.isTransitioning&&g&&(l(g.state),d({isTransitioning:!0,flushSync:!1,currentLocation:g.currentLocation,nextLocation:g.nextLocation}),_(void 0))},[u.isTransitioning,g]);let x=C.useMemo(()=>({createHref:e.createHref,encodeLocation:e.encodeLocation,go:t=>e.navigate(t),push:(t,n,r)=>e.navigate(t,{state:n,preventScrollReset:r?.preventScrollReset}),replace:(t,n,r)=>e.navigate(t,{replace:!0,state:n,preventScrollReset:r?.preventScrollReset})}),[e]),S=e.basename||`/`,w=C.useMemo(()=>({router:e,navigator:x,static:!1,basename:S,onError:n}),[e,x,S,n]);return C.createElement(C.Fragment,null,C.createElement(nr.Provider,{value:w},C.createElement(rr.Provider,{value:o},C.createElement(sr.Provider,{value:v.current},C.createElement(or.Provider,{value:u},C.createElement(ci,{basename:S,location:o.location,navigationType:o.historyAction,navigator:x,unstable_useTransitions:r},C.createElement(ai,{routes:e.routes,future:e.future,state:o,isStatic:!1,onError:n})))))),null)}function ii(e,t){return{...e,navigation:t.navigation.state===`idle`?e.navigation:t.navigation,revalidation:t.revalidation===`idle`?e.revalidation:t.revalidation,actionData:t.navigation.state===`submitting`?e.actionData:t.actionData,fetchers:t.fetchers}}var ai=C.memo(oi);function oi({routes:e,future:t,state:n,isStatic:r,onError:i}){return kr(e,void 0,{state:n,isStatic:r,onError:i,future:t})}function si(e){return Er(e.context)}function ci({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,unstable_useTransitions:o}){he(!yr(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=C.useMemo(()=>({basename:s,navigator:i,static:a,unstable_useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=be(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,unstable_mask:m}=n,h=C.useMemo(()=>{let e=Ze(l,s);return e==null?null:{location:{pathname:e,search:u,hash:d,state:f,key:p,unstable_mask:m},navigationType:r}},[s,l,u,d,f,p,r,m]);return U(h!=null,`<Router basename="${s}"> is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the <Router> won't render anything.`),h==null?null:C.createElement(lr.Provider,{value:c},C.createElement(ur.Provider,{children:t,value:h}))}C.Component;var li=`get`,ui=`application/x-www-form-urlencoded`;function di(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function fi(e){return di(e)&&e.tagName.toLowerCase()===`button`}function pi(e){return di(e)&&e.tagName.toLowerCase()===`form`}function mi(e){return di(e)&&e.tagName.toLowerCase()===`input`}function hi(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function gi(e,t){return e.button===0&&(!t||t===`_self`)&&!hi(e)}function _i(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function vi(e,t){let n=_i(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var yi=null;function bi(){if(yi===null)try{new FormData(document.createElement(`form`),0),yi=!1}catch{yi=!0}return yi}var xi=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Si(e){return e!=null&&!xi.has(e)?(U(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${ui}"`),null):e}function Ci(e,t){let n,r,i,a,o;if(pi(e)){let o=e.getAttribute(`action`);r=o?Ze(o,t):null,n=e.getAttribute(`method`)||li,i=Si(e.getAttribute(`enctype`))||ui,a=new FormData(e)}else if(fi(e)||mi(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?Ze(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||li,i=Si(e.getAttribute(`formenctype`))||Si(o.getAttribute(`enctype`))||ui,a=new FormData(o,e),!bi()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(di(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=li,r=null,i=ui,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var wi={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},Ti=/[&><\u2028\u2029]/g;function Ei(e){return e.replace(Ti,e=>wi[e])}function Di(e,t){if(e===!1||e==null)throw Error(t)}function Oi(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return n?i.pathname.endsWith(`/`)?i.pathname=`${i.pathname}_.${r}`:i.pathname=`${i.pathname}.${r}`:i.pathname===`/`?i.pathname=`_root.${r}`:t&&Ze(i.pathname,t)===`/`?i.pathname=`${lt(t)}/_root.${r}`:i.pathname=`${lt(i.pathname)}.${r}`,i}async function ki(e,t){if(e.id in t)return t[e.id];try{let n=await ce(()=>import(e.module),[],import.meta.url);return t[e.id]=n,n}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Ai(e){return e!=null&&typeof e.page==`string`}function ji(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function Mi(e,t,n){return Li((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await ki(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(ji).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function Ni(e,t,n,r,i,a){let o=(e,t)=>n[t]?e.route.id!==n[t].route.id:!0,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function Pi(e,t,{includeHydrateFallback:n}={}){return Fi(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function Fi(e){return[...new Set(e)]}function Ii(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Li(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Ai(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Ii(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Ri(){let e=C.useContext(nr);return Di(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function zi(){let e=C.useContext(rr);return Di(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Bi=C.createContext(void 0);Bi.displayName=`FrameworkContext`;function Vi(){let e=C.useContext(Bi);return Di(e,`You must render this element inside a <HydratedRouter> element`),e}function Hi(e,t){let n=C.useContext(Bi),[r,i]=C.useState(!1),[a,o]=C.useState(!1),{onFocus:s,onBlur:c,onMouseEnter:l,onMouseLeave:u,onTouchStart:d}=t,f=C.useRef(null);C.useEffect(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return f.current&&e.observe(f.current),()=>{e.disconnect()}}},[e]),C.useEffect(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let p=()=>{i(!0)},m=()=>{i(!1),o(!1)};return n?e===`intent`?[a,f,{onFocus:Ui(s,p),onBlur:Ui(c,m),onMouseEnter:Ui(l,p),onMouseLeave:Ui(u,m),onTouchStart:Ui(d,p)}]:[a,f,{}]:[!1,f,{}]}function Ui(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Wi({page:e,...t}){let n=ar(),{router:r}=Ri(),i=C.useMemo(()=>Me(r.routes,e,r.basename),[r.routes,e,r.basename]);return i?n?C.createElement(Ki,{page:e,matches:i,...t}):C.createElement(qi,{page:e,matches:i,...t}):null}function Gi(e){let{manifest:t,routeModules:n}=Vi(),[r,i]=C.useState([]);return C.useEffect(()=>{let r=!1;return Mi(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function Ki({page:e,matches:t,...n}){let r=br(),{future:i}=Vi(),{basename:a}=Ri(),o=C.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=Oi(e,a,i.unstable_trailingSlashAwareDataRequests,`rsc`),o=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?o=!0:s.push(e.route.id);return o&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[a,i.unstable_trailingSlashAwareDataRequests,e,r,t]);return C.createElement(C.Fragment,null,o.map(e=>C.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function qi({page:e,matches:t,...n}){let r=br(),{future:i,manifest:a,routeModules:o}=Vi(),{basename:s}=Ri(),{loaderData:c,matches:l}=zi(),u=C.useMemo(()=>Ni(e,t,l,a,r,`data`),[e,t,l,a,r]),d=C.useMemo(()=>Ni(e,t,l,a,r,`assets`),[e,t,l,a,r]),f=C.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,l=!1;if(t.forEach(e=>{let t=a.routes[e.route.id];!t||!t.hasLoader||(!u.some(t=>t.route.id===e.route.id)&&e.route.id in c&&o[e.route.id]?.shouldRevalidate||t.hasClientLoader?l=!0:n.add(e.route.id))}),n.size===0)return[];let d=Oi(e,s,i.unstable_trailingSlashAwareDataRequests,`data`);return l&&n.size>0&&d.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[d.pathname+d.search]},[s,i.unstable_trailingSlashAwareDataRequests,c,r,a,u,t,e,o]),p=C.useMemo(()=>Pi(d,a),[d,a]),m=Gi(d);return C.createElement(C.Fragment,null,f.map(e=>C.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),p.map(e=>C.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),m.map(({key:e,link:t})=>C.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function Ji(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}C.Component;var Yi=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{Yi&&(window.__reactRouterVersion=`7.14.1`)}catch{}function Xi(e,t){return Vt({basename:t?.basename,getContext:t?.getContext,future:t?.future,history:me({window:t?.window}),hydrationData:t?.hydrationData||Zi(),routes:e,mapRouteProperties:ei,hydrationRouteProperties:ti,dataStrategy:t?.dataStrategy,patchRoutesOnNavigation:t?.patchRoutesOnNavigation,window:t?.window,unstable_instrumentations:t?.unstable_instrumentations}).initialize()}function Zi(){let e=window?.__staticRouterHydrationData;return e&&e.errors&&(e={...e,errors:Qi(e.errors)}),e}function Qi(e){if(!e)return null;let t=Object.entries(e),n={};for(let[e,r]of t)if(r&&r.__type===`RouteErrorResponse`)n[e]=new pt(r.status,r.statusText,r.data,r.internal===!0);else if(r&&r.__type===`Error`){if(r.__subType){let t=window[r.__subType];if(typeof t==`function`)try{let i=new t(r.message);i.stack=``,n[e]=i}catch{}}if(n[e]==null){let t=Error(r.message);t.stack=``,n[e]=t}}else n[e]=r;return n}function $i({basename:e,children:t,history:n,unstable_useTransitions:r}){let[i,a]=C.useState({action:n.action,location:n.location}),o=C.useCallback(e=>{r===!1?a(e):C.startTransition(()=>a(e))},[r]);return C.useLayoutEffect(()=>n.listen(o),[n,o]),C.createElement(ci,{basename:e,children:t,location:i.location,navigationType:i.action,navigator:n,unstable_useTransitions:r})}$i.displayName=`unstable_HistoryRouter`;var ea=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,ta=C.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:i,replace:a,unstable_mask:o,state:s,target:c,to:l,preventScrollReset:u,viewTransition:d,unstable_defaultShouldRevalidate:f,...p},m){let{basename:h,navigator:g,unstable_useTransitions:_}=C.useContext(lr),v=typeof l==`string`&&ea.test(l),y=_t(l,h);l=y.to;let b=vr(l,{relative:r}),x=br(),S=null;if(o){let e=ot(o,[],x.unstable_mask?x.unstable_mask.pathname:`/`,!0);h!==`/`&&(e.pathname=e.pathname===`/`?h:ct([h,e.pathname])),S=g.createHref(e)}let[w,T,E]=Hi(n,p),D=ca(l,{replace:a,unstable_mask:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,unstable_defaultShouldRevalidate:f,unstable_useTransitions:_});function O(t){e&&e(t),t.defaultPrevented||D(t)}let k=!(y.isExternal||i),A=C.createElement(`a`,{...p,...E,href:(k?S:void 0)||y.absoluteURL||b,onClick:k?O:e,ref:Ji(m,T),target:c,"data-discover":!v&&t===`render`?`true`:void 0});return w&&!v?C.createElement(C.Fragment,null,A,C.createElement(Wi,{page:b})):A});ta.displayName=`Link`;var na=C.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:i,to:a,viewTransition:o,children:s,...c},l){let u=Or(a,{relative:c.relative}),d=br(),f=C.useContext(rr),{navigator:p,basename:m}=C.useContext(lr),h=f!=null&&ya(u)&&o===!0,g=p.encodeLocation?p.encodeLocation(u).pathname:u.pathname,_=d.pathname,v=f&&f.navigation&&f.navigation.location?f.navigation.location.pathname:null;t||(_=_.toLowerCase(),v=v?v.toLowerCase():null,g=g.toLowerCase()),v&&m&&(v=Ze(v,m)||v);let y=g!==`/`&&g.endsWith(`/`)?g.length-1:g.length,b=_===g||!r&&_.startsWith(g)&&_.charAt(y)===`/`,x=v!=null&&(v===g||!r&&v.startsWith(g)&&v.charAt(g.length)===`/`),S={isActive:b,isPending:x,isTransitioning:h},w=b?e:void 0,T;T=typeof n==`function`?n(S):[n,b?`active`:null,x?`pending`:null,h?`transitioning`:null].filter(Boolean).join(` `);let E=typeof i==`function`?i(S):i;return C.createElement(ta,{...c,"aria-current":w,className:T,ref:l,style:E,to:a,viewTransition:o},typeof s==`function`?s(S):s)});na.displayName=`NavLink`;var ra=C.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=li,action:s,onSubmit:c,relative:l,preventScrollReset:u,viewTransition:d,unstable_defaultShouldRevalidate:f,...p},m)=>{let{unstable_useTransitions:h}=C.useContext(lr),g=fa(),_=pa(s,{relative:l}),v=o.toLowerCase()===`get`?`get`:`post`,y=typeof s==`string`&&ea.test(s);return C.createElement(`form`,{ref:m,method:v,action:_,onSubmit:r?c:e=>{if(c&&c(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,s=r?.getAttribute(`formmethod`)||o,p=()=>g(r||e.currentTarget,{fetcherKey:t,method:s,navigate:n,replace:i,state:a,relative:l,preventScrollReset:u,viewTransition:d,unstable_defaultShouldRevalidate:f});h&&n!==!1?C.startTransition(()=>p()):p()},...p,"data-discover":!y&&e===`render`?`true`:void 0})});ra.displayName=`Form`;function ia({getKey:e,storageKey:t,...n}){let r=C.useContext(Bi),{basename:i}=C.useContext(lr),a=br(),o=Wr();_a({getKey:e,storageKey:t});let s=C.useMemo(()=>{if(!r||!e)return null;let t=ga(a,o,i,e);return t===a.key?null:t},[]);if(!r||r.isSpaMode)return null;let c=((e,t)=>{if(!window.history.state||!window.history.state.key){let e=Math.random().toString(32).slice(2);window.history.replaceState({key:e},``)}try{let n=JSON.parse(sessionStorage.getItem(e)||`{}`)[t||window.history.state.key];typeof n==`number`&&window.scrollTo(0,n)}catch(t){console.error(t),sessionStorage.removeItem(e)}}).toString();return C.createElement(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${c})(${Ei(JSON.stringify(t||ma))}, ${Ei(JSON.stringify(s))})`}})}ia.displayName=`ScrollRestoration`;function aa(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function oa(e){let t=C.useContext(nr);return he(t,aa(e)),t}function sa(e){let t=C.useContext(rr);return he(t,aa(e)),t}function ca(e,{target:t,replace:n,unstable_mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,unstable_defaultShouldRevalidate:c,unstable_useTransitions:l}={}){let u=Cr(),d=br(),f=Or(e,{relative:o});return C.useCallback(p=>{if(gi(p,t)){p.preventDefault();let t=n===void 0?ye(d)===ye(f):n,m=()=>u(e,{replace:t,unstable_mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,unstable_defaultShouldRevalidate:c});l?C.startTransition(()=>m()):m()}},[d,u,f,n,r,i,t,e,a,o,s,c,l])}function la(e){U(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=C.useRef(_i(e)),n=C.useRef(!1),r=br(),i=C.useMemo(()=>vi(r.search,n.current?null:t.current),[r.search]),a=Cr();return[i,C.useCallback((e,t)=>{let r=_i(typeof e==`function`?e(new URLSearchParams(i)):e);n.current=!0,a(`?`+r,t)},[a,i])]}var ua=0,da=()=>`__${String(++ua)}__`;function fa(){let{router:e}=oa(`useSubmit`),{basename:t}=C.useContext(lr),n=Hr(),r=e.fetch,i=e.navigate;return C.useCallback(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=Ci(e,t);a.navigate===!1?await r(a.fetcherKey||da(),n,a.action||o,{unstable_defaultShouldRevalidate:a.unstable_defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,flushSync:a.flushSync}):await i(a.action||o,{unstable_defaultShouldRevalidate:a.unstable_defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,replace:a.replace,state:a.state,fromRouteId:n,flushSync:a.flushSync,viewTransition:a.viewTransition})},[r,i,t,n])}function pa(e,{relative:t}={}){let{basename:n}=C.useContext(lr),r=C.useContext(dr);he(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...Or(e||`.`,{relative:t})},o=br();if(e==null){a.search=o.search;let e=new URLSearchParams(a.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();a.search=n?`?${n}`:``}}return(!e||e===`.`)&&i.route.index&&(a.search=a.search?a.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(a.pathname=a.pathname===`/`?n:ct([n,a.pathname])),ye(a)}var ma=`react-router-scroll-positions`,ha={};function ga(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:Ze(e.pathname,n)||e.pathname},t)),i??=e.key,i}function _a({getKey:e,storageKey:t}={}){let{router:n}=oa(`useScrollRestoration`),{restoreScrollPosition:r,preventScrollReset:i}=sa(`useScrollRestoration`),{basename:a}=C.useContext(lr),o=br(),s=Wr(),c=Ur();C.useEffect(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),va(C.useCallback(()=>{if(c.state===`idle`){let t=ga(o,s,a,e);ha[t]=window.scrollY}try{sessionStorage.setItem(t||ma,JSON.stringify(ha))}catch(e){U(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[c.state,e,a,o,s,t])),typeof document<`u`&&(C.useLayoutEffect(()=>{try{let e=sessionStorage.getItem(t||ma);e&&(ha=JSON.parse(e))}catch{}},[t]),C.useLayoutEffect(()=>{let t=n?.enableScrollRestoration(ha,()=>window.scrollY,e?(t,n)=>ga(t,n,a,e):void 0);return()=>t&&t()},[n,a,e]),C.useLayoutEffect(()=>{if(r!==!1){if(typeof r==`number`){window.scrollTo(0,r);return}try{if(o.hash){let e=document.getElementById(decodeURIComponent(o.hash.slice(1)));if(e){e.scrollIntoView();return}}}catch{U(!1,`"${o.hash.slice(1)}" is not a decodable element ID. The view will not scroll to it.`)}i!==!0&&window.scrollTo(0,0)}},[o,r,i]))}function va(e,t){let{capture:n}=t||{};C.useEffect(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function ya(e,{relative:t}={}){let n=C.useContext(or);he(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=oa(`useViewTransitionState`),i=Or(e,{relative:t});if(!n.isTransitioning)return!1;let a=Ze(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=Ze(n.nextLocation.pathname,r)||n.nextLocation.pathname;return Je(i.pathname,o)!=null||Je(i.pathname,a)!=null}var ba=u(_(),1);function xa(e){return C.createElement(ri,{flushSync:ba.flushSync,...e})}var Sa=e=>typeof e==`string`,Ca=()=>{let e,t,n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n},wa=e=>e==null?``:String(e),Ta=(e,t,n)=>{e.forEach(e=>{t[e]&&(n[e]=t[e])})},Ea=/###/g,Da=e=>e&&e.includes(`###`)?e.replace(Ea,`.`):e,Oa=e=>!e||Sa(e),ka=(e,t,n)=>{let r=Sa(t)?t.split(`.`):t,i=0;for(;i<r.length-1;){if(Oa(e))return{};let t=Da(r[i]);!e[t]&&n&&(e[t]=new n),e=Object.prototype.hasOwnProperty.call(e,t)?e[t]:{},++i}return Oa(e)?{}:{obj:e,k:Da(r[i])}},Aa=(e,t,n)=>{let{obj:r,k:i}=ka(e,t,Object);if(r!==void 0||t.length===1){r[i]=n;return}let a=t[t.length-1],o=t.slice(0,t.length-1),s=ka(e,o,Object);for(;s.obj===void 0&&o.length;)a=`${o[o.length-1]}.${a}`,o=o.slice(0,o.length-1),s=ka(e,o,Object),s?.obj&&s.obj[`${s.k}.${a}`]!==void 0&&(s.obj=void 0);s.obj[`${s.k}.${a}`]=n},ja=(e,t,n,r)=>{let{obj:i,k:a}=ka(e,t,Object);i[a]=i[a]||[],i[a].push(n)},Ma=(e,t)=>{let{obj:n,k:r}=ka(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},Na=(e,t,n)=>{let r=Ma(e,n);return r===void 0?Ma(t,n):r},Pa=(e,t,n)=>{for(let r in t)r!==`__proto__`&&r!==`constructor`&&(r in e?Sa(e[r])||e[r]instanceof String||Sa(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):Pa(e[r],t[r],n):e[r]=t[r]);return e},Fa=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,`\\$&`),Ia={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`,"/":`&#x2F;`},La=e=>Sa(e)?e.replace(/[&<>"'\/]/g,e=>Ia[e]):e,Ra=class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){let t=this.regExpMap.get(e);if(t!==void 0)return t;let n=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,n),this.regExpQueue.push(e),n}},za=[` `,`,`,`?`,`!`,`;`],Ba=new Ra(20),Va=(e,t,n)=>{t||=``,n||=``;let r=za.filter(e=>!t.includes(e)&&!n.includes(e));if(r.length===0)return!0;let i=Ba.getRegExp(`(${r.map(e=>e===`?`?`\\?`:e).join(`|`)})`),a=!i.test(e);if(!a){let t=e.indexOf(n);t>0&&!i.test(e.substring(0,t))&&(a=!0)}return a},Ha=(e,t,n=`.`)=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let r=t.split(n),i=e;for(let e=0;e<r.length;){if(!i||typeof i!=`object`)return;let t,a=``;for(let o=e;o<r.length;++o)if(o!==e&&(a+=n),a+=r[o],t=i[a],t!==void 0){if([`string`,`number`,`boolean`].includes(typeof t)&&o<r.length-1)continue;e+=o-e+1;break}i=t}return i},Ua=e=>e?.replace(/_/g,`-`),Wa={type:`logger`,log(e){this.output(`log`,e)},warn(e){this.output(`warn`,e)},error(e){this.output(`error`,e)},output(e,t){console?.[e]?.apply?.(console,t)}},Ga=new class e{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||`i18next:`,this.logger=e||Wa,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,`log`,``,!0)}warn(...e){return this.forward(e,`warn`,``,!0)}error(...e){return this.forward(e,`error`,``)}deprecate(...e){return this.forward(e,`warn`,`WARNING DEPRECATED: `,!0)}forward(e,t,n,r){return r&&!this.debug?null:(e=e.map(e=>Sa(e)?e.replace(/[\r\n\x00-\x1F\x7F]/g,` `):e),Sa(e[0])&&(e[0]=`${n}${this.prefix} ${e[0]}`),this.logger[t](e))}create(t){return new e(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t||=this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},Ka=class{constructor(){this.observers={}}on(e,t){return e.split(` `).forEach(e=>{this.observers[e]||(this.observers[e]=new Map);let n=this.observers[e].get(t)||0;this.observers[e].set(t,n+1)}),this}off(e,t){if(this.observers[e]){if(!t){delete this.observers[e];return}this.observers[e].delete(t)}}once(e,t){let n=(...r)=>{t(...r),this.off(e,n)};return this.on(e,n),this}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,n])=>{for(let r=0;r<n;r++)e(...t)}),this.observers[`*`]&&Array.from(this.observers[`*`].entries()).forEach(([n,r])=>{for(let i=0;i<r;i++)n(e,...t)})}},qa=class extends Ka{constructor(e,t={ns:[`translation`],defaultNS:`translation`}){super(),this.data=e||{},this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.includes(e)||this.options.ns.push(e)}removeNamespaces(e){let t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}getResource(e,t,n,r={}){let i=r.keySeparator===void 0?this.options.keySeparator:r.keySeparator,a=r.ignoreJSONStructure===void 0?this.options.ignoreJSONStructure:r.ignoreJSONStructure,o;e.includes(`.`)?o=e.split(`.`):(o=[e,t],n&&(Array.isArray(n)?o.push(...n):Sa(n)&&i?o.push(...n.split(i)):o.push(n)));let s=Ma(this.data,o);return!s&&!t&&!n&&e.includes(`.`)&&(e=o[0],t=o[1],n=o.slice(2).join(`.`)),s||!a||!Sa(n)?s:Ha(this.data?.[e]?.[t],n,i)}addResource(e,t,n,r,i={silent:!1}){let a=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,o=[e,t];n&&(o=o.concat(a?n.split(a):n)),e.includes(`.`)&&(o=e.split(`.`),r=t,t=o[1]),this.addNamespaces(t),Aa(this.data,o,r),i.silent||this.emit(`added`,e,t,n,r)}addResources(e,t,n,r={silent:!1}){for(let r in n)(Sa(n[r])||Array.isArray(n[r]))&&this.addResource(e,t,r,n[r],{silent:!0});r.silent||this.emit(`added`,e,t,n)}addResourceBundle(e,t,n,r,i,a={silent:!1,skipCopy:!1}){let o=[e,t];e.includes(`.`)&&(o=e.split(`.`),r=n,n=t,t=o[1]),this.addNamespaces(t);let s=Ma(this.data,o)||{};a.skipCopy||(n=JSON.parse(JSON.stringify(n))),r?Pa(s,n,i):s={...s,...n},Aa(this.data,o,s),a.silent||this.emit(`added`,e,t,n)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit(`removed`,e,t)}hasResourceBundle(e,t){return this.getResource(e,t)!==void 0}getResourceBundle(e,t){return t||=this.options.defaultNS,this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){let t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}},Ja={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(e=>{t=this.processors[e]?.process(t,n,r,i)??t}),t}},Ya=Symbol(`i18next/PATH_KEY`);function Xa(){let e=[],t=Object.create(null),n;return t.get=(r,i)=>(n?.revoke?.(),i===Ya?e:(e.push(i),n=Proxy.revocable(r,t),n.proxy)),Proxy.revocable(Object.create(null),t).proxy}function Za(e,t){let{[Ya]:n}=e(Xa()),r=t?.keySeparator??`.`,i=t?.nsSeparator??`:`;if(n.length>1&&i){let e=t?.ns,a=Array.isArray(e)?e:null;if(a&&a.length>1&&a.slice(1).includes(n[0]))return`${n[0]}${i}${n.slice(1).join(r)}`}return n.join(r)}var Qa=e=>!Sa(e)&&typeof e!=`boolean`&&typeof e!=`number`,$a=class e extends Ka{constructor(e,t={}){super(),Ta([`resourceStore`,`languageUtils`,`pluralResolver`,`interpolator`,`backendConnector`,`i18nFormat`,`utils`],e,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.logger=Ga.create(`translator`),this.checkedLoadedFor={}}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){let n={...t};if(e==null)return!1;let r=this.resolve(e,n);if(r?.res===void 0)return!1;let i=Qa(r.res);return!(n.returnObjects===!1&&i)}extractFromKey(e,t){let n=t.nsSeparator===void 0?this.options.nsSeparator:t.nsSeparator;n===void 0&&(n=`:`);let r=t.keySeparator===void 0?this.options.keySeparator:t.keySeparator,i=t.ns||this.options.defaultNS||[],a=n&&e.includes(n),o=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!Va(e,n,r);if(a&&!o){let t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:Sa(i)?[i]:i};let a=e.split(n);(n!==r||n===r&&this.options.ns.includes(a[0]))&&(i=a.shift()),e=a.join(r)}return{key:e,namespaces:Sa(i)?[i]:i}}translate(t,n,r){let i=typeof n==`object`?{...n}:n;if(typeof i!=`object`&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i==`object`&&(i={...i}),i||={},t==null)return``;typeof t==`function`&&(t=Za(t,{...this.options,...i})),Array.isArray(t)||(t=[String(t)]),t=t.map(e=>typeof e==`function`?Za(e,{...this.options,...i}):String(e));let a=i.returnDetails===void 0?this.options.returnDetails:i.returnDetails,o=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,{key:s,namespaces:c}=this.extractFromKey(t[t.length-1],i),l=c[c.length-1],u=i.nsSeparator===void 0?this.options.nsSeparator:i.nsSeparator;u===void 0&&(u=`:`);let d=i.lng||this.language,f=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d?.toLowerCase()===`cimode`)return f?a?{res:`${l}${u}${s}`,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${u}${s}`:a?{res:s,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:s;let p=this.resolve(t,i),m=p?.res,h=p?.usedKey||s,g=p?.exactUsedKey||s,_=[`[object Number]`,`[object Function]`,`[object RegExp]`],v=i.joinArrays===void 0?this.options.joinArrays:i.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b=i.count!==void 0&&!Sa(i.count),x=e.hasDefaultValue(i),S=b?this.pluralResolver.getSuffix(d,i.count,i):``,C=i.ordinal&&b?this.pluralResolver.getSuffix(d,i.count,{ordinal:!1}):``,w=b&&!i.ordinal&&i.count===0,T=w&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${S}`]||i[`defaultValue${C}`]||i.defaultValue,E=m;y&&!m&&x&&(E=T);let D=Qa(E),O=Object.prototype.toString.apply(E);if(y&&E&&D&&!_.includes(O)&&!(Sa(v)&&Array.isArray(E))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn(`accessing an object - but returnObjects options is not enabled!`);let e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,E,{...i,ns:c}):`key '${s} (${this.language})' returned an object instead of string.`;return a?(p.res=e,p.usedParams=this.getUsedParamsDetails(i),p):e}if(o){let e=Array.isArray(E),t=e?[]:{},n=e?g:h;for(let e in E)if(Object.prototype.hasOwnProperty.call(E,e)){let r=`${n}${o}${e}`;x&&!m?t[e]=this.translate(r,{...i,defaultValue:Qa(T)?T[e]:void 0,joinArrays:!1,ns:c}):t[e]=this.translate(r,{...i,joinArrays:!1,ns:c}),t[e]===r&&(t[e]=E[e])}m=t}}else if(y&&Sa(v)&&Array.isArray(m))m=m.join(v),m&&=this.extendTranslation(m,t,i,r);else{let e=!1,n=!1;!this.isValidLookup(m)&&x&&(e=!0,m=T),this.isValidLookup(m)||(n=!0,m=s);let a=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:m,c=x&&T!==m&&this.options.updateMissing;if(n||e||c){if(this.logger.log(c?`updateKey`:`missingKey`,d,l,s,c?T:m),o){let e=this.resolve(s,{...i,keySeparator:!1});e&&e.res&&this.logger.warn(`Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.`)}let e=[],t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo===`fallback`&&t&&t[0])for(let n=0;n<t.length;n++)e.push(t[n]);else this.options.saveMissingTo===`all`?e=this.languageUtils.toResolveHierarchy(i.lng||this.language):e.push(i.lng||this.language);let n=(e,t,n)=>{let r=x&&n!==m?n:a;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,r,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,r,c,i),this.emit(`missingKey`,e,l,t,m)};this.options.saveMissing&&(this.options.saveMissingPlurals&&b?e.forEach(e=>{let t=this.pluralResolver.getSuffixes(e,i);w&&i[`defaultValue${this.options.pluralSeparator}zero`]&&!t.includes(`${this.options.pluralSeparator}zero`)&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{n([e],s+t,i[`defaultValue${t}`]||T)})}):n(e,s,T))}m=this.extendTranslation(m,t,i,p,r),n&&m===s&&this.options.appendNamespaceToMissingKey&&(m=`${l}${u}${s}`),(n||e)&&this.options.parseMissingKeyHandler&&(m=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${u}${s}`:s,e?m:void 0,i))}return a?(p.res=m,p.usedParams=this.getUsedParamsDetails(i),p):m}extendTranslation(e,t,n,r,i){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});let a=Sa(e)&&(n?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:n.interpolation.skipOnVariables),o;if(a){let t=e.match(this.interpolator.nestingRegexp);o=t&&t.length}let s=n.replace&&!Sa(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),e=this.interpolator.interpolate(e,s,n.lng||this.language||r.usedLng,n),a){let t=e.match(this.interpolator.nestingRegexp),r=t&&t.length;o<r&&(n.nest=!1)}!n.lng&&r&&r.res&&(n.lng=this.language||r.usedLng),n.nest!==!1&&(e=this.interpolator.nest(e,(...e)=>i?.[0]===e[0]&&!n.context?(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null):this.translate(...e,t),n)),n.interpolation&&this.interpolator.reset()}let a=n.postProcess||this.options.postProcess,o=Sa(a)?[a]:a;return e!=null&&o?.length&&n.applyPostProcessor!==!1&&(e=Ja.handle(o,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),e}resolve(e,t={}){let n,r,i,a,o;return Sa(e)&&(e=[e]),Array.isArray(e)&&(e=e.map(e=>typeof e==`function`?Za(e,{...this.options,...t}):e)),e.forEach(e=>{if(this.isValidLookup(n))return;let s=this.extractFromKey(e,t),c=s.key;r=c;let l=s.namespaces;this.options.fallbackNS&&(l=l.concat(this.options.fallbackNS));let u=t.count!==void 0&&!Sa(t.count),d=u&&!t.ordinal&&t.count===0,f=t.context!==void 0&&(Sa(t.context)||typeof t.context==`number`)&&t.context!==``,p=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);l.forEach(e=>{this.isValidLookup(n)||(o=e,!this.checkedLoadedFor[`${p[0]}-${e}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(o)&&(this.checkedLoadedFor[`${p[0]}-${e}`]=!0,this.logger.warn(`key "${r}" for languages "${p.join(`, `)}" won't get resolved as namespace "${o}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`)),p.forEach(r=>{if(this.isValidLookup(n))return;a=r;let o=[c];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(o,c,r,e,t);else{let e;u&&(e=this.pluralResolver.getSuffix(r,t.count,t));let n=`${this.options.pluralSeparator}zero`,i=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(u&&(t.ordinal&&e.startsWith(i)&&o.push(c+e.replace(i,this.options.pluralSeparator)),o.push(c+e),d&&o.push(c+n)),f){let r=`${c}${this.options.contextSeparator||`_`}${t.context}`;o.push(r),u&&(t.ordinal&&e.startsWith(i)&&o.push(r+e.replace(i,this.options.pluralSeparator)),o.push(r+e),d&&o.push(r+n))}}let s;for(;s=o.pop();)this.isValidLookup(n)||(i=s,n=this.getResource(r,e,s,t))}))})}),{res:n,usedKey:r,exactUsedKey:i,usedLng:a,usedNS:o}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e===``)}getResource(e,t,n,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)}getUsedParamsDetails(e={}){let t=[`defaultValue`,`ordinal`,`context`,`replace`,`lng`,`lngs`,`fallbackLng`,`ns`,`keySeparator`,`nsSeparator`,`returnObjects`,`returnDetails`,`joinArrays`,`postProcess`,`interpolation`],n=e.replace&&!Sa(e.replace),r=n?e.replace:e;if(n&&e.count!==void 0&&(r.count=e.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!n){r={...r};for(let e of t)delete r[e]}return r}static hasDefaultValue(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&t.startsWith(`defaultValue`)&&e[t]!==void 0)return!0;return!1}},eo=class{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Ga.create(`languageUtils`)}getScriptPartFromCode(e){if(e=Ua(e),!e||!e.includes(`-`))return null;let t=e.split(`-`);return t.length===2||(t.pop(),t[t.length-1].toLowerCase()===`x`)?null:this.formatLanguageCode(t.join(`-`))}getLanguagePartFromCode(e){if(e=Ua(e),!e||!e.includes(`-`))return e;let t=e.split(`-`);return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(Sa(e)&&e.includes(`-`)){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch{}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load===`languageOnly`||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(e)}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;let n=this.formatLanguageCode(e);(!this.options.supportedLngs||this.isSupportedCode(n))&&(t=n)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;let n=this.getScriptPartFromCode(e);if(this.isSupportedCode(n))return t=n;let r=this.getLanguagePartFromCode(e);if(this.isSupportedCode(r))return t=r;t=this.options.supportedLngs.find(e=>e===r?!0:!e.includes(`-`)&&!r.includes(`-`)?!1:!!(e.includes(`-`)&&!r.includes(`-`)&&e.slice(0,e.indexOf(`-`))===r||e.startsWith(r)&&r.length>1))}),t||=this.getFallbackCodes(this.options.fallbackLng)[0],t}getFallbackCodes(e,t){if(!e)return[];if(typeof e==`function`&&(e=e(t)),Sa(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let n=e[t];return n||=e[this.getScriptPartFromCode(t)],n||=e[this.formatLanguageCode(t)],n||=e[this.getLanguagePartFromCode(t)],n||=e.default,n||[]}toResolveHierarchy(e,t){let n=this.getFallbackCodes((t===!1?[]:t)||this.options.fallbackLng||[],e),r=[],i=e=>{e&&(this.isSupportedCode(e)?r.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return Sa(e)&&(e.includes(`-`)||e.includes(`_`))?(this.options.load!==`languageOnly`&&i(this.formatLanguageCode(e)),this.options.load!==`languageOnly`&&this.options.load!==`currentOnly`&&i(this.getScriptPartFromCode(e)),this.options.load!==`currentOnly`&&i(this.getLanguagePartFromCode(e))):Sa(e)&&i(this.formatLanguageCode(e)),n.forEach(e=>{r.includes(e)||i(this.formatLanguageCode(e))}),r}},to={zero:0,one:1,two:2,few:3,many:4,other:5},no={select:e=>e===1?`one`:`other`,resolvedOptions:()=>({pluralCategories:[`one`,`other`]})},ro=class{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=Ga.create(`pluralResolver`),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){let n=Ua(e===`dev`?`en`:e),r=t.ordinal?`ordinal`:`cardinal`,i=JSON.stringify({cleanedCode:n,type:r});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let a;try{a=new Intl.PluralRules(n,{type:r})}catch{if(typeof Intl>`u`)return this.logger.error(`No Intl support, please use an Intl polyfill!`),no;if(!e.match(/-|_/))return no;let n=this.languageUtils.getLanguagePartFromCode(e);a=this.getRule(n,t)}return this.pluralRulesCache[i]=a,a}needsPlural(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,n={}){return this.getSuffixes(e,n).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?n.resolvedOptions().pluralCategories.sort((e,t)=>to[e]-to[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:``}${e}`):[]}getSuffix(e,t,n={}){let r=this.getRule(e,n);return r?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:``}${r.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix(`dev`,t,n))}},io=(e,t,n,r=`.`,i=!0)=>{let a=Na(e,t,n);return!a&&i&&Sa(n)&&(a=Ha(e,n,r),a===void 0&&(a=Ha(t,n,r))),a},ao=e=>e.replace(/\$/g,`$$$$`),oo=class{constructor(e={}){this.logger=Ga.create(`interpolator`),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||={escapeValue:!0};let{escape:t,escapeValue:n,useRawValueToEscape:r,prefix:i,prefixEscaped:a,suffix:o,suffixEscaped:s,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:d,nestingPrefixEscaped:f,nestingSuffix:p,nestingSuffixEscaped:m,nestingOptionsSeparator:h,maxReplaces:g,alwaysFormat:_}=e.interpolation;this.escape=t===void 0?La:t,this.escapeValue=n===void 0?!0:n,this.useRawValueToEscape=r===void 0?!1:r,this.prefix=i?Fa(i):a||`{{`,this.suffix=o?Fa(o):s||`}}`,this.formatSeparator=c||`,`,this.unescapePrefix=l?``:u?Fa(u):`-`,this.unescapeSuffix=this.unescapePrefix?``:l?Fa(l):``,this.nestingPrefix=d?Fa(d):f||Fa(`$t(`),this.nestingSuffix=p?Fa(p):m||Fa(`)`),this.nestingOptionsSeparator=h||`,`,this.maxReplaces=g||1e3,this.alwaysFormat=_===void 0?!1:_,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,`g`);this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,n,r){let i,a,o,s=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=e=>{if(!e.includes(this.formatSeparator)){let i=io(t,s,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(i,void 0,n,{...r,...t,interpolationkey:e}):i}let i=e.split(this.formatSeparator),a=i.shift().trim(),o=i.join(this.formatSeparator).trim();return this.format(io(t,s,a,this.options.keySeparator,this.options.ignoreJSONStructure),o,n,{...r,...t,interpolationkey:a})};this.resetRegExp(),!this.escapeValue&&typeof e==`string`&&/\$t\([^)]*\{[^}]*\{\{/.test(e)&&this.logger.warn(`nesting options string contains interpolated variables with escapeValue: false — if any of those values are attacker-controlled they can inject additional nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing it to t(), or keep escapeValue: true.`);let l=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,u=r?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:r.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>ao(e)},{regex:this.regexp,safeValue:e=>this.escapeValue?ao(this.escape(e)):ao(e)}].forEach(t=>{for(o=0;i=t.regex.exec(e);){let n=i[1].trim();if(a=c(n),a===void 0)if(typeof l==`function`){let t=l(e,i,r);a=Sa(t)?t:``}else if(r&&Object.prototype.hasOwnProperty.call(r,n))a=``;else if(u){a=i[0];continue}else this.logger.warn(`missed to pass in variable ${n} for interpolating ${e}`),a=``;else !Sa(a)&&!this.useRawValueToEscape&&(a=wa(a));let s=t.safeValue(a);if(e=e.replace(i[0],s),u?(t.regex.lastIndex+=a.length,t.regex.lastIndex-=i[0].length):t.regex.lastIndex=0,o++,o>=this.maxReplaces)break}}),e}nest(e,t,n={}){let r,i,a,o=(e,t)=>{let n=this.nestingOptionsSeparator;if(!e.includes(n))return e;let r=e.split(RegExp(`${Fa(n)}[ ]*{`)),i=`{${r[1]}`;e=r[0],i=this.interpolate(i,a);let o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||(s?.length??0)%2!=0)&&(i=i.replace(/'/g,`"`));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${n}${i}`}return a.defaultValue&&a.defaultValue.includes(this.prefix)&&delete a.defaultValue,e};for(;r=this.nestingRegexp.exec(e);){let s=[];a={...n},a=a.replace&&!Sa(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;let c=/{.*}/.test(r[1])?r[1].lastIndexOf(`}`)+1:r[1].indexOf(this.formatSeparator);if(c!==-1&&(s=r[1].slice(c).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),r[1]=r[1].slice(0,c)),i=t(o.call(this,r[1].trim(),a),a),i&&r[0]===e&&!Sa(i))return i;Sa(i)||(i=wa(i)),i||=(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),``),s.length&&(i=s.reduce((e,t)=>this.format(e,t,n.lng,{...n,interpolationkey:r[1].trim()}),i.trim())),e=e.replace(r[0],i),this.regexp.lastIndex=0}return e}},so=e=>{let t=e.toLowerCase().trim(),n={};if(e.includes(`(`)){let r=e.split(`(`);t=r[0].toLowerCase().trim();let i=r[1].slice(0,-1);t===`currency`&&!i.includes(`:`)?n.currency||=i.trim():t===`relativetime`&&!i.includes(`:`)?n.range||=i.trim():i.split(`;`).forEach(e=>{if(e){let[t,...r]=e.split(`:`),i=r.join(`:`).trim().replace(/^'+|'+$/g,``),a=t.trim();n[a]||(n[a]=i),i===`false`&&(n[a]=!1),i===`true`&&(n[a]=!0),isNaN(i)||(n[a]=parseInt(i,10))}})}return{formatName:t,formatOptions:n}},co=e=>{let t={};return(n,r,i)=>{let a=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(a={...a,[i.interpolationkey]:void 0});let o=r+JSON.stringify(a),s=t[o];return s||(s=e(Ua(r),i),t[o]=s),s(n)}},lo=e=>(t,n,r)=>e(Ua(n),r)(t),uo=class{constructor(e={}){this.logger=Ga.create(`formatter`),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||`,`;let n=t.cacheInBuiltFormats?co:lo;this.formats={number:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t});return e=>n.format(e)}),currency:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t,style:`currency`});return e=>n.format(e)}),datetime:n((e,t)=>{let n=new Intl.DateTimeFormat(e,{...t});return e=>n.format(e)}),relativetime:n((e,t)=>{let n=new Intl.RelativeTimeFormat(e,{...t});return e=>n.format(e,t.range||`day`)}),list:n((e,t)=>{let n=new Intl.ListFormat(e,{...t});return e=>n.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=co(t)}format(e,t,n,r={}){if(!t||e==null)return e;let i=t.split(this.formatSeparator);if(i.length>1&&i[0].indexOf(`(`)>1&&!i[0].includes(`)`)&&i.find(e=>e.includes(`)`))){let e=i.findIndex(e=>e.includes(`)`));i[0]=[i[0],...i.splice(1,e)].join(this.formatSeparator)}return i.reduce((e,t)=>{let{formatName:i,formatOptions:a}=so(t);if(this.formats[i]){let t=e;try{let o=r?.formatParams?.[r.interpolationkey]||{},s=o.locale||o.lng||r.locale||r.lng||n;t=this.formats[i](e,s,{...a,...r,...o})}catch(e){this.logger.warn(e)}return t}else this.logger.warn(`there was no format function for ${i}`);return e},e)}},fo=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},po=class extends Ka{constructor(e,t,n,r={}){super(),this.backend=e,this.store=t,this.services=n,this.languageUtils=n.languageUtils,this.options=r,this.logger=Ga.create(`backendConnector`),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(n,r.backend,r)}queueLoad(e,t,n,r){let i={},a={},o={},s={};return e.forEach(e=>{let r=!0;t.forEach(t=>{let o=`${e}|${t}`;!n.reload&&this.store.hasResourceBundle(e,t)?this.state[o]=2:this.state[o]<0||(this.state[o]===1?a[o]===void 0&&(a[o]=!0):(this.state[o]=1,r=!1,a[o]===void 0&&(a[o]=!0),i[o]===void 0&&(i[o]=!0),s[t]===void 0&&(s[t]=!0)))}),r||(o[e]=!0)}),(Object.keys(i).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(i),pending:Object.keys(a),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(s)}}loaded(e,t,n){let r=e.split(`|`),i=r[0],a=r[1];t&&this.emit(`failedLoading`,i,a,t),!t&&n&&this.store.addResourceBundle(i,a,n,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&n&&(this.state[e]=0);let o={};this.queue.forEach(n=>{ja(n.loaded,[i],a),fo(n,e),t&&n.errors.push(t),n.pendingCount===0&&!n.done&&(Object.keys(n.loaded).forEach(e=>{o[e]||(o[e]={});let t=n.loaded[e];t.length&&t.forEach(t=>{o[e][t]===void 0&&(o[e][t]=!0)})}),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())}),this.emit(`loaded`,o),this.queue=this.queue.filter(e=>!e.done)}read(e,t,n,r=0,i=this.retryTimeout,a){if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:t,fcName:n,tried:r,wait:i,callback:a});return}this.readingCalls++;let o=(o,s)=>{if(this.readingCalls--,this.waitingReads.length>0){let e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}if(o&&s&&r<this.maxRetries){setTimeout(()=>{this.read(e,t,n,r+1,i*2,a)},i);return}a(o,s)},s=this.backend[n].bind(this.backend);if(s.length===2){try{let n=s(e,t);n&&typeof n.then==`function`?n.then(e=>o(null,e)).catch(o):o(null,n)}catch(e){o(e)}return}return s(e,t,o)}prepareLoading(e,t,n={},r){if(!this.backend)return this.logger.warn(`No backend was added via i18next.use. Will not load resources.`),r&&r();Sa(e)&&(e=this.languageUtils.toResolveHierarchy(e)),Sa(t)&&(t=[t]);let i=this.queueLoad(e,t,n,r);if(!i.toLoad.length)return i.pending.length||r(),null;i.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,n){this.prepareLoading(e,t,{},n)}reload(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}loadOne(e,t=``){let n=e.split(`|`),r=n[0],i=n[1];this.read(r,i,`read`,void 0,void 0,(n,a)=>{n&&this.logger.warn(`${t}loading namespace ${i} for language ${r} failed`,n),!n&&a&&this.logger.log(`${t}loaded namespace ${i} for language ${r}`,a),this.loaded(e,n,a)})}saveMissing(e,t,n,r,i,a={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(t)){this.logger.warn(`did not save key "${n}" as the namespace "${t}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`);return}if(!(n==null||n===``)){if(this.backend?.create){let s={...a,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=c.length===5?c(e,t,n,r,s):c(e,t,n,r),i&&typeof i.then==`function`?i.then(e=>o(null,e)).catch(o):o(null,i)}catch(e){o(e)}else c(e,t,n,r,o,s)}!e||!e[0]||this.store.addResource(e[0],t,n,r)}}},mo=()=>({debug:!1,initAsync:!0,ns:[`translation`],defaultNS:[`translation`],fallbackLng:[`dev`],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:`all`,preload:!1,keySeparator:`.`,nsSeparator:`:`,pluralSeparator:`_`,contextSeparator:`_`,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:`fallback`,saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]==`object`&&(t=e[1]),Sa(e[1])&&(t.defaultValue=e[1]),Sa(e[2])&&(t.tDescription=e[2]),typeof e[2]==`object`||typeof e[3]==`object`){let n=e[3]||e[2];Object.keys(n).forEach(e=>{t[e]=n[e]})}return t},interpolation:{escapeValue:!0,prefix:`{{`,suffix:`}}`,formatSeparator:`,`,unescapePrefix:`-`,nestingPrefix:`$t(`,nestingSuffix:`)`,nestingOptionsSeparator:`,`,maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),ho=e=>(Sa(e.ns)&&(e.ns=[e.ns]),Sa(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),Sa(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes(`cimode`)&&(e.supportedLngs=e.supportedLngs.concat([`cimode`])),e),go=()=>{},_o=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(t=>{typeof e[t]==`function`&&(e[t]=e[t].bind(e))})},vo=class e extends Ka{constructor(e={},t){if(super(),this.options=ho(e),this.services={},this.logger=Ga,this.modules={external:[]},_o(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,typeof e==`function`&&(t=e,e={}),e.defaultNS==null&&e.ns&&(Sa(e.ns)?e.defaultNS=e.ns:e.ns.includes(`translation`)||(e.defaultNS=e.ns[0]));let n=mo();this.options={...n,...this.options,...ho(e)},this.options.interpolation={...n.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator),typeof this.options.overloadTranslationOptionHandler!=`function`&&(this.options.overloadTranslationOptionHandler=n.overloadTranslationOptionHandler);let r=e=>e?typeof e==`function`?new e:e:null;if(!this.options.isClone){this.modules.logger?Ga.init(r(this.modules.logger),this.options):Ga.init(null,this.options);let e;e=this.modules.formatter?this.modules.formatter:uo;let t=new eo(this.options);this.store=new qa(this.options.resources,this.options);let n=this.services;n.logger=Ga,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new ro(t,{prepend:this.options.pluralSeparator}),e&&(n.formatter=r(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new oo(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new po(r(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=r(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=r(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new $a(this.services,this.options),this.translator.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||=go,this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&e[0]!==`dev`&&(this.options.lng=e[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn(`init: no languageDetector is used and no lng is defined`),[`getResource`,`hasResourceBundle`,`getResourceBundle`,`getDataByLanguage`].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),[`addResource`,`addResources`,`addResourceBundle`,`removeResourceBundle`].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});let i=Ca(),a=()=>{let e=(e,n)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn(`init: i18next is already initialized. You should call init just once!`),this.isInitialized=!0,this.options.isClone||this.logger.log(`initialized`,this.options),this.emit(`initialized`,this.options),i.resolve(n),t(e,n)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),i}loadResources(e,t=go){let n=t,r=Sa(e)?e:this.language;if(typeof e==`function`&&(n=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()===`cimode`&&(!this.options.preload||this.options.preload.length===0))return n();let e=[],t=t=>{t&&t!==`cimode`&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{t!==`cimode`&&(e.includes(t)||e.push(t))})};r?t(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{!e&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),n(e)})}else n(null)}reloadResources(e,t,n){let r=Ca();return typeof e==`function`&&(n=e,e=void 0),typeof t==`function`&&(n=t,t=void 0),e||=this.languages,t||=this.options.ns,n||=go,this.services.backendConnector.reload(e,t,e=>{r.resolve(),n(e)}),r}use(e){if(!e)throw Error(`You are passing an undefined module! Please check the object you are passing to i18next.use()`);if(!e.type)throw Error(`You are passing a wrong module! Please check the object you are passing to i18next.use()`);return e.type===`backend`&&(this.modules.backend=e),(e.type===`logger`||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type===`languageDetector`&&(this.modules.languageDetector=e),e.type===`i18nFormat`&&(this.modules.i18nFormat=e),e.type===`postProcessor`&&Ja.addPostProcessor(e),e.type===`formatter`&&(this.modules.formatter=e),e.type===`3rdParty`&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&![`cimode`,`dev`].includes(e)){for(let e=0;e<this.languages.length;e++){let t=this.languages[e];if(![`cimode`,`dev`].includes(t)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&!this.languages.includes(e)&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;let n=Ca();this.emit(`languageChanging`,e);let r=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},i=(i,a)=>{a?this.isLanguageChangingTo===e&&(r(a),this.translator.changeLanguage(a),this.isLanguageChangingTo=void 0,this.emit(`languageChanged`,a),this.logger.log(`languageChanged`,a)):this.isLanguageChangingTo=void 0,n.resolve((...e)=>this.t(...e)),t&&t(i,(...e)=>this.t(...e))},a=t=>{!e&&!t&&this.services.languageDetector&&(t=[]);let n=Sa(t)?t:t&&t[0],a=this.store.hasLanguageSomeTranslations(n)?n:this.services.languageUtils.getBestMatchFromCodes(Sa(t)?[t]:t);a&&(this.language||r(a),this.translator.language||this.translator.changeLanguage(a),this.services.languageDetector?.cacheUserLanguage?.(a)),this.loadResources(a,e=>{i(e,a)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e),n}getFixedT(e,t,n){let r=(e,t,...i)=>{let a;a=typeof t==`object`?{...t}:this.options.overloadTranslationOptionHandler([e,t].concat(i)),a.lng=a.lng||r.lng,a.lngs=a.lngs||r.lngs,a.ns=a.ns||r.ns,a.keyPrefix!==``&&(a.keyPrefix=a.keyPrefix||n||r.keyPrefix);let o={...this.options,...a};typeof a.keyPrefix==`function`&&(a.keyPrefix=Za(a.keyPrefix,o));let s=this.options.keySeparator||`.`,c;return a.keyPrefix&&Array.isArray(e)?c=e.map(e=>(typeof e==`function`&&(e=Za(e,o)),`${a.keyPrefix}${s}${e}`)):(typeof e==`function`&&(e=Za(e,o)),c=a.keyPrefix?`${a.keyPrefix}${s}${e}`:e),this.t(c,a)};return Sa(e)?r.lng=e:r.lngs=e,r.ns=t,r.keyPrefix=n,r}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn(`hasLoadedNamespace: i18next was not initialized`,this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn(`hasLoadedNamespace: i18n.languages were undefined or empty`,this.languages),!1;let n=t.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,i=this.languages[this.languages.length-1];if(n.toLowerCase()===`cimode`)return!0;let a=(e,t)=>{let n=this.services.backendConnector.state[`${e}|${t}`];return n===-1||n===0||n===2};if(t.precheck){let e=t.precheck(this,a);if(e!==void 0)return e}return!!(this.hasResourceBundle(n,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(n,e)&&(!r||a(i,e)))}loadNamespaces(e,t){let n=Ca();return this.options.ns?(Sa(e)&&(e=[e]),e.forEach(e=>{this.options.ns.includes(e)||this.options.ns.push(e)}),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}loadLanguages(e,t){let n=Ca();Sa(e)&&(e=[e]);let r=this.options.preload||[],i=e.filter(e=>!r.includes(e)&&this.services.languageUtils.isSupportedCode(e));return i.length?(this.options.preload=r.concat(i),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}dir(e){if(e||=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language),!e)return`rtl`;try{let t=new Intl.Locale(e);if(t&&t.getTextInfo){let e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch{}let t=`ar.shu.sqr.ssh.xaa.yhd.yud.aao.abh.abv.acm.acq.acw.acx.acy.adf.ads.aeb.aec.afb.ajp.apc.apd.arb.arq.ars.ary.arz.auz.avl.ayh.ayl.ayn.ayp.bbz.pga.he.iw.ps.pbt.pbu.pst.prp.prd.ug.ur.ydd.yds.yih.ji.yi.hbo.men.xmn.fa.jpr.peo.pes.prs.dv.sam.ckb`.split(`.`),n=this.services?.languageUtils||new eo(mo());return e.toLowerCase().indexOf(`-latn`)>1?`ltr`:t.includes(n.getLanguagePartFromCode(e))||e.toLowerCase().indexOf(`-arab`)>1?`rtl`:`ltr`}static createInstance(t={},n){let r=new e(t,n);return r.createInstance=e.createInstance,r}cloneInstance(t={},n=go){let r=t.forkResourceStore;r&&delete t.forkResourceStore;let i={...this.options,...t,isClone:!0},a=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),[`store`,`services`,`language`].forEach(e=>{a[e]=this[e]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r&&(a.store=new qa(Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((n,r)=>(n[r]={...e[t][r]},n),e[t]),e),{}),i),a.services.resourceStore=a.store),t.interpolation){let e={...mo().interpolation,...this.options.interpolation,...t.interpolation},n={...i,interpolation:e};a.services.interpolator=new oo(n)}return a.translator=new $a(a.services,i),a.translator.on(`*`,(e,...t)=>{a.emit(e,...t)}),a.init(i,n),a.translator.options=i,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}.createInstance();vo.createInstance,vo.dir,vo.init,vo.loadResources,vo.reloadResources,vo.use,vo.changeLanguage,vo.getFixedT,vo.t,vo.exists,vo.setDefaultNamespace,vo.hasLoadedNamespace,vo.loadNamespaces,vo.loadLanguages;var{slice:yo,forEach:bo}=[];function xo(e){return bo.call(yo.call(arguments,1),t=>{if(t)for(let n in t)e[n]===void 0&&(e[n]=t[n])}),e}function So(e){return typeof e==`string`?[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(t=>t.test(e)):!1}var Co=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,wo=function(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:`/`},r=`${e}=${encodeURIComponent(t)}`;if(n.maxAge>0){let e=n.maxAge-0;if(Number.isNaN(e))throw Error(`maxAge should be a Number`);r+=`; Max-Age=${Math.floor(e)}`}if(n.domain){if(!Co.test(n.domain))throw TypeError(`option domain is invalid`);r+=`; Domain=${n.domain}`}if(n.path){if(!Co.test(n.path))throw TypeError(`option path is invalid`);r+=`; Path=${n.path}`}if(n.expires){if(typeof n.expires.toUTCString!=`function`)throw TypeError(`option expires is invalid`);r+=`; Expires=${n.expires.toUTCString()}`}if(n.httpOnly&&(r+=`; HttpOnly`),n.secure&&(r+=`; Secure`),n.sameSite)switch(typeof n.sameSite==`string`?n.sameSite.toLowerCase():n.sameSite){case!0:r+=`; SameSite=Strict`;break;case`lax`:r+=`; SameSite=Lax`;break;case`strict`:r+=`; SameSite=Strict`;break;case`none`:r+=`; SameSite=None`;break;default:throw TypeError(`option sameSite is invalid`)}return n.partitioned&&(r+=`; Partitioned`),r},To={create(e,t,n,r){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:`/`,sameSite:`strict`};n&&(i.expires=new Date,i.expires.setTime(i.expires.getTime()+n*60*1e3)),r&&(i.domain=r),document.cookie=wo(e,t,i)},read(e){let t=`${e}=`,n=document.cookie.split(`;`);for(let e=0;e<n.length;e++){let r=n[e];for(;r.charAt(0)===` `;)r=r.substring(1,r.length);if(r.indexOf(t)===0)return r.substring(t.length,r.length)}return null},remove(e,t){this.create(e,``,-1,t)}},Eo={name:`cookie`,lookup(e){let{lookupCookie:t}=e;if(t&&typeof document<`u`)return To.read(t)||void 0},cacheUserLanguage(e,t){let{lookupCookie:n,cookieMinutes:r,cookieDomain:i,cookieOptions:a}=t;n&&typeof document<`u`&&To.create(n,e,r,i,a)}},Do={name:`querystring`,lookup(e){let{lookupQuerystring:t}=e,n;if(typeof window<`u`){let{search:e}=window.location;!window.location.search&&window.location.hash?.indexOf(`?`)>-1&&(e=window.location.hash.substring(window.location.hash.indexOf(`?`)));let r=e.substring(1).split(`&`);for(let e=0;e<r.length;e++){let i=r[e].indexOf(`=`);i>0&&r[e].substring(0,i)===t&&(n=r[e].substring(i+1))}}return n}},Oo={name:`hash`,lookup(e){let{lookupHash:t,lookupFromHashIndex:n}=e,r;if(typeof window<`u`){let{hash:e}=window.location;if(e&&e.length>2){let i=e.substring(1);if(t){let e=i.split(`&`);for(let n=0;n<e.length;n++){let i=e[n].indexOf(`=`);i>0&&e[n].substring(0,i)===t&&(r=e[n].substring(i+1))}}if(r)return r;if(!r&&n>-1){let t=e.match(/\/([a-zA-Z-]*)/g);return Array.isArray(t)?t[typeof n==`number`?n:0]?.replace(`/`,``):void 0}}}return r}},ko=null,Ao=()=>{if(ko!==null)return ko;try{if(ko=typeof window<`u`&&window.localStorage!==null,!ko)return!1;let e=`i18next.translate.boo`;window.localStorage.setItem(e,`foo`),window.localStorage.removeItem(e)}catch{ko=!1}return ko},jo={name:`localStorage`,lookup(e){let{lookupLocalStorage:t}=e;if(t&&Ao())return window.localStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupLocalStorage:n}=t;n&&Ao()&&window.localStorage.setItem(n,e)}},Mo=null,No=()=>{if(Mo!==null)return Mo;try{if(Mo=typeof window<`u`&&window.sessionStorage!==null,!Mo)return!1;let e=`i18next.translate.boo`;window.sessionStorage.setItem(e,`foo`),window.sessionStorage.removeItem(e)}catch{Mo=!1}return Mo},Po={name:`sessionStorage`,lookup(e){let{lookupSessionStorage:t}=e;if(t&&No())return window.sessionStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupSessionStorage:n}=t;n&&No()&&window.sessionStorage.setItem(n,e)}},Fo={name:`navigator`,lookup(e){let t=[];if(typeof navigator<`u`){let{languages:e,userLanguage:n,language:r}=navigator;if(e)for(let n=0;n<e.length;n++)t.push(e[n]);n&&t.push(n),r&&t.push(r)}return t.length>0?t:void 0}},Io={name:`htmlTag`,lookup(e){let{htmlTag:t}=e,n,r=t||(typeof document<`u`?document.documentElement:null);return r&&typeof r.getAttribute==`function`&&(n=r.getAttribute(`lang`)),n}},Lo={name:`path`,lookup(e){let{lookupFromPathIndex:t}=e;if(typeof window>`u`)return;let n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);if(Array.isArray(n))return n[typeof t==`number`?t:0]?.replace(`/`,``)}},Ro={name:`subdomain`,lookup(e){let{lookupFromSubdomainIndex:t}=e,n=typeof t==`number`?t+1:1,r=typeof window<`u`&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(r)return r[n]}},zo=!1;try{document.cookie,zo=!0}catch{}var Bo=[`querystring`,`cookie`,`localStorage`,`sessionStorage`,`navigator`,`htmlTag`];zo||Bo.splice(1,1);var Vo=()=>({order:Bo,lookupQuerystring:`lng`,lookupCookie:`i18next`,lookupLocalStorage:`i18nextLng`,lookupSessionStorage:`i18nextLng`,caches:[`localStorage`],excludeCacheFor:[`cimode`],convertDetectedLanguage:e=>e}),Ho=class{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type=`languageDetector`,this.detectors={},this.init(e,t)}init(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=xo(t,this.options||{},Vo()),typeof this.options.convertDetectedLanguage==`string`&&this.options.convertDetectedLanguage.indexOf(`15897`)>-1&&(this.options.convertDetectedLanguage=e=>e.replace(`-`,`_`)),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=n,this.addDetector(Eo),this.addDetector(Do),this.addDetector(jo),this.addDetector(Po),this.addDetector(Fo),this.addDetector(Io),this.addDetector(Lo),this.addDetector(Ro),this.addDetector(Oo)}addDetector(e){return this.detectors[e.name]=e,this}detect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,t=[];return e.forEach(e=>{if(this.detectors[e]){let n=this.detectors[e].lookup(this.options);n&&typeof n==`string`&&(n=[n]),n&&(t=t.concat(n))}}),t=t.filter(e=>e!=null&&!So(e)).map(e=>this.options.convertDetectedLanguage(e)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?t:t.length>0?t[0]:null}cacheUserLanguage(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;t&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||t.forEach(t=>{this.detectors[t]&&this.detectors[t].cacheUserLanguage(e,this.options)}))}};Ho.type=`languageDetector`;var Uo=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);Xo(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},Wo={},Go=(e,t,n,r)=>{Xo(n)&&Wo[n]||(Xo(n)&&(Wo[n]=new Date),Uo(e,t,n,r))},Ko=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},qo=(e,t,n)=>{e.loadNamespaces(t,Ko(e,n))},Jo=(e,t,n,r)=>{if(Xo(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return qo(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,Ko(e,r))},Yo=(e,t,n={})=>!t.languages||!t.languages.length?(Go(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),Xo=e=>typeof e==`string`,Zo=e=>typeof e==`object`&&!!e,Qo=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,$o={"&amp;":`&`,"&#38;":`&`,"&lt;":`<`,"&#60;":`<`,"&gt;":`>`,"&#62;":`>`,"&apos;":`'`,"&#39;":`'`,"&quot;":`"`,"&#34;":`"`,"&nbsp;":` `,"&#160;":` `,"&copy;":`©`,"&#169;":`©`,"&reg;":`®`,"&#174;":`®`,"&hellip;":`…`,"&#8230;":`…`,"&#x2F;":`/`,"&#47;":`/`},es=e=>$o[e],ts={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:e=>e.replace(Qo,es),transDefaultProps:void 0},ns=(e={})=>{ts={...ts,...e}},rs=()=>ts,is,as=e=>{is=e},os=()=>is,ss={type:`3rdParty`,init(e){ns(e.options.react),as(e)}},cs=(0,C.createContext)(),ls=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}},us=s((e=>{var t=p();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var d=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?d:t.useSyncExternalStore})),ds=s(((e,t)=>{t.exports=us()})),fs=ds(),ps={t:(e,t)=>{if(Xo(t))return t;if(Zo(t)&&Xo(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},ms=()=>()=>{},hs=(e,t={})=>{let{i18n:n}=t,{i18n:r,defaultNS:i}=(0,C.useContext)(cs)||{},a=n||r||os();a&&!a.reportNamespaces&&(a.reportNamespaces=new ls),a||Go(a,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next`);let o=(0,C.useMemo)(()=>({...rs(),...a?.options?.react,...t}),[a,t]),{useSuspense:s,keyPrefix:c}=o,l=e||i||a?.options?.defaultNS,u=Xo(l)?[l]:l||[`translation`],d=(0,C.useMemo)(()=>u,u);a?.reportNamespaces?.addUsedNamespaces?.(d);let f=(0,C.useRef)(0),p=(0,C.useCallback)(e=>{if(!a)return ms;let{bindI18n:t,bindI18nStore:n}=o,r=()=>{f.current+=1,e()};return t&&a.on(t,r),n&&a.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>a.off(e,r)),n&&n.split(` `).forEach(e=>a.store.off(e,r))}},[a,o]),m=(0,C.useRef)(),h=(0,C.useCallback)(()=>{if(!a)return ps;let e=!!(a.isInitialized||a.initializedStoreOnce)&&d.every(e=>Yo(e,a,o)),n=t.lng||a.language,r=f.current,i=m.current;if(i&&i.ready===e&&i.lng===n&&i.keyPrefix===c&&i.revision===r)return i;let s={t:a.getFixedT(n,o.nsMode===`fallback`?d:d[0],c),ready:e,lng:n,keyPrefix:c,revision:r};return m.current=s,s},[a,d,c,o,t.lng]),[g,_]=(0,C.useState)(0),{t:v,ready:y}=(0,fs.useSyncExternalStore)(p,h,h);(0,C.useEffect)(()=>{if(a&&!y&&!s){let e=()=>_(e=>e+1);t.lng?Jo(a,t.lng,d,e):qo(a,d,e)}},[a,t.lng,d,y,s,g]);let b=a||{},x=(0,C.useRef)(null),S=(0,C.useRef)(),w=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,`__original`,{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},T=(0,C.useMemo)(()=>{let e=b,t=e?.language,n=e;e&&(x.current&&x.current.__original===e&&S.current===t?n=x.current:(n=w(e),x.current=n,S.current=t));let r=!y&&!s?(...e)=>(Go(a,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),v(...e)):v,i=[r,n,y];return i.t=r,i.i18n=n,i.ready=y,i},[v,b,y,b.resolvedLanguage,b.language,b.languages]);if(a&&s&&!y)throw new Promise(e=>{let n=()=>e();t.lng?Jo(a,t.lng,d,n):qo(a,d,n)});return T},gs={common:{loading:`Laden`,notFound:`Nicht gefunden`,save:`Speichern`,cancel:`Abbrechen`,delete:`Löschen`,edit:`Bearbeiten`,close:`Schließen`,refresh:`Aktualisieren`,search:`Suche`,enabled:`Aktiviert`,disabled:`Deaktiviert`,online:`Online`,offline:`Offline`,running:`Läuft`,stopped:`Gestoppt`,failed:`Fehlgeschlagen`,starting:`Startet`,devices:`Geräte`,fabrics:`Fabrics`,port:`Port`,unknown:`Unbekannt`,confirm:`Bestätigen`,create:`Erstellen`,back:`Zurück`,next:`Weiter`,actions:`Aktionen`,name:`Name`,type:`Typ`,error:`Fehler`,version:`Version`,copy:`Kopieren`,copied:`Kopiert!`,copyId:`ID kopieren`,later:`Später`,skip:`Überspringen`,reset:`Zurücksetzen`,update:`Aktualisieren`,all:`Alle`,ascending:`Aufsteigend`,descending:`Absteigend`,moveUp:`Nach oben`,moveDown:`Nach unten`,selectAll:`Alle auswählen`,selectNone:`Keine auswählen`,live:`Live`,new:`Neu`,overwrite:`Überschreiben`,active:`Aktiv`,property:`Eigenschaft`,value:`Wert`,custom:`Benutzerdefiniert`,startAll:`Alle starten`,stopAll:`Alle stoppen`,restartAll:`Alle neustarten`,import:`Importieren`,export:`Exportieren`,exportAll:`Alle exportieren`,wizard:`Assistent`},nav:{bridges:`Bridges`,devices:`Alle Geräte`,standaloneDevices:`Eigenständige Geräte`,health:`Status & Diagnose`,diagnostics:`Live-Ereignisse`,settings:`Einstellungen`,networkMap:`Netzwerkkarte`,logs:`Logs`,startupOrder:`Startreihenfolge`,lockCredentials:`Schloss-Zugangsdaten`,filterReference:`Filterreferenz`,systemLogs:`Systemlogs`,lightMode:`Heller Modus`,darkMode:`Dunkler Modus`},standaloneDevices:{title:`Eigenständige Geräte`,subtitle:`Jedes Gerät läuft auf einem eigenen Matter-Node mit eigenem Pairing-Code, statt in einer Bridge.`,create:`Gerät hinzufügen`,name:`Name`,entity:`Entity`,entityHelp:`Wähle das Home-Assistant-Entity, das bereitgestellt wird.`,additionalEntity:`Weiteres Entity`,addEntity:`Weiteres Entity hinzufügen`,multiHint:`Das erste Entity ist das primäre und benennt das Gerät. Mehr als ein Entity pro Gerät ist experimentell.`,creating:`Wird erstellt`,empty:`Noch keine eigenständigen Geräte. Füge eines hinzu, um ein einzelnes Entity als eigenes Matter-Gerät bereitzustellen.`,noEntity:`kein Entity`,openBridge:`Details und Pairing öffnen`,created:`Eigenständiges Gerät erstellt`,createFailed:`Gerät konnte nicht erstellt werden`,deleted:`Eigenständiges Gerät gelöscht`,deleteFailed:`Gerät konnte nicht gelöscht werden`,entityInvalid:`Gib eine einzelne Entity-ID wie vacuum.wohnzimmer ein, Wildcards sind nicht erlaubt.`,entityProblem:`Entity-Problem`,confirmDeleteTitle:`Eigenständiges Gerät löschen`,confirmDeleteMessage:`Das löscht den Matter-Node des Geräts und entkoppelt es von deinen Controllern. Das lässt sich nicht rückgängig machen.`},status:{error:`Fehler`,unhealthy:`Fehlerhaft`,noBridges:`Keine Bridges`,loadingHealth:`Lade Statusdaten...`,unknown:`Unbekannt`},errorBoundary:{title:`Etwas ist schiefgelaufen`,fallbackMessage:`Ein unerwarteter Fehler ist aufgetreten.`,reload:`Seite neu laden`},settings:{title:`Einstellungen`,language:`Sprache`,languageDescription:`Wähle die Sprache der Benutzeroberfläche.`,checkUpdates:`Nach Updates suchen`,backupRestore:`Sichern & Wiederherstellen`,exportBackup:`Backup exportieren`,importBackup:`Backup importieren`,dangerZone:`Gefahrenzone`,resetAll:`Alles zurücksetzen`,about:`Über`,username:`Benutzername`,password:`Passwort`,enterNewPassword:`Neues Passwort eingeben`,enableAuth:`Authentifizierung aktivieren`,disableAuth:`Authentifizierung deaktivieren`,disableAuthMessage:`Dies entfernt den Passwortschutz der Weboberfläche. Jeder in deinem Netzwerk kann auf die Bridge-Konfiguration zugreifen und sie ändern.`,disableAuthConfirm:`Auth deaktivieren`,usernamePasswordRequired:`Benutzername und Passwort sind erforderlich`,authSaveFailed:`Authentifizierungseinstellungen konnten nicht gespeichert werden`,authLoadFailed:`Authentifizierungseinstellungen konnten nicht geladen werden`,authDisabled:`Authentifizierung deaktiviert.`,authRemoveFailed:`Authentifizierungseinstellungen konnten nicht entfernt werden`},dashboard:{title:`Dashboard`,systemOverview:`Systemübersicht`,quickActions:`Schnellaktionen`,bridgeOverview:`Bridge-Übersicht`,noBridges:`Noch keine Bridges konfiguriert.`,createBridge:`Bridge erstellen`,viewAll:`Alle anzeigen`,totalDevices:`Geräte gesamt`,customize:`Anpassen`,startAll:`Alle starten`,stopAll:`Alle stoppen`,restartAll:`Alle neustarten`,welcome:`Willkommen bei Home Assistant Matter Hub`,welcomeDescription:`Verbinde deine Home Assistant Geräte mit Matter-Controllern wie Apple Home, Google Home und Amazon Alexa.`,bridgeWizard:`Bridge-Assistent`,setupByArea:`Nach Bereich einrichten`,manualSetup:`Manuelle Einrichtung`,areaSetup:`Bereich-Einrichtung`,documentation:`Dokumentation`,quickNavigation:`Schnellnavigation`,haConnection:`HA-Verbindung`,startupOrder:`Startreihenfolge`,lockCredentials:`Schloss-Zugangsdaten`,filterReference:`Filterreferenz`,successMessage:`Deine Bridges sind mit {{count}} Controller-Fabric(s) verbunden. Geräte sollten jetzt in deiner Controller-App erscheinen.`,noBridgesHint:`Noch keine Bridges konfiguriert. Nutze den Bridge-Assistenten oder erstelle eine manuell.`,customizeDashboard:`Dashboard anpassen`,bridgeStatusRunning:`{{running}} läuft`,bridgeStatusFailed:`{{failed}} fehlgeschlagen`,devicesFailed:`{{count}} fehlgeschlagen`,uptimeFormat:`{{time}}`},bridge:{name:`Bridge-Name`,port:`Port`,status:`Status`,pairHint:`Diese Bridge mit deinem Controller koppeln`,pairDescription:`Öffne deine Controller-App (Apple Home, Google Home oder Amazon Alexa), füge ein neues Zubehör hinzu und scanne den QR-Code oder gib den manuellen Kopplungscode ein. Stelle sicher, dass dein Controller im selben Netzwerk wie Home Assistant ist.`,failedEntities:`Fehlgeschlagene Entities`,serverModeRecommended:`Server-Modus empfohlen für Saugroboter`,serverModeDescription:`Diese Bridge enthält einen Saugroboter im Bridge-Modus. Apple Home und Alexa zeigen die Bridge als zusätzliches Gerät an, was zu doppelten Einträgen führt. Aktiviere den Server-Modus, um den Saugroboter als eigenständiges Matter-Gerät bereitzustellen.`,enableServerMode:`Server-Modus aktivieren`,enabling:`Wird aktiviert...`,start:`Starten`,stop:`Stoppen`,restart:`Neustarten`,factoryReset:`Werksreset`,pairingCode:`Kopplungscode`,openCommissioning:`Kopplungsfenster öffnen`,multiPair:`Multi-Fabric-Kopplung`,deleteBridge:`Bridge löschen`,deleteConfirm:`Möchtest du diese Bridge wirklich löschen?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} Entity/Entities konnten nicht geladen werden.`,clickToShow:`Klicke, um Details anzuzeigen.`,clickToHide:`Klicke, um Details auszublenden.`,loadFailed:`Bridge-Details konnten nicht geladen werden`,refreshHint:`Neue Geräte und Label-Änderungen werden alle 30 Sekunden erkannt.`,refreshingStates:`Status wird in {{seconds}} Sekunden aktualisiert...`,serverModeSingleDeviceNote:`Hinweis: Der Server-Modus erfordert, dass der Saugroboter das einzige Gerät auf dieser Bridge ist. Entferne zuerst andere Entities, dann aktiviere den Server-Modus in den Bridge-Einstellungen.`,serverModeEnabled:`Server-Modus aktiviert. Die Bridge wird mit deinem Saugroboter als eigenständiges Gerät neu gestartet.`,serverModeEnableFailed:`Server-Modus konnte nicht aktiviert werden: {{error}}`,pairing:`Kopplung`,bridgeInfo:`Bridge-Info`,commissioned:`Gekoppelt`,addController:`Weiteren Controller hinzufügen`,openingCommissioning:`Kopplungsfenster wird geöffnet...`,fabricTooltip:`Ein Fabric stellt eine Verbindung zu einem Matter-Controller dar (z.B. Apple Home, Google Home, Alexa). Jeder Controller erstellt beim Koppeln ein Fabric.`,forceSync:`Synchronisation erzwingen`,syncing:`Synchronisiere...`,forceSyncTooltip:`Alle aktuellen Gerätezustände an verbundene Controller senden`,editFilters:`Filter bearbeiten`,addFilters:`Filter hinzufügen`,bridgeNotRunning:`Bridge läuft nicht. Starte die Bridge, um Kopplungsinformationen zu sehen.`,manualCode:`Manueller Code`,openingWindow:`Kopplungsfenster wird geöffnet...`,bridgeId:`Bridge-ID`,passcode:`Passcode`,discriminator:`Discriminator`,connectedFabrics:`Verbundene Fabrics ({{count}})`,noFabrics:`Noch keine Controller verbunden. Scanne den QR-Code mit deinem Matter-Controller.`,entityFilters:`Entity-Filter`,noFilters:`Keine Filter konfiguriert. Alle unterstützten Entities werden freigegeben.`,scanQrCode:`Scanne diesen QR-Code mit deinem Matter-Controller (Apple Home, Google Home, Alexa, etc.), um diese Bridge einem weiteren Ökosystem hinzuzufügen.`,appleHomeWarning:`Diese Bridge verwendet den erweiterten Flat-Modus. Deaktiviere dies nur, wenn du ausschließlich Apple Home verwendest.`,googleHomeWarning:`Dies kann Probleme mit Apple Home und Google Home verursachen.`,resetSuccess:`Bridge erfolgreich zurückgesetzt`,deleteSuccess:`Bridge erfolgreich gelöscht`,confirmResetTitle:`Bridge zurücksetzen`,confirmResetMessage:`Dies entfernt alle Kopplungsinformationen und setzt die Bridge in den Ausgangszustand zurück. Verbundene Controller verlieren den Zugriff. Dies kann nicht rückgängig gemacht werden.`,confirmDeleteTitle:`Bridge löschen`,confirmDeleteMessage:`Dies löscht die Bridge, alle Kopplungen und Entity-Zuordnungen dauerhaft. Verbundene Controller verlieren den Zugriff. Dies kann nicht rückgängig gemacht werden.`,importTitle:`Bridges importieren`,overwriteExisting:`Bestehende Bridges überschreiben`,iconLabel:`Bridge-Symbol`,google:`Google`,alexa:`Alexa`,serverMode:`Server-Modus`,autoForceSync:`Auto-Synchronisation`,saveSuccess:`Bridge gespeichert`,updateSuccess:`Aktualisierung abgeschlossen`,exportFailed:`Export fehlgeschlagen`,actionStarted:`Gestartet`,actionStopped:`Gestoppt`,actionRestarted:`Neugestartet`,actionFailed:`{{action}} fehlgeschlagen`,actionResult:`{{label}} {{count}} Bridge(s)`,couldNotLoad:`Bridges konnten nicht geladen werden`,showingFirst:`Zeige erste {{count}}`,importParseFailed:`Import-Datei konnte nicht verarbeitet werden. Bitte eine gültige Export-Datei auswählen.`,importing:`Importiere...`,importCount:`{{count}} Bridge(s) importieren`,jsonEditor:`JSON-Editor`,formEditor:`Formular-Editor`},endpoints:{title:`Endpunkte`,searchPlaceholder:`Endpunkte suchen...`,sortBy:`Sortieren`,sortName:`Name`,sortEndpoint:`Endpunkt-ID`,sortType:`Typ`,cardView:`Kartenansicht`,treeView:`Baumansicht`,clusters:`Cluster`,entityUnavailable:`Entity nicht verfügbar`,showUnavailable:`{{count}} nicht verfügbare anzeigen`,showAll:`Alle Entities anzeigen`,uploadImage:`Gerätebild hochladen`,removeImage:`Benutzerdefiniertes Bild entfernen`,editMapping:`Entity-Zuordnung bearbeiten`,homeAssistantEntity:`Home Assistant Entity`,noEndpoints:`Keine Endpunkte gefunden.`,expandAll:`Alle aufklappen`,collapseAll:`Alle zuklappen`,viewAll:`Alle Geräte anzeigen`,haState:`HA-Status`,aboutEndpoint:`Über diesen Endpunkt`,entityId:`Entity-ID`,customName:`Benutzerdefinierter Name`,deviceTypeOverride:`Gerätetyp-Überschreibung`,keyHaAttributes:`Wichtige HA-Attribute`,entityMappings:`Entity-Zuordnungen`,copyData:`Daten in Zwischenablage kopieren`,behavior:`Verhalten`},health:{title:`Status & Diagnose`,version:`Version`,uptime:`Laufzeit`,homeAssistant:`Home Assistant`,connected:`Verbunden`,disconnected:`Getrennt`,bridgeStatus:`Bridge-Status`,refreshHealth:`Statusdaten aktualisieren`,exportDiagnostic:`Diagnose exportieren`,memory:`Speicher`,fabricDetails:`Fabric-Details`,sessions:`Sitzungen`,subscriptions:`Abonnements`,noFabrics:`Keine Fabrics verbunden`,systemMetrics:`Systemmetriken`,heap:`Heap`,rss:`RSS`,external:`Extern`,systemHealth:`Systemstatus`,fetchFailed:`Statusdaten konnten nicht abgerufen werden`,connectionError:`Verbindungsfehler`,exportFailed:`Diagnosedaten konnten nicht exportiert werden`,restartFailed:`Bridge konnte nicht neu gestartet werden`,unableToLoad:`Statusdaten konnten nicht geladen werden`,sortBy:`Sortieren nach`,created:`Erstellt`,ascending:`Aufsteigend`,descending:`Absteigend`,connectedTo:`Verbunden mit`,controllerWarningsTitle:`Manche Geräte erscheinen evtl. nicht im verbundenen Controller:`,autoRecovery:`Auto-Wiederherstellung`,recoveryAttempts:`Wiederherstellungsversuche`,fabrics:`Fabrics`,networkDiagnostics:`Netzwerk-Diagnose`,checksPassed:`bestanden`,checksWarning:`Warnungen`,checksFailed:`fehlgeschlagen`,hideDetails:`Details ausblenden`,showDetails:`Details anzeigen`,allChecks:`Alle Prüfungen`,check:`Prüfung`,statusLabel:`Status`,message:`Nachricht`,networkInterfaces:`Netzwerkschnittstellen`,interfaceName:`Schnittstelle`,refresh:`Aktualisieren`},mapping:{title:`Entity-Zuordnungen`,entityId:`Entity-ID`,deviceType:`Gerätetyp`,customName:`Benutzerdefinierter Name`,status:`Status`,addMapping:`Zuordnung hinzufügen`,editMapping:`Zuordnung bearbeiten`,deleteMapping:`Zuordnung löschen`,saved:`Zuordnung für {{entityId}} gespeichert. Starte die Bridge neu, um Änderungen anzuwenden.`,saveFailed:`Zuordnung konnte nicht gespeichert werden: {{error}}`,deleted:`Zuordnung für {{entityId}} gelöscht.`,deleteFailed:`Zuordnung konnte nicht gelöscht werden.`,matterTag:`Matter-Tag`,exportProfile:`Zuordnungsprofil exportieren`,importProfile:`Zuordnungsprofil importieren`,profileName:`Profilname`,match:`Übereinstimmung`,existing:`Vorhanden`,autoDetect:`Automatisch erkennen (Standard)`,customProductName:`Produktname (benutzerdefiniert)`,customProductNameHelp:`Überschreibt den Produktnamen (Modell), der an Matter-Controller gemeldet wird. Einige Controller (z.B. Aqara) zeigen diesen als Gerätenamen an.`,customVendorName:`Herstellername (benutzerdefiniert)`,customVendorNameHelp:`Überschreibt den Hersteller-/Herstellernamen, der an Matter-Controller gemeldet wird.`,customSerialNumber:`Seriennummer (benutzerdefiniert)`,customSerialNumberHelp:`Überschreibt die Seriennummer, die an Matter-Controller gemeldet wird.`,customVendorId:`Vendor-ID (benutzerdefiniert)`,customVendorIdHelp:`Überschreibt die numerische Matter Vendor-ID (z.B. 0x115F für Aqara). Nur Bridge-Modus. Bereich 1..0xFFFE.`,loadFailed:`Entity-Zuordnungen konnten nicht geladen werden`,noMappings:`Keine benutzerdefinierten Entity-Zuordnungen konfiguriert. Verwende Zuordnungen, um Matter-Gerätetypen zu überschreiben, benutzerdefinierte Namen zu setzen oder bestimmte Entities zu deaktivieren.`,applying:`Wird angewendet...`,applyCount:`{{count}} Zuordnung(en) anwenden`},languageSwitcher:{disclaimer:`Übersetzungen können unvollständig sein.`,contribute:`Hilf sie zu verbessern!`},translationEditor:{title:`Übersetzungseditor`,editLanguage:`Sprache bearbeiten`,info:`Bearbeite Übersetzungen direkt im Browser. Änderungen werden lokal gespeichert und sofort angewendet. Exportiere deine Übersetzungen, um sie dem Projekt einzureichen.`,progress:`{{translated}} / {{total}} Schlüssel übersetzt`,localEdits:`{{count}} lokale Bearbeitung(en)`,searchPlaceholder:`Schlüssel oder Werte suchen...`,filterAll:`Alle Schlüssel`,filterMissing:`Fehlend`,filterEdited:`Bearbeitet`,exportJson:`JSON exportieren`,copyJson:`JSON kopieren`,copied:`Kopiert!`,resetAll:`Alle Bearbeitungen zurücksetzen`,resetKey:`Auf Standard zurücksetzen`,noResults:`Keine passenden Übersetzungsschlüssel gefunden.`,addLanguage:`Sprache hinzufügen`,newLanguageCode:`Sprachcode (z.B. pt, ja, ko)`,newLanguageName:`Sprachname (z.B. Português)`,addLanguageButton:`Hinzufügen`,languageExists:`Diese Sprache existiert bereits.`,codeRequired:`Sprachcode ist erforderlich.`,nameRequired:`Sprachname ist erforderlich.`,removeLanguage:`Sprache entfernen`,importJson:`JSON importieren`,importSuccess:`{{count}} Übersetzung(en) importiert.`,importFailed:`Import fehlgeschlagen: ungültiges JSON-Format.`,removeLanguageConfirm:`Benutzerdefinierte Sprache "{{name}}" entfernen? Alle lokalen Bearbeitungen für diese Sprache gehen verloren.`},backup:{title:`Sichern & Wiederherstellen`,description:`Erstelle ein vollständiges Backup deiner Bridges und Entity-Zuordnungen oder stelle ein vorheriges Backup wieder her.`,configBackup:`Konfigurations-Backup`,configBackupDesc:`Exportiere Bridge-Konfigurationen und Entity-Zuordnungen.`,configBackupNote:`Bridges müssen nach der Wiederherstellung neu kommissioniert werden.`,fullBackup:`Vollständiges Backup (mit Identität)`,fullBackupDesc:`Enthält Matter-Identitätsdateien (Schlüsselpaare, Fabric-Anmeldedaten).`,fullBackupWarning:`Erhält den Kommissionierungsstatus über Wiederherstellungen hinweg. NICHT TEILEN!`,restoreFromBackup:`Aus Backup wiederherstellen`,restoreDesc:`Lade eine zuvor erstellte Backup-Datei hoch, um Bridges und Konfigurationen wiederherzustellen.`,restoreTitle:`Backup wiederherstellen`,selectBridges:`Bridges zur Wiederherstellung auswählen`,overwriteExisting:`Vorhandene Bridges überschreiben`,includeMappings:`Entity-Zuordnungen einschließen`,restoreIdentities:`Matter-Identitäten wiederherstellen (keine Neu-Kommissionierung nötig)`,restore:`Wiederherstellen`,downloadSuccess:`Backup erfolgreich heruntergeladen!`,restartRequired:`Neustart erforderlich`,restartMessage:`Bridges wurden aus dem Backup wiederhergestellt. Ein Neustart ist erforderlich, damit die Änderungen wirksam werden.`,restartNote:`Die Anwendung wird neu gestartet und du musst diese Seite möglicherweise aktualisieren.`,restartNow:`Jetzt neu starten`,storedBackups:`Gespeicherte Backups`,createSnapshot:`Backup erstellen`,noSnapshots:`Noch keine gespeicherten Backups. Backups werden automatisch beim Herunterfahren erstellt oder können manuell erstellt werden.`,downloadSnapshot:`Herunterladen`,restoreSnapshot:`Wiederherstellen`,auto:`Auto`,manual:`Manuell`,snapshotCreated:`Backup erfolgreich erstellt!`,snapshotRestored:`{{bridges}} Bridges, {{mappings}} Zuordnungen, {{identities}} Identitäten wiederhergestellt.`,confirmRestore:`Wiederherstellung bestätigen`,confirmRestoreMessage:`Bist du sicher, dass du aus "{{filename}}" wiederherstellen möchtest? Dies überschreibt deine aktuelle Konfiguration.`,restoreWarning:`Alle vorhandenen Bridges und Konfigurationen werden überschrieben. Ein Neustart ist nach der Wiederherstellung erforderlich.`,confirmDelete:`Backup löschen`,confirmDeleteMessage:`Bist du sicher, dass du "{{filename}}" löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.`,settings:`Backup-Einstellungen`,autoBackupLabel:`Automatisches Backup`,autoBackupDesc:`Erstellt automatisch ein vollständiges Backup wenn die Anwendung heruntergefahren oder neu gestartet wird.`,retentionCount:`Backups behalten`,retentionCountDesc:`Anzahl der aufzubewahrenden Backups (älteste werden automatisch gelöscht)`},notFound:{title:`Seite nicht gefunden`,description:`Die gesuchte Seite existiert nicht.`,backToDashboard:`Zurück zum Dashboard`},footer:{github:`GitHub`,documentation:`Dokumentation`,support:`Unterstützen`},devices:{title:`Geräte`,searchPlaceholder:`Geräte suchen...`,filterBridge:`Bridge`,allBridges:`Alle Bridges`,filterDeviceType:`Gerätetyp`,allTypes:`Alle Typen`,sortBy:`Sortieren nach`,sortBridge:`Bridge`,sortType:`Gerätetyp`,sortName:`Name`,deviceCount:`{{count}} Gerät(e)`,filteredCount:`{{filtered}} von {{total}} Geräten`},diagnostics:{title:`Live-Diagnose`,stateUpdate:`Statusänderung`,command:`Befehl`,entityError:`Fehler`,sessionOpen:`Sitzung geöffnet`,sessionClose:`Sitzung geschlossen`,subscription:`Abonnement`,bridgeStart:`Bridge gestartet`,bridgeStop:`Bridge gestoppt`,entityWarning:`Warnung`,filterEvents:`Ereignistypen filtern`,clearEvents:`Alle Ereignisse löschen`,noEvents:`Keine Ereignisse entsprechen den aktuellen Filtern.`},startup:{title:`Startreihenfolge`,description:`Ziehe Bridges per Drag & Drop, um die Startreihenfolge festzulegen. Niedrigere Positionen starten zuerst.`,saveSuccess:`Startreihenfolge erfolgreich gespeichert`,saveFailed:`Startreihenfolge konnte nicht gespeichert werden`,saveChanges:`Änderungen speichern`,unsavedChanges:`Du hast ungespeicherte Änderungen an der Startreihenfolge.`,noBridges:`Noch keine Bridges konfiguriert.`,saveOrder:`Startreihenfolge speichern`},areaSetup:{title:`Bereich-Einrichtung`,heading:`Bereichsbasierte Bridge-Einrichtung`,description:`Erstelle automatisch eine Bridge pro Home Assistant Bereich. Jede Bridge enthält alle unterstützten Entities aus diesem Bereich.`,noAreas:`Keine Bereiche mit unterstützten Entities in Home Assistant gefunden. Stelle sicher, dass deine Geräte in HA Bereichen zugeordnet sind.`,selectController:`1. Controller auswählen (optional)`,selectAreas:`2. Bereiche auswählen ({{selected}} von {{total}})`,clear:`Leeren`,createBridges:`{{count}} Bridge(s) erstellen`,results:`Ergebnisse`,goToBridges:`Zu den Bridges`,createdSuccess:`{{count}} Bridge(s) erfolgreich erstellt`,createdPartial:`{{succeeded}} erstellt, {{failed}} Bridge(s) fehlgeschlagen`,loadFailed:`Bereiche konnten nicht geladen werden`,creating:`Wird erstellt...`,created:`Erstellt`,unknownError:`Unbekannter Fehler`},lockCredentials:{title:`Schloss-Zugangsdaten`,addCredential:`Zugangsdaten hinzufügen`,editCredential:`Zugangsdaten bearbeiten`,lockEntityId:`Schloss-Entity-ID`,lockEntityHelperText:`Die Home Assistant Entity-ID des Schlosses`,pinCode:`PIN-Code`,nameOptional:`Name (optional)`,namePlaceholder:`Haustür`,nameHelperText:`Anzeigename für diese Zugangsdaten`,entityRequired:`Entity-ID ist erforderlich`,pinLength:`PIN muss 4-8 Ziffern lang sein`,pinDigitsOnly:`PIN darf nur Ziffern enthalten`,saveFailed:`Speichern fehlgeschlagen`,loadFailed:`Zugangsdaten konnten nicht geladen werden`,deleteFailed:`Löschen fehlgeschlagen`,updateFailed:`Aktualisierung fehlgeschlagen`,enable:`Aktivieren`,disable:`Deaktivieren`,confirmDeleteTitle:`Zugangsdaten löschen`,confirmDeleteMessage:`Dies löscht die PIN-Zugangsdaten für {{entity}} dauerhaft. Dies kann nicht rückgängig gemacht werden.`},labels:{title:`Filterreferenz`,info:`Durchsuche alle verfügbaren Filterwerte für deine Bridge-Konfiguration. Klicke auf einen Wert, um ihn in die Zwischenablage zu kopieren.`,searchPlaceholder:`Suchen...`,loadFailed:`Daten konnten nicht geladen werden`,labelsSection:`Labels`,labelsHint:`Verwende mit Filtertyp "entity_label" oder "device_label". Du kannst entweder den Anzeigenamen oder die label_id verwenden.`,noLabels:`Keine Labels in Home Assistant gefunden. Erstelle Labels unter Einstellungen > Labels.`,displayName:`Anzeigename`,labelId:`label_id`,areaId:`area_id`,areasSection:`Bereiche`,areasHint:`Verwende mit Filtertyp "area". Bereiche werden auch für die automatische Raumzuweisung in Matter-Controllern verwendet.`,noAreas:`Keine Bereiche in Home Assistant gefunden. Erstelle Bereiche unter Einstellungen > Bereiche.`,otherFilterValues:`Weitere Filterwerte`,domains:`Domains`,domainsHint:`Verwende mit Filtertyp "domain".`,platforms:`Plattformen / Integrationen`,platformsHint:`Verwende mit Filtertyp "platform".`,entityCategories:`Entity-Kategorien`,entityCategoriesHint:`Verwende mit Filtertyp "entity_category".`,deviceClasses:`Geräteklassen`,deviceClassesHint:`Verwende mit Filtertyp "device_class".`,deviceNames:`Gerätenamen`,deviceNamesHint:`Verwende mit Filtertyp "device_name".`,productNames:`Produktnamen`,productNamesHint:`Verwende mit Filtertyp "product_name".`},logs:{title:`Systemlogs`,logLevel:`Log-Level`,error:`Fehler`,warning:`Warnung`,info:`Info`,debug:`Debug`,searchPlaceholder:`Logs durchsuchen...`,noResults:`Keine Logs gefunden`,autoRefresh:`Automatisch aktualisieren`},networkMap:{title:`Netzwerkkarte`,hubLabel:`HAMH`,undoMove:`Letzte Verschiebung rückgängig`,resetLayout:`Layout zurücksetzen`,refreshData:`Daten aktualisieren`,fullscreen:`Vollbild`,exitFullscreen:`Vollbild beenden`,legend:`Legende`,controller:`Controller`,hub:`HAMH Hub`,bridge:`Bridge`,device:`Gerät`,failed:`Fehlgeschlagen`},updateChecker:{title:`Software-Updates`,checkNow:`Jetzt prüfen`,currentVersion:`Aktuelle Version`,latestVersion:`Neueste Version`,updateAvailable:`Update verfügbar!`,upToDate:`Du verwendest die neueste Version.`,releaseNotes:`Versionshinweise`,notAvailable:`Update-Prüfung in dieser Version nicht verfügbar`,checkFailed:`Update-Prüfung fehlgeschlagen`,unreachable:`Server nicht erreichbar`,instructionAddon:`Aktualisiere über Einstellungen → Add-ons in Home Assistant.`,instructionDocker:`Ziehe das neueste Image und erstelle deinen Container neu.`,instructionNpm:`Ausführen: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Bridge-Einrichtungsassistent`,stepTemplate:`Vorlage`,stepController:`Controller`,stepBridgeInfo:`Bridge-Info`,stepEntityFilter:`Entity-Filter`,stepFeatureFlags:`Feature Flags`,stepReview:`Überprüfen & Erstellen`,autoCompose:`Geräte automatisch zusammensetzen`,autoForceSyncFlag:`Auto-Synchronisation`,invertCover:`Abdeckungsrichtung umkehren`,invertCoverDescription:`Öffnen/Schließen-Richtung für Abdeckungen tauschen. Verwende dies, wenn deine Abdeckungen die falsche Position in Matter-Controllern anzeigen.`,includeHidden:`Versteckte Entities einschließen`,includeHiddenDescription:`Auch Entities anzeigen, die in Home Assistant als versteckt markiert sind.`,bridgeName:`Bridge-Name`,portLabel:`Port`,portAutoAssign:`Wird automatisch dem nächsten verfügbaren Port zugewiesen`,nameRequired:`Bitte gib einen Bridge-Namen ein`,createFailed:`Bridge konnte nicht erstellt werden`,bridgeInfoDescription:`Gib deiner Bridge einen Namen und Port.`,serverModeLabel:`Server-Modus (eigenständiges Gerät)`,serverModeTooltip:`Stellt Entities als eigenständige Matter-Geräte statt als Bridge-Geräte bereit, z.B. damit Saugroboter mit Apple Home (Siri) und Alexa funktionieren. Das erste Entity ist das primäre Gerät; mehr als ein Gerät pro Node ist experimentell.`,entityFilterDescription:`Konfiguriere, welche Entities in diese Bridge aufgenommen werden sollen.`,includeAll:`Alle Entities einschließen (Platzhalter)`,entityId:`Entity-ID`,includePattern:`Einschlussmuster`,entityFilters:`Entity-Filter`,serverModeEntityHint:`Gib genaue Entity-IDs ein (z.B. vacuum.mein_saugroboter). Die erste ist das primäre Gerät des Nodes.`,templatePreConfigured:`Durch Vorlage vorkonfiguriert. Nach der Erstellung im vollständigen Editor bearbeiten.`,wildcardHint:`Verwende * für alle, oder Muster wie light.*, switch.*`,commaHint:`Gib spezifische Entity-IDs ein, getrennt durch Kommas`,excludePatterns:`Ausschlussmuster (optional)`,excludeHelperText:`Auszuschließende Muster, durch Kommas getrennt`,skipTemplate:`Vorlage überspringen`,creating:`Wird erstellt...`,createBridge:`Bridge erstellen`,searchRules:`Regeln suchen...`,templateDescription:`Wähle eine Vorlage für einen schnellen Start oder überspringe sie, um eine benutzerdefinierte Bridge zu erstellen.`,controllerDescription:`Welchen Matter-Controller wirst du verwenden? Dies optimiert die Feature Flags für deinen Controller.`,controllerHint:`Du kannst Feature Flags jederzeit in den nächsten Schritten oder nach der Bridge-Erstellung anpassen.`,templateApplied:`Vorlage "{{name}}" angewendet. Passe Name und Port unten an.`,filterPreConfiguredFrom:`Filter ist aus der Vorlage "{{name}}" vorkonfiguriert. Du kannst ihn unten anpassen.`,featureFlagsDescription:`Feature Flags steuern, wie Geräte für Matter-Controller bereitgestellt werden.`,recommendedFlags:`Empfohlene Flags für {{name}} sind vorausgewählt.`,selectFlags:`Wähle die Flags, die zu deiner Einrichtung passen.`,reviewDescription:`Überprüfe deine Bridge-Konfiguration:`,bridgesToCreate:`Zu erstellende Bridges ({{count}})`,bridgesCreated:`{{count}} Bridge(s) bereits in dieser Sitzung erstellt`,addAnother:`Weitere hinzufügen`}},_s={common:{loading:`Loading`,notFound:`Not found`,save:`Save`,cancel:`Cancel`,delete:`Delete`,edit:`Edit`,close:`Close`,refresh:`Refresh`,search:`Search`,enabled:`Enabled`,disabled:`Disabled`,online:`Online`,offline:`Offline`,running:`Running`,stopped:`Stopped`,failed:`Failed`,starting:`Starting`,devices:`Devices`,fabrics:`Fabrics`,port:`Port`,unknown:`Unknown`,confirm:`Confirm`,create:`Create`,back:`Back`,next:`Next`,actions:`Actions`,name:`Name`,type:`Type`,error:`Error`,version:`Version`,copy:`Copy`,copied:`Copied!`,copyId:`Copy ID`,later:`Later`,skip:`Skip`,reset:`Reset`,update:`Update`,all:`All`,ascending:`Ascending`,descending:`Descending`,moveUp:`Move up`,moveDown:`Move down`,selectAll:`Select All`,selectNone:`Select None`,live:`Live`,new:`New`,overwrite:`Overwrite`,active:`Active`,property:`Property`,value:`Value`,custom:`Custom`,startAll:`Start All`,stopAll:`Stop All`,restartAll:`Restart All`,import:`Import`,export:`Export`,exportAll:`Export All`,wizard:`Wizard`},nav:{bridges:`Bridges`,devices:`All Devices`,standaloneDevices:`Standalone Devices`,health:`Health & Diagnostics`,diagnostics:`Live Events`,settings:`Settings`,networkMap:`Network Map`,logs:`Logs`,startupOrder:`Startup Order`,lockCredentials:`Lock Credentials`,filterReference:`Filter Reference`,systemLogs:`System Logs`,lightMode:`Light Mode`,darkMode:`Dark Mode`},standaloneDevices:{title:`Standalone Devices`,subtitle:`Each device runs on its own Matter node with its own pairing code, instead of inside a bridge.`,create:`Add device`,name:`Name`,entity:`Entity`,entityHelp:`Pick the Home Assistant entity to expose.`,additionalEntity:`Additional entity`,addEntity:`Add another entity`,multiHint:`The first entity is the primary and names the device. More than one entity per device is experimental.`,creating:`Creating`,empty:`No standalone devices yet. Add one to expose a single entity as its own Matter device.`,noEntity:`no entity`,openBridge:`Open details and pairing`,created:`Standalone device created`,createFailed:`Could not create device`,deleted:`Standalone device deleted`,deleteFailed:`Could not delete device`,entityInvalid:`Enter a single entity id like vacuum.living_room, wildcards are not allowed.`,entityProblem:`entity problem`,confirmDeleteTitle:`Delete standalone device`,confirmDeleteMessage:`This deletes the device's Matter node and unpairs it from your controllers. This cannot be undone.`},status:{error:`Error`,unhealthy:`Unhealthy`,noBridges:`No Bridges`,loadingHealth:`Loading health status...`,unknown:`Unknown`},errorBoundary:{title:`Something went wrong`,fallbackMessage:`An unexpected error occurred.`,reload:`Reload Page`},settings:{title:`Settings`,language:`Language`,languageDescription:`Select the interface language.`,checkUpdates:`Check for Updates`,backupRestore:`Backup & Restore`,exportBackup:`Export Backup`,importBackup:`Import Backup`,dangerZone:`Danger Zone`,resetAll:`Reset All`,about:`About`,username:`Username`,password:`Password`,enterNewPassword:`Enter new password`,enableAuth:`Enable Authentication`,disableAuth:`Disable Authentication`,disableAuthMessage:`This will remove password protection from the web UI. Anyone on your network will be able to access and modify your bridge configuration.`,disableAuthConfirm:`Disable Auth`,usernamePasswordRequired:`Username and password are required`,authSaveFailed:`Failed to save auth settings`,authLoadFailed:`Failed to load auth settings`,authDisabled:`Authentication disabled.`,authRemoveFailed:`Failed to remove auth settings`},dashboard:{title:`Dashboard`,systemOverview:`System Overview`,quickActions:`Quick Actions`,bridgeOverview:`Bridge Overview`,noBridges:`No bridges configured yet.`,createBridge:`Create Bridge`,viewAll:`View All`,totalDevices:`Total Devices`,customize:`Customize`,startAll:`Start All`,stopAll:`Stop All`,restartAll:`Restart All`,welcome:`Welcome to Home Assistant Matter Hub`,welcomeDescription:`Bridge your Home Assistant devices to Matter controllers like Apple Home, Google Home, and Amazon Alexa.`,bridgeWizard:`Bridge Wizard`,setupByArea:`Setup by Area`,manualSetup:`Manual Setup`,areaSetup:`Area Setup`,documentation:`Documentation`,quickNavigation:`Quick Navigation`,haConnection:`HA Connection`,startupOrder:`Startup Order`,lockCredentials:`Lock Credentials`,filterReference:`Filter Reference`,successMessage:`Your bridges are connected to {{count}} controller fabric(s). Devices should now appear in your controller app.`,noBridgesHint:`No bridges configured yet. Use the Bridge Wizard or create one manually.`,customizeDashboard:`Customize dashboard`,bridgeStatusRunning:`{{running}} running`,bridgeStatusFailed:`{{failed}} failed`,devicesFailed:`{{count}} failed`,uptimeFormat:`{{time}}`},bridge:{name:`Bridge Name`,port:`Port`,status:`Status`,pairHint:`Pair this bridge with your controller`,pairDescription:`Open your controller app (Apple Home, Google Home, or Amazon Alexa), add a new accessory, and scan the QR code below or enter the manual pairing code. Make sure your controller is on the same network as Home Assistant.`,failedEntities:`Failed Entities`,serverModeRecommended:`Server Mode Recommended for Robot Vacuums`,serverModeDescription:`This bridge contains a robot vacuum in bridged mode. Apple Home and Alexa will show the bridge as an additional device, resulting in duplicate entries. Enable Server Mode to expose the vacuum as a standalone Matter device for full Siri/Alexa voice command support and no duplicates.`,enableServerMode:`Enable Server Mode`,enabling:`Enabling...`,start:`Start`,stop:`Stop`,restart:`Restart`,factoryReset:`Factory Reset`,pairingCode:`Pairing Code`,openCommissioning:`Open Commissioning Window`,multiPair:`Multi-Fabric Pairing`,deleteBridge:`Delete Bridge`,deleteConfirm:`Are you sure you want to delete this bridge?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} entity/entities could not be loaded.`,clickToShow:`Click to show details.`,clickToHide:`Click to hide details.`,loadFailed:`Failed to load Bridge details`,refreshHint:`New devices and changes on labels are discovered every 30 seconds.`,refreshingStates:`Refreshing states in {{seconds}} seconds...`,serverModeSingleDeviceNote:`Note: Server Mode requires the vacuum to be the only device on this bridge. Please remove other entities from this bridge first, then enable Server Mode in the bridge settings.`,serverModeEnabled:`Server Mode enabled. The bridge will restart with your vacuum as a standalone device.`,serverModeEnableFailed:`Failed to enable Server Mode: {{error}}`,pairing:`Pairing`,bridgeInfo:`Bridge Info`,commissioned:`Commissioned`,addController:`Add Another Controller`,openingCommissioning:`Opening Commissioning Window...`,fabricTooltip:`A fabric represents a connection to a Matter controller (e.g., Apple Home, Google Home, Alexa). Each controller creates one fabric when paired.`,forceSync:`Force Sync`,syncing:`Syncing...`,forceSyncTooltip:`Push all current device states to connected controllers`,editFilters:`Edit Filters`,addFilters:`Add Filters`,bridgeNotRunning:`Bridge is not running. Start the bridge to see pairing information.`,manualCode:`Manual Code`,openingWindow:`Opening Commissioning Window...`,bridgeId:`Bridge ID`,passcode:`Passcode`,discriminator:`Discriminator`,connectedFabrics:`Connected Fabrics ({{count}})`,noFabrics:`No controllers connected yet. Scan the QR code with your Matter controller to pair this bridge.`,entityFilters:`Entity Filters`,noFilters:`No filters configured. All supported entities will be exposed.`,scanQrCode:`Scan this QR code with your Matter controller (Apple Home, Google Home, Alexa, etc.) to add this bridge to another ecosystem.`,appleHomeWarning:`This bridge uses Extended Flat mode. Only disable this if you exclusively use Apple Home.`,googleHomeWarning:`This may cause issues with Apple Home and Google Home.`,resetSuccess:`Bridge Reset successfully`,deleteSuccess:`Bridge deleted successfully`,confirmResetTitle:`Factory Reset Bridge`,confirmResetMessage:`This will remove all pairing information and reset the bridge to its initial state. Connected controllers will lose access. This cannot be undone.`,confirmDeleteTitle:`Delete Bridge`,confirmDeleteMessage:`This will permanently delete the bridge, all its pairings, and entity mappings. Connected controllers will lose access. This cannot be undone.`,importTitle:`Import Bridges`,overwriteExisting:`Overwrite existing bridges`,iconLabel:`Bridge Icon`,google:`Google`,alexa:`Alexa`,serverMode:`Server Mode`,autoForceSync:`Auto Force Sync`,saveSuccess:`Bridge saved`,updateSuccess:`Update completed`,exportFailed:`Export failed`,actionStarted:`Started`,actionStopped:`Stopped`,actionRestarted:`Restarted`,actionFailed:`{{action}} failed`,actionResult:`{{label}} {{count}} bridge(s)`,couldNotLoad:`Could not load bridges`,showingFirst:`Showing first {{count}}`,importParseFailed:`Failed to parse import file. Please select a valid export file.`,importing:`Importing...`,importCount:`Import {{count}} Bridge(s)`,jsonEditor:`JSON editor`,formEditor:`Form editor`},endpoints:{title:`Endpoints`,searchPlaceholder:`Search endpoints...`,sortBy:`Sort`,sortName:`Name`,sortEndpoint:`Endpoint ID`,sortType:`Type`,cardView:`Card View`,treeView:`Tree View`,clusters:`Clusters`,entityUnavailable:`Entity unavailable`,showUnavailable:`Show {{count}} unavailable`,showAll:`Show all entities`,uploadImage:`Upload device image`,removeImage:`Remove custom image`,editMapping:`Edit Entity Mapping`,homeAssistantEntity:`Home Assistant Entity`,noEndpoints:`No endpoints found.`,expandAll:`Expand All`,collapseAll:`Collapse All`,viewAll:`View All Devices`,haState:`HA State`,aboutEndpoint:`About this endpoint`,entityId:`Entity ID`,customName:`Custom Name`,deviceTypeOverride:`Device Type Override`,keyHaAttributes:`Key HA Attributes`,entityMappings:`Entity Mappings`,copyData:`Copy data to clipboard`,behavior:`Behavior`},health:{title:`Health & Diagnostics`,version:`Version`,uptime:`Uptime`,homeAssistant:`Home Assistant`,connected:`Connected`,disconnected:`Disconnected`,bridgeStatus:`Bridge Status`,refreshHealth:`Refresh health data`,exportDiagnostic:`Export Diagnostic`,memory:`Memory`,fabricDetails:`Fabric Details`,sessions:`Sessions`,subscriptions:`Subscriptions`,noFabrics:`No fabrics connected`,systemMetrics:`System Metrics`,heap:`Heap`,rss:`RSS`,external:`External`,systemHealth:`System Health`,fetchFailed:`Failed to fetch health status`,connectionError:`Connection error`,exportFailed:`Failed to export diagnostic data`,restartFailed:`Failed to restart bridge`,unableToLoad:`Unable to load health status`,sortBy:`Sort by`,created:`Created`,ascending:`Ascending`,descending:`Descending`,connectedTo:`Connected to`,controllerWarningsTitle:`Some devices may not show up in a connected controller:`,autoRecovery:`Auto Recovery`,recoveryAttempts:`Recovery attempts`,fabrics:`fabrics`,networkDiagnostics:`Network Diagnostics`,checksPassed:`passed`,checksWarning:`warnings`,checksFailed:`failed`,hideDetails:`Hide details`,showDetails:`Show details`,allChecks:`All Checks`,check:`Check`,statusLabel:`Status`,message:`Message`,networkInterfaces:`Network Interfaces`,interfaceName:`Interface`,refresh:`Refresh`},mapping:{title:`Entity Mappings`,entityId:`Entity ID`,deviceType:`Device Type`,customName:`Custom Name`,status:`Status`,addMapping:`Add Mapping`,editMapping:`Edit Mapping`,deleteMapping:`Delete Mapping`,saved:`Mapping saved for {{entityId}}. Restart the bridge to apply changes.`,saveFailed:`Failed to save mapping: {{error}}`,deleted:`Mapping deleted for {{entityId}}.`,deleteFailed:`Failed to delete mapping.`,matterTag:`Matter Tag`,exportProfile:`Export Mapping Profile`,importProfile:`Import Mapping Profile`,profileName:`Profile Name`,match:`Match`,existing:`Existing`,autoDetect:`Auto-detect (default)`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`,customVendorId:`Custom Vendor ID`,customVendorIdHelp:`Override the numeric Matter Vendor ID (e.g. 0x115F for Aqara). Bridge mode only. Range 1..0xFFFE.`,loadFailed:`Failed to load entity mappings`,noMappings:`No custom entity mappings configured. Use mappings to override Matter device types, set custom names, or disable specific entities.`,applying:`Applying...`,applyCount:`Apply {{count}} Mapping(s)`},notFound:{title:`Page not found`,description:`The page you are looking for does not exist.`,backToDashboard:`Back to Dashboard`},devices:{title:`Devices`,searchPlaceholder:`Search devices...`,filterBridge:`Bridge`,allBridges:`All Bridges`,filterDeviceType:`Device Type`,allTypes:`All Types`,sortBy:`Sort By`,sortBridge:`Bridge`,sortType:`Device Type`,sortName:`Name`,deviceCount:`{{count}} device(s)`,filteredCount:`{{filtered}} of {{total}} devices`},diagnostics:{title:`Live Diagnostics`,stateUpdate:`State Update`,command:`Command`,entityError:`Error`,sessionOpen:`Session Open`,sessionClose:`Session Close`,subscription:`Subscription`,bridgeStart:`Bridge Start`,bridgeStop:`Bridge Stop`,entityWarning:`Warning`,filterEvents:`Filter event types`,clearEvents:`Clear all events`,noEvents:`No events match the current filters.`},startup:{title:`Startup Order`,description:`Drag and drop bridges to set the startup order. Lower positions start first.`,saveSuccess:`Startup order saved successfully`,saveFailed:`Failed to save startup order`,saveChanges:`Save Changes`,unsavedChanges:`You have unsaved changes to the startup order.`,noBridges:`No bridges configured yet.`,saveOrder:`Save Startup Order`},areaSetup:{title:`Area Setup`,heading:`Area-based Bridge Setup`,description:`Automatically create one bridge per Home Assistant area. Each bridge will include all supported entities from that area.`,noAreas:`No areas with supported entities found in Home Assistant. Make sure your devices are assigned to areas in HA.`,selectController:`1. Select Controller (optional)`,selectAreas:`2. Select Areas ({{selected}} of {{total}})`,clear:`Clear`,createBridges:`Create {{count}} Bridge(s)`,results:`Results`,goToBridges:`Go to Bridges`,createdSuccess:`Created {{count}} bridge(s) successfully`,createdPartial:`Created {{succeeded}}, failed {{failed}} bridge(s)`,loadFailed:`Failed to load areas`,creating:`Creating...`,created:`Created`,unknownError:`Unknown error`},lockCredentials:{title:`Lock Credentials`,addCredential:`Add Lock Credential`,editCredential:`Edit Lock Credential`,lockEntityId:`Lock Entity ID`,lockEntityHelperText:`The Home Assistant entity ID of the lock`,pinCode:`PIN Code`,nameOptional:`Name (optional)`,namePlaceholder:`Front Door`,nameHelperText:`Friendly name for this credential`,entityRequired:`Entity ID is required`,pinLength:`PIN must be 4-8 digits`,pinDigitsOnly:`PIN must contain only digits`,saveFailed:`Failed to save`,loadFailed:`Failed to load credentials`,deleteFailed:`Failed to delete`,updateFailed:`Failed to update`,enable:`Enable`,disable:`Disable`,confirmDeleteTitle:`Delete Credential`,confirmDeleteMessage:`This will permanently delete the PIN credential for {{entity}}. This cannot be undone.`},labels:{title:`Filter Reference`,info:`Browse all available filter values for your bridge configuration. Click any value to copy it to your clipboard.`,searchPlaceholder:`Search...`,loadFailed:`Failed to load data`,labelsSection:`Labels`,labelsHint:`Use with filter type "entity_label" or "device_label". You can use either the display name or the label_id.`,noLabels:`No labels found in Home Assistant. Create labels under Settings > Labels.`,displayName:`Display Name`,labelId:`label_id`,areaId:`area_id`,areasSection:`Areas`,areasHint:`Use with filter type "area". Areas are also used for automatic room assignment in Matter controllers.`,noAreas:`No areas found in Home Assistant. Create areas under Settings > Areas.`,otherFilterValues:`Other Filter Values`,domains:`Domains`,domainsHint:`Use with filter type "domain".`,platforms:`Platforms / Integrations`,platformsHint:`Use with filter type "platform".`,entityCategories:`Entity Categories`,entityCategoriesHint:`Use with filter type "entity_category".`,deviceClasses:`Device Classes`,deviceClassesHint:`Use with filter type "device_class".`,deviceNames:`Device Names`,deviceNamesHint:`Use with filter type "device_name".`,productNames:`Product Names`,productNamesHint:`Use with filter type "product_name".`},logs:{title:`System Logs`,logLevel:`Log Level`,error:`Error`,warning:`Warning`,info:`Info`,debug:`Debug`,searchPlaceholder:`Search logs...`,noResults:`No logs found`,autoRefresh:`Auto Refresh`},backup:{title:`Backup & Restore`,description:`Create a full backup of your bridges and entity mappings, or restore from a previous backup.`,configBackup:`Config Backup`,configBackupDesc:`Export bridge configurations and entity mappings.`,configBackupNote:`Bridges will need to be re-commissioned after restore.`,fullBackup:`Full Backup (with Identity)`,fullBackupDesc:`Includes Matter identity files (keypairs, fabric credentials).`,fullBackupWarning:`Preserves commissioning state across restores. DONT SHARE!`,restoreFromBackup:`Restore from Backup`,restoreDesc:`Upload a previously created backup file to restore bridges and configurations.`,restoreTitle:`Restore Backup`,selectBridges:`Select bridges to restore`,overwriteExisting:`Overwrite existing bridges`,includeMappings:`Include entity mappings`,restoreIdentities:`Restore Matter identities (no re-commissioning needed)`,restore:`Restore`,downloadSuccess:`Backup downloaded successfully!`,restartRequired:`Restart Required`,restartMessage:`Bridges have been restored from backup. A restart is required for the changes to take effect.`,restartNote:`The application will restart and you may need to refresh this page.`,restartNow:`Restart Now`,storedBackups:`Stored Backups`,createSnapshot:`Create Backup`,noSnapshots:`No stored backups yet. Backups are created automatically on shutdown or can be created manually.`,downloadSnapshot:`Download`,restoreSnapshot:`Restore`,auto:`Auto`,manual:`Manual`,snapshotCreated:`Backup created successfully!`,snapshotRestored:`Restored {{bridges}} bridges, {{mappings}} mappings, {{identities}} identities.`,confirmRestore:`Confirm Restore`,confirmRestoreMessage:`Are you sure you want to restore from "{{filename}}"? This will overwrite your current configuration.`,restoreWarning:`All existing bridges and configurations will be overwritten. A restart is required after restore.`,confirmDelete:`Delete Backup`,confirmDeleteMessage:`Are you sure you want to delete "{{filename}}"? This action cannot be undone.`,settings:`Backup Settings`,autoBackupLabel:`Automatic Backup`,autoBackupDesc:`Automatically create a full backup when the application shuts down or restarts.`,retentionCount:`Keep Backups`,retentionCountDesc:`Number of backups to keep (oldest are deleted automatically)`},networkMap:{title:`Network Map`,hubLabel:`HAMH`,undoMove:`Undo last move`,resetLayout:`Reset layout`,refreshData:`Refresh data`,fullscreen:`Fullscreen`,exitFullscreen:`Exit Fullscreen`,legend:`Legend`,controller:`Controller`,hub:`HAMH Hub`,bridge:`Bridge`,device:`Device`,failed:`Failed`},updateChecker:{title:`Software Updates`,checkNow:`Check Now`,currentVersion:`Current Version`,latestVersion:`Latest Version`,updateAvailable:`Update available!`,upToDate:`You are running the latest version.`,releaseNotes:`Release Notes`,notAvailable:`Update check not available in this version`,checkFailed:`Failed to check for updates`,unreachable:`Unable to reach server`,instructionAddon:`Update via Settings → Add-ons in Home Assistant.`,instructionDocker:`Pull the latest image and recreate your container.`,instructionNpm:`Run: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Bridge Setup Wizard`,stepTemplate:`Template`,stepController:`Controller`,stepBridgeInfo:`Bridge Info`,stepEntityFilter:`Entity Filter`,stepFeatureFlags:`Feature Flags`,stepReview:`Review & Create`,autoCompose:`Auto Compose Devices`,autoForceSyncFlag:`Auto Force Sync`,invertCover:`Invert Cover Direction`,invertCoverDescription:`Swap open/close direction for covers. Use this if your covers show the wrong position in Matter controllers.`,includeHidden:`Include Hidden Entities`,includeHiddenDescription:`Also expose entities that are marked as hidden in Home Assistant.`,bridgeName:`Bridge Name`,portLabel:`Port`,portAutoAssign:`Automatically assigned to next available port`,nameRequired:`Please enter a bridge name`,createFailed:`Failed to create bridge`,bridgeInfoDescription:`Give your bridge a name and port.`,serverModeLabel:`Server Mode (standalone device)`,serverModeTooltip:`Exposes entities as standalone Matter devices instead of bridged ones, e.g. so robot vacuums work with Apple Home (Siri) and Alexa. The first entity is the primary; more than one device per node is experimental.`,entityFilterDescription:`Configure which entities should be included in this bridge.`,includeAll:`Include all entities (wildcard)`,entityId:`Entity ID`,includePattern:`Include Pattern`,entityFilters:`Entity Filters`,serverModeEntityHint:`Enter exact entity IDs (e.g., vacuum.my_vacuum). The first one is the primary device of the node.`,templatePreConfigured:`Pre-configured by template. Edit in the full editor after creation.`,wildcardHint:`Use * for all, or patterns like light.*, switch.*`,commaHint:`Enter specific entity IDs separated by commas`,excludePatterns:`Exclude Patterns (optional)`,excludeHelperText:`Patterns to exclude, comma-separated`,skipTemplate:`Skip Template`,creating:`Creating...`,createBridge:`Create Bridge`,searchRules:`Search rules...`,templateDescription:`Choose a template to get started quickly, or skip to create a custom bridge.`,controllerDescription:`Which Matter controller will you use? This optimizes feature flags for your controller.`,controllerHint:`You can always adjust feature flags in the next steps or after bridge creation.`,templateApplied:`Template "{{name}}" applied. Customize the name and port below.`,filterPreConfiguredFrom:`Filter is pre-configured from the "{{name}}" template. You can adjust it below.`,featureFlagsDescription:`Feature flags control how devices are exposed to Matter controllers.`,recommendedFlags:`Recommended flags for {{name}} are pre-selected.`,selectFlags:`Select the flags that match your setup.`,reviewDescription:`Review your bridge configuration:`,bridgesToCreate:`Bridges to create ({{count}})`,bridgesCreated:`{{count}} bridge(s) already created in this session`,addAnother:`Add Another`},footer:{github:`GitHub`,documentation:`Documentation`,support:`Support`},languageSwitcher:{disclaimer:`Translations may be incomplete.`,contribute:`Help improve them!`},translationEditor:{title:`Translation Editor`,editLanguage:`Edit Language`,info:`Edit translations directly in your browser. Changes are saved locally and applied instantly. Export your translations to submit them to the project.`,progress:`{{translated}} / {{total}} keys translated`,localEdits:`{{count}} local edit(s)`,searchPlaceholder:`Search keys or values...`,filterAll:`All keys`,filterMissing:`Missing`,filterEdited:`Edited`,exportJson:`Export JSON`,copyJson:`Copy JSON`,copied:`Copied!`,resetAll:`Reset all edits`,resetKey:`Reset to default`,noResults:`No matching translation keys found.`,addLanguage:`Add Language`,newLanguageCode:`Language Code (e.g. pt, ja, ko)`,newLanguageName:`Language Name (e.g. Português)`,addLanguageButton:`Add`,languageExists:`This language already exists.`,codeRequired:`Language code is required.`,nameRequired:`Language name is required.`,removeLanguage:`Remove Language`,removeLanguageConfirm:`Remove custom language "{{name}}"? All local edits for this language will be lost.`,importJson:`Import JSON`,importSuccess:`Imported {{count}} translation(s).`,importFailed:`Failed to import: invalid JSON format.`}},vs={common:{loading:`Cargando`,notFound:`No encontrado`,save:`Guardar`,cancel:`Cancelar`,delete:`Eliminar`,edit:`Editar`,close:`Cerrar`,refresh:`Actualizar`,search:`Buscar`,enabled:`Activado`,disabled:`Desactivado`,online:`En línea`,offline:`Sin conexión`,running:`En ejecución`,stopped:`Detenido`,failed:`Fallido`,starting:`Iniciando`,devices:`Dispositivos`,fabrics:`Fabrics`,port:`Puerto`,unknown:`Desconocido`,confirm:`Confirmar`,create:`Crear`,back:`Atrás`,next:`Siguiente`,actions:`Acciones`,name:`Nombre`,type:`Tipo`,error:`Error`,version:`Versión`,copy:`Copiar`,copied:`¡Copiado!`,copyId:`Copiar ID`,later:`Más tarde`,skip:`Omitir`,reset:`Restablecer`,update:`Actualizar`,all:`Todos`,ascending:`Ascendente`,descending:`Descendente`,moveUp:`Mover arriba`,moveDown:`Mover abajo`,selectAll:`Seleccionar todo`,selectNone:`No seleccionar ninguno`,live:`En vivo`,new:`Nuevo`,overwrite:`Sobrescribir`,active:`Activo`,property:`Propiedad`,value:`Valor`,custom:`Personalizado`,startAll:`Iniciar todos`,stopAll:`Detener todos`,restartAll:`Reiniciar todos`,import:`Importar`,export:`Exportar`,exportAll:`Exportar todo`,wizard:`Asistente`},nav:{bridges:`Bridges`,devices:`Todos los dispositivos`,health:`Estado y diagnósticos`,diagnostics:`Eventos en vivo`,settings:`Configuración`,networkMap:`Mapa de red`,logs:`Registros`,startupOrder:`Orden de inicio`,lockCredentials:`Credenciales de cerradura`,filterReference:`Referencia de filtros`,systemLogs:`Registros del sistema`,lightMode:`Modo claro`,darkMode:`Modo oscuro`},status:{error:`Error`,unhealthy:`No saludable`,noBridges:`Sin Bridges`,loadingHealth:`Cargando estado de salud...`,unknown:`Desconocido`},errorBoundary:{title:`Algo salió mal`,fallbackMessage:`Se produjo un error inesperado.`,reload:`Recargar página`},settings:{title:`Configuración`,language:`Idioma`,languageDescription:`Selecciona el idioma de la interfaz.`,checkUpdates:`Buscar actualizaciones`,backupRestore:`Copia de seguridad y restauración`,exportBackup:`Exportar copia de seguridad`,importBackup:`Importar copia de seguridad`,dangerZone:`Zona peligrosa`,resetAll:`Restablecer todo`,about:`Acerca de`,username:`Nombre de usuario`,password:`Contraseña`,enterNewPassword:`Ingresar nueva contraseña`,enableAuth:`Habilitar autenticación`,disableAuth:`Deshabilitar autenticación`,disableAuthMessage:`Esto eliminará la protección por contraseña de la interfaz web. Cualquiera en su red podrá acceder y modificar la configuración de su bridge.`,disableAuthConfirm:`Deshabilitar autenticación`,usernamePasswordRequired:`Se requiere nombre de usuario y contraseña`,authSaveFailed:`Error al guardar la configuración de autenticación`,authLoadFailed:`Error al cargar la configuración de autenticación`,authDisabled:`Autenticación deshabilitada.`,authRemoveFailed:`Error al eliminar la configuración de autenticación`},dashboard:{title:`Panel de control`,systemOverview:`Resumen del sistema`,quickActions:`Acciones rápidas`,bridgeOverview:`Resumen de Bridges`,noBridges:`No hay bridges configurados.`,createBridge:`Crear Bridge`,viewAll:`Ver todo`,totalDevices:`Total de dispositivos`,customize:`Personalizar`,startAll:`Iniciar todos`,stopAll:`Detener todos`,restartAll:`Reiniciar todos`,welcome:`Bienvenido a Home Assistant Matter Hub`,welcomeDescription:`Conecta tus dispositivos de Home Assistant a controladores Matter como Apple Home, Google Home y Amazon Alexa.`,bridgeWizard:`Asistente de Bridge`,setupByArea:`Configurar por área`,manualSetup:`Configuración manual`,areaSetup:`Configuración por área`,documentation:`Documentación`,quickNavigation:`Navegación rápida`,haConnection:`Conexión HA`,startupOrder:`Orden de inicio`,lockCredentials:`Credenciales de cerradura`,filterReference:`Referencia de filtros`,successMessage:`Tus bridges están conectados a {{count}} fabric(s) de controlador. Los dispositivos deberían aparecer ahora en tu aplicación.`,noBridgesHint:`No hay bridges configurados. Usa el asistente o crea uno manualmente.`,customizeDashboard:`Personalizar panel de control`,bridgeStatusRunning:`{{running}} en ejecución`,bridgeStatusFailed:`{{failed}} fallidos`,devicesFailed:`{{count}} fallidos`,uptimeFormat:`{{time}}`},bridge:{name:`Nombre del Bridge`,port:`Puerto`,status:`Estado`,pairHint:`Vincular este bridge con tu controlador`,pairDescription:`Abre tu aplicación de controlador (Apple Home, Google Home o Amazon Alexa), añade un nuevo accesorio y escanea el código QR o introduce el código de vinculación manual. Asegúrate de que tu controlador esté en la misma red que Home Assistant.`,failedEntities:`Entidades fallidas`,serverModeRecommended:`Modo Servidor recomendado para aspiradoras robot`,serverModeDescription:`Este bridge contiene una aspiradora robot en modo puente. Apple Home y Alexa mostrarán el bridge como dispositivo adicional, creando duplicados. Activa el Modo Servidor para exponer la aspiradora como dispositivo Matter independiente.`,enableServerMode:`Activar Modo Servidor`,enabling:`Activando...`,start:`Iniciar`,stop:`Detener`,restart:`Reiniciar`,factoryReset:`Restablecimiento de fábrica`,pairingCode:`Código de vinculación`,openCommissioning:`Abrir ventana de puesta en servicio`,multiPair:`Vinculación Multi-Fabric`,deleteBridge:`Eliminar Bridge`,deleteConfirm:`¿Estás seguro de que quieres eliminar este bridge?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} entidad(es) no se pudieron cargar.`,clickToShow:`Haz clic para mostrar detalles.`,clickToHide:`Haz clic para ocultar detalles.`,loadFailed:`No se pudieron cargar los detalles del Bridge`,refreshHint:`Los nuevos dispositivos y cambios de etiquetas se detectan cada 30 segundos.`,refreshingStates:`Actualizando estados en {{seconds}} segundos...`,serverModeSingleDeviceNote:`Nota: El Modo Servidor requiere que la aspiradora sea el único dispositivo en este bridge. Elimina primero las otras entidades y luego activa el Modo Servidor en la configuración del bridge.`,serverModeEnabled:`Modo Servidor activado. El bridge se reiniciará con tu aspiradora como dispositivo independiente.`,serverModeEnableFailed:`No se pudo activar el Modo Servidor: {{error}}`,pairing:`Vinculación`,bridgeInfo:`Info del Bridge`,commissioned:`Vinculado`,addController:`Añadir otro controlador`,openingCommissioning:`Abriendo ventana de puesta en servicio...`,fabricTooltip:`Un fabric representa una conexión a un controlador Matter (ej. Apple Home, Google Home, Alexa). Cada controlador crea un fabric cuando se vincula.`,forceSync:`Forzar sincronización`,syncing:`Sincronizando...`,forceSyncTooltip:`Sincronizar todos los estados actuales de los dispositivos con los controladores conectados`,editFilters:`Editar filtros`,addFilters:`Añadir filtros`,bridgeNotRunning:`El bridge no está funcionando. Inicia el bridge para ver la información de vinculación.`,manualCode:`Código manual`,openingWindow:`Abriendo ventana de puesta en servicio...`,bridgeId:`ID del Bridge`,passcode:`Código de acceso`,discriminator:`Discriminador`,connectedFabrics:`Fabrics conectados ({{count}})`,noFabrics:`Ningún controlador conectado. Escanea el código QR con tu controlador Matter.`,entityFilters:`Filtros de entidades`,noFilters:`Sin filtros configurados. Todas las entidades compatibles serán expuestas.`,scanQrCode:`Escanea este código QR con tu controlador Matter (Apple Home, Google Home, Alexa, etc.) para añadir este bridge a otro ecosistema.`,appleHomeWarning:`Este bridge utiliza el modo Plano Extendido. Solo desactive esto si usa exclusivamente Apple Home.`,googleHomeWarning:`Esto puede causar problemas con Apple Home y Google Home.`,resetSuccess:`Bridge restablecido correctamente`,deleteSuccess:`Bridge eliminado correctamente`,confirmResetTitle:`Restablecer Bridge`,confirmResetMessage:`Esto eliminará toda la información de vinculación y restablecerá el bridge a su estado inicial. Los controladores conectados perderán el acceso. Esto no se puede deshacer.`,confirmDeleteTitle:`Eliminar Bridge`,confirmDeleteMessage:`Esto eliminará permanentemente el bridge, todas sus vinculaciones y mapeos de entidades. Los controladores conectados perderán el acceso. Esto no se puede deshacer.`,importTitle:`Importar Bridges`,overwriteExisting:`Sobrescribir bridges existentes`,iconLabel:`Icono del Bridge`,google:`Google`,alexa:`Alexa`,serverMode:`Modo Servidor`,autoForceSync:`Sincronización automática`,saveSuccess:`Bridge guardado`,updateSuccess:`Actualización completada`,exportFailed:`Error en la exportación`,actionStarted:`Iniciado`,actionStopped:`Detenido`,actionRestarted:`Reiniciado`,actionFailed:`{{action}} fallido`,actionResult:`{{label}} {{count}} bridge(s)`,couldNotLoad:`No se pudieron cargar los bridges`,showingFirst:`Mostrando los primeros {{count}}`,importParseFailed:`No se pudo analizar el archivo de importación. Selecciona un archivo de exportación válido.`,importing:`Importando...`,importCount:`Importar {{count}} bridge(s)`,jsonEditor:`Editor JSON`,formEditor:`Editor de formulario`},endpoints:{title:`Endpoints`,searchPlaceholder:`Buscar endpoints...`,sortBy:`Ordenar`,sortName:`Nombre`,sortEndpoint:`ID Endpoint`,sortType:`Tipo`,cardView:`Vista de tarjetas`,treeView:`Vista de árbol`,clusters:`Clusters`,entityUnavailable:`Entidad no disponible`,showUnavailable:`Mostrar {{count}} no disponibles`,showAll:`Mostrar todas las entidades`,uploadImage:`Subir imagen de dispositivo`,removeImage:`Eliminar imagen personalizada`,editMapping:`Editar mapeo de entidad`,homeAssistantEntity:`Entidad Home Assistant`,noEndpoints:`No se encontraron endpoints.`,expandAll:`Expandir todo`,collapseAll:`Contraer todo`,viewAll:`Ver todos los dispositivos`,haState:`Estado HA`,aboutEndpoint:`Acerca de este endpoint`,entityId:`ID de entidad`,customName:`Nombre personalizado`,deviceTypeOverride:`Anulación de tipo de dispositivo`,keyHaAttributes:`Atributos HA clave`,entityMappings:`Mapeos de entidades`,copyData:`Copiar datos al portapapeles`,behavior:`Comportamiento`},health:{title:`Estado y diagnósticos`,version:`Versión`,uptime:`Tiempo de actividad`,homeAssistant:`Home Assistant`,connected:`Conectado`,disconnected:`Desconectado`,bridgeStatus:`Estado de Bridges`,refreshHealth:`Actualizar datos de salud`,exportDiagnostic:`Exportar diagnóstico`,memory:`Memoria`,fabricDetails:`Detalles de Fabric`,sessions:`Sesiones`,subscriptions:`Suscripciones`,noFabrics:`No hay fabrics conectados`,systemMetrics:`Métricas del sistema`,heap:`Heap`,rss:`RSS`,external:`Externo`,systemHealth:`Salud del sistema`,fetchFailed:`No se pudo obtener el estado de salud`,connectionError:`Error de conexión`,exportFailed:`No se pudieron exportar los datos de diagnóstico`,restartFailed:`No se pudo reiniciar el bridge`,unableToLoad:`No se pudo cargar el estado de salud`,sortBy:`Ordenar por`,created:`Creado`,ascending:`Ascendente`,descending:`Descendente`,connectedTo:`Conectado a`,autoRecovery:`Recuperación automática`,recoveryAttempts:`Intentos de recuperación`,fabrics:`fabrics`,networkDiagnostics:`Diagnósticos de red`,checksPassed:`aprobados`,checksWarning:`advertencias`,checksFailed:`fallidos`,hideDetails:`Ocultar detalles`,showDetails:`Mostrar detalles`,allChecks:`Todas las comprobaciones`,check:`Comprobación`,statusLabel:`Estado`,message:`Mensaje`,networkInterfaces:`Interfaces de red`,interfaceName:`Interfaz`,refresh:`Actualizar`},mapping:{title:`Mapeos de entidades`,entityId:`ID Entidad`,deviceType:`Tipo de dispositivo`,customName:`Nombre personalizado`,status:`Estado`,addMapping:`Añadir mapeo`,editMapping:`Editar mapeo`,deleteMapping:`Eliminar mapeo`,saved:`Mapeo guardado para {{entityId}}. Reinicia el bridge para aplicar los cambios.`,saveFailed:`No se pudo guardar el mapeo: {{error}}`,deleted:`Mapeo eliminado para {{entityId}}.`,deleteFailed:`No se pudo eliminar el mapeo.`,matterTag:`Etiqueta Matter`,exportProfile:`Exportar perfil de mapeo`,importProfile:`Importar perfil de mapeo`,profileName:`Nombre del perfil`,match:`Coincidencia`,existing:`Existente`,autoDetect:`Detección automática (predeterminado)`,customProductName:`Nombre de producto personalizado`,customProductNameHelp:`Sobrescribe el nombre del producto (modelo) reportado a los controladores Matter. Algunos controladores (ej. Aqara) muestran esto como el nombre del dispositivo.`,customVendorName:`Nombre de proveedor personalizado`,customVendorNameHelp:`Sobrescribe el nombre del proveedor/fabricante reportado a los controladores Matter.`,customSerialNumber:`Número de serie personalizado`,customSerialNumberHelp:`Sobrescribe el número de serie reportado a los controladores Matter.`,loadFailed:`No se pudieron cargar los mapeos de entidades`,noMappings:`No hay mapeos de entidades configurados. Use mapeos para sobrescribir tipos de dispositivos Matter, establecer nombres personalizados o deshabilitar entidades específicas.`,applying:`Aplicando...`,applyCount:`Aplicar {{count}} mapeo(s)`},notFound:{title:`Página no encontrada`,description:`La página que buscas no existe.`,backToDashboard:`Volver al panel de control`},devices:{title:`Dispositivos`,searchPlaceholder:`Buscar dispositivos...`,filterBridge:`Bridge`,allBridges:`Todos los bridges`,filterDeviceType:`Tipo de dispositivo`,allTypes:`Todos los tipos`,sortBy:`Ordenar por`,sortBridge:`Bridge`,sortType:`Tipo de dispositivo`,sortName:`Nombre`,deviceCount:`{{count}} dispositivo(s)`,filteredCount:`{{filtered}} de {{total}} dispositivos`},diagnostics:{title:`Diagnósticos en vivo`,stateUpdate:`Actualización de estado`,command:`Comando`,entityError:`Error`,sessionOpen:`Sesión abierta`,sessionClose:`Sesión cerrada`,subscription:`Suscripción`,bridgeStart:`Inicio de bridge`,bridgeStop:`Parada de bridge`,entityWarning:`Advertencia`,filterEvents:`Filtrar tipos de eventos`,clearEvents:`Borrar todos los eventos`,noEvents:`No hay eventos que coincidan con los filtros actuales.`},startup:{title:`Orden de inicio`,description:`Arrastra y suelta bridges para establecer el orden de inicio. Las posiciones más bajas se inician primero.`,saveSuccess:`Orden de inicio guardado correctamente`,saveFailed:`Error al guardar el orden de inicio`,saveChanges:`Guardar cambios`,unsavedChanges:`Tienes cambios sin guardar en el orden de inicio.`,noBridges:`No hay bridges configurados aún.`,saveOrder:`Guardar orden de inicio`},areaSetup:{title:`Configuración por área`,heading:`Configuración de bridge basada en áreas`,description:`Crea automáticamente un bridge por área de Home Assistant. Cada bridge incluirá todas las entidades compatibles de esa área.`,noAreas:`No se encontraron áreas con entidades compatibles en Home Assistant. Asegúrate de que tus dispositivos estén asignados a áreas en HA.`,selectController:`1. Seleccionar controlador (opcional)`,selectAreas:`2. Seleccionar áreas ({{selected}} de {{total}})`,clear:`Limpiar`,createBridges:`Crear {{count}} bridge(s)`,results:`Resultados`,goToBridges:`Ir a Bridges`,createdSuccess:`{{count}} bridge(s) creados correctamente`,createdPartial:`Creados {{succeeded}}, fallidos {{failed}} bridge(s)`,loadFailed:`Error al cargar las áreas`,creating:`Creando...`,created:`Creado`,unknownError:`Error desconocido`},lockCredentials:{title:`Credenciales de cerradura`,addCredential:`Añadir credencial`,editCredential:`Editar credencial`,lockEntityId:`ID de entidad de cerradura`,lockEntityHelperText:`El ID de entidad de Home Assistant de la cerradura`,pinCode:`Código PIN`,nameOptional:`Nombre (opcional)`,namePlaceholder:`Puerta principal`,nameHelperText:`Nombre descriptivo para esta credencial`,entityRequired:`El ID de entidad es obligatorio`,pinLength:`El PIN debe tener entre 4 y 8 dígitos`,pinDigitsOnly:`El PIN solo debe contener dígitos`,saveFailed:`Error al guardar`,loadFailed:`Error al cargar credenciales`,deleteFailed:`Error al eliminar`,updateFailed:`Error al actualizar`,enable:`Habilitar`,disable:`Deshabilitar`,confirmDeleteTitle:`Eliminar credencial`,confirmDeleteMessage:`Esto eliminará permanentemente la credencial PIN para {{entity}}. Esto no se puede deshacer.`},labels:{title:`Referencia de filtros`,info:`Explora todos los valores de filtro disponibles para la configuración de tu bridge. Haz clic en cualquier valor para copiarlo al portapapeles.`,searchPlaceholder:`Buscar...`,loadFailed:`Error al cargar datos`,labelsSection:`Etiquetas`,labelsHint:`Úsalo con el tipo de filtro "entity_label" o "device_label". Puedes usar el nombre de visualización o el label_id.`,noLabels:`No se encontraron etiquetas en Home Assistant. Crea etiquetas en Configuración > Etiquetas.`,displayName:`Nombre de visualización`,labelId:`label_id`,areaId:`area_id`,areasSection:`Áreas`,areasHint:`Úsalo con el tipo de filtro "area". Las áreas también se usan para la asignación automática de habitaciones en los controladores Matter.`,noAreas:`No se encontraron áreas en Home Assistant. Crea áreas en Configuración > Áreas.`,otherFilterValues:`Otros valores de filtro`,domains:`Dominios`,domainsHint:`Úsalo con el tipo de filtro "domain".`,platforms:`Plataformas / Integraciones`,platformsHint:`Úsalo con el tipo de filtro "platform".`,entityCategories:`Categorías de entidad`,entityCategoriesHint:`Úsalo con el tipo de filtro "entity_category".`,deviceClasses:`Clases de dispositivo`,deviceClassesHint:`Úsalo con el tipo de filtro "device_class".`,deviceNames:`Nombres de dispositivo`,deviceNamesHint:`Úsalo con el tipo de filtro "device_name".`,productNames:`Nombres de producto`,productNamesHint:`Úsalo con el tipo de filtro "product_name".`},logs:{title:`Registros del sistema`,logLevel:`Nivel de registro`,error:`Error`,warning:`Advertencia`,info:`Información`,debug:`Depuración`,searchPlaceholder:`Buscar registros...`,noResults:`No se encontraron registros`,autoRefresh:`Actualización automática`},backup:{title:`Copia de seguridad y restauración`,description:`Crea una copia de seguridad completa de tus bridges y mapeos de entidades, o restaura desde una copia de seguridad anterior.`,configBackup:`Copia de seguridad de configuración`,configBackupDesc:`Exportar configuraciones de bridge y mapeos de entidades.`,configBackupNote:`Los bridges deberán ser puestos en servicio nuevamente después de la restauración.`,fullBackup:`Copia de seguridad completa (con identidad)`,fullBackupDesc:`Incluye archivos de identidad de Matter (pares de claves, credenciales de fabric).`,fullBackupWarning:`Conserva el estado de puesta en servicio en las restauraciones. ¡NO COMPARTIR!`,restoreFromBackup:`Restaurar desde copia de seguridad`,restoreDesc:`Sube un archivo de copia de seguridad creado previamente para restaurar bridges y configuraciones.`,restoreTitle:`Restaurar copia de seguridad`,selectBridges:`Seleccionar bridges para restaurar`,overwriteExisting:`Sobrescribir bridges existentes`,includeMappings:`Incluir mapeos de entidades`,restoreIdentities:`Restaurar identidades Matter (no requiere nueva puesta en servicio)`,restore:`Restaurar`,downloadSuccess:`¡Copia de seguridad descargada correctamente!`,restartRequired:`Reinicio requerido`,restartMessage:`Los bridges han sido restaurados desde la copia de seguridad. Se requiere un reinicio para que los cambios surtan efecto.`,restartNote:`La aplicación se reiniciará y es posible que debas actualizar esta página.`,restartNow:`Reiniciar ahora`,storedBackups:`Copias de seguridad almacenadas`,createSnapshot:`Crear copia de seguridad`,noSnapshots:`No hay copias de seguridad almacenadas aún. Se crean automáticamente al apagar o se pueden crear manualmente.`,downloadSnapshot:`Descargar`,restoreSnapshot:`Restaurar`,auto:`Automático`,manual:`Manual`,snapshotCreated:`¡Copia de seguridad creada correctamente!`,snapshotRestored:`Restaurados {{bridges}} bridges, {{mappings}} mapeos, {{identities}} identidades.`,confirmRestore:`Confirmar restauración`,confirmRestoreMessage:`¿Estás seguro de que quieres restaurar desde "{{filename}}"? Esto sobrescribirá tu configuración actual.`,restoreWarning:`Todos los bridges y configuraciones existentes serán sobrescritos. Se requiere un reinicio después de la restauración.`,confirmDelete:`Eliminar copia de seguridad`,confirmDeleteMessage:`¿Estás seguro de que quieres eliminar "{{filename}}"? Esta acción no se puede deshacer.`,settings:`Configuración de copia de seguridad`,autoBackupLabel:`Copia de seguridad automática`,autoBackupDesc:`Crea automáticamente una copia de seguridad completa cuando la aplicación se apaga o reinicia.`,retentionCount:`Conservar copias de seguridad`,retentionCountDesc:`Número de copias de seguridad a conservar (las más antiguas se eliminan automáticamente)`},networkMap:{title:`Mapa de red`,hubLabel:`HAMH`,undoMove:`Deshacer último movimiento`,resetLayout:`Restablecer diseño`,refreshData:`Actualizar datos`,fullscreen:`Pantalla completa`,exitFullscreen:`Salir de pantalla completa`,legend:`Leyenda`,controller:`Controlador`,hub:`Hub HAMH`,bridge:`Bridge`,device:`Dispositivo`,failed:`Fallido`},updateChecker:{title:`Actualizaciones de software`,checkNow:`Comprobar ahora`,currentVersion:`Versión actual`,latestVersion:`Última versión`,updateAvailable:`¡Actualización disponible!`,upToDate:`Estás ejecutando la última versión.`,releaseNotes:`Notas de la versión`,notAvailable:`Comprobación de actualizaciones no disponible en esta versión`,checkFailed:`Error al comprobar actualizaciones`,unreachable:`No se puede acceder al servidor`,instructionAddon:`Actualiza en Configuración → Complementos en Home Assistant.`,instructionDocker:`Descarga la última imagen y vuelve a crear tu contenedor.`,instructionNpm:`Ejecuta: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Asistente de configuración de Bridge`,stepTemplate:`Plantilla`,stepController:`Controlador`,stepBridgeInfo:`Info del Bridge`,stepEntityFilter:`Filtro de entidades`,stepFeatureFlags:`Feature Flags`,stepReview:`Revisar y crear`,autoCompose:`Composición automática de dispositivos`,autoForceSyncFlag:`Sincronización forzada automática`,invertCover:`Invertir dirección de persiana`,invertCoverDescription:`Intercambia la dirección de abrir/cerrar para persianas. Usa esto si tus persianas muestran la posición incorrecta en los controladores Matter.`,includeHidden:`Incluir entidades ocultas`,includeHiddenDescription:`También expone entidades que están marcadas como ocultas en Home Assistant.`,bridgeName:`Nombre del Bridge`,portLabel:`Puerto`,portAutoAssign:`Asignado automáticamente al siguiente puerto disponible`,nameRequired:`Por favor, introduce un nombre para el bridge`,createFailed:`Error al crear el bridge`,bridgeInfoDescription:`Dale a tu bridge un nombre y un puerto.`,serverModeLabel:`Modo Servidor (para aspiradoras robot)`,serverModeTooltip:`Requerido para que las aspiradoras robot funcionen con Apple Home (Siri) y Alexa. Los bridges en Modo Servidor admiten solo UN dispositivo.`,entityFilterDescription:`Configura qué entidades deben incluirse en este bridge.`,includeAll:`Incluir todas las entidades (comodín)`,entityId:`ID de entidad`,includePattern:`Patrón de inclusión`,entityFilters:`Filtros de entidades`,serverModeEntityHint:`El Modo Servidor admite solo UN dispositivo. Introduce el ID exacto de la entidad (ej. vacuum.mi_aspiradora).`,templatePreConfigured:`Preconfigurado por plantilla. Edítalo en el editor completo después de la creación.`,wildcardHint:`Usa * para todo, o patrones como light.*, switch.*`,commaHint:`Introduce IDs de entidades específicos separados por comas`,excludePatterns:`Patrones de exclusión (opcional)`,excludeHelperText:`Patrones a excluir, separados por comas`,skipTemplate:`Omitir plantilla`,creating:`Creando...`,createBridge:`Crear Bridge`,searchRules:`Buscar reglas...`,templateDescription:`Elige una plantilla para empezar rápidamente, o omite para crear un bridge personalizado.`,controllerDescription:`¿Qué controlador Matter usarás? Esto optimiza los feature flags para tu controlador.`,controllerHint:`Siempre puedes ajustar los feature flags en los siguientes pasos o después de crear el bridge.`,templateApplied:`Plantilla "{{name}}" aplicada. Personaliza el nombre y el puerto a continuación.`,filterPreConfiguredFrom:`El filtro está preconfigurado desde la plantilla "{{name}}". Puedes ajustarlo a continuación.`,featureFlagsDescription:`Los feature flags controlan cómo se exponen los dispositivos a los controladores Matter.`,recommendedFlags:`Los flags recomendados para {{name}} están preseleccionados.`,selectFlags:`Selecciona los flags que coincidan con tu configuración.`,reviewDescription:`Revisa la configuración de tu bridge:`,bridgesToCreate:`Bridges a crear ({{count}})`,bridgesCreated:`{{count}} bridge(s) ya creados en esta sesión`,addAnother:`Añadir otro`},footer:{github:`GitHub`,documentation:`Documentación`,support:`Soporte`},languageSwitcher:{disclaimer:`Las traducciones pueden estar incompletas.`,contribute:`¡Ayuda a mejorarlas!`},translationEditor:{title:`Editor de traducciones`,editLanguage:`Idioma a editar`,info:`Edita traducciones directamente en tu navegador. Los cambios se guardan localmente y se aplican al instante. Exporta tus traducciones para enviarlas al proyecto.`,progress:`{{translated}} / {{total}} claves traducidas`,localEdits:`{{count}} edición(es) local(es)`,searchPlaceholder:`Buscar claves o valores...`,filterAll:`Todas las claves`,filterMissing:`Faltantes`,filterEdited:`Editadas`,exportJson:`Exportar JSON`,copyJson:`Copiar JSON`,copied:`¡Copiado!`,resetAll:`Restablecer todas las ediciones`,resetKey:`Restablecer al valor predeterminado`,noResults:`No se encontraron claves de traducción coincidentes.`,addLanguage:`Añadir idioma`,newLanguageCode:`Código de idioma (ej. pt, ja, ko)`,newLanguageName:`Nombre del idioma (ej. Português)`,addLanguageButton:`Añadir`,languageExists:`Este idioma ya existe.`,codeRequired:`El código de idioma es obligatorio.`,nameRequired:`El nombre del idioma es obligatorio.`,removeLanguage:`Eliminar idioma`,removeLanguageConfirm:`¿Eliminar el idioma personalizado "{{name}}"? Todas las ediciones locales para este idioma se perderán.`,importJson:`Importar JSON`,importSuccess:`{{count}} traducción(es) importada(s).`,importFailed:`Error en la importación: formato JSON inválido.`}},ys={common:{loading:`Chargement`,notFound:`Introuvable`,save:`Enregistrer`,cancel:`Annuler`,delete:`Supprimer`,edit:`Modifier`,close:`Fermer`,refresh:`Actualiser`,search:`Rechercher`,enabled:`Activé`,disabled:`Désactivé`,online:`En ligne`,offline:`Hors ligne`,running:`En cours`,stopped:`Arrêté`,failed:`Échoué`,starting:`Démarrage`,devices:`Appareils`,fabrics:`Fabrics`,port:`Port`,unknown:`Inconnu`,confirm:`Confirmer`,create:`Créer`,back:`Retour`,next:`Suivant`,actions:`Actions`,name:`Nom`,type:`Type`,error:`Erreur`,version:`Version`,copy:`Copier`,copied:`Copié !`,copyId:`Copier l'ID`,later:`Plus tard`,skip:`Passer`,reset:`Réinitialiser`,update:`Mettre à jour`,all:`Tous`,ascending:`Croissant`,descending:`Décroissant`,moveUp:`Monter`,moveDown:`Descendre`,selectAll:`Tout sélectionner`,selectNone:`Aucune sélection`,live:`En direct`,new:`Nouveau`,overwrite:`Écraser`,active:`Actif`,property:`Propriété`,value:`Valeur`,custom:`Personnalisé`,startAll:`Tout démarrer`,stopAll:`Tout arrêter`,restartAll:`Tout redémarrer`,import:`Importer`,export:`Exporter`,exportAll:`Tout exporter`,wizard:`Assistant`},nav:{bridges:`Bridges`,devices:`Tous les appareils`,health:`Santé & Diagnostics`,diagnostics:`Événements en direct`,settings:`Paramètres`,networkMap:`Carte réseau`,logs:`Journaux`,startupOrder:`Ordre de démarrage`,lockCredentials:`Identifiants verrou`,filterReference:`Référence des filtres`,systemLogs:`Journaux système`,lightMode:`Mode clair`,darkMode:`Mode sombre`},status:{error:`Erreur`,unhealthy:`Défaillant`,noBridges:`Aucun Bridge`,loadingHealth:`Chargement de l'état de santé...`,unknown:`Inconnu`},errorBoundary:{title:`Une erreur est survenue`,fallbackMessage:`Une erreur inattendue s'est produite.`,reload:`Recharger la page`},settings:{title:`Paramètres`,language:`Langue`,languageDescription:`Sélectionnez la langue de l'interface.`,checkUpdates:`Vérifier les mises à jour`,backupRestore:`Sauvegarde & Restauration`,exportBackup:`Exporter la sauvegarde`,importBackup:`Importer la sauvegarde`,dangerZone:`Zone dangereuse`,resetAll:`Tout réinitialiser`,about:`À propos`},dashboard:{title:`Tableau de bord`,systemOverview:`Vue d'ensemble du système`,quickActions:`Actions rapides`,bridgeOverview:`Vue d'ensemble des Bridges`,noBridges:`Aucun bridge configuré.`,createBridge:`Créer un Bridge`,viewAll:`Tout afficher`,totalDevices:`Total des appareils`,customize:`Personnaliser`,startAll:`Tout démarrer`,stopAll:`Tout arrêter`,restartAll:`Tout redémarrer`,welcome:`Bienvenue sur Home Assistant Matter Hub`,welcomeDescription:`Connectez vos appareils Home Assistant aux contrôleurs Matter comme Apple Home, Google Home et Amazon Alexa.`,bridgeWizard:`Assistant Bridge`,setupByArea:`Configurer par zone`,manualSetup:`Configuration manuelle`,areaSetup:`Configuration par zone`,documentation:`Documentation`,quickNavigation:`Navigation rapide`,haConnection:`Connexion HA`,startupOrder:`Ordre de démarrage`,lockCredentials:`Identifiants verrou`,filterReference:`Référence des filtres`,successMessage:`Vos bridges sont connectés à {{count}} fabric(s) contrôleur. Les appareils devraient maintenant apparaître dans votre application.`,noBridgesHint:`Aucun bridge configuré. Utilisez l'assistant ou créez-en un manuellement.`,customizeDashboard:`Personnaliser le tableau de bord`},bridge:{name:`Nom du Bridge`,port:`Port`,status:`Statut`,pairHint:`Associer ce bridge à votre contrôleur`,pairDescription:`Ouvrez votre application contrôleur (Apple Home, Google Home ou Amazon Alexa), ajoutez un nouvel accessoire et scannez le QR code ou entrez le code d'appairage manuel. Assurez-vous que votre contrôleur est sur le même réseau que Home Assistant.`,failedEntities:`Entités échouées`,serverModeRecommended:`Mode Serveur recommandé pour les aspirateurs robots`,serverModeDescription:`Ce bridge contient un aspirateur robot en mode ponté. Apple Home et Alexa afficheront le bridge comme appareil supplémentaire, créant des doublons. Activez le Mode Serveur pour exposer l'aspirateur comme appareil Matter autonome.`,enableServerMode:`Activer le Mode Serveur`,enabling:`Activation...`,start:`Démarrer`,stop:`Arrêter`,restart:`Redémarrer`,factoryReset:`Réinitialisation d'usine`,pairingCode:`Code d'appairage`,openCommissioning:`Ouvrir la fenêtre de mise en service`,multiPair:`Appairage Multi-Fabric`,deleteBridge:`Supprimer le Bridge`,deleteConfirm:`Êtes-vous sûr de vouloir supprimer ce bridge ?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} entité(s) n'ont pas pu être chargées.`,clickToShow:`Cliquez pour afficher les détails.`,clickToHide:`Cliquez pour masquer les détails.`,loadFailed:`Impossible de charger les détails du Bridge`,refreshHint:`Les nouveaux appareils et les changements de labels sont détectés toutes les 30 secondes.`,refreshingStates:`Actualisation dans {{seconds}} secondes...`,serverModeSingleDeviceNote:`Remarque : Le Mode Serveur nécessite que l'aspirateur soit le seul appareil sur ce bridge. Supprimez d'abord les autres entités, puis activez le Mode Serveur dans les paramètres du bridge.`,serverModeEnabled:`Mode Serveur activé. Le bridge va redémarrer avec votre aspirateur comme appareil autonome.`,serverModeEnableFailed:`Impossible d'activer le Mode Serveur : {{error}}`,pairing:`Appairage`,bridgeInfo:`Info Bridge`,commissioned:`Appairé`,addController:`Ajouter un autre contrôleur`,forceSync:`Forcer la synchronisation`,syncing:`Synchronisation...`,editFilters:`Modifier les filtres`,addFilters:`Ajouter des filtres`,bridgeNotRunning:`Le bridge ne fonctionne pas. Démarrez le bridge pour voir les informations d'appairage.`,manualCode:`Code manuel`,bridgeId:`ID Bridge`,passcode:`Code d'accès`,discriminator:`Discriminateur`,connectedFabrics:`Fabrics connectés ({{count}})`,noFabrics:`Aucun contrôleur connecté. Scannez le QR code avec votre contrôleur Matter.`,entityFilters:`Filtres d'entités`,noFilters:`Aucun filtre configuré. Toutes les entités prises en charge seront exposées.`,resetSuccess:`Bridge réinitialisé avec succès`,deleteSuccess:`Bridge supprimé avec succès`,confirmResetTitle:`Réinitialiser le Bridge`,confirmDeleteTitle:`Supprimer le Bridge`,importTitle:`Importer des Bridges`,overwriteExisting:`Écraser les bridges existants`,iconLabel:`Icône du Bridge`,google:`Google`,alexa:`Alexa`,serverMode:`Mode Serveur`,autoForceSync:`Synchronisation automatique`,saveSuccess:`Bridge enregistré`,updateSuccess:`Mise à jour terminée`,exportFailed:`Échec de l'export`,actionStarted:`Démarré`,actionStopped:`Arrêté`,actionRestarted:`Redémarré`,actionFailed:`{{action}} échoué`,actionResult:`{{label}} {{count}} bridge(s)`,couldNotLoad:`Impossible de charger les bridges`,showingFirst:`Affichage des {{count}} premiers`,importParseFailed:`Impossible d'analyser le fichier d'import. Veuillez sélectionner un fichier d'export valide.`,importing:`Importation...`,importCount:`Importer {{count}} bridge(s)`,jsonEditor:`Éditeur JSON`,formEditor:`Éditeur de formulaire`},endpoints:{title:`Points de terminaison`,searchPlaceholder:`Rechercher des endpoints...`,sortBy:`Trier`,sortName:`Nom`,sortEndpoint:`ID Endpoint`,sortType:`Type`,cardView:`Vue en cartes`,treeView:`Vue arborescente`,clusters:`Clusters`,entityUnavailable:`Entité indisponible`,showUnavailable:`Afficher {{count}} indisponibles`,showAll:`Afficher toutes les entités`,uploadImage:`Télécharger une image d'appareil`,removeImage:`Supprimer l'image personnalisée`,editMapping:`Modifier le mappage d'entité`,homeAssistantEntity:`Entité Home Assistant`,noEndpoints:`Aucun endpoint trouvé.`,expandAll:`Tout développer`,collapseAll:`Tout réduire`,viewAll:`Voir tous les appareils`,haState:`État HA`,aboutEndpoint:`À propos de cet endpoint`,entityId:`ID Entité`,customName:`Nom personnalisé`,deviceTypeOverride:`Remplacement du type d'appareil`,keyHaAttributes:`Attributs HA clés`,entityMappings:`Mappages d'entités`,copyData:`Copier les données dans le presse-papiers`,behavior:`Comportement`},health:{title:`Santé & Diagnostics`,version:`Version`,uptime:`Temps de fonctionnement`,homeAssistant:`Home Assistant`,connected:`Connecté`,disconnected:`Déconnecté`,bridgeStatus:`Statut des Bridges`,refreshHealth:`Actualiser les données de santé`,exportDiagnostic:`Exporter le diagnostic`,memory:`Mémoire`,fabricDetails:`Détails Fabric`,sessions:`Sessions`,subscriptions:`Abonnements`,noFabrics:`Aucun fabric connecté`,systemMetrics:`Métriques système`,heap:`Heap`,rss:`RSS`,external:`Externe`,systemHealth:`Santé du système`,fetchFailed:`Impossible de récupérer l'état de santé`,connectionError:`Erreur de connexion`,exportFailed:`Impossible d'exporter les données de diagnostic`,restartFailed:`Impossible de redémarrer le bridge`,unableToLoad:`Impossible de charger l'état de santé`,sortBy:`Trier par`,created:`Créé`,ascending:`Croissant`,descending:`Décroissant`,connectedTo:`Connecté à`,autoRecovery:`Récupération automatique`,recoveryAttempts:`Tentatives de récupération`},mapping:{title:`Mappages d'entités`,entityId:`ID Entité`,deviceType:`Type d'appareil`,customName:`Nom personnalisé`,status:`Statut`,addMapping:`Ajouter un mappage`,editMapping:`Modifier le mappage`,deleteMapping:`Supprimer le mappage`,saved:`Mappage enregistré pour {{entityId}}. Redémarrez le bridge pour appliquer les modifications.`,saveFailed:`Impossible d'enregistrer le mappage : {{error}}`,deleted:`Mappage supprimé pour {{entityId}}.`,deleteFailed:`Impossible de supprimer le mappage.`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},languageSwitcher:{disclaimer:`Les traductions peuvent être incomplètes.`,contribute:`Aidez à les améliorer !`},translationEditor:{title:`Éditeur de traductions`,editLanguage:`Langue à modifier`,info:`Modifiez les traductions directement dans votre navigateur. Les modifications sont enregistrées localement et appliquées instantanément. Exportez vos traductions pour les soumettre au projet.`,progress:`{{translated}} / {{total}} clés traduites`,localEdits:`{{count}} modification(s) locale(s)`,searchPlaceholder:`Rechercher des clés ou valeurs...`,filterAll:`Toutes les clés`,filterMissing:`Manquantes`,filterEdited:`Modifiées`,exportJson:`Exporter JSON`,copyJson:`Copier JSON`,copied:`Copié !`,resetAll:`Réinitialiser toutes les modifications`,resetKey:`Réinitialiser par défaut`,noResults:`Aucune clé de traduction correspondante trouvée.`,addLanguage:`Ajouter une langue`,newLanguageCode:`Code langue (ex. pt, ja, ko)`,newLanguageName:`Nom de la langue (ex. Português)`,addLanguageButton:`Ajouter`,languageExists:`Cette langue existe déjà.`,codeRequired:`Le code langue est requis.`,nameRequired:`Le nom de la langue est requis.`,removeLanguage:`Supprimer la langue`,importJson:`Importer JSON`,importSuccess:`{{count}} traduction(s) importée(s).`,importFailed:`Échec de l'import : format JSON invalide.`},notFound:{title:`Page introuvable`,description:`La page que vous recherchez n'existe pas.`,backToDashboard:`Retour au tableau de bord`},footer:{github:`GitHub`,documentation:`Documentation`}},bs={common:{loading:`Betöltés`,notFound:`Nem található`,save:`Mentés`,cancel:`Mégse`,delete:`Törlés`,edit:`Szerkesztés`,close:`Bezárás`,refresh:`Frissítés`,search:`Keresés`,enabled:`Engedélyezve`,disabled:`Letiltva`,online:`Online`,offline:`Offline`,running:`Fut`,stopped:`Leállítva`,failed:`Sikertelen`,starting:`Indítás`,devices:`Eszközök`,fabrics:`Fabricok`,port:`Port`,unknown:`Ismeretlen`,confirm:`Megerősítés`,create:`Létrehozás`,back:`Vissza`,next:`Tovább`,actions:`Műveletek`,name:`Név`,type:`Típus`,error:`Hiba`,version:`Verzió`,copy:`Másolás`,copied:`Másolva!`,copyId:`Azonosító másolása`,later:`Később`,skip:`Kihagyás`,reset:`Visszaállítás`,update:`Frissítés`,all:`Összes`,ascending:`Növekvő`,descending:`Csökkenő`,moveUp:`Mozgatás felfelé`,moveDown:`Mozgatás lefelé`,selectAll:`Összes kijelölése`,selectNone:`Kijelölés megszüntetése`,live:`Élő`,new:`Új`,overwrite:`Felülírás`,active:`Aktív`,property:`Tulajdonság`,value:`Érték`,custom:`Egyéni`,startAll:`Összes indítása`,stopAll:`Összes leállítása`,restartAll:`Összes újraindítása`,import:`Importálás`,export:`Exportálás`,exportAll:`Összes exportálása`,wizard:`Varázsló`},nav:{bridges:`Bridge-ek`,devices:`Összes eszköz`,standaloneDevices:`Önálló eszközök`,health:`Állapot és diagnosztika`,diagnostics:`Élő események`,settings:`Beállítások`,networkMap:`Hálózati térkép`,logs:`Naplók`,startupOrder:`Indítási sorrend`,lockCredentials:`Zár hitelesítő adatok`,filterReference:`Szűrő referencia`,systemLogs:`Rendszernaplók`,lightMode:`Világos mód`,darkMode:`Sötét mód`},standaloneDevices:{title:`Önálló eszközök`,subtitle:`Minden eszköz saját Matter csomóponton fut, saját párosítási kóddal, nem pedig egy bridge-en belül.`,create:`Eszköz hozzáadása`,name:`Név`,entity:`Entitás`,entityHelp:`Pontosan egy entitás jelenik meg ennél az eszköznél.`,creating:`Létrehozás`,empty:`Még nincsenek önálló eszközök. Adjon hozzá egyet, hogy egyetlen entitást saját Matter eszközként tegyen elérhetővé.`,noEntity:`nincs entitás`,openBridge:`Részletek és párosítás megnyitása`,created:`Önálló eszköz létrehozva`,createFailed:`Az eszközt nem sikerült létrehozni`,deleted:`Önálló eszköz törölve`,deleteFailed:`Az eszközt nem sikerült törölni`},status:{error:`Hiba`,unhealthy:`Nem megfelelő`,noBridges:`Nincs Bridge`,loadingHealth:`Állapot betöltése...`,unknown:`Ismeretlen`},errorBoundary:{title:`Valami hiba történt`,fallbackMessage:`Váratlan hiba történt.`,reload:`Oldal újratöltése`},settings:{title:`Beállítások`,language:`Nyelv`,languageDescription:`Válassza ki a felület nyelvét.`,checkUpdates:`Frissítések keresése`,backupRestore:`Mentés és visszaállítás`,exportBackup:`Mentés exportálása`,importBackup:`Mentés importálása`,dangerZone:`Veszélyes műveletek`,resetAll:`Összes visszaállítása`,about:`Névjegy`,username:`Felhasználónév`,password:`Jelszó`,enterNewPassword:`Adja meg az új jelszót`,enableAuth:`Hitelesítés engedélyezése`,disableAuth:`Hitelesítés letiltása`,disableAuthMessage:`Ez eltávolítja a jelszavas védelmet a webes felületről. A hálózaton bárki hozzáférhet a bridge konfigurációjához és módosíthatja azt.`,disableAuthConfirm:`Hitelesítés letiltása`,usernamePasswordRequired:`A felhasználónév és a jelszó megadása kötelező`,authSaveFailed:`A hitelesítési beállítások mentése nem sikerült`,authLoadFailed:`A hitelesítési beállítások betöltése nem sikerült`,authDisabled:`Hitelesítés letiltva.`,authRemoveFailed:`A hitelesítési beállítások eltávolítása nem sikerült`},dashboard:{title:`Irányítópult`,systemOverview:`Rendszer áttekintése`,quickActions:`Gyors műveletek`,bridgeOverview:`Bridge áttekintés`,noBridges:`Még nincsenek bridge-ek konfigurálva.`,createBridge:`Bridge létrehozása`,viewAll:`Összes megtekintése`,totalDevices:`Eszközök száma`,customize:`Testreszabás`,startAll:`Összes indítása`,stopAll:`Összes leállítása`,restartAll:`Összes újraindítása`,welcome:`Üdvözli a Home Assistant Matter Hub`,welcomeDescription:`Csatlakoztassa Home Assistant eszközeit Matter vezérlőkhöz, mint az Apple Home, Google Home és Amazon Alexa.`,bridgeWizard:`Bridge varázsló`,setupByArea:`Beállítás terület szerint`,manualSetup:`Kézi beállítás`,areaSetup:`Terület beállítása`,documentation:`Dokumentáció`,quickNavigation:`Gyors navigáció`,haConnection:`HA kapcsolat`,startupOrder:`Indítási sorrend`,lockCredentials:`Hitelesítő adatok zárolása`,filterReference:`Szűrő referencia`,successMessage:`A bridge-ek {{count}} vezérlő fabric-hoz csatlakoznak. Az eszközöknek mostantól meg kell jelenniük a vezérlő alkalmazásában.`,noBridgesHint:`Még nincsenek bridge-ek konfigurálva. Használja a Bridge varázslót, vagy hozzon létre egyet kézzel.`,customizeDashboard:`Irányítópult testreszabása`,bridgeStatusRunning:`{{running}} fut`,bridgeStatusFailed:`{{failed}} sikertelen`,devicesFailed:`{{count}} sikertelen`,uptimeFormat:`{{time}}`},bridge:{name:`Bridge neve`,port:`Port`,status:`Állapot`,pairHint:`Párosítsa ezt a Bridge-et a vezérlőjével`,pairDescription:`Nyissa meg a vezérlő alkalmazását (Apple Home, Google Home vagy Amazon Alexa), adjon hozzá egy új tartozékot, majd olvassa be az alábbi QR-kódot vagy adja meg a kézi párosítási kódot. Győződjön meg róla, hogy a vezérlő ugyanazon a hálózaton van, mint a Home Assistant.`,failedEntities:`Sikertelen entitások`,serverModeRecommended:`Server Mode ajánlott robotporszívókhoz`,serverModeDescription:`Ez a Bridge egy robotporszívót tartalmaz Bridge módban. Az Apple Home és az Alexa a Bridge-et további eszközként jeleníti meg, ami duplikált bejegyzéseket eredményez. Engedélyezze a Server Mode-ot, hogy a porszívót önálló Matter eszközként tegye elérhetővé, a teljes Siri/Alexa hangvezérlés támogatásával és duplikációk nélkül.`,enableServerMode:`Server Mode engedélyezése`,enabling:`Engedélyezés...`,start:`Indítás`,stop:`Leállítás`,restart:`Újraindítás`,factoryReset:`Gyári visszaállítás`,pairingCode:`Párosítási kód`,openCommissioning:`Üzembe helyezési ablak megnyitása`,multiPair:`Több-Fabric párosítás`,deleteBridge:`Bridge törlése`,deleteConfirm:`Biztosan törli ezt a Bridge-et?`,featureFlags:`Funkciójelzők`,failedEntitiesCount:`{{count}} entitást nem sikerült betölteni.`,clickToShow:`Kattintson a részletek megjelenítéséhez.`,clickToHide:`Kattintson a részletek elrejtéséhez.`,loadFailed:`Nem sikerült betölteni a Bridge részleteit`,refreshHint:`Az új eszközöket és a címkék változásait 30 másodpercenként észleli a rendszer.`,refreshingStates:`Állapotok frissítése {{seconds}} másodperc múlva...`,serverModeSingleDeviceNote:`Megjegyzés: a Server Mode megköveteli, hogy a porszívó legyen az egyetlen eszköz ezen a Bridge-en. Először távolítsa el a többi entitást erről a Bridge-ről, majd engedélyezze a Server Mode-ot a Bridge beállításaiban.`,serverModeEnabled:`Server Mode engedélyezve. A Bridge újraindul, a porszívóval mint önálló eszközzel.`,serverModeEnableFailed:`Nem sikerült engedélyezni a Server Mode-ot: {{error}}`,pairing:`Párosítás`,bridgeInfo:`Bridge információ`,commissioned:`Üzembe helyezve`,addController:`Másik vezérlő hozzáadása`,openingCommissioning:`Üzembe helyezési ablak megnyitása...`,fabricTooltip:`A Fabric egy Matter vezérlővel (pl. Apple Home, Google Home, Alexa) létesített kapcsolatot jelöl. Minden vezérlő egy Fabric-et hoz létre párosításkor.`,forceSync:`Kényszerített szinkronizálás`,syncing:`Szinkronizálás...`,forceSyncTooltip:`Az összes jelenlegi eszközállapot leküldése a csatlakoztatott vezérlőkhöz`,editFilters:`Szűrők szerkesztése`,addFilters:`Szűrők hozzáadása`,bridgeNotRunning:`A Bridge nem fut. Indítsa el a Bridge-et a párosítási információk megtekintéséhez.`,manualCode:`Kézi kód`,openingWindow:`Üzembe helyezési ablak megnyitása...`,bridgeId:`Bridge azonosító`,passcode:`Jelszó`,discriminator:`Diszkriminátor`,connectedFabrics:`Csatlakoztatott Fabric-ek ({{count}})`,noFabrics:`Még nincs csatlakoztatott vezérlő. Olvassa be a QR-kódot a Matter vezérlőjével a Bridge párosításához.`,entityFilters:`Entitásszűrők`,noFilters:`Nincsenek beállított szűrők. Az összes támogatott entitás elérhető lesz.`,scanQrCode:`Olvassa be ezt a QR-kódot a Matter vezérlőjével (Apple Home, Google Home, Alexa stb.), hogy hozzáadja ezt a Bridge-et egy másik ökoszisztémához.`,appleHomeWarning:`Ez a Bridge Extended Flat módot használ. Csak akkor tiltsa le, ha kizárólag Apple Home-ot használ.`,googleHomeWarning:`Ez problémákat okozhat az Apple Home és a Google Home esetén.`,resetSuccess:`A Bridge sikeresen visszaállítva`,deleteSuccess:`A Bridge sikeresen törölve`,confirmResetTitle:`Bridge gyári visszaállítása`,confirmResetMessage:`Ez eltávolítja az összes párosítási információt, és visszaállítja a Bridge-et a kezdeti állapotába. A csatlakoztatott vezérlők elveszítik a hozzáférést. Ez nem vonható vissza.`,confirmDeleteTitle:`Bridge törlése`,confirmDeleteMessage:`Ez véglegesen törli a Bridge-et, az összes párosítását és entitás-hozzárendelését. A csatlakoztatott vezérlők elveszítik a hozzáférést. Ez nem vonható vissza.`,importTitle:`Bridge-ek importálása`,overwriteExisting:`Meglévő Bridge-ek felülírása`,iconLabel:`Bridge ikon`,google:`Google`,alexa:`Alexa`,serverMode:`Server Mode`,autoForceSync:`Automatikus kényszerített szinkronizálás`,saveSuccess:`Bridge mentve`,updateSuccess:`Frissítés befejezve`,exportFailed:`Az exportálás sikertelen`,actionStarted:`Elindítva`,actionStopped:`Leállítva`,actionRestarted:`Újraindítva`,actionFailed:`{{action}} sikertelen`,actionResult:`{{label}} {{count}} Bridge`,couldNotLoad:`Nem sikerült betölteni a Bridge-eket`,showingFirst:`Első {{count}} megjelenítése`,importParseFailed:`Az importálási fájl feldolgozása sikertelen. Válasszon érvényes exportfájlt.`,importing:`Importálás...`,importCount:`{{count}} Bridge importálása`,jsonEditor:`JSON-szerkesztő`,formEditor:`Űrlapszerkesztő`},endpoints:{title:`Endpointok`,searchPlaceholder:`Endpointok keresése...`,sortBy:`Rendezés`,sortName:`Név`,sortEndpoint:`Endpoint azonosító`,sortType:`Típus`,cardView:`Kártyanézet`,treeView:`Fanézet`,clusters:`Klaszterek`,entityUnavailable:`Az entitás nem érhető el`,showUnavailable:`{{count}} nem elérhető megjelenítése`,showAll:`Összes entitás megjelenítése`,uploadImage:`Eszközkép feltöltése`,removeImage:`Egyéni kép eltávolítása`,editMapping:`Entitás-hozzárendelés szerkesztése`,homeAssistantEntity:`Home Assistant entitás`,noEndpoints:`Nem található endpoint.`,expandAll:`Összes kibontása`,collapseAll:`Összes összecsukása`,viewAll:`Összes eszköz megtekintése`,haState:`HA állapot`,aboutEndpoint:`Erről az endpointról`,entityId:`Entitásazonosító`,customName:`Egyéni név`,deviceTypeOverride:`Eszköztípus felülbírálása`,keyHaAttributes:`Fő HA attribútumok`,entityMappings:`Entitás-hozzárendelések`,copyData:`Adatok másolása a vágólapra`,behavior:`Viselkedés`},health:{title:`Állapot és diagnosztika`,version:`Verzió`,uptime:`Üzemidő`,homeAssistant:`Home Assistant`,connected:`Csatlakoztatva`,disconnected:`Leválasztva`,bridgeStatus:`Bridge állapota`,refreshHealth:`Állapotadatok frissítése`,exportDiagnostic:`Diagnosztika exportálása`,memory:`Memória`,fabricDetails:`Fabric részletei`,sessions:`Munkamenetek`,subscriptions:`Feliratkozások`,noFabrics:`Nincs csatlakoztatott Fabric`,systemMetrics:`Rendszermetrikák`,heap:`Heap`,rss:`RSS`,external:`Külső`,systemHealth:`Rendszerállapot`,fetchFailed:`Az állapot lekérése sikertelen`,connectionError:`Kapcsolódási hiba`,exportFailed:`A diagnosztikai adatok exportálása sikertelen`,restartFailed:`A Bridge újraindítása sikertelen`,unableToLoad:`Az állapot nem tölthető be`,sortBy:`Rendezés`,created:`Létrehozva`,ascending:`Növekvő`,descending:`Csökkenő`,connectedTo:`Csatlakoztatva ehhez:`,autoRecovery:`Automatikus helyreállítás`,recoveryAttempts:`Helyreállítási kísérletek`,fabrics:`Fabric`,networkDiagnostics:`Hálózati diagnosztika`,checksPassed:`sikeres`,checksWarning:`figyelmeztetés`,checksFailed:`sikertelen`,hideDetails:`Részletek elrejtése`,showDetails:`Részletek megjelenítése`,allChecks:`Összes ellenőrzés`,check:`Ellenőrzés`,statusLabel:`Állapot`,message:`Üzenet`,networkInterfaces:`Hálózati interfészek`,interfaceName:`Interfész`,refresh:`Frissítés`},mapping:{title:`Entitás-hozzárendelések`,entityId:`Entitásazonosító`,deviceType:`Eszköztípus`,customName:`Egyéni név`,status:`Állapot`,addMapping:`Hozzárendelés hozzáadása`,editMapping:`Hozzárendelés szerkesztése`,deleteMapping:`Hozzárendelés törlése`,saved:`Hozzárendelés mentve a következőhöz: {{entityId}}. A módosítások alkalmazásához indítsa újra a Bridge-et.`,saveFailed:`Nem sikerült menteni a hozzárendelést: {{error}}`,deleted:`Hozzárendelés törölve a következőhöz: {{entityId}}.`,deleteFailed:`Nem sikerült törölni a hozzárendelést.`,matterTag:`Matter címke`,exportProfile:`Hozzárendelési profil exportálása`,importProfile:`Hozzárendelési profil importálása`,profileName:`Profil neve`,match:`Egyezés`,existing:`Meglévő`,autoDetect:`Automatikus felismerés (alapértelmezett)`,customProductName:`Egyéni terméknév`,customProductNameHelp:`Felülírja a Matter vezérlőknek jelentett terméknevet (modell). Egyes vezérlők (pl. Aqara) ezt az eszköz neveként jelenítik meg.`,customVendorName:`Egyéni gyártónév`,customVendorNameHelp:`Felülírja a Matter vezérlőknek jelentett gyártó/szállító nevet.`,customSerialNumber:`Egyéni sorozatszám`,customSerialNumberHelp:`Felülírja a Matter vezérlőknek jelentett sorozatszámot.`,customVendorId:`Egyéni gyártóazonosító`,customVendorIdHelp:`Felülírja a numerikus Matter gyártóazonosítót (pl. 0x115F az Aqara esetén). Csak Bridge módban. Tartomány: 1..0xFFFE.`,loadFailed:`Nem sikerült betölteni az entitás-hozzárendeléseket`,noMappings:`Nincsenek beállítva egyéni entitás-hozzárendelések. A hozzárendelésekkel felülírhatja a Matter eszköztípusokat, egyéni neveket állíthat be, vagy letilthat bizonyos entitásokat.`,applying:`Alkalmazás...`,applyCount:`{{count}} hozzárendelés alkalmazása`},notFound:{title:`Az oldal nem található`,description:`A keresett oldal nem létezik.`,backToDashboard:`Vissza az irányítópultra`},devices:{title:`Eszközök`,searchPlaceholder:`Eszközök keresése...`,filterBridge:`Bridge`,allBridges:`Összes Bridge`,filterDeviceType:`Eszköztípus`,allTypes:`Összes típus`,sortBy:`Rendezés`,sortBridge:`Bridge`,sortType:`Eszköztípus`,sortName:`Név`,deviceCount:`{{count}} eszköz`,filteredCount:`{{total}} eszközből {{filtered}}`},diagnostics:{title:`Élő diagnosztika`,stateUpdate:`Állapotfrissítés`,command:`Parancs`,entityError:`Hiba`,sessionOpen:`Munkamenet megnyitva`,sessionClose:`Munkamenet lezárva`,subscription:`Feliratkozás`,bridgeStart:`Bridge indítása`,bridgeStop:`Bridge leállítása`,entityWarning:`Figyelmeztetés`,filterEvents:`Eseménytípusok szűrése`,clearEvents:`Összes esemény törlése`,noEvents:`Egyetlen esemény sem felel meg a jelenlegi szűrőknek.`},startup:{title:`Indítási sorrend`,description:`Húzza át a Bridge-eket az indítási sorrend beállításához. Az alacsonyabb pozíciók indulnak előbb.`,saveSuccess:`Az indítási sorrend sikeresen mentve`,saveFailed:`Nem sikerült menteni az indítási sorrendet`,saveChanges:`Módosítások mentése`,unsavedChanges:`Mentetlen módosításai vannak az indítási sorrenden.`,noBridges:`Még nincsenek Bridge-ek beállítva.`,saveOrder:`Indítási sorrend mentése`},areaSetup:{title:`Terület beállítása`,heading:`Terület alapú Bridge beállítás`,description:`Automatikusan létrehoz egy Bridge-et minden Home Assistant területhez. Minden Bridge tartalmazza az adott terület összes támogatott entitását.`,noAreas:`Nem található támogatott entitásokkal rendelkező terület a Home Assistant rendszerben. Győződj meg róla, hogy az eszközök hozzá vannak rendelve területekhez a HA-ban.`,selectController:`1. Vezérlő kiválasztása (opcionális)`,selectAreas:`2. Területek kiválasztása ({{selected}} / {{total}})`,clear:`Törlés`,createBridges:`{{count}} Bridge létrehozása`,results:`Eredmények`,goToBridges:`Ugrás a Bridge-ekhez`,createdSuccess:`{{count}} Bridge sikeresen létrehozva`,createdPartial:`{{succeeded}} létrehozva, {{failed}} Bridge sikertelen`,loadFailed:`A területek betöltése sikertelen`,creating:`Létrehozás...`,created:`Létrehozva`,unknownError:`Ismeretlen hiba`},lockCredentials:{title:`Zár hitelesítő adatok`,addCredential:`Zár hitelesítő adat hozzáadása`,editCredential:`Zár hitelesítő adat szerkesztése`,lockEntityId:`Zár entitás azonosító`,lockEntityHelperText:`A zár Home Assistant entitás azonosítója`,pinCode:`PIN-kód`,nameOptional:`Név (opcionális)`,namePlaceholder:`Bejárati ajtó`,nameHelperText:`Barátságos név ehhez a hitelesítő adathoz`,entityRequired:`Az entitás azonosító kötelező`,pinLength:`A PIN-kódnak 4-8 számjegyűnek kell lennie`,pinDigitsOnly:`A PIN-kód csak számjegyeket tartalmazhat`,saveFailed:`A mentés sikertelen`,loadFailed:`A hitelesítő adatok betöltése sikertelen`,deleteFailed:`A törlés sikertelen`,updateFailed:`A frissítés sikertelen`,enable:`Engedélyezés`,disable:`Letiltás`,confirmDeleteTitle:`Hitelesítő adat törlése`,confirmDeleteMessage:`Ez véglegesen törli a(z) {{entity}} PIN-kód hitelesítő adatát. Ez nem vonható vissza.`},labels:{title:`Szűrő referencia`,info:`Böngészd a Bridge konfigurációhoz elérhető összes szűrőértéket. Kattints bármelyik értékre a vágólapra másoláshoz.`,searchPlaceholder:`Keresés...`,loadFailed:`Az adatok betöltése sikertelen`,labelsSection:`Címkék`,labelsHint:`Használd az "entity_label" vagy "device_label" szűrőtípussal. Használhatod a megjelenített nevet vagy a label_id értéket is.`,noLabels:`Nem található címke a Home Assistant rendszerben. Hozz létre címkéket a Beállítások > Címkék menüben.`,displayName:`Megjelenített név`,labelId:`label_id`,areaId:`area_id`,areasSection:`Területek`,areasHint:`Használd az "area" szűrőtípussal. A területeket az automatikus szobahozzárendeléshez is használják a Matter vezérlőkben.`,noAreas:`Nem található terület a Home Assistant rendszerben. Hozz létre területeket a Beállítások > Területek menüben.`,otherFilterValues:`Egyéb szűrőértékek`,domains:`Domainek`,domainsHint:`Használd a "domain" szűrőtípussal.`,platforms:`Platformok / integrációk`,platformsHint:`Használd a "platform" szűrőtípussal.`,entityCategories:`Entitáskategóriák`,entityCategoriesHint:`Használd az "entity_category" szűrőtípussal.`,deviceClasses:`Eszközosztályok`,deviceClassesHint:`Használd a "device_class" szűrőtípussal.`,deviceNames:`Eszköznevek`,deviceNamesHint:`Használd a "device_name" szűrőtípussal.`,productNames:`Terméknevek`,productNamesHint:`Használd a "product_name" szűrőtípussal.`},logs:{title:`Rendszernaplók`,logLevel:`Naplózási szint`,error:`Hiba`,warning:`Figyelmeztetés`,info:`Információ`,debug:`Hibakeresés`,searchPlaceholder:`Naplók keresése...`,noResults:`Nem található napló`,autoRefresh:`Automatikus frissítés`},backup:{title:`Biztonsági mentés és visszaállítás`,description:`Készíts teljes biztonsági mentést a Bridge-ekről és az entitás-hozzárendelésekről, vagy állítsd vissza egy korábbi mentésből.`,configBackup:`Konfiguráció mentése`,configBackupDesc:`Bridge konfigurációk és entitás-hozzárendelések exportálása.`,configBackupNote:`A Bridge-eket a visszaállítás után újra párosítani kell.`,fullBackup:`Teljes biztonsági mentés (identitással)`,fullBackupDesc:`Tartalmazza a Matter identitásfájlokat (kulcspárok, fabric hitelesítő adatok).`,fullBackupWarning:`Megőrzi a párosítási állapotot a visszaállítások során. NE OSZD MEG!`,restoreFromBackup:`Visszaállítás biztonsági mentésből`,restoreDesc:`Tölts fel egy korábban létrehozott mentésfájlt a Bridge-ek és konfigurációk visszaállításához.`,restoreTitle:`Mentés visszaállítása`,selectBridges:`Válaszd ki a visszaállítandó Bridge-eket`,overwriteExisting:`Meglévő Bridge-ek felülírása`,includeMappings:`Entitás-hozzárendelések belefoglalása`,restoreIdentities:`Matter identitások visszaállítása (nincs szükség újrapárosításra)`,restore:`Visszaállítás`,downloadSuccess:`A biztonsági mentés sikeresen letöltve!`,restartRequired:`Újraindítás szükséges`,restartMessage:`A Bridge-ek visszaállítása megtörtént a mentésből. A változások érvénybe lépéséhez újraindítás szükséges.`,restartNote:`Az alkalmazás újraindul, és előfordulhat, hogy frissítened kell ezt az oldalt.`,restartNow:`Újraindítás most`,storedBackups:`Tárolt biztonsági mentések`,createSnapshot:`Biztonsági mentés létrehozása`,noSnapshots:`Még nincsenek tárolt biztonsági mentések. A mentések leállításkor automatikusan vagy manuálisan hozhatók létre.`,downloadSnapshot:`Letöltés`,restoreSnapshot:`Visszaállítás`,auto:`Automatikus`,manual:`Manuális`,snapshotCreated:`A biztonsági mentés sikeresen létrejött!`,snapshotRestored:`{{bridges}} Bridge, {{mappings}} hozzárendelés, {{identities}} identitás visszaállítva.`,confirmRestore:`Visszaállítás megerősítése`,confirmRestoreMessage:`Biztosan vissza szeretnél állítani a következőből: "{{filename}}"? Ez felülírja a jelenlegi konfigurációdat.`,restoreWarning:`Az összes meglévő Bridge és konfiguráció felülíródik. A visszaállítás után újraindítás szükséges.`,confirmDelete:`Biztonsági mentés törlése`,confirmDeleteMessage:`Biztosan törölni szeretnéd a következőt: "{{filename}}"? Ez a művelet nem vonható vissza.`,settings:`Biztonsági mentés beállításai`,autoBackupLabel:`Automatikus biztonsági mentés`,autoBackupDesc:`Automatikusan teljes biztonsági mentés készítése az alkalmazás leállásakor vagy újraindításakor.`,retentionCount:`Mentések megtartása`,retentionCountDesc:`A megtartandó mentések száma (a legrégebbiek automatikusan törlődnek)`},networkMap:{title:`Hálózati térkép`,hubLabel:`HAMH`,undoMove:`Utolsó mozgatás visszavonása`,resetLayout:`Elrendezés visszaállítása`,refreshData:`Adatok frissítése`,fullscreen:`Teljes képernyő`,exitFullscreen:`Kilépés a teljes képernyőből`,legend:`Jelmagyarázat`,controller:`Vezérlő`,hub:`HAMH Hub`,bridge:`Bridge`,device:`Eszköz`,failed:`Sikertelen`},updateChecker:{title:`Szoftverfrissítések`,checkNow:`Ellenőrzés most`,currentVersion:`Jelenlegi verzió`,latestVersion:`Legújabb verzió`,updateAvailable:`Frissítés érhető el!`,upToDate:`A legújabb verziót használod.`,releaseNotes:`Kiadási megjegyzések`,notAvailable:`A frissítésellenőrzés nem érhető el ebben a verzióban`,checkFailed:`A frissítések ellenőrzése sikertelen`,unreachable:`A kiszolgáló nem érhető el`,instructionAddon:`Frissítés a Home Assistant Beállítások → Bővítmények menüpontban.`,instructionDocker:`Töltsd le a legújabb image-et, és hozd létre újra a konténert.`,instructionNpm:`Futtasd: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Bridge beállítási varázsló`,stepTemplate:`Sablon`,stepController:`Vezérlő`,stepBridgeInfo:`Bridge adatai`,stepEntityFilter:`Entitásszűrő`,stepFeatureFlags:`Funkciókapcsolók`,stepReview:`Áttekintés és létrehozás`,autoCompose:`Eszközök automatikus összeállítása`,autoForceSyncFlag:`Automatikus kényszerített szinkronizálás`,invertCover:`Árnyékoló irányának megfordítása`,invertCoverDescription:`Felcseréli a nyitás/zárás irányt az árnyékolóknál. Használd ezt, ha az árnyékolóid rossz pozíciót mutatnak a Matter vezérlőkben.`,includeHidden:`Rejtett entitások belefoglalása`,includeHiddenDescription:`A Home Assistantban rejtettként megjelölt entitások is megjelenjenek.`,bridgeName:`Bridge neve`,portLabel:`Port`,portAutoAssign:`Automatikusan a következő szabad portra rendelve`,nameRequired:`Adjon meg egy Bridge nevet`,createFailed:`Nem sikerült létrehozni a Bridge-et`,bridgeInfoDescription:`Adjon nevet és portot a Bridge-nek.`,serverModeLabel:`Server Mode (robotporszívókhoz)`,serverModeTooltip:`Szükséges ahhoz, hogy a robotporszívók működjenek az Apple Home (Siri) és az Alexa rendszerrel. A Server Mode Bridge-ek csak EGY eszközt támogatnak.`,entityFilterDescription:`Állítsa be, mely entitások szerepeljenek ebben a Bridge-ben.`,includeAll:`Minden entitás belefoglalása (helyettesítő karakter)`,entityId:`Entitásazonosító`,includePattern:`Belefoglalási minta`,entityFilters:`Entitásszűrők`,serverModeEntityHint:`A Server Mode csak EGY eszközt támogat. Adja meg a pontos entitásazonosítót (pl. vacuum.my_vacuum).`,templatePreConfigured:`Sablon által előre beállítva. Létrehozás után szerkesztheti a teljes szerkesztőben.`,wildcardHint:`Használja a * karaktert mindenhez, vagy mintákat, mint light.*, switch.*`,commaHint:`Adjon meg konkrét entitásazonosítókat vesszővel elválasztva`,excludePatterns:`Kizárási minták (opcionális)`,excludeHelperText:`Kizárandó minták, vesszővel elválasztva`,skipTemplate:`Sablon kihagyása`,creating:`Létrehozás...`,createBridge:`Bridge létrehozása`,searchRules:`Szabályok keresése...`,templateDescription:`Válasszon sablont a gyors kezdéshez, vagy hagyja ki egyéni Bridge létrehozásához.`,controllerDescription:`Melyik Matter vezérlőt fogja használni? Ez optimalizálja a funkciójelzőket a vezérlőhöz.`,controllerHint:`A funkciójelzőket bármikor módosíthatja a következő lépésekben vagy a Bridge létrehozása után.`,templateApplied:`A(z) "{{name}}" sablon alkalmazva. Testreszabhatja a nevet és a portot lent.`,filterPreConfiguredFrom:`A szűrő a(z) "{{name}}" sablonból van előre beállítva. Lent módosíthatja.`,featureFlagsDescription:`A funkciójelzők szabályozzák, hogyan jelennek meg az eszközök a Matter vezérlők számára.`,recommendedFlags:`A(z) {{name}} ajánlott jelzői előre kiválasztva.`,selectFlags:`Válassza ki a beállításának megfelelő jelzőket.`,reviewDescription:`Tekintse át a Bridge konfigurációját:`,bridgesToCreate:`Létrehozandó Bridge-ek ({{count}})`,bridgesCreated:`{{count}} Bridge már létrehozva ebben a munkamenetben`,addAnother:`Másik hozzáadása`},footer:{github:`GitHub`,documentation:`Dokumentáció`,support:`Támogatás`},languageSwitcher:{disclaimer:`A fordítások hiányosak lehetnek.`,contribute:`Segítsen javítani rajtuk!`},translationEditor:{title:`Fordításszerkesztő`,editLanguage:`Nyelv szerkesztése`,info:`Szerkessze a fordításokat közvetlenül a böngészőben. A módosítások helyileg mentődnek és azonnal érvénybe lépnek. Exportálja a fordításokat, hogy beküldhesse őket a projektbe.`,progress:`{{translated}} / {{total}} kulcs lefordítva`,localEdits:`{{count}} helyi módosítás`,searchPlaceholder:`Kulcsok vagy értékek keresése...`,filterAll:`Minden kulcs`,filterMissing:`Hiányzó`,filterEdited:`Szerkesztett`,exportJson:`JSON exportálása`,copyJson:`JSON másolása`,copied:`Másolva!`,resetAll:`Minden módosítás visszaállítása`,resetKey:`Visszaállítás alapértelmezettre`,noResults:`Nem található megfelelő fordítási kulcs.`,addLanguage:`Nyelv hozzáadása`,newLanguageCode:`Nyelvi kód (pl. pt, ja, ko)`,newLanguageName:`Nyelv neve (pl. Português)`,addLanguageButton:`Hozzáadás`,languageExists:`Ez a nyelv már létezik.`,codeRequired:`A nyelvi kód megadása kötelező.`,nameRequired:`A nyelv nevének megadása kötelező.`,removeLanguage:`Nyelv eltávolítása`,removeLanguageConfirm:`Eltávolítja a(z) "{{name}}" egyéni nyelvet? A nyelvhez tartozó összes helyi módosítás elvész.`,importJson:`JSON importálása`,importSuccess:`{{count}} fordítás importálva.`,importFailed:`Importálás sikertelen: érvénytelen JSON formátum.`}},xs={common:{loading:`Caricamento`,notFound:`Non trovato`,save:`Salva`,cancel:`Annulla`,delete:`Elimina`,edit:`Modifica`,close:`Chiudi`,refresh:`Aggiorna`,search:`Cerca`,enabled:`Abilitato`,disabled:`Disabilitato`,online:`Online`,offline:`Offline`,running:`In esecuzione`,stopped:`Arrestato`,failed:`Fallito`,starting:`Avvio`,devices:`Dispositivi`,fabrics:`Fabrics`,port:`Porta`,unknown:`Sconosciuto`,confirm:`Conferma`,create:`Crea`,back:`Indietro`,next:`Avanti`,actions:`Azioni`,name:`Nome`,type:`Tipo`,error:`Errore`,version:`Versione`,copy:`Copia`,copied:`Copiato!`,copyId:`Copia ID`,later:`Più tardi`,skip:`Salta`,reset:`Ripristina`,update:`Aggiorna`,all:`Tutti`,ascending:`Crescente`,descending:`Decrescente`,moveUp:`Sposta su`,moveDown:`Sposta giù`,selectAll:`Seleziona tutto`,selectNone:`Deseleziona tutto`,live:`Live`,new:`Nuovo`,overwrite:`Sovrascrivi`,active:`Attivo`,property:`Proprietà`,value:`Valore`,custom:`Personalizzato`,startAll:`Avvia tutti`,stopAll:`Arresta tutti`,restartAll:`Riavvia tutti`,import:`Importa`,export:`Esporta`,exportAll:`Esporta tutto`,wizard:`Procedura guidata`},nav:{bridges:`Bridges`,devices:`Tutti i dispositivi`,health:`Stato & Diagnostica`,diagnostics:`Eventi in tempo reale`,settings:`Impostazioni`,networkMap:`Mappa di rete`,logs:`Log`,startupOrder:`Ordine di avvio`,lockCredentials:`Credenziali serratura`,filterReference:`Riferimento filtri`,systemLogs:`Log di sistema`,lightMode:`Modalità chiara`,darkMode:`Modalità scura`},status:{error:`Errore`,unhealthy:`Non integro`,noBridges:`Nessun Bridge`,loadingHealth:`Caricamento stato di salute...`,unknown:`Sconosciuto`},errorBoundary:{title:`Qualcosa è andato storto`,fallbackMessage:`Si è verificato un errore imprevisto.`,reload:`Ricarica pagina`},settings:{title:`Impostazioni`,language:`Lingua`,languageDescription:`Seleziona la lingua dell'interfaccia.`,checkUpdates:`Controlla aggiornamenti`,backupRestore:`Backup e ripristino`,exportBackup:`Esporta backup`,importBackup:`Importa backup`,dangerZone:`Zona pericolosa`,resetAll:`Ripristina tutto`,about:`Informazioni`},dashboard:{title:`Dashboard`,systemOverview:`Panoramica del sistema`,quickActions:`Azioni rapide`,bridgeOverview:`Panoramica dei Bridge`,noBridges:`Nessun bridge configurato.`,createBridge:`Crea Bridge`,viewAll:`Mostra tutto`,totalDevices:`Dispositivi totali`,customize:`Personalizza`,startAll:`Avvia tutti`,stopAll:`Arresta tutti`,restartAll:`Riavvia tutti`,welcome:`Benvenuto su Home Assistant Matter Hub`,welcomeDescription:`Collega i tuoi dispositivi Home Assistant ai controller Matter come Apple Home, Google Home e Amazon Alexa.`,bridgeWizard:`Procedura guidata Bridge`,setupByArea:`Configura per area`,manualSetup:`Configurazione manuale`,areaSetup:`Configurazione area`,documentation:`Documentazione`,quickNavigation:`Navigazione rapida`,haConnection:`Connessione HA`,startupOrder:`Ordine di avvio`,lockCredentials:`Credenziali serratura`,filterReference:`Riferimento filtri`,successMessage:`I tuoi bridge sono connessi a {{count}} fabric controller. I dispositivi dovrebbero ora apparire nella tua app.`,noBridgesHint:`Nessun bridge configurato. Usa la procedura guidata o creane uno manualmente.`,customizeDashboard:`Personalizza dashboard`},bridge:{name:`Nome Bridge`,port:`Porta`,status:`Stato`,pairHint:`Associa questo bridge al tuo controller`,pairDescription:`Apri la tua app controller (Apple Home, Google Home o Amazon Alexa), aggiungi un nuovo accessorio e scansiona il codice QR o inserisci il codice di abbinamento manuale. Assicurati che il controller sia sulla stessa rete di Home Assistant.`,failedEntities:`Entità fallite`,serverModeRecommended:`Modalità Server consigliata per aspirapolvere robot`,serverModeDescription:`Questo bridge contiene un aspirapolvere robot in modalità bridge. Apple Home e Alexa mostreranno il bridge come dispositivo aggiuntivo, creando duplicati. Abilita la Modalità Server per esporre l'aspirapolvere come dispositivo Matter autonomo.`,enableServerMode:`Abilita Modalità Server`,enabling:`Abilitazione...`,start:`Avvia`,stop:`Arresta`,restart:`Riavvia`,factoryReset:`Ripristino di fabbrica`,pairingCode:`Codice di abbinamento`,openCommissioning:`Apri finestra di commissioning`,multiPair:`Abbinamento Multi-Fabric`,deleteBridge:`Elimina Bridge`,deleteConfirm:`Sei sicuro di voler eliminare questo bridge?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} entità non sono state caricate.`,clickToShow:`Clicca per mostrare i dettagli.`,clickToHide:`Clicca per nascondere i dettagli.`,loadFailed:`Impossibile caricare i dettagli del Bridge`,refreshHint:`Nuovi dispositivi e modifiche alle etichette vengono rilevati ogni 30 secondi.`,refreshingStates:`Aggiornamento tra {{seconds}} secondi...`,serverModeSingleDeviceNote:`Nota: La Modalità Server richiede che l'aspirapolvere sia l'unico dispositivo su questo bridge. Rimuovi prima le altre entità, poi abilita la Modalità Server nelle impostazioni del bridge.`,serverModeEnabled:`Modalità Server abilitata. Il bridge si riavvierà con il tuo aspirapolvere come dispositivo autonomo.`,serverModeEnableFailed:`Impossibile abilitare la Modalità Server: {{error}}`,pairing:`Abbinamento`,bridgeInfo:`Info Bridge`,commissioned:`Abbinato`,addController:`Aggiungi un altro controller`,forceSync:`Forza sincronizzazione`,syncing:`Sincronizzazione...`,editFilters:`Modifica filtri`,addFilters:`Aggiungi filtri`,bridgeNotRunning:`Il bridge non è in esecuzione. Avvia il bridge per vedere le informazioni di abbinamento.`,manualCode:`Codice manuale`,bridgeId:`ID Bridge`,passcode:`Codice di accesso`,discriminator:`Discriminatore`,connectedFabrics:`Fabric connessi ({{count}})`,noFabrics:`Nessun controller connesso. Scansiona il codice QR con il tuo controller Matter.`,entityFilters:`Filtri entità`,noFilters:`Nessun filtro configurato. Tutte le entità supportate saranno esposte.`,resetSuccess:`Bridge ripristinato con successo`,deleteSuccess:`Bridge eliminato con successo`,confirmResetTitle:`Ripristina Bridge`,confirmDeleteTitle:`Elimina Bridge`,importTitle:`Importa Bridge`,overwriteExisting:`Sovrascrivi bridge esistenti`,iconLabel:`Icona Bridge`,google:`Google`,alexa:`Alexa`,serverMode:`Modalità Server`,autoForceSync:`Sincronizzazione automatica`,saveSuccess:`Bridge salvato`,updateSuccess:`Aggiornamento completato`,exportFailed:`Esportazione fallita`,actionStarted:`Avviato`,actionStopped:`Arrestato`,actionRestarted:`Riavviato`,actionFailed:`{{action}} fallito`,actionResult:`{{label}} {{count}} bridge`,couldNotLoad:`Impossibile caricare i bridge`,showingFirst:`Mostro i primi {{count}}`,importParseFailed:`Impossibile analizzare il file di importazione. Seleziona un file di esportazione valido.`,importing:`Importazione...`,importCount:`Importa {{count}} bridge`,jsonEditor:`Editor JSON`,formEditor:`Editor modulo`},endpoints:{title:`Endpoint`,searchPlaceholder:`Cerca endpoint...`,sortBy:`Ordina`,sortName:`Nome`,sortEndpoint:`ID Endpoint`,sortType:`Tipo`,cardView:`Vista schede`,treeView:`Vista ad albero`,clusters:`Cluster`,entityUnavailable:`Entità non disponibile`,showUnavailable:`Mostra {{count}} non disponibili`,showAll:`Mostra tutte le entità`,uploadImage:`Carica immagine dispositivo`,removeImage:`Rimuovi immagine personalizzata`,editMapping:`Modifica mappatura entità`,homeAssistantEntity:`Entità Home Assistant`,noEndpoints:`Nessun endpoint trovato.`,expandAll:`Espandi tutto`,collapseAll:`Comprimi tutto`,viewAll:`Vedi tutti i dispositivi`,haState:`Stato HA`,aboutEndpoint:`Informazioni su questo endpoint`,entityId:`ID Entità`,customName:`Nome personalizzato`,deviceTypeOverride:`Override tipo dispositivo`,keyHaAttributes:`Attributi HA chiave`,entityMappings:`Mappature entità`,copyData:`Copia dati negli appunti`,behavior:`Comportamento`},health:{title:`Stato & Diagnostica`,version:`Versione`,uptime:`Tempo di attività`,homeAssistant:`Home Assistant`,connected:`Connesso`,disconnected:`Disconnesso`,bridgeStatus:`Stato Bridge`,refreshHealth:`Aggiorna dati di salute`,exportDiagnostic:`Esporta diagnostica`,memory:`Memoria`,fabricDetails:`Dettagli Fabric`,sessions:`Sessioni`,subscriptions:`Abbonamenti`,noFabrics:`Nessun fabric connesso`,systemMetrics:`Metriche di sistema`,heap:`Heap`,rss:`RSS`,external:`Esterno`,systemHealth:`Salute del sistema`,fetchFailed:`Impossibile recuperare lo stato di salute`,connectionError:`Errore di connessione`,exportFailed:`Impossibile esportare i dati di diagnostica`,restartFailed:`Impossibile riavviare il bridge`,unableToLoad:`Impossibile caricare lo stato di salute`,sortBy:`Ordina per`,created:`Creato`,ascending:`Crescente`,descending:`Decrescente`,connectedTo:`Connesso a`,autoRecovery:`Recupero automatico`,recoveryAttempts:`Tentativi di recupero`},mapping:{title:`Mappature entità`,entityId:`ID Entità`,deviceType:`Tipo dispositivo`,customName:`Nome personalizzato`,status:`Stato`,addMapping:`Aggiungi mappatura`,editMapping:`Modifica mappatura`,deleteMapping:`Elimina mappatura`,saved:`Mappatura salvata per {{entityId}}. Riavvia il bridge per applicare le modifiche.`,saveFailed:`Impossibile salvare la mappatura: {{error}}`,deleted:`Mappatura eliminata per {{entityId}}.`,deleteFailed:`Impossibile eliminare la mappatura.`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},languageSwitcher:{disclaimer:`Le traduzioni potrebbero essere incomplete.`,contribute:`Aiutaci a migliorarle!`},translationEditor:{title:`Editor traduzioni`,editLanguage:`Lingua da modificare`,info:`Modifica le traduzioni direttamente nel browser. Le modifiche vengono salvate localmente e applicate immediatamente. Esporta le tue traduzioni per inviarle al progetto.`,progress:`{{translated}} / {{total}} chiavi tradotte`,localEdits:`{{count}} modifica/e locale/i`,searchPlaceholder:`Cerca chiavi o valori...`,filterAll:`Tutte le chiavi`,filterMissing:`Mancanti`,filterEdited:`Modificate`,exportJson:`Esporta JSON`,copyJson:`Copia JSON`,copied:`Copiato!`,resetAll:`Ripristina tutte le modifiche`,resetKey:`Ripristina predefinito`,noResults:`Nessuna chiave di traduzione corrispondente trovata.`,addLanguage:`Aggiungi lingua`,newLanguageCode:`Codice lingua (es. pt, ja, ko)`,newLanguageName:`Nome lingua (es. Português)`,addLanguageButton:`Aggiungi`,languageExists:`Questa lingua esiste già.`,codeRequired:`Il codice lingua è obbligatorio.`,nameRequired:`Il nome della lingua è obbligatorio.`,removeLanguage:`Rimuovi lingua`,importJson:`Importa JSON`,importSuccess:`{{count}} traduzione/i importata/e.`,importFailed:`Importazione fallita: formato JSON non valido.`},notFound:{title:`Pagina non trovata`,description:`La pagina che stai cercando non esiste.`,backToDashboard:`Torna alla dashboard`},footer:{github:`GitHub`,documentation:`Documentazione`}},Ss={common:{loading:`読み込み中`,notFound:`見つかりませんでした`,save:`保存`,cancel:`キャンセル`,delete:`削除`,edit:`編集`,close:`閉じる`,refresh:`再読み込み`,search:`検索`,enabled:`有効`,disabled:`無効`,online:`オンライン`,offline:`オフライン`,running:`動作中`,stopped:`停止済み`,failed:`失敗`,starting:`起動中`,devices:`デバイス`,fabrics:`ファブリック`,port:`ポート`,unknown:`不明`,confirm:`適用`,create:`作成`,back:`戻る`,next:`次へ`,actions:`アクション`,name:`名前`,type:`タイプ`,error:`エラー`,version:`バージョン`,copy:`コピー`,copied:`コピーしました!`,copyId:`IDのコピー`,later:`後で`,skip:`スキップ`,reset:`リセット`,update:`更新`,all:`すべて`,ascending:`昇順`,descending:`降順`,moveUp:`上に移動`,moveDown:`下に移動`,selectAll:`すべて選択`,selectNone:`未選択`,live:`ライブ`,new:`新しい`,overwrite:`上書き`,active:`アクティブ`,property:`プロパティ`,value:`値`,custom:`カスタム`,startAll:`すべて起動`,stopAll:`すべて停止`,restartAll:`すべて再起動`,import:`インポート`,export:`エクスポート`,exportAll:`すべてエクスポート`,wizard:`ウィザード`},nav:{bridges:`ブリッジ`,devices:`すべてのデバイス`,health:`健康状態と診断`,diagnostics:`ライブイベント`,settings:`設定`,networkMap:`ネットワークマップ`,logs:`ログ`,startupOrder:`開始の順序`,lockCredentials:`スマートロックの認証情報`,filterReference:`フィルター値を参照`,systemLogs:`システムログ`,lightMode:`ライトモード`,darkMode:`ダークモード`},status:{error:`エラー`,unhealthy:`不健康`,noBridges:`ブリッジなし`,loadingHealth:`健康状態を読み込んでいます...`,unknown:`不明`},errorBoundary:{title:`何かがうまくいかなかったようです`,fallbackMessage:`予期しないエラーが発生しました。`,reload:`ページを再読み込み`},settings:{title:`設定`,language:`言語`,languageDescription:`UIの言語を選択してください。`,checkUpdates:`アップデートを確認`,backupRestore:`バックアップと復元`,exportBackup:`バックアップを書き出す`,importBackup:`バックアップを読み込む`,dangerZone:`危険なゾーン`,resetAll:`すべて再起動`,about:`について`,username:`ユーザー名`,password:`パスワード`,enterNewPassword:`新しいパスワード`,enableAuth:`認証を有効にする`,disableAuth:`認証を無効にする`,disableAuthMessage:`この操作により、Web UI からパスワード保護が削除されます。ネットワーク上の誰でもブリッジ設定にアクセスでき、変更できるようになります。`,disableAuthConfirm:`認証を無効化`,usernamePasswordRequired:`ユーザー名とパスワードが必要です`,authSaveFailed:`認証設定の保存に失敗しました`,authLoadFailed:`認証設定の読み込みに失敗しました`,authDisabled:`認証は無効になっています。`,authRemoveFailed:`認証設定の削除に失敗しました`},dashboard:{title:`ダッシュボード`,systemOverview:`システムの概要`,quickActions:`クイックアクション`,bridgeOverview:`ブリッジの概要`,noBridges:`ブリッジがまだ構成されていません。`,createBridge:`ブリッジを作成`,viewAll:`すべて表示`,totalDevices:`合計デバイス`,customize:`カスタマイズ`,startAll:`すべて開始`,stopAll:`すべて停止`,restartAll:`すべて再起動`,welcome:`Home Assistant Matter Hub へようこそ`,welcomeDescription:`Home AssistantのデバイスをApple HomeやGoogle Home、Amazon AlexaなどのMatterコントローラーに接続できます。`,bridgeWizard:`ブリッジ構成ウィザード`,setupByArea:`エリアでセットアップ`,manualSetup:`手動で構成`,areaSetup:`エリアで構成`,documentation:`ドキュメント`,quickNavigation:`クイックナビゲーション`,haConnection:`HAコネクション`,startupOrder:`ブリッジの起動順序`,lockCredentials:`スマートロックの認証情報`,filterReference:`フィルター値を参照`,successMessage:`ブリッジは {{count}} 個のコントローラーに接続されています。デバイスは現在、コントローラーアプリに表示されているはずです。`,noBridgesHint:`ブリッジがまだ構成されていません。ブリッジウィザードを使用するか、手動で作成してください。`,customizeDashboard:`ダッシュボードのカスタマイズ`,bridgeStatusRunning:`{{running}} 動作中`,bridgeStatusFailed:`{{failed}} 失敗`,devicesFailed:`{{count}} 失敗`,uptimeFormat:`稼働時間 {{time}}`},bridge:{name:`ブリッジ名`,port:`ポート`,status:`状態`,pairHint:`このブリッジをコントローラーとペアリングしてください`,pairDescription:`コントローラーアプリ(Apple HomeやGoogle Home、Amazon Alexaなど)を開き、新しいアクセサリを追加から、QRコードをスキャンするか、手動ペアリングコードを入力してください。また、コントローラーがHome Assistantと同じネットワークに接続されていることを確認してください。`,failedEntities:`失敗したエンティティ`,serverModeRecommended:`ロボット掃除機が含まれている場合、サーバーモードが推奨されます`,serverModeDescription:`このブリッジには、ロボット掃除機が含まれています。Apple HomeとAlexaでは、このブリッジが追加デバイスとして表示されるため、重複したエントリが発生します。サーバーモードを有効にすると、掃除機が単一のMatterデバイスとして認識されるため、Siri/Alexaの音声コマンドに完全対応し、重複したエントリも表示されなくなります。`,enableServerMode:`サーバーモードを有効にする`,enabling:`有効化しています...`,start:`起動`,stop:`停止`,restart:`再起動`,factoryReset:`初期状態にリセット`,pairingCode:`ペアリングコード`,openCommissioning:`コミッショニングウィンドウを開く`,multiPair:`マルチファブリックペアリング`,deleteBridge:`ブリッジを削除`,deleteConfirm:`本当にこのブリッジを削除しますか?`,featureFlags:`機能フラグ`,failedEntitiesCount:`{{count}} エンティティをロードできませんでした。`,clickToShow:`クリックして詳細を表示`,clickToHide:`クリックして詳細を隠す`,loadFailed:`ブリッジの詳細の読み込みに失敗しました`,refreshHint:`新しいデバイスやラベルの変更は、30秒ごとに検出されます。`,refreshingStates:`あと {{seconds}} 秒で状態を更新...`,serverModeSingleDeviceNote:`注:サーバーモードを使用する場合、このブリッジ上のデバイスはロボット掃除機のみである必要があります。まず、このブリッジから他のデバイスを削除してから、ブリッジの設定でサーバーモードを有効にしてください。`,serverModeEnabled:`サーバーモードが有効になりました。ブリッジはロボット掃除機のみで単一のデバイスとして再起動します。`,serverModeEnableFailed:`サーバーモードの有効化に失敗しました: {{error}}`,pairing:`ペアリング`,bridgeInfo:`ブリッジ情報`,commissioned:`接続済み`,addController:`別のコントローラーを追加`,openingCommissioning:`コミッショニングウィンドウを開いています...`,fabricTooltip:`ファブリックは、Matterコントローラー(例:Apple Home、Google Home、Alexa)との接続を表すものです。各コントローラーはペアリングされると、1つのファブリックを作成します。`,forceSync:`強制的に同期`,syncing:`同期中...`,forceSyncTooltip:`すべての現在のデバイス状態を接続されているコントローラに同期する`,editFilters:`フィルターを編集`,addFilters:`フィルターを追加`,bridgeNotRunning:`ブリッジが起動していません。ブリッジを起動し、ペアリング情報を確認してください。`,manualCode:`手動ペアリングコード`,openingWindow:`コミッショニングウィンドウを開いています...`,bridgeId:`ブリッジID`,passcode:`パスコード`,discriminator:`識別子`,connectedFabrics:`接続済みのファブリック ({{count}})`,noFabrics:`コントローラが接続されていません。MatterコントローラーでQRコードをスキャンして、このブリッジをペアリングしてください。`,entityFilters:`エンティティフィルター`,noFilters:`フィルターが設定されていません。サポートされているすべてのエンティティが公開されます。`,scanQrCode:`Matterコントローラー(Apple Home、Google Home、Alexaなど)でこのQRコードをスキャンして、このブリッジを別のエコシステムに追加してください。`,appleHomeWarning:`このブリッジは拡張フラットモードを使用しています。Apple Home のみを使用している場合にのみ、無効にしてください。`,googleHomeWarning:`これにより、Apple Home および Google Home に問題が生じる可能性があります。`,resetSuccess:`ブリッジのリセットに成功しました`,deleteSuccess:`ブリッジの削除に成功しました`,confirmResetTitle:`ブリッジを初期状態にリセット`,confirmResetMessage:`これにより、すべてのペアリング情報が削除され、ブリッジが初期状態にリセットされます。接続されているコントローラはアクセスを失います。この操作は元に戻せません。`,confirmDeleteTitle:`ブリッジを削除`,confirmDeleteMessage:`これにより、ブリッジとそのすべてのペアリング、およびエンティティマッピングが永久に削除されます。接続されているコントローラはアクセスを失います。この操作は元に戻せません。`,importTitle:`ブリッジを読み込む`,overwriteExisting:`既存のブリッジを上書きする`,iconLabel:`ブリッジアイコン`,google:`Google`,alexa:`Alexa`,serverMode:`サーバーモード`,autoForceSync:`自動強制同期`,saveSuccess:`ブリッジを保存しました`,updateSuccess:`アップデートが完了しました`,exportFailed:`書き出しに失敗しました`,actionStarted:`起動済み`,actionStopped:`停止済み`,actionRestarted:`再起動済み`,actionFailed:`{{action}} 失敗`,actionResult:` {{label}} {{count}} ブリッジ`,couldNotLoad:`ブリッジを読み込めませんでした`,showingFirst:`最初の {{count}} を表示中`,importParseFailed:`読み込んだファイルの解析に失敗しました。有効なエクスポートしたファイルを選んでください。`,importing:`インポート中...`,importCount:`{{count}} ブリッジをインポート`,jsonEditor:`JSONエディター`,formEditor:`フォームエディター`},endpoints:{title:`エンドポイント`,searchPlaceholder:`エンドポイントを検索...`,sortBy:`並び替え`,sortName:`名前`,sortEndpoint:`エンドポイントID`,sortType:`タイプ`,cardView:`カードビュー`,treeView:`ツリービュー`,clusters:`クラスター`,entityUnavailable:`エンティティが利用できません`,showUnavailable:`{{count}} の利用不可を表示`,showAll:`すべてのエンティティを表示`,uploadImage:`デバイスイメージをアップロード`,removeImage:`カスタムイメージを削除`,editMapping:`エンティティマッピングを編集`,homeAssistantEntity:`Home Assistant エンティティ`,noEndpoints:`エンドポイントが見つかりませんでした。`,expandAll:`すべて展開`,collapseAll:`すべて折りたたむ`,viewAll:`すべてのデバイスを見る`,haState:`HAでの状態`,aboutEndpoint:`このエンドポイントについて`,entityId:`エンティティID`,customName:`カスタム名`,deviceTypeOverride:`デバイスタイプの上書き`,keyHaAttributes:`主要なHAの属性`,entityMappings:`エンティティマッピング`,copyData:`データをクリップボードにコピー`,behavior:`振る舞い`},health:{title:`健康状態と診断`,version:`バージョン`,uptime:`稼働時間`,homeAssistant:`Home Assistant`,connected:`接続済み`,disconnected:`切断済み`,bridgeStatus:`ブリッジの状態`,refreshHealth:`健康データを更新`,exportDiagnostic:`診断を書き出す`,memory:`メモリ`,fabricDetails:`ファブリックの詳細`,sessions:`セッション`,subscriptions:`登録数`,noFabrics:`接続されているファブリックはありません`,systemMetrics:`システムメトリクス`,heap:`ヒープ`,rss:`RSS`,external:`外部`,systemHealth:`システムの健康状態`,fetchFailed:`健康状態の取得に失敗しました`,connectionError:`設定エラー`,exportFailed:`診断データの書き出しに失敗しました`,restartFailed:`ブリッジの再起動に失敗しました`,unableToLoad:`健康状態を読み込めません`,sortBy:`並び替え`,created:`作成済み`,ascending:`昇順`,descending:`降順`,connectedTo:`接続済み`,autoRecovery:`自動回復`,recoveryAttempts:`回復試行数`,fabrics:`ファブリック`,networkDiagnostics:`ネットワーク診断`,checksPassed:`合格`,checksWarning:`警告`,checksFailed:`失敗`,hideDetails:`詳細を非表示`,showDetails:`詳細を表示`,allChecks:`すべてチェック`,check:`チェック`,statusLabel:`状態`,message:`メッセージ`,networkInterfaces:`ネットワークインタフェース`,interfaceName:`インタフェース`,refresh:`更新`},mapping:{title:`エンティティマッピング`,entityId:`エンティティID`,deviceType:`デバイスタイプ`,customName:`カスタム名`,status:`状態`,addMapping:`マッピングを追加`,editMapping:`マッピングを編集`,deleteMapping:`マッピングを削除`,saved:`{{entityId}} のマッピングが保存されました。変更を保存するためにブリッジを再起動してください。`,saveFailed:`マッピングの保存に失敗しました:{{error}}`,deleted:`{{entityId}} のマッピングが削除されました。`,deleteFailed:`マッピングの削除に失敗しました。`,matterTag:`Matterタグ`,exportProfile:`マッピングプロファイルを書き出す`,importProfile:`マッピングプロファイルを読み込む`,profileName:`プロファイル名`,match:`マッチ`,existing:`存在`,autoDetect:`自動検出(デフォルト)`,customProductName:`カスタム製品名`,customProductNameHelp:`Matterコントローラに表示する製品名(モデル)を上書きします。一部のコントローラ(Aqaraなど)はこれをデバイス名として表示します。`,customVendorName:`カスタムベンダー名`,customVendorNameHelp:`Matterコントローラに表示するベンダー/メーカー名を上書きします。`,customSerialNumber:`カスタムシリアルナンバー`,customSerialNumberHelp:`Matterコントローラに表示するシリアル番号を上書きします。`,loadFailed:`エンティティマッピングの読み込みに失敗しました`,noMappings:`カスタムエンティティマッピングが設定されていません。マッピングを使用すると、Matter デバイスタイプを上書きしたり、カスタム名を設定したり、特定のエンティティを無効にしたりできます。`,applying:`適用中...`,applyCount:`{{count}} のマッピングを適用しました`},notFound:{title:`ページが見つかりませんでした`,description:`お探しのページは存在しません。`,backToDashboard:`ダッシュボードへ戻る`},devices:{title:`デバイス`,searchPlaceholder:`デバイスを検索...`,filterBridge:`ブリッジ`,allBridges:`すべてのブリッジ`,filterDeviceType:`デバイスタイプ`,allTypes:`すべてのタイプ`,sortBy:`並び替え`,sortBridge:`ブリッジ`,sortType:`デバイスタイプ`,sortName:`名前`,deviceCount:`{{count}} デバイス`,filteredCount:`{{total}} 中 {{filtered}} のデバイス`},diagnostics:{title:`ライブ診断`,stateUpdate:`状態アップデート`,command:`コマンド`,entityError:`エラー`,sessionOpen:`セッションオープン`,sessionClose:`セッションクローズ`,subscription:`登録`,bridgeStart:`ブリッジ起動`,bridgeStop:`ブリッジ停止`,entityWarning:`警告`,filterEvents:`イベントタイプをフィルタリング`,clearEvents:`すべてのイベントをクリア`,noEvents:`現在のフィルターに一致するイベントはありません。`},startup:{title:`ブリッジの起動順序`,description:`ドラッグ&ドロップでブリッジの起動順序をセットしてください。小さい番号から先に起動されます。`,saveSuccess:`起動順序の保存に成功しました`,saveFailed:`起動順序の保存に失敗しました`,saveChanges:`変更を保存`,unsavedChanges:`未保存の起動順序の変更があります。`,noBridges:`ブリッジがまだ構成されていません。`,saveOrder:`起動順序を保存`},areaSetup:{title:`エリアセットアップ`,heading:`エリアを元にしたブリッジセットアップ`,description:`Home Assistantのエリアごとに、自動的に1つのブリッジを作成します。各ブリッジには、そのエリアからサポートされているすべてのエンティティが含まれます。`,noAreas:`Home Assistant でサポートされているエンティティがあるエリアは見つかりませんでした。HA のエリアにデバイスが割り当てられていることを確認してください。`,selectController:`1. コントローラーを選択(任意)`,selectAreas:`2. エリアを選択({{total}} 中 {{selected}} 選択済み)`,clear:`クリア`,createBridges:`{{count}} ブリッジを作成`,results:`結果`,goToBridges:`ブリッジ一覧に移動`,createdSuccess:`{{count}} のブリッジの作成に成功しました`,createdPartial:`{{succeeded}} のブリッジが作成済み、 {{failed}} のブリッジは作成失敗`,loadFailed:`エリアの読み込みに失敗しました`,creating:`作成中...`,created:`作成しました`,unknownError:`不明なエラー`},lockCredentials:{title:`スマートロックの認証情報`,addCredential:`認証情報を追加`,editCredential:`ロックの認証情報を編集`,lockEntityId:`ロックのエンティティID`,lockEntityHelperText:`ロックの Home Assistant エンティティID`,pinCode:`暗証番号`,nameOptional:`名前(任意)`,namePlaceholder:`玄関`,nameHelperText:`この認証情報の名前`,entityRequired:`エンティティIDが必要です`,pinLength:`暗証番号は4-8桁である必要があります`,pinDigitsOnly:`暗証番号は数字のみでなければいけません`,saveFailed:`保存に失敗しました`,loadFailed:`認証情報の読み込みに失敗しました`,deleteFailed:`削除に失敗しました`,updateFailed:`更新に失敗しました`,enable:`有効`,disable:`無効`,confirmDeleteTitle:`認証情報を削除`,confirmDeleteMessage:`これにより {{entity}} の認証情報が永久に削除されます。この操作は元に戻せません。`},labels:{title:`フィルター値を参照`,info:`ブリッジ設定に利用可能なすべてのフィルター値を確認できます。任意の値をクリックして、クリップボードにコピーしてください。`,searchPlaceholder:`検索...`,loadFailed:`データの読み込みに失敗しました`,labelsSection:`ラベル`,labelsHint:`フィルタータイプ "entity_label" または "device_label" を使用してください。表示名またはlabel_idのどちらでも使用できます。`,noLabels:`Home Assistantからラベルが見つかりませんでした。HAの設定→ラベルからラベルを作成してください。`,displayName:`表示名`,labelId:`label_id`,areaId:`area_id`,areasSection:`エリア`,areasHint:`フィルタータイプ "area" を使用してください。エリアはMatterコントローラーの自動的な部屋割り当てにも使用されます。`,noAreas:`Home Assistantからエリアが見つかりませんでした。`,otherFilterValues:`その他のフィルター値`,domains:`ドメイン`,domainsHint:`フィルタータイプ "domain" を使用してください。`,platforms:`プラットフォーム / インテグレーション`,platformsHint:`フィルタータイプ "platform" を使用してください。`,entityCategories:`エンティティカテゴリ`,entityCategoriesHint:`フィルタータイプ "entity_category" を使用してください。`,deviceClasses:`デバイスクラス`,deviceClassesHint:`フィルタータイプ "device_class" を使用してください。`,deviceNames:`デバイス名`,deviceNamesHint:`フィルタータイプ "device_name" を使用してください。`,productNames:`製品名`,productNamesHint:`フィルタータイプ "product_name" を使用してください。`},logs:{title:`システムログ`,logLevel:`ログレベル`,error:`エラー`,warning:`警告`,info:`情報`,debug:`デバッグ`,searchPlaceholder:`ログを検索...`,noResults:`ログが見つかりません`,autoRefresh:`自動更新`},backup:{title:`バックアップと復元`,description:`ブリッジとエンティティマッピングの完全なバックアップを作成するか、または以前のバックアップから復元することができます。`,configBackup:`バックアップを作成`,configBackupDesc:`ブリッジ構成とエンティティマッピングを書き出します。`,configBackupNote:`ブリッジは復元後に再コミッションする必要があります。`,fullBackup:`完全バックアップ(識別付き)`,fullBackupDesc:`Matter の識別ファイル(キーペア、ファブリック認証情報)を含みます。`,fullBackupWarning:`復元全体にわたって、コミッショニングの状態を保持します。共有しないでください!`,restoreFromBackup:`バックアップから復元`,restoreDesc:`以前に作成したバックアップファイルをアップロードして、ブリッジと設定を復元します。`,restoreTitle:`バックアップを復元`,selectBridges:`復元するブリッジを選択してください`,overwriteExisting:`既存のブリッジを上書き`,includeMappings:`エンティティマッピングを含める`,restoreIdentities:`Matter識別情報を復元(再コミッショニングの必要はありません)`,restore:`復元`,downloadSuccess:`バックアップのダウンロードに成功しました!`,restartRequired:`再起動が必要です`,restartMessage:`バックアップからブリッジが復元されました。変更を有効にするには、再起動が必要です。`,restartNote:`アプリケーションが再起動されるため、このページを再読み込みする必要がある可能性があります。`,restartNow:`今すぐ再起動`,storedBackups:`保存されているバックアップ`,createSnapshot:`バックアップを作成`,noSnapshots:`まだ保存されたバックアップはありません。バックアップはシャットダウン時に自動的に作成されるか、または手動で作成することもできます。`,downloadSnapshot:`ダウンロード`,restoreSnapshot:`復元`,auto:`自動`,manual:`手動`,snapshotCreated:`バックアップの作成に成功しました!`,snapshotRestored:`{{bridges}} のブリッジ、 {{mappings}} のマッピング、 {{identities}} の識別を復元済みです。`,confirmRestore:`復元を確認`,confirmRestoreMessage:`本当に "{{filename}}" から復元しますか?これにより、現在の設定が上書きされます。`,restoreWarning:`既存のすべてのブリッジと設定はすべて上書きされます。復元後は再起動が必要です。`,confirmDelete:`バックアップを削除`,confirmDeleteMessage:`本当に "{{filename}}" を削除しますか?この操作は取り消せません。`,settings:`バックアップの設定`,autoBackupLabel:`自動バックアップ`,autoBackupDesc:`アプリがシャットダウンまたは再起動した際に、自動的に完全バックアップを作成します。`,retentionCount:`バックアップの保持数`,retentionCountDesc:`バックアップの保持数(古い物から自動的に削除されます)`},networkMap:{title:`ネットワークマップ`,hubLabel:`HAMH`,undoMove:`直前の操作を元に戻す`,resetLayout:`レイアウトをリセット`,refreshData:`データを更新`,fullscreen:`フルスクリーン`,exitFullscreen:`フルスクリーンを終了`,legend:`図の説明`,controller:`コントローラ`,hub:`HAMHハブ`,bridge:`ブリッジ`,device:`デバイス`,failed:`失敗`},updateChecker:{title:`ソフトウェアアップデート`,checkNow:`今すぐ確認する`,currentVersion:`現在のバージョン`,latestVersion:`最新のバージョン`,updateAvailable:`アップデートが利用可能になりました!`,upToDate:`既に最新のバージョンを実行しています。`,releaseNotes:`リリースノート`,notAvailable:`このバージョンではアップデートの確認が利用できません`,checkFailed:`アップデートの確認に失敗しました`,unreachable:`サーバーに接続できません`,instructionAddon:`Home Assistantの設定 → アドオン(アプリ)から更新できます。`,instructionDocker:`最新のイメージを取得し、コンテナを再作成してください。`,instructionNpm:`実行:npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`ブリッジ構成ウィザード`,stepTemplate:`テンプレート`,stepController:`コントローラー`,stepBridgeInfo:`ブリッジ情報`,stepEntityFilter:`エンティティフィルター`,stepFeatureFlags:`機能フラグ`,stepReview:`確認と作成`,autoCompose:`自動構成デバイス`,autoForceSyncFlag:`自動強制同期`,invertCover:`カバーの方向を反転`,invertCoverDescription:`カバーの開閉の方向を逆にします。Matterコントローラでカバーの位置が間違って表示される場合に使用してください。`,includeHidden:`非表示のエンティティを含める`,includeHiddenDescription:`Home Assistantで非表示となっているエンティティも公開します。`,bridgeName:`ブリッジ名`,portLabel:`ポート`,portAutoAssign:`自動的に次に利用可能なポートが割り当てられます`,nameRequired:`ブリッジ名を入力してください`,createFailed:`ブリッジの作成に失敗しました`,bridgeInfoDescription:`ブリッジの名前とポートを指定してください。`,serverModeLabel:`サーバーモード(ロボット掃除機用)`,serverModeTooltip:`ロボット掃除機をApple Home(Siri)およびAlexaで使用するために必要です。サーバーモードは1台のデバイスのみです。`,entityFilterDescription:`このブリッジに含める必要があるエンティティを設定してください。`,includeAll:`すべてのエンティティを含める(ワイルドカード)`,entityId:`エンティティID`,includePattern:`パターンを含める`,entityFilters:`エンティティフィルター`,serverModeEntityHint:`サーバーモードは1台のデバイスのみです。正確なエンティティIDを入力してください。(例:vacuum.my_vacuum)`,templatePreConfigured:`テンプレートによって事前に構成されています。作成後、フルエディターで編集してください。`,wildcardHint:`すべて選択したい場合にそのままアスタリスク「*」 を使用するか、次のように「*」を使用してください:「light.* 」「switch.*」`,commaHint:`コンマで区切られている特定のエンティティIDを入力してください`,excludePatterns:`除外するパターン(任意)`,excludeHelperText:`除外するパターンをカンマ「,」で区切ります`,skipTemplate:`テンプレートをスキップ`,creating:`作成中です...`,createBridge:`ブリッジを作成`,searchRules:`ルールを検索...`,templateDescription:`テンプレートを選択してブリッジを作成するか、スキップしてカスタムのブリッジを作成できます。`,controllerDescription:`どのMatterコントローラーを使用しますか?これにより、コントローラーの機能フラグが最適化されます。`,controllerHint:`次のステップやブリッジ作成後でも、いつでも機能フラグを調整できます。`,templateApplied:`テンプレート"{{name}}"が適用されました。名前とポートをカスタマイズしてください。`,filterPreConfiguredFrom:`フィルターは"{{name}}"テンプレートで事前に設定されています。以下で調整できます。`,featureFlagsDescription:`機能フラグは、デバイスがMatterコントローラーにどのように公開されるかを制御します。`,recommendedFlags:`{{name}} の機能フラグは事前に選択されています。`,selectFlags:`お使いの設定に合った機能フラグを選択してください。`,reviewDescription:`ブリッジの設定をご確認ください:`,bridgesToCreate:`作成するブリッジ({{count}})`,bridgesCreated:`{{count}} 件のブリッジがこのセッションで既に作成されています`,addAnother:`さらにブリッジを追加`},footer:{github:`GitHub`,documentation:`ドキュメント`,support:`サポート`},languageSwitcher:{disclaimer:`翻訳が不完全な場合があります。`,contribute:`改善にご協力をお願いします!`},translationEditor:{title:`翻訳エディター`,editLanguage:`言語を編集`,info:`ブラウザ上で直接翻訳を編集できます。変更はローカルに保存され、即座に適用されます。翻訳を書き出して、プロジェクトに提出してください。`,progress:`{{translated}} / {{total}} のキーが翻訳済み`,localEdits:`{{count}} ローカル編集`,searchPlaceholder:`キーまたは値を検索...`,filterAll:`全てのキー`,filterMissing:`欠落`,filterEdited:`編集済み`,exportJson:`JSONを書き出す`,copyJson:`JSONをコピー`,copied:`コピーしました!`,resetAll:`すべての編集をリセット`,resetKey:`デフォルトにリセット`,noResults:`一致する翻訳のキーが見つかりませんでした。`,addLanguage:`言語を追加`,newLanguageCode:`言語コード(例:pt, ja, ko)`,newLanguageName:`言語名(例:Português)`,addLanguageButton:`追加`,languageExists:`その言語はすでに存在しています。`,codeRequired:`言語コードが必要です。`,nameRequired:`言語名が必要です。`,removeLanguage:`言語を削除`,removeLanguageConfirm:`カスタム言語 "{{name}}" を削除しますか? この言語の全ての編集は失われます。`,importJson:`JSONを読み込む`,importSuccess:`{{count}} 翻訳を読み込みました`,importFailed:`読み込みに失敗しました:無効なJSONフォーマットです。`}},Cs={common:{loading:`Ładowanie`,notFound:`Nie znaleziono`,save:`Zapisz`,cancel:`Anuluj`,delete:`Usuń`,edit:`Edytuj`,close:`Zamknij`,refresh:`Odśwież`,search:`Szukaj`,enabled:`Włączone`,disabled:`Wyłączone`,online:`Online`,offline:`Offline`,running:`Działa`,stopped:`Zatrzymane`,failed:`Niepowodzenie`,starting:`Uruchamianie`,devices:`Urządzenia`,fabrics:`Fabryki`,port:`Port`,unknown:`Nieznane`,confirm:`Potwierdź`,create:`Utwórz`,back:`Wstecz`,next:`Dalej`,actions:`Akcje`,name:`Nazwa`,type:`Typ`,error:`Błąd`,version:`Wersja`,copy:`Kopiuj`,copied:`Skopiowano!`,copyId:`Kopiuj ID`,later:`Później`,skip:`Pomiń`,reset:`Resetuj`,update:`Aktualizuj`,all:`Wszystkie`,ascending:`Rosnąco`,descending:`Malejąco`,moveUp:`Przesuń w górę`,moveDown:`Przesuń w dół`,selectAll:`Zaznacz wszystko`,selectNone:`Odznacz wszystko`,live:`Na żywo`,new:`Nowe`,overwrite:`Nadpisz`,active:`Aktywne`,property:`Właściwość`,value:`Wartość`,custom:`Własne`,startAll:`Uruchom wszystkie`,stopAll:`Zatrzymaj wszystkie`,restartAll:`Zrestartuj wszystkie`,import:`Importuj`,export:`Eksportuj`,exportAll:`Eksportuj wszystko`,wizard:`Kreator`},nav:{bridges:`Mostki`,devices:`Wszystkie urządzenia`,health:`Stan i diagnostyka`,diagnostics:`Zdarzenia na żywo`,settings:`Ustawienia`,networkMap:`Mapa sieci`,logs:`Logi`,startupOrder:`Kolejność uruchamiania`,lockCredentials:`Dane dostępu do zamków`,filterReference:`Referencja filtrów`,systemLogs:`Logi systemowe`,lightMode:`Tryb jasny`,darkMode:`Tryb ciemny`},status:{error:`Błąd`,unhealthy:`Niezdrowy`,noBridges:`Brak mostków`,loadingHealth:`Ładowanie stanu zdrowia...`,unknown:`Nieznany`},errorBoundary:{title:`Coś poszło nie tak`,fallbackMessage:`Wystąpił nieoczekiwany błąd.`,reload:`Odśwież stronę`},settings:{title:`Ustawienia`,language:`Język`,languageDescription:`Wybierz język interfejsu.`,checkUpdates:`Sprawdź aktualizacje`,backupRestore:`Kopia i przywracanie`,exportBackup:`Eksportuj kopię`,importBackup:`Importuj kopię`,dangerZone:`Strefa zagrożenia`,resetAll:`Resetuj wszystko`,about:`O aplikacji`,username:`Nazwa użytkownika`,password:`Hasło`,enterNewPassword:`Wpisz nowe hasło`,enableAuth:`Włącz uwierzytelnianie`,disableAuth:`Wyłącz uwierzytelnianie`,disableAuthMessage:`To usunie ochronę hasłem z interfejsu WWW. Każda osoba w Twojej sieci będzie mogła uzyskać dostęp i modyfikować konfigurację mostków.`,disableAuthConfirm:`Wyłącz uwierzytelnianie`,usernamePasswordRequired:`Nazwa użytkownika i hasło są wymagane`,authSaveFailed:`Nie udało się zapisać ustawień uwierzytelniania`,authLoadFailed:`Nie udało się wczytać ustawień uwierzytelniania`,authDisabled:`Uwierzytelnianie wyłączone.`,authRemoveFailed:`Nie udało się usunąć ustawień uwierzytelniania`},dashboard:{title:`Pulpit`,systemOverview:`Przegląd systemu`,quickActions:`Szybkie akcje`,bridgeOverview:`Przegląd mostków`,noBridges:`Nie skonfigurowano jeszcze żadnych mostków.`,createBridge:`Utwórz mostek`,viewAll:`Zobacz wszystkie`,totalDevices:`Łącznie urządzeń`,customize:`Dostosuj`,startAll:`Uruchom wszystkie`,stopAll:`Zatrzymaj wszystkie`,restartAll:`Zrestartuj wszystkie`,welcome:`Witamy w Home Assistant Matter Hub`,welcomeDescription:`Połącz swoje urządzenia Home Assistant z kontrolerami Matter, takimi jak Apple Home, Google Home i Amazon Alexa.`,bridgeWizard:`Kreator mostka`,setupByArea:`Konfiguracja wg obszaru`,manualSetup:`Konfiguracja ręczna`,areaSetup:`Konfiguracja obszaru`,documentation:`Dokumentacja`,quickNavigation:`Szybka nawigacja`,haConnection:`Połączenie HA`,startupOrder:`Kolejność uruchamiania`,lockCredentials:`Dane dostępu do zamków`,filterReference:`Referencja filtrów`,successMessage:`Twoje mostki są połączone z {{count}} fabryką(-ami) kontrolera. Urządzenia powinny być teraz widoczne w aplikacji kontrolera.`,noBridgesHint:`Nie skonfigurowano jeszcze mostków. Użyj Kreatora mostka lub utwórz mostek ręcznie.`,customizeDashboard:`Dostosuj pulpit`,bridgeStatusRunning:`{{running}} uruchomione`,bridgeStatusFailed:`{{failed}} nieudane`,devicesFailed:`{{count}} nieudane`,uptimeFormat:`{{time}}`},bridge:{name:`Nazwa mostka`,port:`Port`,status:`Status`,pairHint:`Sparuj ten mostek ze swoim kontrolerem`,pairDescription:`Otwórz aplikację kontrolera (Apple Home, Google Home lub Amazon Alexa), dodaj nowe akcesorium i zeskanuj kod QR poniżej albo wpisz ręczny kod parowania. Upewnij się, że kontroler jest w tej samej sieci co Home Assistant.`,failedEntities:`Nieudane encje`,serverModeRecommended:`Tryb serwera zalecany dla odkurzaczy robotycznych`,serverModeDescription:`Ten mostek zawiera odkurzacz robotyczny w trybie bridge. Apple Home i Alexa pokażą mostek jako dodatkowe urządzenie, co spowoduje duplikaty. Włącz tryb serwera, aby udostępnić odkurzacz jako niezależne urządzenie Matter z pełną obsługą komend głosowych Siri/Alexa i bez duplikatów.`,enableServerMode:`Włącz tryb serwera`,enabling:`Włączanie...`,start:`Uruchom`,stop:`Zatrzymaj`,restart:`Restartuj`,factoryReset:`Przywróć ustawienia fabryczne`,pairingCode:`Kod parowania`,openCommissioning:`Otwórz okno komisjonowania`,multiPair:`Parowanie Multi-Fabric`,deleteBridge:`Usuń mostek`,deleteConfirm:`Czy na pewno chcesz usunąć ten mostek?`,featureFlags:`Flagi funkcji`,failedEntitiesCount:`Nie udało się załadować {{count}} encji.`,clickToShow:`Kliknij, aby pokazać szczegóły.`,clickToHide:`Kliknij, aby ukryć szczegóły.`,loadFailed:`Nie udało się wczytać szczegółów mostka`,refreshHint:`Nowe urządzenia i zmiany etykiet są wykrywane co 30 sekund.`,refreshingStates:`Odświeżanie stanów za {{seconds}} s...`,serverModeSingleDeviceNote:`Uwaga: tryb serwera wymaga, aby odkurzacz był jedynym urządzeniem na tym mostku. Najpierw usuń inne encje z mostka, a następnie włącz tryb serwera w ustawieniach mostka.`,serverModeEnabled:`Tryb serwera włączony. Mostek uruchomi się ponownie z odkurzaczem jako niezależnym urządzeniem.`,serverModeEnableFailed:`Nie udało się włączyć trybu serwera: {{error}}`,pairing:`Parowanie`,bridgeInfo:`Informacje o mostku`,commissioned:`Skomisjonowano`,addController:`Dodaj kolejny kontroler`,openingCommissioning:`Otwieranie okna komisjonowania...`,fabricTooltip:`Fabric reprezentuje połączenie z kontrolerem Matter (np. Apple Home, Google Home, Alexa). Każdy kontroler tworzy jedną fabric podczas parowania.`,forceSync:`Wymuś synchronizację`,syncing:`Synchronizacja...`,forceSyncTooltip:`Wypchnij wszystkie bieżące stany urządzeń do podłączonych kontrolerów`,editFilters:`Edytuj filtry`,addFilters:`Dodaj filtry`,bridgeNotRunning:`Mostek nie jest uruchomiony. Uruchom mostek, aby zobaczyć informacje o parowaniu.`,manualCode:`Kod ręczny`,openingWindow:`Otwieranie okna komisjonowania...`,bridgeId:`ID mostka`,passcode:`Kod dostępu`,discriminator:`Dyskryminator`,connectedFabrics:`Połączone fabrics ({{count}})`,noFabrics:`Nie podłączono jeszcze kontrolerów. Zeskanuj kod QR kontrolerem Matter, aby sparować ten mostek.`,entityFilters:`Filtry encji`,noFilters:`Brak skonfigurowanych filtrów. Wszystkie wspierane encje zostaną udostępnione.`,scanQrCode:`Zeskanuj ten kod QR swoim kontrolerem Matter (Apple Home, Google Home, Alexa itd.), aby dodać ten mostek do kolejnego ekosystemu.`,appleHomeWarning:`Ten mostek używa trybu Extended Flat. Wyłącz to tylko wtedy, gdy używasz wyłącznie Apple Home.`,googleHomeWarning:`Może to powodować problemy z Apple Home i Google Home.`,resetSuccess:`Mostek został pomyślnie zresetowany`,deleteSuccess:`Mostek został pomyślnie usunięty`,confirmResetTitle:`Reset fabryczny mostka`,confirmResetMessage:`To usunie wszystkie informacje parowania i zresetuje mostek do stanu początkowego. Podłączone kontrolery utracą dostęp. Operacji nie można cofnąć.`,confirmDeleteTitle:`Usuń mostek`,confirmDeleteMessage:`To trwale usunie mostek, wszystkie parowania i mapowania encji. Podłączone kontrolery utracą dostęp. Operacji nie można cofnąć.`,importTitle:`Importuj mostki`,overwriteExisting:`Nadpisz istniejące mostki`,iconLabel:`Ikona mostka`,google:`Google`,alexa:`Alexa`,serverMode:`Tryb serwera`,autoForceSync:`Automatyczne wymuszanie synchronizacji`,saveSuccess:`Mostek zapisany`,updateSuccess:`Aktualizacja zakończona`,exportFailed:`Eksport nie powiódł się`,actionStarted:`Uruchomiono`,actionStopped:`Zatrzymano`,actionRestarted:`Zrestartowano`,actionFailed:`{{action}} nie powiodło się`,actionResult:`{{label}} {{count}} mostek(ów)`,couldNotLoad:`Nie udało się wczytać mostków`,showingFirst:`Wyświetlanie pierwszych {{count}}`,importParseFailed:`Nie udało się przetworzyć pliku importu. Wybierz prawidłowy plik eksportu.`,importing:`Importowanie...`,importCount:`Importuj {{count}} mostek(ów)`,jsonEditor:`Edytor JSON`,formEditor:`Edytor formularza`},endpoints:{title:`Endpointy`,searchPlaceholder:`Szukaj endpointów...`,sortBy:`Sortuj`,sortName:`Nazwa`,sortEndpoint:`ID endpointu`,sortType:`Typ`,cardView:`Widok kart`,treeView:`Widok drzewa`,clusters:`Klastry`,entityUnavailable:`Encja niedostępna`,showUnavailable:`Pokaż {{count}} niedostępnych`,showAll:`Pokaż wszystkie encje`,uploadImage:`Prześlij obraz urządzenia`,removeImage:`Usuń niestandardowy obraz`,editMapping:`Edytuj mapowanie encji`,homeAssistantEntity:`Encja Home Assistant`,noEndpoints:`Nie znaleziono endpointów.`,expandAll:`Rozwiń wszystko`,collapseAll:`Zwiń wszystko`,viewAll:`Zobacz wszystkie urządzenia`,haState:`Stan HA`,aboutEndpoint:`O tym endpoincie`,entityId:`ID encji`,customName:`Nazwa własna`,deviceTypeOverride:`Nadpisanie typu urządzenia`,keyHaAttributes:`Kluczowe atrybuty HA`,entityMappings:`Mapowania encji`,copyData:`Skopiuj dane do schowka`,behavior:`Zachowanie`},health:{title:`Stan i diagnostyka`,version:`Wersja`,uptime:`Czas działania`,homeAssistant:`Home Assistant`,connected:`Połączono`,disconnected:`Rozłączono`,bridgeStatus:`Status mostka`,refreshHealth:`Odśwież dane stanu`,exportDiagnostic:`Eksportuj diagnostykę`,memory:`Pamięć`,fabricDetails:`Szczegóły fabric`,sessions:`Sesje`,subscriptions:`Subskrypcje`,noFabrics:`Brak podłączonych fabrics`,systemMetrics:`Metryki systemu`,heap:`Heap`,rss:`RSS`,external:`Zewnętrzne`,systemHealth:`Stan systemu`,fetchFailed:`Nie udało się pobrać stanu`,connectionError:`Błąd połączenia`,exportFailed:`Nie udało się wyeksportować danych diagnostycznych`,restartFailed:`Nie udało się zrestartować mostka`,unableToLoad:`Nie można wczytać stanu`,sortBy:`Sortuj według`,created:`Utworzono`,ascending:`Rosnąco`,descending:`Malejąco`,connectedTo:`Połączono z`,autoRecovery:`Automatyczne odzyskiwanie`,recoveryAttempts:`Próby odzyskania`,fabrics:`Fabryki`,networkDiagnostics:`Diagnostyka sieci`,checksPassed:`udane`,checksWarning:`ostrzeżenia`,checksFailed:`nieudane`,hideDetails:`Ukryj szczegóły`,showDetails:`Pokaż szczegóły`,allChecks:`Wszystkie testy`,check:`Test`,statusLabel:`Etykieta statusu`,message:`Wiadomość`,networkInterfaces:`Interfejsy sieciowe`,interfaceName:`Nazwa interfejsu`,refresh:`Odśwież`},mapping:{title:`Mapowania encji`,entityId:`ID encji`,deviceType:`Typ urządzenia`,customName:`Nazwa własna`,status:`Status`,addMapping:`Dodaj mapowanie`,editMapping:`Edytuj mapowanie`,deleteMapping:`Usuń mapowanie`,saved:`Mapowanie zapisano dla {{entityId}}. Uruchom ponownie mostek, aby zastosować zmiany.`,saveFailed:`Nie udało się zapisać mapowania: {{error}}`,deleted:`Mapowanie usunięto dla {{entityId}}.`,deleteFailed:`Nie udało się usunąć mapowania.`,matterTag:`Tag Matter`,exportProfile:`Eksportuj profil mapowania`,importProfile:`Importuj profil mapowania`,profileName:`Nazwa profilu`,match:`Dopasowanie`,existing:`Istniejące`,autoDetect:`Auto-wykrywanie (domyślne)`,customProductName:`Nazwa produktu`,customProductNameHelp:`Niestandardowa nazwa produktu`,customVendorName:`Nazwa producenta`,customVendorNameHelp:`Niestandardowa nazwa producenta`,customSerialNumber:`Numer seryjny`,customSerialNumberHelp:`Niestandardowy numer seryjny`,loadFailed:`Nie udało się wczytać mapowań encji`,noMappings:`Nie skonfigurowano niestandardowych mapowań encji. Użyj mapowań, aby nadpisać typy urządzeń Matter, ustawić własne nazwy lub wyłączyć konkretne encje.`,applying:`Zastosowywanie...`,applyCount:`Zastosuj {{count}} mapowań`},notFound:{title:`Nie znaleziono strony`,description:`Strona, której szukasz, nie istnieje.`,backToDashboard:`Wróć do pulpitu`},devices:{title:`Urządzenia`,searchPlaceholder:`Szukaj urządzeń...`,filterBridge:`Mostek`,allBridges:`Wszystkie mostki`,filterDeviceType:`Typ urządzenia`,allTypes:`Wszystkie typy`,sortBy:`Sortuj według`,sortBridge:`Mostek`,sortType:`Typ urządzenia`,sortName:`Nazwa`,deviceCount:`{{count}} urządzeń`,filteredCount:`{{filtered}} z {{total}} urządzeń`},diagnostics:{title:`Diagnostyka na żywo`,stateUpdate:`Aktualizacja stanu`,command:`Komenda`,entityError:`Błąd`,sessionOpen:`Otwarcie sesji`,sessionClose:`Zamknięcie sesji`,subscription:`Subskrypcja`,bridgeStart:`Start mostka`,bridgeStop:`Stop mostka`,entityWarning:`Ostrzeżenie`,filterEvents:`Filtruj typy zdarzeń`,clearEvents:`Wyczyść wszystkie zdarzenia`,noEvents:`Brak zdarzeń pasujących do aktualnych filtrów.`},startup:{title:`Kolejność uruchamiania`,description:`Przeciągnij i upuść mostki, aby ustawić kolejność uruchamiania. Niższe pozycje uruchamiane są jako pierwsze.`,saveSuccess:`Kolejność uruchamiania została zapisana`,saveFailed:`Nie udało się zapisać kolejności uruchamiania`,saveChanges:`Zapisz zmiany`,unsavedChanges:`Masz niezapisane zmiany kolejności uruchamiania.`,noBridges:`Nie skonfigurowano jeszcze żadnych mostków.`,saveOrder:`Zapisz kolejność uruchamiania`},areaSetup:{title:`Konfiguracja obszaru`,heading:`Konfiguracja mostków wg obszarów`,description:`Automatycznie utwórz jeden mostek dla każdego obszaru Home Assistant. Każdy mostek będzie zawierał wszystkie wspierane encje z tego obszaru.`,noAreas:`Nie znaleziono obszarów ze wspieranymi encjami w Home Assistant. Upewnij się, że Twoje urządzenia są przypisane do obszarów w HA.`,selectController:`1. Wybierz kontroler (opcjonalnie)`,selectAreas:`2. Wybierz obszary ({{selected}} z {{total}})`,clear:`Wyczyść`,createBridges:`Utwórz {{count}} mostek(ów)`,results:`Wyniki`,goToBridges:`Przejdź do mostków`,createdSuccess:`Pomyślnie utworzono {{count}} mostek(ów)`,createdPartial:`Utworzono {{succeeded}}, niepowodzenia {{failed}} mostek(ów)`,loadFailed:`Nie udało się wczytać obszarów`,creating:`Tworzenie...`,created:`Utworzono`,unknownError:`Nieznany błąd`},lockCredentials:{title:`Dane dostępu do zamków`,addCredential:`Dodaj dane dostępu do zamka`,editCredential:`Edytuj dane dostępu do zamka`,lockEntityId:`ID encji zamka`,lockEntityHelperText:`ID encji zamka w Home Assistant`,pinCode:`Kod PIN`,nameOptional:`Nazwa (opcjonalnie)`,namePlaceholder:`Drzwi wejściowe`,nameHelperText:`Przyjazna nazwa dla tych danych dostępu`,entityRequired:`ID encji jest wymagane`,pinLength:`PIN musi mieć 4-8 cyfr`,pinDigitsOnly:`PIN może zawierać tylko cyfry`,saveFailed:`Nie udało się zapisać`,loadFailed:`Nie udało się wczytać danych dostępu`,deleteFailed:`Nie udało się usunąć`,updateFailed:`Nie udało się zaktualizować`,enable:`Włącz`,disable:`Wyłącz`,confirmDeleteTitle:`Usuń dane dostępu`,confirmDeleteMessage:`To trwale usunie kod PIN dla {{entity}}. Operacji nie można cofnąć.`},labels:{title:`Referencja filtrów`,info:`Przeglądaj wszystkie dostępne wartości filtrów dla konfiguracji mostka. Kliknij dowolną wartość, aby skopiować ją do schowka.`,searchPlaceholder:`Szukaj...`,loadFailed:`Nie udało się wczytać danych`,labelsSection:`Etykiety`,labelsHint:`Użyj z typem filtra "entity_label" lub "device_label". Możesz użyć nazwy wyświetlanej albo label_id.`,noLabels:`Nie znaleziono etykiet w Home Assistant. Utwórz etykiety w Ustawienia > Etykiety.`,displayName:`Nazwa wyświetlana`,labelId:`label_id`,areaId:`area_id`,areasSection:`Obszary`,areasHint:`Użyj z typem filtra "area". Obszary są także używane do automatycznego przypisywania pomieszczeń w kontrolerach Matter.`,noAreas:`Nie znaleziono obszarów w Home Assistant. Utwórz obszary w Ustawienia > Obszary.`,otherFilterValues:`Inne wartości filtrów`,domains:`Domeny`,domainsHint:`Użyj z typem filtra "domain".`,platforms:`Platformy / Integracje`,platformsHint:`Użyj z typem filtra "platform".`,entityCategories:`Kategorie encji`,entityCategoriesHint:`Użyj z typem filtra "entity_category".`,deviceClasses:`Klasy urządzeń`,deviceClassesHint:`Użyj z typem filtra "device_class".`,deviceNames:`Nazwy urządzeń`,deviceNamesHint:`Użyj z typem filtra "device_name".`,productNames:`Nazwy produktów`,productNamesHint:`Użyj z typem filtra "product_name".`},logs:{title:`Logi systemowe`,logLevel:`Poziom logowania`,error:`Błąd`,warning:`Ostrzeżenie`,info:`Informacja`,debug:`Debug`,searchPlaceholder:`Szukaj w logach...`,noResults:`Nie znaleziono logów`,autoRefresh:`Automatyczne odświeżanie`},backup:{title:`Kopia i przywracanie`,description:`Utwórz pełną kopię zapasową mostków i mapowań encji albo przywróć z poprzedniej kopii.`,configBackup:`Kopia konfiguracji`,configBackupDesc:`Eksportuj konfiguracje mostków i mapowania encji.`,configBackupNote:`Po przywróceniu mostki będą wymagały ponownego komisjonowania.`,fullBackup:`Pełna kopia (z tożsamością)`,fullBackupDesc:`Zawiera pliki tożsamości Matter (pary kluczy, poświadczenia fabric).`,fullBackupWarning:`Zachowuje stan komisjonowania między przywróceniami. NIE UDOSTĘPNIAJ!`,restoreFromBackup:`Przywróć z kopii`,restoreDesc:`Prześlij wcześniej utworzony plik kopii, aby przywrócić mostki i konfiguracje.`,restoreTitle:`Przywróć kopię`,selectBridges:`Wybierz mostki do przywrócenia`,overwriteExisting:`Nadpisz istniejące mostki`,includeMappings:`Uwzględnij mapowania encji`,restoreIdentities:`Przywróć tożsamości Matter (bez ponownego komisjonowania)`,restore:`Przywróć`,downloadSuccess:`Kopia została pobrana pomyślnie!`,restartRequired:`Wymagany restart`,restartMessage:`Mostki zostały przywrócone z kopii. Aby zastosować zmiany, wymagany jest restart.`,restartNote:`Aplikacja zostanie uruchomiona ponownie i może być konieczne odświeżenie tej strony.`,restartNow:`Restartuj teraz`,storedBackups:`Zapisane kopie`,createSnapshot:`Utwórz kopię`,noSnapshots:`Brak zapisanych kopii. Kopie są tworzone automatycznie przy zamykaniu lub można je utworzyć ręcznie.`,downloadSnapshot:`Pobierz`,restoreSnapshot:`Przywróć`,auto:`Automatyczna`,manual:`Ręczna`,snapshotCreated:`Kopia została utworzona pomyślnie!`,snapshotRestored:`Przywrócono {{bridges}} mostek(ów), {{mappings}} mapowań, {{identities}} tożsamości.`,confirmRestore:`Potwierdź przywracanie`,confirmRestoreMessage:`Czy na pewno chcesz przywrócić z "{{filename}}"? To nadpisze bieżącą konfigurację.`,restoreWarning:`Wszystkie istniejące mostki i konfiguracje zostaną nadpisane. Po przywróceniu wymagany jest restart.`,confirmDelete:`Usuń kopię`,confirmDeleteMessage:`Czy na pewno chcesz usunąć "{{filename}}"? Tej akcji nie można cofnąć.`,settings:`Ustawienia kopii`,autoBackupLabel:`Automatyczna kopia`,autoBackupDesc:`Automatycznie twórz pełną kopię podczas zamykania lub restartu aplikacji.`,retentionCount:`Liczba przechowywanych kopii`,retentionCountDesc:`Liczba kopii do zachowania (najstarsze są usuwane automatycznie)`},networkMap:{title:`Mapa sieci`,hubLabel:`HAMH`,undoMove:`Cofnij ostatnie przesunięcie`,resetLayout:`Resetuj układ`,refreshData:`Odśwież dane`,fullscreen:`Pełny ekran`,exitFullscreen:`Wyjdź z pełnego ekranu`,legend:`Legenda`,controller:`Kontroler`,hub:`Hub HAMH`,bridge:`Mostek`,device:`Urządzenie`,failed:`Niepowodzenie`},updateChecker:{title:`Aktualizacje oprogramowania`,checkNow:`Sprawdź teraz`,currentVersion:`Obecna wersja`,latestVersion:`Najnowsza wersja`,updateAvailable:`Dostępna aktualizacja!`,upToDate:`Używasz najnowszej wersji.`,releaseNotes:`Informacje o wydaniu`,notAvailable:`Sprawdzanie aktualizacji niedostępne w tej wersji`,checkFailed:`Nie udało się sprawdzić aktualizacji`,unreachable:`Nie można połączyć się z serwerem`,instructionAddon:`Zaktualizuj przez Ustawienia → Dodatki w Home Assistant.`,instructionDocker:`Pobierz najnowszy obraz i odtwórz kontener.`,instructionNpm:`Uruchom: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Kreator konfiguracji mostka`,stepTemplate:`Szablon`,stepController:`Kontroler`,stepBridgeInfo:`Informacje o mostku`,stepEntityFilter:`Filtr encji`,stepFeatureFlags:`Flagi funkcji`,stepReview:`Przegląd i utworzenie`,autoCompose:`Automatyczne komponowanie urządzeń`,autoForceSyncFlag:`Automatyczne wymuszanie synchronizacji`,invertCover:`Odwróć kierunek rolet`,invertCoverDescription:`Zamień kierunek otwierania/zamykania rolet. Użyj, jeśli rolety pokazują błędną pozycję w kontrolerach Matter.`,includeHidden:`Uwzględnij ukryte encje`,includeHiddenDescription:`Udostępnij również encje oznaczone jako ukryte w Home Assistant.`,bridgeName:`Nazwa mostka`,portLabel:`Port`,portAutoAssign:`Automatycznie przypisany do kolejnego wolnego portu`,nameRequired:`Wpisz nazwę mostka`,createFailed:`Nie udało się utworzyć mostka`,bridgeInfoDescription:`Nadaj mostkowi nazwę i port.`,serverModeLabel:`Tryb serwera (dla odkurzaczy robotycznych)`,serverModeTooltip:`Wymagany, aby odkurzacze robotyczne działały z Apple Home (Siri) i Alexą. Mostki w trybie serwera obsługują tylko JEDNO urządzenie.`,entityFilterDescription:`Skonfiguruj, które encje mają być uwzględnione w tym mostku.`,includeAll:`Uwzględnij wszystkie encje (wildcard)`,entityId:`ID encji`,includePattern:`Wzorzec uwzględniania`,entityFilters:`Filtry encji`,serverModeEntityHint:`Tryb serwera obsługuje tylko JEDNO urządzenie. Wpisz dokładne ID encji (np. vacuum.my_vacuum).`,templatePreConfigured:`Skonfigurowane przez szablon. Edytuj w pełnym edytorze po utworzeniu.`,wildcardHint:`Użyj * dla wszystkich lub wzorców typu light.*, switch.*`,commaHint:`Wpisz konkretne ID encji rozdzielone przecinkami`,excludePatterns:`Wzorce wykluczeń (opcjonalnie)`,excludeHelperText:`Wzorce do wykluczenia, rozdzielone przecinkami`,skipTemplate:`Pomiń szablon`,creating:`Tworzenie...`,createBridge:`Utwórz mostek`,searchRules:`Szukaj reguł...`,templateDescription:`Wybierz szablon, aby szybko zacząć, lub pomiń, by utworzyć własny mostek.`,controllerDescription:`Którego kontrolera Matter będziesz używać? To zoptymalizuje flagi funkcji dla Twojego kontrolera.`,controllerHint:`Możesz zawsze dostosować flagi funkcji w kolejnych krokach lub po utworzeniu mostka.`,templateApplied:`Zastosowano szablon "{{name}}". Dostosuj poniżej nazwę i port.`,filterPreConfiguredFrom:`Filtr jest wstępnie skonfigurowany z szablonu "{{name}}". Możesz go dostosować poniżej.`,featureFlagsDescription:`Flagi funkcji kontrolują sposób udostępniania urządzeń kontrolerom Matter.`,recommendedFlags:`Zalecane flagi dla {{name}} są wstępnie zaznaczone.`,selectFlags:`Wybierz flagi pasujące do Twojej konfiguracji.`,reviewDescription:`Sprawdź konfigurację mostka:`,bridgesToCreate:`Mostki do utworzenia ({{count}})`,bridgesCreated:`{{count}} mostek(ów) już utworzono w tej sesji`,addAnother:`Dodaj kolejny`},footer:{github:`GitHub`,documentation:`Dokumentacja`,support:`Pomoc`},languageSwitcher:{disclaimer:`Tłumaczenia mogą być niekompletne.`,contribute:`Pomóż je ulepszyć!`},translationEditor:{title:`Edytor tłumaczeń`,editLanguage:`Edytuj język`,info:`Edytuj tłumaczenia bezpośrednio w przeglądarce. Zmiany są zapisywane lokalnie i stosowane natychmiast. Wyeksportuj tłumaczenia, aby przesłać je do projektu.`,progress:`Przetłumaczono {{translated}} / {{total}} kluczy`,localEdits:`{{count}} lokalnych edycji`,searchPlaceholder:`Szukaj kluczy lub wartości...`,filterAll:`Wszystkie klucze`,filterMissing:`Brakujące`,filterEdited:`Edytowane`,exportJson:`Eksportuj JSON`,copyJson:`Kopiuj JSON`,copied:`Skopiowano!`,resetAll:`Resetuj wszystkie edycje`,resetKey:`Przywróć domyślne`,noResults:`Nie znaleziono pasujących kluczy tłumaczenia.`,addLanguage:`Dodaj język`,newLanguageCode:`Kod języka (np. pt, ja, ko)`,newLanguageName:`Nazwa języka (np. Português)`,addLanguageButton:`Dodaj`,languageExists:`Ten język już istnieje.`,codeRequired:`Kod języka jest wymagany.`,nameRequired:`Nazwa języka jest wymagana.`,removeLanguage:`Usuń język`,removeLanguageConfirm:`Usunąć niestandardowy język "{{name}}"? Wszystkie lokalne edycje tego języka zostaną utracone.`,importJson:`Importuj JSON`,importSuccess:`Zaimportowano {{count}} tłumaczeń.`,importFailed:`Import nie powiódł się: nieprawidłowy format JSON.`}},ws={common:{loading:`Загрузка`,notFound:`Не найдено`,save:`Сохранить`,cancel:`Отмена`,delete:`Удалить`,edit:`Редактировать`,close:`Закрыть`,refresh:`Обновить`,search:`Поиск`,enabled:`Включено`,disabled:`Отключено`,online:`В сети`,offline:`Не в сети`,running:`Работает`,stopped:`Остановлено`,failed:`Ошибка`,starting:`Запуск`,devices:`Устройства`,fabrics:`Fabric-соединения`,port:`Порт`,unknown:`Неизвестно`,confirm:`Подтвердить`,create:`Создать`,back:`Назад`,next:`Далее`,actions:`Действия`,name:`Имя`,type:`Тип`,error:`Ошибка`,version:`Версия`,copy:`Копировать`,copied:`Скопировано!`,copyId:`Копировать ID`,later:`Позже`,skip:`Пропустить`,reset:`Сбросить`,update:`Обновить`,all:`Все`,ascending:`По возрастанию`,descending:`По убыванию`,moveUp:`Вверх`,moveDown:`Вниз`,selectAll:`Выбрать все`,selectNone:`Снять выбор`,live:`Живой`,new:`Новый`,overwrite:`Перезаписать`,active:`Активно`,property:`Свойство`,value:`Значение`,custom:`Пользовательский`,startAll:`Запустить все`,stopAll:`Остановить все`,restartAll:`Перезапустить все`,import:`Импорт`,export:`Экспорт`,exportAll:`Экспортировать все`,wizard:`Мастер настройки`},nav:{bridges:`Мосты`,devices:`Все устройства`,health:`Состояние и диагностика`,diagnostics:`События в реальном времени`,settings:`Настройки`,networkMap:`Карта сети`,logs:`Журналы`,startupOrder:`Порядок запуска`,lockCredentials:`Учётные данные замков`,filterReference:`Справочник фильтров`,systemLogs:`Системные журналы`,lightMode:`Светлая тема`,darkMode:`Тёмная тема`},status:{error:`Ошибка`,unhealthy:`Неисправно`,noBridges:`Нет мостов`,loadingHealth:`Загрузка состояния...`,unknown:`Неизвестно`},errorBoundary:{title:`Что-то пошло не так`,fallbackMessage:`Произошла непредвиденная ошибка.`,reload:`Перезагрузить страницу`},settings:{title:`Настройки`,language:`Язык`,languageDescription:`Выберите язык интерфейса.`,checkUpdates:`Проверить обновления`,backupRestore:`Резервное копирование и восстановление`,exportBackup:`Экспорт резервной копии`,importBackup:`Импорт резервной копии`,dangerZone:`Опасная зона`,resetAll:`Сбросить все`,about:`О программе`,username:`Имя пользователя`,password:`Пароль`,enterNewPassword:`Введите новый пароль`,enableAuth:`Включить аутентификацию`,disableAuth:`Отключить аутентификацию`,disableAuthMessage:`Это удалит защиту паролем с веб-интерфейса. Любой в вашей сети сможет получить доступ к конфигурации мостов и изменять её.`,disableAuthConfirm:`Отключить аутентификацию`,usernamePasswordRequired:`Имя пользователя и пароль обязательны`,authSaveFailed:`Не удалось сохранить настройки аутентификации`,authLoadFailed:`Не удалось загрузить настройки аутентификации`,authDisabled:`Аутентификация отключена.`,authRemoveFailed:`Не удалось удалить настройки аутентификации`},dashboard:{title:`Панель управления`,systemOverview:`Обзор системы`,quickActions:`Быстрые действия`,bridgeOverview:`Обзор мостов`,noBridges:`Мосты пока не настроены.`,createBridge:`Создать мост`,viewAll:`Показать все`,totalDevices:`Всего устройств`,customize:`Настроить`,startAll:`Запустить все`,stopAll:`Остановить все`,restartAll:`Перезапустить все`,welcome:`Добро пожаловать в Home Assistant Matter Hub`,welcomeDescription:`Подключите устройства Home Assistant к Matter-контроллерам, таким как Apple Home, Google Home и Amazon Alexa.`,bridgeWizard:`Мастер настройки моста`,setupByArea:`Настройка по зонам`,manualSetup:`Ручная настройка`,areaSetup:`Настройка зон`,documentation:`Документация`,quickNavigation:`Быстрая навигация`,haConnection:`Подключение к HA`,startupOrder:`Порядок запуска`,lockCredentials:`Учётные данные замков`,filterReference:`Справочник фильтров`,successMessage:`Ваши мосты подключены к {{count}} fabric-соединениям контроллеров. Устройства должны появиться в приложении контроллера.`,noBridgesHint:`Мосты пока не настроены. Используйте мастер настройки или создайте мост вручную.`,customizeDashboard:`Настроить панель управления`,bridgeStatusRunning:`{{running}} работает`,bridgeStatusFailed:`{{failed}} с ошибками`,devicesFailed:`{{count}} с ошибками`,uptimeFormat:`{{time}}`},bridge:{name:`Имя моста`,port:`Порт`,status:`Статус`,pairHint:`Подключите этот мост к вашему контроллеру`,pairDescription:`Откройте приложение контроллера (Apple Home, Google Home или Amazon Alexa), добавьте новое устройство и отсканируйте QR-код ниже или введите код сопряжения вручную. Убедитесь, что контроллер находится в одной сети с Home Assistant.`,failedEntities:`Ошибочные объекты`,serverModeRecommended:`Серверный режим рекомендуется для роботов-пылесосов`,serverModeDescription:`Этот мост содержит робот-пылесос в режиме моста. Apple Home и Alexa покажут мост как дополнительное устройство, что приведёт к дублированию. Включите серверный режим, чтобы представить пылесос как самостоятельное Matter-устройство.`,enableServerMode:`Включить серверный режим`,enabling:`Включение...`,start:`Запустить`,stop:`Остановить`,restart:`Перезапустить`,factoryReset:`Сброс к заводским настройкам`,pairingCode:`Код сопряжения`,openCommissioning:`Открыть окно сопряжения`,multiPair:`Мульти-fabric сопряжение`,deleteBridge:`Удалить мост`,deleteConfirm:`Вы уверены, что хотите удалить этот мост?`,featureFlags:`Флаги функций`,failedEntitiesCount:`{{count}} объект(ов) не удалось загрузить.`,clickToShow:`Нажмите для просмотра деталей.`,clickToHide:`Нажмите, чтобы скрыть детали.`,loadFailed:`Не удалось загрузить данные моста`,refreshHint:`Новые устройства и изменения меток обнаруживаются каждые 30 секунд.`,refreshingStates:`Обновление состояний через {{seconds}} сек...`,serverModeSingleDeviceNote:`Примечание: серверный режим требует, чтобы пылесос был единственным устройством на этом мосту. Сначала удалите другие объекты, затем включите серверный режим в настройках моста.`,serverModeEnabled:`Серверный режим включён. Мост перезапустится с пылесосом как самостоятельным устройством.`,serverModeEnableFailed:`Не удалось включить серверный режим: {{error}}`,pairing:`Сопряжение`,bridgeInfo:`Информация о мосте`,commissioned:`Подключён`,addController:`Добавить ещё контроллер`,openingCommissioning:`Открытие окна сопряжения...`,fabricTooltip:`Fabric представляет подключение к Matter-контроллеру (например, Apple Home, Google Home, Alexa). Каждый контроллер создаёт один fabric при сопряжении.`,forceSync:`Принудительная синхронизация`,syncing:`Синхронизация...`,forceSyncTooltip:`Отправить все текущие состояния устройств подключённым контроллерам`,editFilters:`Редактировать фильтры`,addFilters:`Добавить фильтры`,bridgeNotRunning:`Мост не запущен. Запустите мост, чтобы увидеть информацию о сопряжении.`,manualCode:`Код для ввода вручную`,openingWindow:`Открытие окна сопряжения...`,bridgeId:`ID моста`,passcode:`Пароль`,discriminator:`Дискриминатор`,connectedFabrics:`Подключённые fabric-соединения ({{count}})`,noFabrics:`Контроллеры пока не подключены. Отсканируйте QR-код вашим Matter-контроллером для сопряжения.`,entityFilters:`Фильтры объектов`,noFilters:`Фильтры не настроены. Все поддерживаемые объекты будут доступны.`,scanQrCode:`Отсканируйте этот QR-код вашим Matter-контроллером (Apple Home, Google Home, Alexa и др.), чтобы добавить мост в другую экосистему.`,appleHomeWarning:`Этот мост использует расширенный Flat-режим. Отключайте только если вы используете исключительно Apple Home.`,googleHomeWarning:`Это может вызвать проблемы с Apple Home и Google Home.`,resetSuccess:`Мост успешно сброшен`,deleteSuccess:`Мост успешно удалён`,confirmResetTitle:`Сброс моста к заводским настройкам`,confirmResetMessage:`Это удалит всю информацию о сопряжении и вернёт мост в исходное состояние. Подключённые контроллеры потеряют доступ. Это действие нельзя отменить.`,confirmDeleteTitle:`Удалить мост`,confirmDeleteMessage:`Это навсегда удалит мост, все его сопряжения и привязки объектов. Подключённые контроллеры потеряют доступ. Это действие нельзя отменить.`,importTitle:`Импорт мостов`,overwriteExisting:`Перезаписать существующие мосты`,iconLabel:`Иконка моста`,google:`Google`,alexa:`Alexa`,serverMode:`Серверный режим`,autoForceSync:`Автоматическая синхронизация`,saveSuccess:`Мост сохранён`,updateSuccess:`Обновление завершено`,exportFailed:`Ошибка экспорта`,actionStarted:`Запущено`,actionStopped:`Остановлено`,actionRestarted:`Перезапущено`,actionFailed:`{{action}}, ошибка`,actionResult:`{{label}} {{count}} мост(ов)`,couldNotLoad:`Не удалось загрузить мосты`,showingFirst:`Показаны первые {{count}}`,importParseFailed:`Не удалось разобрать файл импорта. Выберите корректный файл экспорта.`,importing:`Импорт...`,importCount:`Импортировать {{count}} мост(ов)`,jsonEditor:`JSON-редактор`,formEditor:`Редактор форм`},endpoints:{title:`Конечные точки`,searchPlaceholder:`Поиск конечных точек...`,sortBy:`Сортировка`,sortName:`Имя`,sortEndpoint:`ID конечной точки`,sortType:`Тип`,cardView:`Карточки`,treeView:`Дерево`,clusters:`Кластеры`,entityUnavailable:`Объект недоступен`,showUnavailable:`Показать {{count}} недоступных`,showAll:`Показать все объекты`,uploadImage:`Загрузить изображение устройства`,removeImage:`Удалить пользовательское изображение`,editMapping:`Редактировать привязку объекта`,homeAssistantEntity:`Объект Home Assistant`,noEndpoints:`Конечные точки не найдены.`,expandAll:`Развернуть все`,collapseAll:`Свернуть все`,viewAll:`Все устройства`,haState:`Состояние HA`,aboutEndpoint:`Об этой конечной точке`,entityId:`ID объекта`,customName:`Пользовательское имя`,deviceTypeOverride:`Переопределение типа устройства`,keyHaAttributes:`Ключевые атрибуты HA`,entityMappings:`Привязки объектов`,copyData:`Копировать данные в буфер обмена`,behavior:`Поведение`},health:{title:`Состояние и диагностика`,version:`Версия`,uptime:`Время работы`,homeAssistant:`Home Assistant`,connected:`Подключено`,disconnected:`Отключено`,bridgeStatus:`Статус моста`,refreshHealth:`Обновить данные о состоянии`,exportDiagnostic:`Экспорт диагностики`,memory:`Память`,fabricDetails:`Данные fabric`,sessions:`Сессии`,subscriptions:`Подписки`,noFabrics:`Нет подключённых fabric`,systemMetrics:`Системные метрики`,heap:`Heap`,rss:`RSS`,external:`Внешняя`,systemHealth:`Состояние системы`,fetchFailed:`Не удалось получить данные о состоянии`,connectionError:`Ошибка подключения`,exportFailed:`Не удалось экспортировать данные диагностики`,restartFailed:`Не удалось перезапустить мост`,unableToLoad:`Не удалось загрузить данные о состоянии`,sortBy:`Сортировать по`,created:`Создано`,ascending:`По возрастанию`,descending:`По убыванию`,connectedTo:`Подключено к`,autoRecovery:`Автовосстановление`,recoveryAttempts:`Попытки восстановления`,fabrics:`фабрик`,networkDiagnostics:`Диагностика сети`,checksPassed:`пройдено`,checksWarning:`предупреждения`,checksFailed:`ошибки`,hideDetails:`Скрыть детали`,showDetails:`Показать детали`,allChecks:`Все проверки`,check:`Проверка`,statusLabel:`Статус`,message:`Сообщение`,networkInterfaces:`Сетевые интерфейсы`,interfaceName:`Интерфейс`,refresh:`Обновить`},mapping:{title:`Привязки объектов`,entityId:`ID объекта`,deviceType:`Тип устройства`,customName:`Пользовательское имя`,status:`Статус`,addMapping:`Добавить привязку`,editMapping:`Редактировать привязку`,deleteMapping:`Удалить привязку`,saved:`Привязка для {{entityId}} сохранена. Перезапустите мост для применения изменений.`,saveFailed:`Не удалось сохранить привязку: {{error}}`,deleted:`Привязка для {{entityId}} удалена.`,deleteFailed:`Не удалось удалить привязку.`,matterTag:`Matter-тег`,exportProfile:`Экспорт профиля привязок`,importProfile:`Импорт профиля привязок`,profileName:`Имя профиля`,match:`Совпадение`,existing:`Существует`,autoDetect:`Автоопределение (по умолчанию)`,loadFailed:`Не удалось загрузить привязки объектов`,noMappings:`Пользовательские привязки не настроены. Используйте привязки для переопределения типов Matter-устройств, установки пользовательских имён или отключения отдельных объектов.`,applying:`Применение...`,applyCount:`Применить {{count}} привязку(и)`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},notFound:{title:`Страница не найдена`,description:`Запрашиваемая страница не существует.`,backToDashboard:`Вернуться на панель управления`},devices:{title:`Устройства`,searchPlaceholder:`Поиск устройств...`,filterBridge:`Мост`,allBridges:`Все мосты`,filterDeviceType:`Тип устройства`,allTypes:`Все типы`,sortBy:`Сортировать по`,sortBridge:`Мост`,sortType:`Тип устройства`,sortName:`Имя`,deviceCount:`{{count}} устройство(а)`,filteredCount:`{{filtered}} из {{total}} устройств`},diagnostics:{title:`Диагностика в реальном времени`,stateUpdate:`Обновление состояния`,command:`Команда`,entityError:`Ошибка`,sessionOpen:`Сессия открыта`,sessionClose:`Сессия закрыта`,subscription:`Подписка`,bridgeStart:`Мост запущен`,bridgeStop:`Мост остановлен`,entityWarning:`Предупреждение`,filterEvents:`Фильтр типов событий`,clearEvents:`Очистить все события`,noEvents:`Нет событий, соответствующих текущим фильтрам.`},startup:{title:`Порядок запуска`,description:`Перетаскивайте мосты для настройки порядка запуска. Мосты с меньшей позицией запускаются первыми.`,saveSuccess:`Порядок запуска успешно сохранён`,saveFailed:`Не удалось сохранить порядок запуска`,saveChanges:`Сохранить изменения`,unsavedChanges:`У вас есть несохранённые изменения порядка запуска.`,noBridges:`Мосты пока не настроены.`,saveOrder:`Сохранить порядок запуска`},areaSetup:{title:`Настройка зон`,heading:`Настройка мостов по зонам`,description:`Автоматически создать по одному мосту на каждую зону Home Assistant. Каждый мост будет содержать все поддерживаемые объекты из этой зоны.`,noAreas:`Не найдено зон с поддерживаемыми объектами в Home Assistant. Убедитесь, что ваши устройства назначены зонам в HA.`,selectController:`1. Выберите контроллер (необязательно)`,selectAreas:`2. Выберите зоны ({{selected}} из {{total}})`,clear:`Очистить`,createBridges:`Создать {{count}} мост(ов)`,results:`Результаты`,goToBridges:`Перейти к мостам`,createdSuccess:`Успешно создано {{count}} мост(ов)`,createdPartial:`Создано {{succeeded}}, ошибка у {{failed}} мост(ов)`,loadFailed:`Не удалось загрузить зоны`,creating:`Создание...`,created:`Создано`,unknownError:`Неизвестная ошибка`},lockCredentials:{title:`Учётные данные замков`,addCredential:`Добавить учётные данные`,editCredential:`Редактировать учётные данные`,lockEntityId:`ID объекта замка`,lockEntityHelperText:`ID объекта Home Assistant для замка`,pinCode:`PIN-код`,nameOptional:`Имя (необязательно)`,namePlaceholder:`Входная дверь`,nameHelperText:`Понятное имя для этих учётных данных`,entityRequired:`ID объекта обязателен`,pinLength:`PIN должен содержать 4-8 цифр`,pinDigitsOnly:`PIN должен содержать только цифры`,saveFailed:`Не удалось сохранить`,loadFailed:`Не удалось загрузить учётные данные`,deleteFailed:`Не удалось удалить`,updateFailed:`Не удалось обновить`,enable:`Включить`,disable:`Отключить`,confirmDeleteTitle:`Удалить учётные данные`,confirmDeleteMessage:`Это навсегда удалит PIN-код для {{entity}}. Это действие нельзя отменить.`},labels:{title:`Справочник фильтров`,info:`Просматривайте все доступные значения фильтров для конфигурации моста. Нажмите на значение, чтобы скопировать его в буфер обмена.`,searchPlaceholder:`Поиск...`,loadFailed:`Не удалось загрузить данные`,labelsSection:`Метки`,labelsHint:`Используйте с типом фильтра "entity_label" или "device_label". Можно использовать как отображаемое имя, так и label_id.`,noLabels:`Метки в Home Assistant не найдены. Создайте метки в разделе Настройки > Метки.`,displayName:`Отображаемое имя`,labelId:`label_id`,areaId:`area_id`,areasSection:`Зоны`,areasHint:`Используйте с типом фильтра "area". Зоны также используются для автоматического назначения комнат в Matter-контроллерах.`,noAreas:`Зоны в Home Assistant не найдены. Создайте зоны в разделе Настройки > Зоны.`,otherFilterValues:`Другие значения фильтров`,domains:`Домены`,domainsHint:`Используйте с типом фильтра "domain".`,platforms:`Платформы / Интеграции`,platformsHint:`Используйте с типом фильтра "platform".`,entityCategories:`Категории объектов`,entityCategoriesHint:`Используйте с типом фильтра "entity_category".`,deviceClasses:`Классы устройств`,deviceClassesHint:`Используйте с типом фильтра "device_class".`,deviceNames:`Имена устройств`,deviceNamesHint:`Используйте с типом фильтра "device_name".`,productNames:`Названия продуктов`,productNamesHint:`Используйте с типом фильтра "product_name".`},logs:{title:`Системные журналы`,logLevel:`Уровень журнала`,error:`Ошибка`,warning:`Предупреждение`,info:`Информация`,debug:`Отладка`,searchPlaceholder:`Поиск в журналах...`,noResults:`Записи не найдены`,autoRefresh:`Автообновление`},backup:{title:`Резервное копирование и восстановление`,description:`Создайте полную резервную копию мостов и привязок объектов или восстановите из предыдущей копии.`,configBackup:`Резервная копия конфигурации`,configBackupDesc:`Экспорт конфигураций мостов и привязок объектов.`,configBackupNote:`После восстановления мосты потребуют повторного сопряжения.`,fullBackup:`Полная резервная копия (с идентификацией)`,fullBackupDesc:`Включает файлы идентификации Matter (ключи, учётные данные fabric).`,fullBackupWarning:`Сохраняет состояние сопряжения при восстановлении. НЕ ПЕРЕДАВАЙТЕ!`,restoreFromBackup:`Восстановить из резервной копии`,restoreDesc:`Загрузите ранее созданный файл резервной копии для восстановления мостов и конфигураций.`,restoreTitle:`Восстановление из резервной копии`,selectBridges:`Выберите мосты для восстановления`,overwriteExisting:`Перезаписать существующие мосты`,includeMappings:`Включить привязки объектов`,restoreIdentities:`Восстановить идентификации Matter (без повторного сопряжения)`,restore:`Восстановить`,downloadSuccess:`Резервная копия успешно загружена!`,restartRequired:`Требуется перезапуск`,restartMessage:`Мосты восстановлены из резервной копии. Для применения изменений необходим перезапуск.`,restartNote:`Приложение перезапустится, и вам может потребоваться обновить эту страницу.`,restartNow:`Перезапустить сейчас`,storedBackups:`Сохранённые резервные копии`,createSnapshot:`Создать резервную копию`,noSnapshots:`Сохранённых резервных копий пока нет. Копии создаются автоматически при завершении работы или могут быть созданы вручную.`,downloadSnapshot:`Скачать`,restoreSnapshot:`Восстановить`,auto:`Авто`,manual:`Вручную`,snapshotCreated:`Резервная копия успешно создана!`,snapshotRestored:`Восстановлено: {{bridges}} мостов, {{mappings}} привязок, {{identities}} идентификаций.`,confirmRestore:`Подтвердить восстановление`,confirmRestoreMessage:`Вы уверены, что хотите восстановить из "{{filename}}"? Это перезапишет текущую конфигурацию.`,restoreWarning:`Все существующие мосты и конфигурации будут перезаписаны. После восстановления потребуется перезапуск.`,confirmDelete:`Удалить резервную копию`,confirmDeleteMessage:`Вы уверены, что хотите удалить "{{filename}}"? Это действие нельзя отменить.`,settings:`Настройки резервного копирования`,autoBackupLabel:`Автоматическое резервное копирование`,autoBackupDesc:`Автоматически создавать полную резервную копию при завершении или перезапуске приложения.`,retentionCount:`Хранить копий`,retentionCountDesc:`Количество резервных копий для хранения (старые удаляются автоматически)`},networkMap:{title:`Карта сети`,hubLabel:`HAMH`,undoMove:`Отменить перемещение`,resetLayout:`Сбросить расположение`,refreshData:`Обновить данные`,fullscreen:`Полный экран`,exitFullscreen:`Выйти из полного экрана`,legend:`Легенда`,controller:`Контроллер`,hub:`HAMH Hub`,bridge:`Мост`,device:`Устройство`,failed:`Ошибка`},updateChecker:{title:`Обновления программного обеспечения`,checkNow:`Проверить сейчас`,currentVersion:`Текущая версия`,latestVersion:`Последняя версия`,updateAvailable:`Доступно обновление!`,upToDate:`Вы используете последнюю версию.`,releaseNotes:`Примечания к выпуску`,notAvailable:`Проверка обновлений недоступна в этой версии`,checkFailed:`Не удалось проверить обновления`,unreachable:`Сервер недоступен`,instructionAddon:`Обновите через Настройки → Дополнения в Home Assistant.`,instructionDocker:`Загрузите последний образ и пересоздайте контейнер.`,instructionNpm:`Выполните: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Мастер настройки моста`,stepTemplate:`Шаблон`,stepController:`Контроллер`,stepBridgeInfo:`Информация о мосте`,stepEntityFilter:`Фильтр объектов`,stepFeatureFlags:`Флаги функций`,stepReview:`Проверка и создание`,autoCompose:`Автоматическое объединение устройств`,autoForceSyncFlag:`Автоматическая синхронизация`,invertCover:`Инвертировать направление штор`,invertCoverDescription:`Поменять местами направления открытия/закрытия штор. Используйте, если шторы показывают неправильное положение в Matter-контроллерах.`,includeHidden:`Включить скрытые объекты`,includeHiddenDescription:`Также отображать объекты, отмеченные как скрытые в Home Assistant.`,bridgeName:`Имя моста`,portLabel:`Порт`,portAutoAssign:`Автоматически назначается следующий доступный порт`,nameRequired:`Пожалуйста, введите имя моста`,createFailed:`Не удалось создать мост`,bridgeInfoDescription:`Задайте имя и порт для моста.`,serverModeLabel:`Серверный режим (для роботов-пылесосов)`,serverModeTooltip:`Необходим для работы роботов-пылесосов с Apple Home (Siri) и Alexa. Мосты в серверном режиме поддерживают только ОДНО устройство.`,entityFilterDescription:`Настройте, какие объекты должны быть включены в этот мост.`,includeAll:`Включить все объекты (подстановочный знак)`,entityId:`ID объекта`,includePattern:`Шаблон включения`,entityFilters:`Фильтры объектов`,serverModeEntityHint:`Серверный режим поддерживает только ОДНО устройство. Введите точный ID объекта (например, vacuum.my_vacuum).`,templatePreConfigured:`Предварительно настроено шаблоном. Редактируйте в полном редакторе после создания.`,wildcardHint:`Используйте * для всех или шаблоны вроде light.*, switch.*`,commaHint:`Введите конкретные ID объектов через запятую`,excludePatterns:`Шаблоны исключения (необязательно)`,excludeHelperText:`Шаблоны для исключения через запятую`,skipTemplate:`Пропустить шаблон`,creating:`Создание...`,createBridge:`Создать мост`,searchRules:`Поиск правил...`,templateDescription:`Выберите шаблон для быстрого старта или пропустите для создания пользовательского моста.`,controllerDescription:`Какой Matter-контроллер вы будете использовать? Это оптимизирует флаги функций для вашего контроллера.`,controllerHint:`Вы можете изменить флаги функций на следующих шагах или после создания моста.`,templateApplied:`Шаблон "{{name}}" применён. Настройте имя и порт ниже.`,filterPreConfiguredFrom:`Фильтр предварительно настроен из шаблона "{{name}}". Вы можете изменить его ниже.`,featureFlagsDescription:`Флаги функций управляют тем, как устройства представляются Matter-контроллерам.`,recommendedFlags:`Рекомендуемые флаги для {{name}} предварительно выбраны.`,selectFlags:`Выберите флаги, подходящие для вашей конфигурации.`,reviewDescription:`Проверьте конфигурацию моста:`,bridgesToCreate:`Мосты для создания ({{count}})`,bridgesCreated:`{{count}} мост(ов) уже создано в этой сессии`,addAnother:`Добавить ещё`},footer:{github:`GitHub`,documentation:`Документация`},languageSwitcher:{disclaimer:`Переводы могут быть неполными.`,contribute:`Помогите их улучшить!`},translationEditor:{title:`Редактор переводов`,editLanguage:`Язык для редактирования`,info:`Редактируйте переводы прямо в браузере. Изменения сохраняются локально и применяются мгновенно. Экспортируйте переводы для отправки в проект.`,progress:`{{translated}} / {{total}} ключей переведено`,localEdits:`{{count}} локальных правок`,searchPlaceholder:`Поиск ключей или значений...`,filterAll:`Все ключи`,filterMissing:`Отсутствующие`,filterEdited:`Изменённые`,exportJson:`Экспорт JSON`,copyJson:`Копировать JSON`,copied:`Скопировано!`,resetAll:`Сбросить все правки`,resetKey:`Сбросить к значению по умолчанию`,noResults:`Совпадающие ключи перевода не найдены.`,addLanguage:`Добавить язык`,newLanguageCode:`Код языка (например, pt, ja, ko)`,newLanguageName:`Название языка (например, Português)`,addLanguageButton:`Добавить`,languageExists:`Этот язык уже существует.`,codeRequired:`Код языка обязателен.`,nameRequired:`Название языка обязательно.`,removeLanguage:`Удалить язык`,removeLanguageConfirm:`Удалить пользовательский язык "{{name}}"? Все локальные правки для этого языка будут потеряны.`,importJson:`Импорт JSON`,importSuccess:`Импортировано {{count}} перевод(ов).`,importFailed:`Ошибка импорта: недопустимый формат JSON.`}},Ts={common:{loading:`Laddar`,notFound:`Hittades inte`,save:`Spara`,cancel:`Avbryt`,delete:`Radera`,edit:`Redigera`,close:`Stäng`,refresh:`Uppdatera`,search:`Sök`,enabled:`Aktiverad`,disabled:`Inaktiverad`,online:`Online`,offline:`Offline`,running:`Körs`,stopped:`Stoppad`,failed:`Misslyckades`,starting:`Startar`,devices:`Enheter`,fabrics:`Märken`,port:`Port`,unknown:`Okänd`,confirm:`Bekräfta`,create:`Skapa`,back:`Tillbaka`,next:`Nästa`,actions:`Åtgärder`,name:`Namn`,type:`Typ`,error:`Fel`,version:`Version`,copy:`Kopiera`,copied:`Kopierat!`,copyId:`Kopiera ID`,later:`Senare`,skip:`Hoppa över`,reset:`Återställ`,update:`Uppdatera`,all:`Alla`,ascending:`Stigande`,descending:`Fallande`,moveUp:`Flytta upp`,moveDown:`Flytta ner`,selectAll:`Välj alla`,selectNone:`Avmarkera alla`,live:`Live`,new:`Ny`,overwrite:`Skriv över`,active:`Aktiv`,property:`Egenskap`,value:`Värde`,custom:`Anpassad`,startAll:`Starta alla`,stopAll:`Stoppa alla`,restartAll:`Starta om alla`,import:`Importera`,export:`Exportera`,exportAll:`Exportera alla`,wizard:`Guide`},nav:{bridges:`Bryggor`,devices:`Alla enheter`,health:`Hälsa & Diagnostik`,diagnostics:`Livehändelser`,settings:`Inställningar`,networkMap:`Nätverkskarta`,logs:`Loggar`,startupOrder:`Uppstartsordning`,lockCredentials:`Låsuppgifter`,filterReference:`Filterreferens`,systemLogs:`Systemloggar`,lightMode:`Ljust läge`,darkMode:`Mörkt läge`},status:{error:`Fel`,unhealthy:`Ohälsosam`,noBridges:`Inga Bryggor`,loadingHealth:`Laddar hälsostatus...`,unknown:`Okänd`},errorBoundary:{title:`Något gick fel`,fallbackMessage:`Ett oväntat fel inträffade.`,reload:`Ladda om sidan`},settings:{title:`Inställningar`,language:`Språk`,languageDescription:`Välj gränssnittets språk.`,checkUpdates:`Sök efter uppdateringar`,backupRestore:`Säkerhetskopiering & Återställning`,exportBackup:`Exportera säkerhetskopia`,importBackup:`Importera säkerhetskopia`,dangerZone:`Farozon`,resetAll:`Återställ allt`,about:`Om`,username:`Användarnamn`,password:`Lösenord`,enterNewPassword:`Ange nytt lösenord`,enableAuth:`Aktivera autentisering`,disableAuth:`Avaktivera autentisering`,disableAuthMessage:`Detta tar bort lösenordsskyddet från webbgränssnittet. Alla i ditt nätverk kommer att kunna komma åt och ändra din bryggkonfiguration.`,disableAuthConfirm:`Inaktivera autentisering`,usernamePasswordRequired:`Användarnamn och lösenord krävs`,authSaveFailed:`Kunde inte spara autentiseringsinställningarna`,authLoadFailed:`Misslyckades med att läsa in autentiseringsinställningarna`,authDisabled:`Autentisering inaktiverad.`,authRemoveFailed:`Misslyckades med att ta bort autentiseringsinställningarna`},dashboard:{title:`Instrumentpanel`,systemOverview:`Systemöversikt`,quickActions:`Snabbåtgärder`,bridgeOverview:`Brygg-översikt`,noBridges:`Inga bryggor konfigurerade.`,createBridge:`Skapa Brygga`,viewAll:`Visa alla`,totalDevices:`Totalt antal enheter`,customize:`Anpassa`,startAll:`Starta alla`,stopAll:`Stoppa alla`,restartAll:`Starta om alla`,welcome:`Välkommen till Home Assistant Matter Hub`,welcomeDescription:`Koppla dina Home Assistant-enheter till Matter-kontroller som Apple Home, Google Home och Amazon Alexa.`,bridgeWizard:`Brygg-guide`,setupByArea:`Konfigurera efter område`,manualSetup:`Manuell konfiguration`,areaSetup:`Områdeskonfiguration`,documentation:`Dokumentation`,quickNavigation:`Snabbnavigering`,haConnection:`HA-anslutning`,startupOrder:`Startordning`,lockCredentials:`Låsuppgifter`,filterReference:`Filterreferens`,successMessage:`Dina bryggor är anslutna till {{count}} kontroller-fabric(s). Enheter bör nu visas i din kontroller-app.`,noBridgesHint:`Inga bryggor konfigurerade. Använd Brygg-guiden eller skapa en manuellt.`,customizeDashboard:`Anpassa instrumentpanelen`,bridgeStatusRunning:`{{running}} Körs`,bridgeStatusFailed:`{{failed}} misslyckades`,devicesFailed:`{{count}} misslyckades`,uptimeFormat:`{{time}}`},bridge:{name:`Brygg-namn`,port:`Port`,status:`Status`,pairHint:`Koppla denna brygga med din kontroller`,pairDescription:`Öppna din kontroller-app (Apple Home, Google Home eller Amazon Alexa), lägg till ett nytt tillbehör och skanna QR-koden nedan eller ange den manuella kopplingskoden. Se till att din kontroller är på samma nätverk som Home Assistant.`,failedEntities:`Misslyckade entiteter`,serverModeRecommended:`Serverläge rekommenderas för robotdammsugare`,serverModeDescription:`Denna brygga innehåller en robotdammsugare i bryggläge. Apple Home och Alexa visar bryggan som en extra enhet, vilket skapar dubbletter. Aktivera Serverläge för att exponera dammsugaren som en fristående Matter-enhet.`,enableServerMode:`Aktivera Serverläge`,enabling:`Aktiverar...`,start:`Starta`,stop:`Stoppa`,restart:`Starta om`,factoryReset:`Fabriksåterställning`,pairingCode:`Kopplingskod`,openCommissioning:`Öppna kopplingsfönster`,multiPair:`Multi-Fabric-koppling`,deleteBridge:`Radera brygga`,deleteConfirm:`Är du säker på att du vill radera denna brygga?`,featureFlags:`Funktionsflaggor`,failedEntitiesCount:`{{count}} entitet(er) kunde inte laddas.`,clickToShow:`Klicka för att visa detaljer.`,clickToHide:`Klicka för att dölja detaljer.`,loadFailed:`Kunde inte ladda Brygg-detaljer`,refreshHint:`Nya enheter och etikettändringar upptäcks var 30:e sekund.`,refreshingStates:`Uppdaterar tillstånd om {{seconds}} sekunder...`,serverModeSingleDeviceNote:`Obs: Serverläge kräver att dammsugaren är den enda enheten på denna brygga. Ta bort andra entiteter först, aktivera sedan Serverläge i brygg-inställningarna.`,serverModeEnabled:`Serverläge aktiverat. Bryggan startar om med din dammsugare som fristående enhet.`,serverModeEnableFailed:`Kunde inte aktivera Serverläge: {{error}}`,pairing:`Koppling`,bridgeInfo:`Brygg-info`,commissioned:`Kopplad`,addController:`Lägg till en annan kontroller`,openingCommissioning:`Öppnar driftsättningsfönstret...`,fabricTooltip:`En fabric representerar en anslutning till en Matter-kontroller (t.ex. Apple Home, Google Home, Alexa). Varje kontroller skapar en fabric när den paras ihop.`,forceSync:`Tvinga synkronisering`,syncing:`Synkroniserar...`,forceSyncTooltip:`Skicka alla aktuella enhetstillstånd till anslutna styrenheter`,editFilters:`Redigera filter`,addFilters:`Lägg till filter`,bridgeNotRunning:`Bridgen körs inte. Starta bridgen för att se kopplingsinformation.`,manualCode:`Manuell kod`,openingWindow:`Öppnar driftsättningsfönstret...`,bridgeId:`Brygg-ID`,passcode:`Lösenkod`,discriminator:`Diskriminator`,connectedFabrics:`Anslutna Märken ({{count}})`,noFabrics:`Ingen kontroller ansluten. Skanna QR-koden med din Matter-kontroller.`,entityFilters:`Entitetsfilter`,noFilters:`Inga filter konfigurerade. Alla stödda entiteter kommer att exponeras.`,scanQrCode:`Skanna den här QR-koden med din Matter-kontroll (Apple Home, Google Home, Alexa, etc.) för att lägga till den här bryggan i ett annat ekosystem.`,appleHomeWarning:`Den här bryggan använder utökat platt läge. Inaktivera endast detta om du uteslutande använder Apple Home.`,googleHomeWarning:`Detta kan orsaka problem med Apple Home och Google Home.`,resetSuccess:`Brygga återställd`,deleteSuccess:`Brygga raderad`,confirmResetTitle:`Återställ Brygga`,confirmResetMessage:`Detta tar bort all parkopplingsinformation och återställer bryggan till sitt ursprungliga tillstånd. Anslutna handkontroller förlorar åtkomst. Detta kan inte ångras.`,confirmDeleteTitle:`Radera Brygga`,confirmDeleteMessage:`Detta kommer att permanent ta bort bryggan, alla dess parkopplingar och entitetsmappningar. Anslutna styrenheter kommer att förlora åtkomst. Detta kan inte ångras.`,importTitle:`Importera Brygga`,overwriteExisting:`Skriv över befintliga brygga`,iconLabel:`Brygg-ikon`,google:`Google`,alexa:`Alexa`,serverMode:`Serverläge`,autoForceSync:`Automatisk synkronisering`,saveSuccess:`Brygga sparad`,updateSuccess:`Uppdatering slutförd`,exportFailed:`Export misslyckades`,actionStarted:`Startad`,actionStopped:`Stoppad`,actionRestarted:`Omstartad`,actionFailed:`{{action}} misslyckades`,actionResult:`{{label}} {{count}} brygga(or)`,couldNotLoad:`Kunde inte ladda bryggor`,showingFirst:`Visar första {{count}}`,importParseFailed:`Kunde inte tolka importfilen. Välj en giltig exportfil.`,importing:`Importerar...`,importCount:`Importera {{count}} brygga(or)`,jsonEditor:`JSON-redigerare`,formEditor:`Formulärredigerare`},endpoints:{title:`Slutpunkter`,searchPlaceholder:`Sök slutpunkter...`,sortBy:`Sortera`,sortName:`Namn`,sortEndpoint:`Slutpunkts-ID`,sortType:`Typ`,cardView:`Kortvy`,treeView:`Trädvy`,clusters:`Kluster`,entityUnavailable:`Entitet otillgänglig`,showUnavailable:`Visa {{count}} otillgängliga`,showAll:`Visa alla entiteter`,uploadImage:`Ladda upp enhetsbild`,removeImage:`Ta bort anpassad bild`,editMapping:`Redigera entitetsmappning`,homeAssistantEntity:`Home Assistant-entitet`,noEndpoints:`Inga slutpunkter hittades.`,expandAll:`Expandera alla`,collapseAll:`Komprimera alla`,viewAll:`Visa alla enheter`,haState:`HA-status`,aboutEndpoint:`Om denna slutpunkt`,entityId:`Entitets-ID`,customName:`Anpassat namn`,deviceTypeOverride:`Åsidosatt enhetstyp`,keyHaAttributes:`Viktiga HA-attribut`,entityMappings:`Entitetsmappningar`,copyData:`Kopiera data till urklipp`,behavior:`Beteende`},health:{title:`Hälsa & Diagnostik`,version:`Version`,uptime:`Drifttid`,homeAssistant:`Home Assistant`,connected:`Ansluten`,disconnected:`Frånkopplad`,bridgeStatus:`Brygg-status`,refreshHealth:`Uppdatera hälsodata`,exportDiagnostic:`Exportera diagnostik`,memory:`Minne`,fabricDetails:`Fabric-detaljer`,sessions:`Sessioner`,subscriptions:`Prenumerationer`,noFabrics:`Inga Märken anslutna`,systemMetrics:`Systemmått`,heap:`Heap`,rss:`RSS`,external:`Extern`,systemHealth:`Systemhälsa`,fetchFailed:`Kunde inte hämta hälsostatus`,connectionError:`Anslutningsfel`,exportFailed:`Kunde inte exportera diagnostikdata`,restartFailed:`Kunde inte starta om bridge`,unableToLoad:`Kunde inte ladda hälsostatus`,sortBy:`Sortera efter`,created:`Skapad`,ascending:`Stigande`,descending:`Fallande`,connectedTo:`Ansluten till`,autoRecovery:`Automatisk återställning`,recoveryAttempts:`Återställningsförsök`,fabrics:`Märke`,networkDiagnostics:`Nätverks diagnostik`,checksPassed:`Godkänd`,checksWarning:`Varning`,checksFailed:`misslyckades`,hideDetails:`Dölj detaljer`,showDetails:`Visa detaljer`,allChecks:`Alla Kontroller`,check:`Kontroller`,statusLabel:`Status`,message:`Meddelande`,networkInterfaces:`Nätverksgränssnitt`,interfaceName:`Gränssnitt`,refresh:`Uppdatera`},mapping:{title:`Entitetsmappningar`,entityId:`Entitets-ID`,deviceType:`Enhetstyp`,customName:`Anpassat namn`,status:`Status`,addMapping:`Lägg till mappning`,editMapping:`Redigera mappning`,deleteMapping:`Radera mappning`,saved:`Mappning sparad för {{entityId}}. Starta om bridgen för att tillämpa ändringar.`,saveFailed:`Kunde inte spara mappning: {{error}}`,deleted:`Mappning raderad för {{entityId}}.`,deleteFailed:`Kunde inte radera mappning.`,matterTag:`Matter Tag`,exportProfile:`Exportera mappningsprofil`,importProfile:`Importera mappningsprofil`,profileName:`Profilnamn`,match:`Match`,existing:`Existerande`,autoDetect:`Automatisk identifiering (standard)`,customProductName:`Anpassat produktnamn`,customProductNameHelp:`Åsidosätt produktnamnet (modellen) som rapporterats till Matter-kontroller. Vissa kontroller (t.ex. Aqara) visar detta som enhetsnamn`,customVendorName:`Anpassat leverantörsnamn`,customVendorNameHelp:`Åsidosätt leverantörs-/tillverkarenamnet som rapporterats till ärendeansvariga`,customSerialNumber:`Anpassat serienummer`,customSerialNumberHelp:`Åsidosätt serienumret som rapporteras till ärendekontroller`,loadFailed:`Misslyckades med att läsa in entitetsmappningar`,noMappings:`Inga anpassade entitetsmappningar har konfigurerats. Använd mappningar för att åsidosätta enhetstyper för Matter, ange anpassade namn eller inaktivera specifika entiteter.`,applying:`Tillämpar`,applyCount:`Tillämpa {{count}} mappning(ar)`},notFound:{title:`Sidan hittades inte`,description:`Sidan du letar efter finns inte.`,backToDashboard:`Tillbaka till instrumentpanelen`},devices:{title:`Enheter`,searchPlaceholder:`Sök enheter`,filterBridge:`Brygga`,allBridges:`Alla bryggor`,filterDeviceType:`Enhetstyp`,allTypes:`Alla typer`,sortBy:`Sortera efter`,sortBridge:`Brygga`,sortType:`Enhetstyp`,sortName:`Namn`,deviceCount:`{{count}} Enheter`,filteredCount:`{{filtered}} av {{total}} enheter`},diagnostics:{title:`Live diagnostik`,stateUpdate:`Uppdatering om tillstånd`,command:`Kommando`,entityError:`Fel`,sessionOpen:`Session öppen`,sessionClose:`Session stängd`,subscription:`Prenumeration`,bridgeStart:`Brygg start`,bridgeStop:`Brygg stop`,entityWarning:`Varning`,filterEvents:`Filtrera händelsetyper`,clearEvents:`Rensa alla händelser`,noEvents:`Inga händelser matchar de aktuella filtren.`},startup:{title:`Uppstartsordning`,description:`Dra och släpp bryggor för att ställa in startordningen. Lägre positioner börjar först.`,saveSuccess:`Startordern har sparats`,saveFailed:`Kunde inte spara startordningen`,saveChanges:`Spara ändringar`,unsavedChanges:`Du har osparade ändringar i startordningen.`,noBridges:`Inga bryggor konfigurerade än.`,saveOrder:`Spara Uppstartsordning`},areaSetup:{title:`Områdes inställning`,heading:`Områdesbaserad brygginstallation`,description:`Skapa automatiskt en brygga per Home Assistant-område. Varje brygga kommer att inkludera alla enheter som stöds från det området.`,noAreas:`Inga områden med stödda enheter hittades i Home Assistant. Se till att dina enheter är tilldelade områden i HA.`,selectController:`1. Välj styrenhet (valfritt)`,selectAreas:`2. Välj områden ({{selected}} av {{total}})`,clear:`Rensa`,createBridges:`Skapa {{count}} brygga(or)`,results:`Resultat`,goToBridges:`Gå till bryggor`,createdSuccess:`{{count}} brygga(or) har skapats`,createdPartial:`Skapade {{succeeded}}, misslyckades med {{failed}} brygga(or)`,loadFailed:`Misslyckades med att ladda områden`,creating:`Skapande...`,created:`Skapad`,unknownError:`Okänt fel`},lockCredentials:{title:`Lås inloggningsuppgifter`,addCredential:`Lägg till låsuppgifter`,editCredential:`Redigera låsuppgifter`,lockEntityId:`Lås enhets-ID`,lockEntityHelperText:`Låsets enhets-ID för Home Assistant`,pinCode:`PIN-kod`,nameOptional:`Namn (valfritt)`,namePlaceholder:`Ytterdörr`,nameHelperText:`Vänligt namn för denna autentiseringsuppgift`,entityRequired:`Enhets-ID krävs`,pinLength:`PIN-koden måste vara 4-8 siffror`,pinDigitsOnly:`PIN-koden får endast innehålla siffror`,saveFailed:`Misslyckades med att spara`,loadFailed:`Misslyckades med att ladda inloggningsuppgifterna`,deleteFailed:`Misslyckades med att radera`,updateFailed:`Misslyckades med att uppdatera`,enable:`Aktivera`,disable:`Inaktivera`,confirmDeleteTitle:`Ta bort autentiseringsuppgifter`,confirmDeleteMessage:`Detta kommer att permanent radera PIN-uppgifterna för {{entity}}. Detta kan inte ångras.`},labels:{title:`Filterreferens`,info:`Bläddra bland alla tillgängliga filtervärden för din bryggkonfiguration. Klicka på valfritt värde för att kopiera det till urklipp.`,searchPlaceholder:`Sök`,loadFailed:`Misslyckades med att ladda data`,labelsSection:`Etiketter`,labelsHint:`Använd med filtertypen "entity_label" eller "device_label". Du kan använda antingen visningsnamnet eller etikett_id.`,noLabels:`Inga etiketter hittades i Home Assistant. Skapa etiketter under Inställningar > Etiketter.`,displayName:`Visningsnamn`,labelId:`etikett_id`,areaId:`områdes-id`,areasSection:`Områden`,areasHint:`Använd med filtertypen "område". Områden används även för automatisk rumstilldelning i Matter-regulatorer.`,noAreas:`Inga områden hittades i Home Assistant. Skapa områden under Inställningar > Områden.`,otherFilterValues:`Andra filtervärden`,domains:`Domäner`,domainsHint:`Använd med filtertypen "domän".`,platforms:`Plattformar / Integrationer`,platformsHint:`Använd med filtertypen "plattform".`,entityCategories:`Enhetskategorier`,entityCategoriesHint:`Använd med filtertypen "entitetskategori".`,deviceClasses:`Enhetsklasser`,deviceClassesHint:`Använd med filtertypen "device_class".`,deviceNames:`Enhetsnamn`,deviceNamesHint:`Använd med filtertypen "enhetsnamn".`,productNames:`Produktnamn`,productNamesHint:`Använd med filtertypen "produktnamn".`},logs:{title:`Systemloggar`,logLevel:`Loggnivå`,error:`Fel`,warning:`Varning`,info:`Info`,debug:`Felsök`,searchPlaceholder:`Sök i loggar...`,noResults:`Inga loggar hittades`,autoRefresh:`Automatisk uppdatering`},backup:{title:`Säkerhetskopiering & Återställning`,description:`Skapa en fullständig säkerhetskopia av dina bryggor och entitetsmappningar, eller återställ från en tidigare säkerhetskopia.`,configBackup:`Enkel säkerhetskopia`,configBackupDesc:`Exportera bryggkonfigurationer och entitetsmappningar.`,configBackupNote:`Bryggorna kommer att behöva tas i bruk igen efter återställning.`,fullBackup:`Full säkerhetskopia (med identitet)`,fullBackupDesc:`Inkluderar ärendeidentitetsfiler (nyckelpar, fabric-inloggningsuppgifter).`,fullBackupWarning:`Bevarar driftsättningstillståndet vid återställningar. DELA INTE!`,restoreFromBackup:`Återställ från säkerhetskopia`,restoreDesc:`Ladda upp en tidigare skapad säkerhetskopia för att återställa bryggor och konfigurationer.`,restoreTitle:`Återställ säkerhetskopia`,selectBridges:`Välj bryggor att återställa`,overwriteExisting:`Skriv över befintliga bryggor`,includeMappings:`Inkludera entitetsmappningar`,restoreIdentities:`Återställ Matter-identiteter (ingen återinsättning krävs)`,restore:`Återställ`,downloadSuccess:`Säkerhetskopieringen har laddats ner!`,restartRequired:`Omstart krävs`,restartMessage:`Bryggorna har återställts från säkerhetskopian. En omstart krävs för att ändringarna ska träda i kraft.`,restartNote:`Applikationen startar om och du kan behöva uppdatera sidan.`,restartNow:`Starta om nu`,storedBackups:`Lagrade säkerhetskopior`,createSnapshot:`Skapa säkerhetskopia`,noSnapshots:`Inga lagrade säkerhetskopior ännu. Säkerhetskopior skapas automatiskt vid avstängning eller så kan de skapas manuellt.`,downloadSnapshot:`Ladda ner`,restoreSnapshot:`Återställ`,auto:`Auto`,manual:`Manuell`,snapshotCreated:`Säkerhetskopiering skapad!`,snapshotRestored:`Återställda {{bridges}} bryggor, {{mappings}} mappningar, {{identities}} identiteter.`,confirmRestore:`Bekräfta återställning`,confirmRestoreMessage:`Är du säker på att du vill återställa från "{{filename}}"? Detta kommer att skriva över din nuvarande konfiguration.`,restoreWarning:`Alla befintliga bryggor och konfigurationer kommer att skrivas över. En omstart krävs efter återställningen.`,confirmDelete:`Ta bort säkerhetskopia`,confirmDeleteMessage:`Är du säker på att du vill ta bort "{{filename}}"? Den här åtgärden kan inte ångras.`,settings:`Säkerhetskopieringsinställningar`,autoBackupLabel:`Automatisk säkerhetskopiering`,autoBackupDesc:`Skapar automatiskt en fullständig säkerhetskopia när programmet stängs av eller startas om.`,retentionCount:`Behåll säkerhetskopior`,retentionCountDesc:`Antal säkerhetskopior att behålla (de äldsta raderas automatiskt)`},networkMap:{title:`Nätverkskarta`,hubLabel:`HAMH`,undoMove:`Ångra senaste drag`,resetLayout:`Nollställ utseende`,refreshData:`Uppdatera data`,fullscreen:`Fullskärm`,exitFullscreen:`Avsluta fullskärm`,legend:`Legend`,controller:`Kontroller`,hub:`HAMH Hub`,bridge:`Brygga`,device:`Enhet`,failed:`Misslyckades`},updateChecker:{title:`Programvaru uppdatering`,checkNow:`Kontrollera nu`,currentVersion:`Nuvarande version`,latestVersion:`Senaste version`,updateAvailable:`Uppdatering tillgänglig`,upToDate:`Du kör den senaste versionen`,releaseNotes:`Versionsinformation`,notAvailable:`Uppdateringskontroll är inte tillgänglig i den här versionen`,checkFailed:`Misslyckades med att söka efter uppdateringar`,unreachable:`Det gick inte att nå servern`,instructionAddon:`Uppdatera via Inställningar → Appar i Home Assistant.`,instructionDocker:`Hämta den senaste avbildningen och återskapa din container.`,instructionNpm:`Kör: npm install -g home-assistant-matter-hub@latest`},bridgeWizard:{title:`Guiden för brygginstallation`,stepTemplate:`Template`,stepController:`Kontroller`,stepBridgeInfo:`Brygg info`,stepEntityFilter:`Entitetsfilter`,stepFeatureFlags:`Funktionsflaggor`,stepReview:`Granska & skapa`,autoCompose:`Auto Komponera enheter`,autoForceSyncFlag:`Automatisk tvångssynkronisering`,invertCover:`Invertera rullgardin`,invertCoverDescription:`Byt öppnings-/stängningsriktning för omslag. Använd detta om dina omslag visar fel position i Matter-kontrollerna.`,includeHidden:`Inkludera gömda enheter`,includeHiddenDescription:`Visa även enheter som är markerade som dolda i Home Assistant.`,bridgeName:`Brygg namn`,portLabel:`Port`,portAutoAssign:`Tilldelas automatiskt till nästa tillgängliga port`,nameRequired:`Ange ett namn på en brygga`,createFailed:`Misslyckades att skapa brygga`,bridgeInfoDescription:`Ge din brygga ett namn och en port.`,serverModeLabel:`Serverläge (för robotdammsugare)`,serverModeTooltip:`Krävs för att robotdammsugare ska fungera med Apple Home (Siri) och Alexa. Serverlägesbryggor stödjer endast EN enhet.`,entityFilterDescription:`Konfigurera vilka entiteter som ska inkluderas i den här bryggan.`,includeAll:`Inkludera alla entiteter (jokertecken)`,entityId:`Enhets-ID`,includePattern:`Inkludera mönster`,entityFilters:`Entitetsfilter`,serverModeEntityHint:`Serverläget stödjer endast EN enhet. Ange exakt enhets-ID (t.ex. vacuum.my_vacuum).`,templatePreConfigured:`Förkonfigurerad av mall. Redigera i den fullständiga redigeraren efter skapandet.`,wildcardHint:`Använd * för alla, eller mönster som light.*, switch.*`,commaHint:`Ange specifika enhets-ID:n separerade med kommatecken`,excludePatterns:`Uteslut mönster (valfritt)`,excludeHelperText:`Mönster att utesluta, kommaseparerade`,skipTemplate:`Hoppa över mall`,creating:`Skapar`,createBridge:`Skapa brygga`,searchRules:`Sök regler`,templateDescription:`Välj en mall för att komma igång snabbt, eller hoppa över för att skapa en anpassad brygga.`,controllerDescription:`Vilken Matter-kontroller kommer du att använda? Detta optimerar funktionsflaggor för din kontroller.`,controllerHint:`Du kan alltid justera funktionsflaggor i nästa steg eller efter att bryggan har skapats.`,templateApplied:`Mallen "{{name}}" har tillämpats. Anpassa namnet och porten nedan.`,filterPreConfiguredFrom:`Filtret är förkonfigurerat från mallen "{{name}}". Du kan justera det nedan.`,featureFlagsDescription:`Funktionsflaggor styr hur enheter exponeras för Matter-kontroller.`,recommendedFlags:`Rekommenderade flaggor för {{name}} är förvalda.`,selectFlags:`Välj de flaggor som matchar din inställning.`,reviewDescription:`Granska din bryggkonfiguration:`,bridgesToCreate:`Bryggor att skapa ({{count}})`,bridgesCreated:`{{count}} brygga(or) har redan skapats i den här sessionen`,addAnother:`Lägg till ytterligare en`},footer:{github:`GitHub`,documentation:`Dokumentation`,support:`Support`},languageSwitcher:{disclaimer:`Översättningar kan vara ofullständiga.`,contribute:`Hjälp till att förbättra dem!`},translationEditor:{title:`Översättningsredigerare`,editLanguage:`Redigera språk`,info:`Redigera översättningar direkt i din webbläsare. Ändringar sparas lokalt och tillämpas direkt. Exportera dina översättningar för att skicka in dem till projektet.`,progress:`{{translated}} / {{total}} nycklar översatta`,localEdits:`{{count}} lokal(a) redigering(ar)`,searchPlaceholder:`Sök nycklar eller värden...`,filterAll:`Alla nycklar`,filterMissing:`Saknade`,filterEdited:`Redigerade`,exportJson:`Exportera JSON`,copyJson:`Kopiera JSON`,copied:`Kopierat!`,resetAll:`Återställ alla redigeringar`,resetKey:`Återställ till standard`,noResults:`Inga matchande översättningsnycklar hittades.`,addLanguage:`Lägg till språk`,newLanguageCode:`Språkkod (t.ex. pt, ja, ko)`,newLanguageName:`Språknamn (t.ex. Português)`,addLanguageButton:`Lägg till`,languageExists:`Detta språk finns redan.`,codeRequired:`Språkkod krävs.`,nameRequired:`Språknamn krävs.`,removeLanguage:`Ta bort språk`,removeLanguageConfirm:`Vill du ta bort det anpassade språket "{{name}}"? Alla lokala redigeringar för det här språket kommer att gå förlorade.`,importJson:`Importera JSON`,importSuccess:`{{count}} översättning(ar) importerade.`,importFailed:`Import misslyckades: ogiltigt JSON-format.`}},Es={common:{loading:`กำลังโหลด`,notFound:`ไม่พบ`,save:`บันทึก`,cancel:`ยกเลิก`,delete:`ลบ`,edit:`แก้ไข`,close:`ปิด`,refresh:`รีเฟรช`,search:`ค้นหา`,enabled:`เปิดใช้งาน`,disabled:`ปิดใช้งาน`,online:`ออนไลน์`,offline:`ออฟไลน์`,running:`กำลังทำงาน`,stopped:`หยุดแล้ว`,failed:`ล้มเหลว`,starting:`กำลังเริ่ม`,devices:`อุปกรณ์`,fabrics:`Fabrics`,port:`พอร์ต`,unknown:`ไม่ทราบ`,confirm:`ยืนยัน`,create:`สร้าง`,back:`ย้อนกลับ`,next:`ถัดไป`,actions:`การดำเนินการ`,name:`ชื่อ`,type:`ประเภท`,error:`ข้อผิดพลาด`,version:`เวอร์ชัน`,copy:`คัดลอก`,copied:`คัดลอกแล้ว!`,copyId:`คัดลอก ID`,later:`ภายหลัง`,skip:`ข้าม`,reset:`รีเซ็ต`,update:`อัปเดต`,all:`ทั้งหมด`,ascending:`น้อยไปมาก`,descending:`มากไปน้อย`,moveUp:`เลื่อนขึ้น`,moveDown:`เลื่อนลง`,selectAll:`เลือกทั้งหมด`,selectNone:`ไม่เลือก`,live:`สด`,new:`ใหม่`,overwrite:`เขียนทับ`,active:`ใช้งานอยู่`,property:`คุณสมบัติ`,value:`ค่า`,custom:`กำหนดเอง`,startAll:`เริ่มทั้งหมด`,stopAll:`หยุดทั้งหมด`,restartAll:`รีสตาร์ททั้งหมด`,import:`นำเข้า`,export:`ส่งออก`,exportAll:`ส่งออกทั้งหมด`,wizard:`ตัวช่วยสร้าง`},nav:{bridges:`Bridges`,devices:`อุปกรณ์ทั้งหมด`,health:`สุขภาพและการวินิจฉัย`,diagnostics:`เหตุการณ์สด`,settings:`การตั้งค่า`,networkMap:`แผนผังเครือข่าย`,logs:`บันทึก`,startupOrder:`ลำดับการเริ่มต้น`,lockCredentials:`ข้อมูลรับรองล็อค`,filterReference:`อ้างอิงตัวกรอง`,systemLogs:`บันทึกระบบ`,lightMode:`โหมดสว่าง`,darkMode:`โหมดมืด`},status:{error:`ข้อผิดพลาด`,unhealthy:`ไม่ปกติ`,noBridges:`ไม่มี Bridge`,loadingHealth:`กำลังโหลดสถานะสุขภาพ...`,unknown:`ไม่ทราบ`},errorBoundary:{title:`เกิดข้อผิดพลาด`,fallbackMessage:`เกิดข้อผิดพลาดที่ไม่คาดคิด`,reload:`โหลดหน้าใหม่`},settings:{title:`การตั้งค่า`,language:`ภาษา`,languageDescription:`เลือกภาษาของอินเทอร์เฟซ`,checkUpdates:`ตรวจสอบการอัปเดต`,backupRestore:`สำรองข้อมูลและกู้คืน`,exportBackup:`ส่งออกข้อมูลสำรอง`,importBackup:`นำเข้าข้อมูลสำรอง`,dangerZone:`โซนอันตราย`,resetAll:`รีเซ็ตทั้งหมด`,about:`เกี่ยวกับ`},dashboard:{title:`แดชบอร์ด`,systemOverview:`ภาพรวมระบบ`,quickActions:`การดำเนินการด่วน`,bridgeOverview:`ภาพรวม Bridge`,noBridges:`ยังไม่มี Bridge ที่กำหนดค่า`,createBridge:`สร้าง Bridge`,viewAll:`ดูทั้งหมด`,totalDevices:`อุปกรณ์ทั้งหมด`,customize:`ปรับแต่ง`,startAll:`เริ่มทั้งหมด`,stopAll:`หยุดทั้งหมด`,restartAll:`รีสตาร์ททั้งหมด`,welcome:`ยินดีต้อนรับสู่ Home Assistant Matter Hub`,welcomeDescription:`เชื่อมต่ออุปกรณ์ Home Assistant ของคุณกับคอนโทรลเลอร์ Matter เช่น Apple Home, Google Home และ Amazon Alexa`,bridgeWizard:`ตัวช่วยสร้าง Bridge`,setupByArea:`ตั้งค่าตามพื้นที่`,manualSetup:`ตั้งค่าด้วยตนเอง`,areaSetup:`ตั้งค่าพื้นที่`,documentation:`เอกสาร`,quickNavigation:`นำทางด่วน`,haConnection:`การเชื่อมต่อ HA`,startupOrder:`ลำดับการเริ่มต้น`,lockCredentials:`ข้อมูลรับรองล็อค`,filterReference:`อ้างอิงตัวกรอง`,successMessage:`Bridge ของคุณเชื่อมต่อกับ {{count}} Fabric คอนโทรลเลอร์แล้ว อุปกรณ์ควรปรากฏในแอปคอนโทรลเลอร์ของคุณ`,noBridgesHint:`ยังไม่มี Bridge ที่กำหนดค่า ใช้ตัวช่วยสร้าง Bridge หรือสร้างด้วยตนเอง`,customizeDashboard:`ปรับแต่งแดชบอร์ด`},bridge:{name:`ชื่อ Bridge`,port:`พอร์ต`,status:`สถานะ`,pairHint:`จับคู่ Bridge นี้กับคอนโทรลเลอร์ของคุณ`,pairDescription:`เปิดแอปคอนโทรลเลอร์ (Apple Home, Google Home หรือ Amazon Alexa) เพิ่มอุปกรณ์เสริมใหม่ แล้วสแกน QR โค้ดด้านล่างหรือป้อนรหัสจับคู่ด้วยตนเอง ตรวจสอบให้แน่ใจว่าคอนโทรลเลอร์อยู่ในเครือข่ายเดียวกับ Home Assistant`,failedEntities:`เอนทิตีที่ล้มเหลว`,serverModeRecommended:`แนะนำโหมดเซิร์ฟเวอร์สำหรับหุ่นยนต์ดูดฝุ่น`,serverModeDescription:`Bridge นี้มีหุ่นยนต์ดูดฝุ่นในโหมดบริดจ์ Apple Home และ Alexa จะแสดง Bridge เป็นอุปกรณ์เพิ่มเติม ทำให้เกิดรายการซ้ำ เปิดใช้โหมดเซิร์ฟเวอร์เพื่อเปิดเผยหุ่นยนต์ดูดฝุ่นเป็นอุปกรณ์ Matter แบบสแตนด์อโลน`,enableServerMode:`เปิดใช้โหมดเซิร์ฟเวอร์`,enabling:`กำลังเปิดใช้...`,start:`เริ่ม`,stop:`หยุด`,restart:`รีสตาร์ท`,factoryReset:`รีเซ็ตเป็นค่าโรงงาน`,pairingCode:`รหัสจับคู่`,openCommissioning:`เปิดหน้าต่างจับคู่`,multiPair:`จับคู่ Multi-Fabric`,deleteBridge:`ลบ Bridge`,deleteConfirm:`คุณแน่ใจหรือไม่ว่าต้องการลบ Bridge นี้?`,featureFlags:`Feature Flags`,failedEntitiesCount:`{{count}} เอนทิตีไม่สามารถโหลดได้`,clickToShow:`คลิกเพื่อแสดงรายละเอียด`,clickToHide:`คลิกเพื่อซ่อนรายละเอียด`,loadFailed:`ไม่สามารถโหลดรายละเอียด Bridge`,refreshHint:`อุปกรณ์ใหม่และการเปลี่ยนแปลงป้ายกำกับจะถูกตรวจพบทุก 30 วินาที`,refreshingStates:`รีเฟรชสถานะใน {{seconds}} วินาที...`,serverModeSingleDeviceNote:`หมายเหตุ: โหมดเซิร์ฟเวอร์ต้องการให้หุ่นยนต์ดูดฝุ่นเป็นอุปกรณ์เดียวบน Bridge นี้ กรุณาลบเอนทิตีอื่นออกก่อน แล้วเปิดใช้โหมดเซิร์ฟเวอร์ในการตั้งค่า Bridge`,serverModeEnabled:`เปิดใช้โหมดเซิร์ฟเวอร์แล้ว Bridge จะรีสตาร์ทโดยมีหุ่นยนต์ดูดฝุ่นเป็นอุปกรณ์สแตนด์อโลน`,serverModeEnableFailed:`ไม่สามารถเปิดใช้โหมดเซิร์ฟเวอร์: {{error}}`,pairing:`การจับคู่`,bridgeInfo:`ข้อมูล Bridge`,commissioned:`จับคู่แล้ว`,addController:`เพิ่มคอนโทรลเลอร์อื่น`,forceSync:`บังคับซิงค์`,syncing:`กำลังซิงค์...`,editFilters:`แก้ไขตัวกรอง`,addFilters:`เพิ่มตัวกรอง`,bridgeNotRunning:`Bridge ไม่ได้ทำงาน เริ่ม Bridge เพื่อดูข้อมูลการจับคู่`,manualCode:`รหัสด้วยตนเอง`,bridgeId:`ID Bridge`,passcode:`รหัสผ่าน`,discriminator:`Discriminator`,connectedFabrics:`Fabric ที่เชื่อมต่อ ({{count}})`,noFabrics:`ยังไม่มีคอนโทรลเลอร์เชื่อมต่อ สแกน QR โค้ดด้วยคอนโทรลเลอร์ Matter`,entityFilters:`ตัวกรองเอนทิตี`,noFilters:`ไม่มีตัวกรองที่กำหนดค่า เอนทิตีที่รองรับทั้งหมดจะถูกเปิดเผย`,resetSuccess:`รีเซ็ต Bridge สำเร็จ`,deleteSuccess:`ลบ Bridge สำเร็จ`,confirmResetTitle:`รีเซ็ต Bridge`,confirmDeleteTitle:`ลบ Bridge`,importTitle:`นำเข้า Bridges`,overwriteExisting:`เขียนทับ Bridge ที่มีอยู่`,iconLabel:`ไอคอน Bridge`,google:`Google`,alexa:`Alexa`,serverMode:`โหมดเซิร์ฟเวอร์`,autoForceSync:`ซิงค์อัตโนมัติ`,saveSuccess:`บันทึก Bridge แล้ว`,updateSuccess:`อัปเดตเสร็จสิ้น`,exportFailed:`ส่งออกล้มเหลว`,actionStarted:`เริ่มแล้ว`,actionStopped:`หยุดแล้ว`,actionRestarted:`รีสตาร์ทแล้ว`,actionFailed:`{{action}} ล้มเหลว`,actionResult:`{{label}} {{count}} Bridge`,couldNotLoad:`ไม่สามารถโหลด Bridge`,showingFirst:`แสดง {{count}} รายการแรก`,importParseFailed:`ไม่สามารถแยกวิเคราะห์ไฟล์นำเข้า กรุณาเลือกไฟล์ส่งออกที่ถูกต้อง`,importing:`กำลังนำเข้า...`,importCount:`นำเข้า {{count}} Bridge`,jsonEditor:`ตัวแก้ไข JSON`,formEditor:`ตัวแก้ไขแบบฟอร์ม`},endpoints:{title:`จุดปลายทาง`,searchPlaceholder:`ค้นหาจุดปลายทาง...`,sortBy:`เรียงลำดับ`,sortName:`ชื่อ`,sortEndpoint:`ID จุดปลายทาง`,sortType:`ประเภท`,cardView:`มุมมองการ์ด`,treeView:`มุมมองต้นไม้`,clusters:`คลัสเตอร์`,entityUnavailable:`เอนทิตีไม่พร้อมใช้งาน`,showUnavailable:`แสดง {{count}} ที่ไม่พร้อมใช้งาน`,showAll:`แสดงเอนทิตีทั้งหมด`,uploadImage:`อัปโหลดรูปภาพอุปกรณ์`,removeImage:`ลบรูปภาพที่กำหนดเอง`,editMapping:`แก้ไขการแมปเอนทิตี`,homeAssistantEntity:`เอนทิตี Home Assistant`,noEndpoints:`ไม่พบจุดปลายทาง`,expandAll:`ขยายทั้งหมด`,collapseAll:`ยุบทั้งหมด`,viewAll:`ดูอุปกรณ์ทั้งหมด`,haState:`สถานะ HA`,aboutEndpoint:`เกี่ยวกับจุดปลายทางนี้`,entityId:`ID เอนทิตี`,customName:`ชื่อที่กำหนดเอง`,deviceTypeOverride:`แทนที่ประเภทอุปกรณ์`,keyHaAttributes:`แอตทริบิวต์ HA สำคัญ`,entityMappings:`การแมปเอนทิตี`,copyData:`คัดลอกข้อมูลไปยังคลิปบอร์ด`,behavior:`พฤติกรรม`},health:{title:`สุขภาพและการวินิจฉัย`,version:`เวอร์ชัน`,uptime:`เวลาทำงาน`,homeAssistant:`Home Assistant`,connected:`เชื่อมต่อแล้ว`,disconnected:`ยกเลิกการเชื่อมต่อ`,bridgeStatus:`สถานะ Bridge`,refreshHealth:`รีเฟรชข้อมูลสุขภาพ`,exportDiagnostic:`ส่งออกการวินิจฉัย`,memory:`หน่วยความจำ`,fabricDetails:`รายละเอียด Fabric`,sessions:`เซสชัน`,subscriptions:`การสมัครรับข้อมูล`,noFabrics:`ไม่มี Fabric เชื่อมต่อ`,systemMetrics:`เมตริกระบบ`,heap:`Heap`,rss:`RSS`,external:`ภายนอก`,systemHealth:`สุขภาพระบบ`,fetchFailed:`ไม่สามารถดึงข้อมูลสถานะสุขภาพ`,connectionError:`ข้อผิดพลาดในการเชื่อมต่อ`,exportFailed:`ไม่สามารถส่งออกข้อมูลการวินิจฉัย`,restartFailed:`ไม่สามารถรีสตาร์ท Bridge`,unableToLoad:`ไม่สามารถโหลดสถานะสุขภาพ`,sortBy:`เรียงตาม`,created:`สร้างเมื่อ`,ascending:`น้อยไปมาก`,descending:`มากไปน้อย`,connectedTo:`เชื่อมต่อกับ`,autoRecovery:`การกู้คืนอัตโนมัติ`,recoveryAttempts:`ความพยายามในการกู้คืน`},mapping:{title:`การแมปเอนทิตี`,entityId:`ID เอนทิตี`,deviceType:`ประเภทอุปกรณ์`,customName:`ชื่อที่กำหนดเอง`,status:`สถานะ`,addMapping:`เพิ่มการแมป`,editMapping:`แก้ไขการแมป`,deleteMapping:`ลบการแมป`,saved:`บันทึกการแมปสำหรับ {{entityId}} แล้ว รีสตาร์ท Bridge เพื่อใช้การเปลี่ยนแปลง`,saveFailed:`ไม่สามารถบันทึกการแมป: {{error}}`,deleted:`ลบการแมปสำหรับ {{entityId}} แล้ว`,deleteFailed:`ไม่สามารถลบการแมป`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},languageSwitcher:{disclaimer:`การแปลอาจไม่สมบูรณ์`,contribute:`ช่วยปรับปรุงการแปล!`},translationEditor:{title:`ตัวแก้ไขการแปล`,editLanguage:`แก้ไขภาษา`,info:`แก้ไขการแปลโดยตรงในเบราว์เซอร์ของคุณ การเปลี่ยนแปลงจะถูกบันทึกในเครื่องและใช้งานได้ทันที ส่งออกการแปลของคุณเพื่อส่งให้โครงการ`,progress:`{{translated}} / {{total}} คีย์ที่แปลแล้ว`,localEdits:`{{count}} การแก้ไขในเครื่อง`,searchPlaceholder:`ค้นหาคีย์หรือค่า...`,filterAll:`คีย์ทั้งหมด`,filterMissing:`ขาดหายไป`,filterEdited:`แก้ไขแล้ว`,exportJson:`ส่งออก JSON`,copyJson:`คัดลอก JSON`,copied:`คัดลอกแล้ว!`,resetAll:`รีเซ็ตการแก้ไขทั้งหมด`,resetKey:`รีเซ็ตเป็นค่าเริ่มต้น`,noResults:`ไม่พบคีย์การแปลที่ตรงกัน`,addLanguage:`เพิ่มภาษา`,newLanguageCode:`รหัสภาษา (เช่น pt, ja, ko)`,newLanguageName:`ชื่อภาษา (เช่น Português)`,addLanguageButton:`เพิ่ม`,languageExists:`ภาษานี้มีอยู่แล้ว`,codeRequired:`ต้องระบุรหัสภาษา`,nameRequired:`ต้องระบุชื่อภาษา`,removeLanguage:`ลบภาษา`,importJson:`นำเข้า JSON`,importSuccess:`นำเข้า {{count}} การแปลแล้ว`,importFailed:`นำเข้าล้มเหลว: รูปแบบ JSON ไม่ถูกต้อง`},notFound:{title:`ไม่พบหน้า`,description:`หน้าที่คุณกำลังมองหาไม่มีอยู่`,backToDashboard:`กลับไปยังแดชบอร์ด`},footer:{github:`GitHub`,documentation:`เอกสาร`}},Ds={common:{loading:`Yükleniyor`,notFound:`Bulunamadı`,save:`Kaydet`,cancel:`İptal`,delete:`Sil`,edit:`Düzenle`,close:`Kapat`,refresh:`Yenile`,search:`Ara`,enabled:`Etkin`,disabled:`Devre dışı`,online:`Çevrimiçi`,offline:`Çevrimdışı`,running:`Çalışıyor`,stopped:`Durduruldu`,failed:`Başarısız`,starting:`Başlatılıyor`,devices:`Cihazlar`,fabrics:`Fabric'ler`,port:`Port`,unknown:`Bilinmiyor`,confirm:`Onayla`,create:`Oluştur`,back:`Geri`,next:`İleri`,actions:`İşlemler`,name:`Ad`,type:`Tür`,error:`Hata`,version:`Sürüm`,copy:`Kopyala`,copied:`Kopyalandı`,copyId:`Kimliği kopyala`,later:`Daha sonra`,skip:`Atla`,reset:`Sıfırla`,update:`Güncelle`,all:`Tümü`,ascending:`Artan`,descending:`Azalan`,moveUp:`Yukarı taşı`,moveDown:`Aşağı taşı`,selectAll:`Tümünü seç`,selectNone:`Seçimi kaldır`,live:`Canlı`,new:`Yeni`,overwrite:`Üzerine yaz`,active:`Aktif`,property:`Özellik`,value:`Değer`,custom:`Özel`,startAll:`Tümünü başlat`,stopAll:`Tümünü durdur`,restartAll:`Tümünü yeniden başlat`,import:`İçe aktar`,export:`Dışa aktar`,exportAll:`Tümünü dışa aktar`,wizard:`Sihirbaz`},nav:{bridges:`Köprüler`,devices:`Cihazlar`,health:`Sağlık`,diagnostics:`Tanılama`,settings:`Ayarlar`,networkMap:`Ağ haritası`,logs:`Kayıtlar`,startupOrder:`Başlangıç sırası`,lockCredentials:`Kilit kimlik bilgileri`,filterReference:`Filtre referansı`,systemLogs:`Sistem kayıtları`,lightMode:`Açık mod`,darkMode:`Koyu mod`},status:{error:`Hata`,unhealthy:`Sağlıksız`,noBridges:`Köprü yok`,loadingHealth:`Sağlık durumu yükleniyor`,unknown:`Bilinmiyor`},errorBoundary:{title:`Bir hata oluştu`,fallbackMessage:`Beklenmeyen bir sorun oluştu. Lütfen sayfayı yeniden yükleyin.`,reload:`Yeniden yükle`},settings:{title:`Ayarlar`,language:`Dil`,languageDescription:`Arayüz dilini seçin.`,checkUpdates:`Güncellemeleri kontrol et`,backupRestore:`Yedekleme ve geri yükleme`,exportBackup:`Yedeği dışa aktar`,importBackup:`Yedek içe aktar`,dangerZone:`Tehlikeli bölge`,resetAll:`Her şeyi sıfırla`,about:`Hakkında`,username:`Kullanıcı adı`,password:`Şifre`,enterNewPassword:`Yeni şifreyi girin`,enableAuth:`Kimlik doğrulamayı etkinleştir`,disableAuth:`Kimlik doğrulamayı devre dışı bırak`,disableAuthMessage:`Kimlik doğrulamayı devre dışı bırakmak sistemi korumasız hale getirebilir.`,disableAuthConfirm:`Kimlik doğrulamayı devre dışı bırakmak istediğinize emin misiniz?`,usernamePasswordRequired:`Kullanıcı adı ve şifre gerekli.`,authSaveFailed:`Kimlik doğrulama ayarları kaydedilemedi.`,authLoadFailed:`Kimlik doğrulama ayarları yüklenemedi.`,authDisabled:`Kimlik doğrulama devre dışı bırakıldı.`,authRemoveFailed:`Kimlik doğrulama kaldırılamadı.`},dashboard:{title:`Gösterge paneli`,systemOverview:`Sistem özeti`,quickActions:`Hızlı işlemler`,bridgeOverview:`Köprü özeti`,noBridges:`Henüz köprü yok`,createBridge:`Köprü oluştur`,viewAll:`Tümünü görüntüle`,totalDevices:`Toplam cihaz`,customize:`Özelleştir`,startAll:`Tümünü başlat`,stopAll:`Tümünü durdur`,restartAll:`Tümünü yeniden başlat`,welcome:`Hoş geldiniz`,welcomeDescription:`Sisteminizi buradan hızlıca yönetebilirsiniz.`,bridgeWizard:`Köprü sihirbazı`,setupByArea:`Alana göre kurulum`,manualSetup:`Manuel kurulum`,areaSetup:`Alan kurulumu`,documentation:`Dokümantasyon`,quickNavigation:`Hızlı gezinme`,haConnection:`Home Assistant bağlantısı`,startupOrder:`Başlangıç sırası`,lockCredentials:`Kilit kimlik bilgileri`,filterReference:`Filtre referansı`,successMessage:`İşlem başarıyla tamamlandı.`,noBridgesHint:`Başlamak için ilk köprünüzü oluşturun.`,customizeDashboard:`Gösterge panelini özelleştir`,bridgeStatusRunning:`Çalışan köprüler`,bridgeStatusFailed:`Başarısız köprüler`,devicesFailed:`Hatalı cihazlar`,uptimeFormat:`Çalışma süresi: {value}`},bridge:{name:`Ad`,port:`Port`,status:`Durum`,pairHint:`Eşleştirme için aşağıdaki bilgileri kullanın.`,pairDescription:`Bu köprüyü desteklenen ekosistemlerle eşleştirebilirsiniz.`,failedEntities:`Başarısız varlıklar`,serverModeRecommended:`Sunucu modu önerilir`,serverModeDescription:`Sunucu modu, tek cihaz yerine daha kararlı bir bağlantı deneyimi sunar.`,enableServerMode:`Sunucu modunu etkinleştir`,enabling:`Etkinleştiriliyor`,start:`Başlat`,stop:`Durdur`,restart:`Yeniden başlat`,factoryReset:`Fabrika ayarlarına sıfırla`,pairingCode:`Eşleştirme kodu`,openCommissioning:`Komisyon penceresini aç`,multiPair:`Çoklu eşleştirme`,deleteBridge:`Köprüyü sil`,deleteConfirm:`Bu köprüyü silmek istediğinize emin misiniz?`,featureFlags:`Özellik bayrakları`,failedEntitiesCount:`Başarısız varlık sayısı`,clickToShow:`Göstermek için tıklayın`,clickToHide:`Gizlemek için tıklayın`,loadFailed:`Yüklenemedi`,refreshHint:`Durumu güncellemek için yenileyin.`,refreshingStates:`Durumlar yenileniyor`,serverModeSingleDeviceNote:`Sunucu modu, tek cihaz yapılandırmalarında farklı davranabilir.`,serverModeEnabled:`Sunucu modu etkin`,serverModeEnableFailed:`Sunucu modu etkinleştirilemedi`,pairing:`Eşleştirme`,bridgeInfo:`Köprü bilgisi`,commissioned:`Komisyonlandı`,addController:`Denetleyici ekle`,openingCommissioning:`Komisyon penceresi açılıyor`,fabricTooltip:`Bu köprüye bağlı fabric bilgileri`,forceSync:`Zorla eşitle`,syncing:`Eşitleniyor`,forceSyncTooltip:`Tüm varlıkları yeniden eşitlemeye zorlar.`,editFilters:`Filtreleri düzenle`,addFilters:`Filtre ekle`,bridgeNotRunning:`Köprü çalışmıyor`,manualCode:`Manuel kod`,openingWindow:`Pencere açılıyor`,bridgeId:`Köprü kimliği`,passcode:`Geçiş kodu`,discriminator:`Ayırt edici`,connectedFabrics:`Bağlı fabric'ler`,noFabrics:`Fabric yok`,entityFilters:`Varlık filtreleri`,noFilters:`Filtre yok`,scanQrCode:`QR kodu tara`,appleHomeWarning:`Apple Home ile eşleştirmeden önce mevcut yapılandırmayı kontrol edin.`,googleHomeWarning:`Google Home ile eşleştirmeden önce mevcut yapılandırmayı kontrol edin.`,resetSuccess:`Sıfırlama başarılı`,deleteSuccess:`Silme başarılı`,confirmResetTitle:`Sıfırlamayı onayla`,confirmResetMessage:`Bu köprüyü fabrika ayarlarına sıfırlamak istediğinize emin misiniz?`,confirmDeleteTitle:`Silmeyi onayla`,confirmDeleteMessage:`Bu köprü kalıcı olarak silinecek. Devam etmek istiyor musunuz?`,importTitle:`Köprü içe aktar`,overwriteExisting:`Mevcut olanların üzerine yaz`,iconLabel:`Simge etiketi`,google:`Google`,alexa:`Alexa`,serverMode:`Sunucu modu`,autoForceSync:`Otomatik zorla eşitle`,saveSuccess:`Başarıyla kaydedildi`,updateSuccess:`Başarıyla güncellendi`,exportFailed:`Dışa aktarma başarısız`,actionStarted:`İşlem başlatıldı`,actionStopped:`İşlem durduruldu`,actionRestarted:`İşlem yeniden başlatıldı`,actionFailed:`İşlem başarısız oldu`,actionResult:`İşlem sonucu`,couldNotLoad:`Yüklenemedi`,showingFirst:`İlk {count} kayıt gösteriliyor`,importParseFailed:`İçe aktarılan veri çözümlenemedi`,importing:`İçe aktarılıyor`,importCount:`{count} öğe içe aktarılacak`,jsonEditor:`JSON düzenleyici`,formEditor:`Form düzenleyici`},endpoints:{title:`Uç noktalar`,searchPlaceholder:`Uç nokta ara`,sortBy:`Sıralama ölçütü`,sortName:`Ada göre sırala`,sortEndpoint:`Uç noktaya göre sırala`,sortType:`Türe göre sırala`,cardView:`Kart görünümü`,treeView:`Ağaç görünümü`,clusters:`Kümeler`,entityUnavailable:`Varlık kullanılamıyor`,showUnavailable:`Kullanılamayanları göster`,showAll:`Tümünü göster`,uploadImage:`Görsel yükle`,removeImage:`Görseli kaldır`,editMapping:`Eşlemeyi düzenle`,homeAssistantEntity:`Home Assistant varlığı`,noEndpoints:`Uç nokta yok`,expandAll:`Tümünü genişlet`,collapseAll:`Tümünü daralt`,viewAll:`Tümünü görüntüle`,haState:`HA durumu`,aboutEndpoint:`Uç nokta hakkında`,entityId:`Varlık kimliği`,customName:`Özel ad`,deviceTypeOverride:`Cihaz türünü geçersiz kıl`,keyHaAttributes:`Ana HA öznitelikleri`,entityMappings:`Varlık eşlemeleri`,copyData:`Veriyi kopyala`,behavior:`Davranış`},health:{title:`Sağlık durumu`,version:`Sürüm`,uptime:`Çalışma süresi`,homeAssistant:`Home Assistant`,connected:`Bağlı`,disconnected:`Bağlantı yok`,bridgeStatus:`Köprü durumu`,refreshHealth:`Sağlık durumunu yenile`,exportDiagnostic:`Tanılama verisini dışa aktar`,memory:`Bellek`,fabricDetails:`Fabric detayları`,sessions:`Oturumlar`,subscriptions:`Abonelikler`,noFabrics:`Fabric yok`,systemMetrics:`Sistem metrikleri`,heap:`Heap`,rss:`RSS`,external:`Harici`,systemHealth:`Sistem sağlığı`,fetchFailed:`Veri alınamadı`,connectionError:`Bağlantı hatası`,exportFailed:`Dışa aktarma başarısız`,restartFailed:`Yeniden başlatma başarısız`,unableToLoad:`Yüklenemiyor`,sortBy:`Sırala`,created:`Oluşturulma`,ascending:`Artan`,descending:`Azalan`,connectedTo:`Bağlı olduğu yer`,autoRecovery:`Otomatik kurtarma`,recoveryAttempts:`Kurtarma denemeleri`,fabrics:`fabric`,networkDiagnostics:`Ağ Tanılama`,checksPassed:`başarılı`,checksWarning:`uyarılar`,checksFailed:`başarısız`,hideDetails:`Detayları gizle`,showDetails:`Detayları göster`,allChecks:`Tüm Kontroller`,check:`Kontrol`,statusLabel:`Durum`,message:`Mesaj`,networkInterfaces:`Ağ Arayüzleri`,interfaceName:`Arayüz`,refresh:`Yenile`},mapping:{title:`Eşleme`,entityId:`Varlık kimliği`,deviceType:`Cihaz türü`,customName:`Özel ad`,status:`Durum`,addMapping:`Eşleme ekle`,editMapping:`Eşlemeyi düzenle`,deleteMapping:`Eşlemeyi sil`,saved:`Kaydedildi`,saveFailed:`Kaydetme başarısız`,deleted:`Silindi`,deleteFailed:`Silme başarısız`,matterTag:`Matter etiketi`,exportProfile:`Profili dışa aktar`,importProfile:`Profil içe aktar`,profileName:`Profil adı`,match:`Eşleşme`,existing:`Mevcut`,autoDetect:`Otomatik algıla`,loadFailed:`Yükleme başarısız`,noMappings:`Eşleme yok`,applying:`Uygulanıyor`,applyCount:`{count} eşleme uygulanacak`,customProductName:`Custom Product Name`,customProductNameHelp:`Override the product name (model) reported to Matter controllers. Some controllers (e.g. Aqara) display this as the device name.`,customVendorName:`Custom Vendor Name`,customVendorNameHelp:`Override the vendor/manufacturer name reported to Matter controllers.`,customSerialNumber:`Custom Serial Number`,customSerialNumberHelp:`Override the serial number reported to Matter controllers.`},notFound:{title:`Sayfa bulunamadı`,description:`Aradığınız sayfa mevcut değil veya taşınmış olabilir.`,backToDashboard:`Gösterge paneline dön`},devices:{title:`Cihazlar`,searchPlaceholder:`Cihaz ara`,filterBridge:`Köprüye göre filtrele`,allBridges:`Tüm köprüler`,filterDeviceType:`Cihaz türüne göre filtrele`,allTypes:`Tüm türler`,sortBy:`Sırala`,sortBridge:`Köprüye göre sırala`,sortType:`Türe göre sırala`,sortName:`Ada göre sırala`,deviceCount:`Cihaz sayısı`,filteredCount:`Filtrelenmiş kayıt sayısı`},diagnostics:{title:`Tanılama`,stateUpdate:`Durum güncellemesi`,command:`Komut`,entityError:`Varlık hatası`,sessionOpen:`Oturum açıldı`,sessionClose:`Oturum kapandı`,subscription:`Abonelik`,bridgeStart:`Köprü başlatıldı`,bridgeStop:`Köprü durduruldu`,entityWarning:`Uyarı`,filterEvents:`Olayları filtrele`,clearEvents:`Olayları temizle`,noEvents:`Olay yok`},startup:{title:`Başlangıç sırası`,description:`Köprülerin başlangıç sırasını belirleyin.`,saveSuccess:`Başlangıç sırası kaydedildi`,saveFailed:`Başlangıç sırası kaydedilemedi`,saveChanges:`Değişiklikleri kaydet`,unsavedChanges:`Kaydedilmemiş değişiklikler var`,noBridges:`Köprü yok`,saveOrder:`Sırayı kaydet`},areaSetup:{title:`Alan kurulumu`,heading:`Alanlara göre köprü oluştur`,description:`Seçilen alanlara göre otomatik köprüler oluşturun.`,noAreas:`Alan bulunamadı`,selectController:`Denetleyici seçin`,selectAreas:`Alanları seçin`,clear:`Temizle`,createBridges:`Köprüleri oluştur`,results:`Sonuçlar`,goToBridges:`Köprülere git`,createdSuccess:`Köprüler başarıyla oluşturuldu`,createdPartial:`Bazı köprüler oluşturuldu`,loadFailed:`Veri yüklenemedi`,creating:`Oluşturuluyor`,created:`Oluşturuldu`,unknownError:`Bilinmeyen hata`},lockCredentials:{title:`Kilit kimlik bilgileri`,addCredential:`Kimlik bilgisi ekle`,editCredential:`Kimlik bilgisini düzenle`,lockEntityId:`Kilit varlık kimliği`,lockEntityHelperText:`Kimlik bilgisinin uygulanacağı kilit varlığını girin.`,pinCode:`PIN kodu`,nameOptional:`Ad (isteğe bağlı)`,namePlaceholder:`Örn. Misafir PIN`,nameHelperText:`Bu kimlik bilgisini daha kolay ayırt etmek için bir ad verin.`,entityRequired:`Varlık gerekli`,pinLength:`PIN uzunluğu geçersiz`,pinDigitsOnly:`PIN yalnızca rakamlardan oluşmalıdır`,saveFailed:`Kaydetme başarısız`,loadFailed:`Yükleme başarısız`,deleteFailed:`Silme başarısız`,updateFailed:`Güncelleme başarısız`,enable:`Etkinleştir`,disable:`Devre dışı bırak`,confirmDeleteTitle:`Silmeyi onayla`,confirmDeleteMessage:`Bu kimlik bilgisini silmek istediğinize emin misiniz?`},labels:{title:`Etiketler`,info:`Filtreleme ve referans için kullanılabilecek etiketler ve alanlar.`,searchPlaceholder:`Etiket ara`,loadFailed:`Etiketler yüklenemedi`,labelsSection:`Etiketler`,labelsHint:`Mevcut etiket değerleri`,noLabels:`Etiket yok`,displayName:`Görünen ad`,labelId:`Etiket kimliği`,areaId:`Alan kimliği`,areasSection:`Alanlar`,areasHint:`Mevcut alan değerleri`,noAreas:`Alan yok`,otherFilterValues:`Diğer filtre değerleri`,domains:`Domain'ler`,domainsHint:`Kullanılabilir domain değerleri`,platforms:`Platformlar`,platformsHint:`Kullanılabilir platform değerleri`,entityCategories:`Varlık kategorileri`,entityCategoriesHint:`Kullanılabilir varlık kategori değerleri`,deviceClasses:`Cihaz sınıfları`,deviceClassesHint:`Kullanılabilir cihaz sınıfı değerleri`,deviceNames:`Cihaz adları`,deviceNamesHint:`Kullanılabilir cihaz adı değerleri`,productNames:`Ürün adları`,productNamesHint:`Kullanılabilir ürün adı değerleri`},logs:{title:`Kayıtlar`,logLevel:`Kayıt seviyesi`,error:`Hata`,warning:`Uyarı`,info:`Bilgi`,debug:`Hata ayıklama`,searchPlaceholder:`Kayıtlarda ara`,noResults:`Sonuç yok`,autoRefresh:`Otomatik yenile`},backup:{title:`Yedekleme`,description:`Yapılandırmalarınızı ve verilerinizi yedekleyin veya geri yükleyin.`,configBackup:`Yapılandırma yedeği`,configBackupDesc:`Yalnızca yapılandırma ayarlarını yedekler.`,configBackupNote:`Bu seçenek cihaz verilerini içermez.`,fullBackup:`Tam yedek`,fullBackupDesc:`Tüm yapılandırmaları ve ilişkili verileri yedekler.`,fullBackupWarning:`Tam yedekler daha büyük boyutlu olabilir.`,restoreFromBackup:`Yedekten geri yükle`,restoreDesc:`Daha önce alınmış bir yedeği geri yükleyin.`,restoreTitle:`Yedeği geri yükle`,selectBridges:`Köprüleri seç`,overwriteExisting:`Mevcut olanların üzerine yaz`,includeMappings:`Eşlemeleri dahil et`,restoreIdentities:`Kimlikleri geri yükle`,restore:`Geri yükle`,downloadSuccess:`İndirme başarılı`,restartRequired:`Yeniden başlatma gerekiyor`,restartMessage:`Değişikliklerin uygulanması için sistem yeniden başlatılmalıdır.`,restartNote:`Kaydedilmemiş işlemler etkilenebilir.`,restartNow:`Şimdi yeniden başlat`,storedBackups:`Kayıtlı yedekler`,createSnapshot:`Anlık görüntü oluştur`,noSnapshots:`Anlık görüntü yok`,downloadSnapshot:`Anlık görüntüyü indir`,restoreSnapshot:`Anlık görüntüyü geri yükle`,auto:`Otomatik`,manual:`Manuel`,snapshotCreated:`Anlık görüntü oluşturuldu`,snapshotRestored:`Anlık görüntü geri yüklendi`,confirmRestore:`Geri yüklemeyi onayla`,confirmRestoreMessage:`Bu işlem mevcut yapılandırmayı değiştirebilir. Devam etmek istiyor musunuz?`,restoreWarning:`Geri yükleme mevcut verilerin üzerine yazabilir.`,confirmDelete:`Silmeyi onayla`,confirmDeleteMessage:`Bu yedeği silmek istediğinize emin misiniz?`,settings:`Ayarlar`,autoBackupLabel:`Otomatik yedekleme`,autoBackupDesc:`Belirli aralıklarla otomatik yedek oluştur.`,retentionCount:`Saklama adedi`,retentionCountDesc:`Saklanacak otomatik yedek sayısı`},networkMap:{title:`Ağ haritası`,hubLabel:`Merkez`,undoMove:`Taşımayı geri al`,resetLayout:`Yerleşimi sıfırla`,refreshData:`Veriyi yenile`,fullscreen:`Tam ekran`,exitFullscreen:`Tam ekrandan çık`,legend:`Lejant`,controller:`Denetleyici`,hub:`Merkez`,bridge:`Köprü`,device:`Cihaz`,failed:`Başarısız`},updateChecker:{title:`Güncelleme denetleyicisi`,checkNow:`Şimdi kontrol et`,currentVersion:`Mevcut sürüm`,latestVersion:`En son sürüm`,updateAvailable:`Güncelleme mevcut`,upToDate:`Güncel`,releaseNotes:`Sürüm notları`,notAvailable:`Bilgi mevcut değil`,checkFailed:`Güncelleme kontrolü başarısız`,unreachable:`Erişilemiyor`,instructionAddon:`Eklentiyi güncellemek için ilgili paket yöneticisini kullanın.`,instructionDocker:`Docker imajını güncellemek için en son sürümü çekin ve yeniden başlatın.`,instructionNpm:`npm üzerinden güncellemek için en son paketi yükleyin.`},bridgeWizard:{title:`Köprü sihirbazı`,stepTemplate:`Şablon`,stepController:`Denetleyici`,stepBridgeInfo:`Köprü bilgisi`,stepEntityFilter:`Varlık filtresi`,stepFeatureFlags:`Özellik bayrakları`,stepReview:`Gözden geçir`,autoCompose:`Otomatik oluştur`,autoForceSyncFlag:`Otomatik zorla eşitle`,invertCover:`Kapak yönünü ters çevir`,invertCoverDescription:`Kapak yönünü ters çevirmek için bu seçeneği etkinleştirin.`,includeHidden:`Gizlileri dahil et`,includeHiddenDescription:`Gizli varlıkları da dahil eder.`,bridgeName:`Köprü adı`,portLabel:`Port`,portAutoAssign:`Portu otomatik ata`,nameRequired:`Ad gerekli`,createFailed:`Köprü oluşturulamadı`,bridgeInfoDescription:`Köprü için temel bilgileri girin.`,serverModeLabel:`Sunucu modu`,serverModeTooltip:`Sunucu modu daha kararlı bağlantı sağlayabilir.`,entityFilterDescription:`Hangi varlıkların dahil edileceğini belirleyin.`,includeAll:`Tümünü dahil et`,entityId:`Varlık kimliği`,includePattern:`Dahil etme deseni`,entityFilters:`Varlık filtreleri`,serverModeEntityHint:`Sunucu modunda bazı varlık davranışları değişebilir.`,templatePreConfigured:`Şablon önceden yapılandırılmış`,wildcardHint:`Joker karakter olarak * kullanabilirsiniz.`,commaHint:`Birden fazla değeri virgülle ayırın.`,excludePatterns:`Hariç tutma desenleri`,excludeHelperText:`Hariç tutulacak varlık desenlerini girin.`,skipTemplate:`Şablonu atla`,creating:`Oluşturuluyor`,createBridge:`Köprü oluştur`,searchRules:`Arama kuralları`,templateDescription:`Hazır şablonlardan biriyle hızlı başlangıç yapın.`,controllerDescription:`Bu köprünün bağlanacağı denetleyiciyi seçin.`,controllerHint:`Uygun denetleyiciyi listeden seçin.`,templateApplied:`Şablon uygulandı`,filterPreConfiguredFrom:`Filtre şuradan önceden yapılandırıldı:`,featureFlagsDescription:`İsteğe bağlı özellikleri etkinleştirin veya devre dışı bırakın.`,recommendedFlags:`Önerilen bayraklar`,selectFlags:`Bayrak seçin`,reviewDescription:`Oluşturmadan önce yapılandırmanızı gözden geçirin.`,bridgesToCreate:`Oluşturulacak köprüler`,bridgesCreated:`Köprüler oluşturuldu`,addAnother:`Bir tane daha ekle`},footer:{github:`GitHub`,documentation:`Dokümantasyon`},languageSwitcher:{disclaimer:`Çeviriler topluluk katkıları içerebilir.`,contribute:`Katkıda bulun`},translationEditor:{title:`Çeviri düzenleyici`,editLanguage:`Dili düzenle`,info:`Eksik veya değiştirilmiş çevirileri buradan yönetebilirsiniz.`,progress:`İlerleme`,localEdits:`Yerel düzenlemeler`,searchPlaceholder:`Anahtar veya çeviri ara`,filterAll:`Tümü`,filterMissing:`Eksik olanlar`,filterEdited:`Düzenlenenler`,exportJson:`JSON dışa aktar`,copyJson:`JSON'u kopyala`,copied:`Kopyalandı`,resetAll:`Tümünü sıfırla`,resetKey:`Anahtarı sıfırla`,noResults:`Sonuç yok`,addLanguage:`Dil ekle`,newLanguageCode:`Yeni dil kodu`,newLanguageName:`Yeni dil adı`,addLanguageButton:`Dili ekle`,languageExists:`Bu dil zaten mevcut`,codeRequired:`Dil kodu gerekli`,nameRequired:`Dil adı gerekli`,removeLanguage:`Dili kaldır`,removeLanguageConfirm:`Bu dili kaldırmak istediğinize emin misiniz?`,importJson:`JSON içe aktar`,importSuccess:`İçe aktarma başarılı`,importFailed:`İçe aktarma başarısız`}},Os={common:{loading:`加载中`,notFound:`未找到`,save:`保存`,cancel:`取消`,delete:`删除`,edit:`编辑`,close:`关闭`,refresh:`刷新`,search:`搜索`,enabled:`已启用`,disabled:`已禁用`,online:`在线`,offline:`离线`,running:`运行中`,stopped:`已停止`,failed:`失败`,starting:`启动中`,devices:`设备`,fabrics:`Fabrics`,port:`端口`,unknown:`未知`,confirm:`确认`,create:`创建`,back:`返回`,next:`下一步`,actions:`操作`,name:`名称`,type:`类型`,error:`错误`,version:`版本`,copy:`复制`,copied:`已复制!`,copyId:`复制 ID`,later:`稍后`,skip:`跳过`,reset:`重置`,update:`更新`,all:`全部`,ascending:`升序`,descending:`降序`,moveUp:`上移`,moveDown:`下移`,selectAll:`全选`,selectNone:`取消全选`,live:`实时`,new:`新建`,overwrite:`覆盖`,active:`活动`,property:`属性`,value:`值`,custom:`自定义`,startAll:`全部启动`,stopAll:`全部停止`,restartAll:`全部重启`,import:`导入`,export:`导出`,exportAll:`全部导出`,wizard:`向导`},nav:{bridges:`Bridges`,devices:`所有设备`,health:`健康与诊断`,diagnostics:`实时事件`,settings:`设置`,networkMap:`网络拓扑`,logs:`日志`,startupOrder:`启动顺序`,lockCredentials:`锁具凭证`,filterReference:`过滤器参考`,systemLogs:`系统日志`,lightMode:`浅色模式`,darkMode:`深色模式`},status:{error:`错误`,unhealthy:`异常`,noBridges:`无 Bridge`,loadingHealth:`正在加载健康状态...`,unknown:`未知`},errorBoundary:{title:`出现错误`,fallbackMessage:`发生了意外错误。`,reload:`重新加载页面`},settings:{title:`设置`,language:`语言`,languageDescription:`选择界面语言。`,checkUpdates:`检查更新`,backupRestore:`备份与恢复`,exportBackup:`导出备份`,importBackup:`导入备份`,dangerZone:`危险操作`,resetAll:`全部重置`,about:`关于`},dashboard:{title:`仪表盘`,systemOverview:`系统概览`,quickActions:`快捷操作`,bridgeOverview:`Bridge 概览`,noBridges:`尚未配置 Bridge。`,createBridge:`创建 Bridge`,viewAll:`查看全部`,totalDevices:`设备总数`,customize:`自定义`,startAll:`全部启动`,stopAll:`全部停止`,restartAll:`全部重启`,welcome:`欢迎使用 Home Assistant Matter Hub`,welcomeDescription:`将你的 Home Assistant 设备桥接到 Apple Home、Google Home 和 Amazon Alexa 等 Matter 控制器。`,bridgeWizard:`Bridge 向导`,setupByArea:`按区域设置`,manualSetup:`手动设置`,areaSetup:`区域设置`,documentation:`文档`,quickNavigation:`快捷导航`,haConnection:`HA 连接`,startupOrder:`启动顺序`,lockCredentials:`锁具凭证`,filterReference:`过滤器参考`,successMessage:`你的 Bridge 已连接到 {{count}} 个控制器 Fabric。设备现在应该出现在你的控制器应用中。`,noBridgesHint:`尚未配置 Bridge。使用 Bridge 向导或手动创建一个。`,customizeDashboard:`自定义仪表盘`},bridge:{name:`Bridge 名称`,port:`端口`,status:`状态`,pairHint:`将此 Bridge 与你的控制器配对`,pairDescription:`打开你的控制器应用(Apple Home、Google Home 或 Amazon Alexa),添加新配件,扫描下方的二维码或输入手动配对码。确保你的控制器与 Home Assistant 在同一网络上。`,failedEntities:`失败的实体`,serverModeRecommended:`推荐为扫地机器人启用服务器模式`,serverModeDescription:`此 Bridge 包含一个桥接模式的扫地机器人。Apple Home 和 Alexa 会将 Bridge 显示为额外设备,导致重复条目。启用服务器模式可将扫地机器人作为独立的 Matter 设备公开。`,enableServerMode:`启用服务器模式`,enabling:`正在启用...`,start:`启动`,stop:`停止`,restart:`重启`,factoryReset:`恢复出厂设置`,pairingCode:`配对码`,openCommissioning:`打开配对窗口`,multiPair:`多 Fabric 配对`,deleteBridge:`删除 Bridge`,deleteConfirm:`确定要删除此 Bridge 吗?`,featureFlags:`功能标志`,failedEntitiesCount:`{{count}} 个实体无法加载。`,clickToShow:`点击显示详情。`,clickToHide:`点击隐藏详情。`,loadFailed:`无法加载 Bridge 详情`,refreshHint:`新设备和标签更改每 30 秒检测一次。`,refreshingStates:`{{seconds}} 秒后刷新状态...`,serverModeSingleDeviceNote:`注意:服务器模式要求扫地机器人是此 Bridge 上的唯一设备。请先移除其他实体,然后在 Bridge 设置中启用服务器模式。`,serverModeEnabled:`服务器模式已启用。Bridge 将以你的扫地机器人作为独立设备重启。`,serverModeEnableFailed:`无法启用服务器模式:{{error}}`,pairing:`配对`,bridgeInfo:`Bridge 信息`,commissioned:`已配对`,addController:`添加其他控制器`,forceSync:`强制同步`,syncing:`同步中...`,editFilters:`编辑过滤器`,addFilters:`添加过滤器`,bridgeNotRunning:`Bridge 未运行。启动 Bridge 以查看配对信息。`,manualCode:`手动代码`,bridgeId:`Bridge ID`,passcode:`密码`,discriminator:`Discriminator`,connectedFabrics:`已连接的 Fabric ({{count}})`,noFabrics:`尚无控制器连接。请使用 Matter 控制器扫描二维码。`,entityFilters:`实体过滤器`,noFilters:`未配置过滤器。所有支持的实体将被公开。`,resetSuccess:`Bridge 重置成功`,deleteSuccess:`Bridge 删除成功`,confirmResetTitle:`重置 Bridge`,confirmDeleteTitle:`删除 Bridge`,importTitle:`导入 Bridge`,overwriteExisting:`覆盖现有 Bridge`,iconLabel:`Bridge 图标`,google:`Google`,alexa:`Alexa`,serverMode:`服务器模式`,autoForceSync:`自动同步`,saveSuccess:`Bridge 已保存`,updateSuccess:`更新完成`,exportFailed:`导出失败`,actionStarted:`已启动`,actionStopped:`已停止`,actionRestarted:`已重启`,actionFailed:`{{action}} 失败`,actionResult:`{{label}} {{count}} 个 Bridge`,couldNotLoad:`无法加载 Bridge`,showingFirst:`显示前 {{count}} 个`,importParseFailed:`无法解析导入文件。请选择有效的导出文件。`,importing:`导入中...`,importCount:`导入 {{count}} 个 Bridge`,jsonEditor:`JSON 编辑器`,formEditor:`表单编辑器`},endpoints:{title:`端点`,searchPlaceholder:`搜索端点...`,sortBy:`排序`,sortName:`名称`,sortEndpoint:`端点 ID`,sortType:`类型`,cardView:`卡片视图`,treeView:`树状视图`,clusters:`集群`,entityUnavailable:`实体不可用`,showUnavailable:`显示 {{count}} 个不可用`,showAll:`显示所有实体`,uploadImage:`上传设备图片`,removeImage:`移除自定义图片`,editMapping:`编辑实体映射`,homeAssistantEntity:`Home Assistant 实体`,noEndpoints:`未找到端点。`,expandAll:`全部展开`,collapseAll:`全部折叠`,viewAll:`查看所有设备`,haState:`HA 状态`,aboutEndpoint:`关于此端点`,entityId:`实体 ID`,customName:`自定义名称`,deviceTypeOverride:`设备类型覆盖`,keyHaAttributes:`关键 HA 属性`,entityMappings:`实体映射`,copyData:`复制数据到剪贴板`,behavior:`行为`},health:{title:`健康与诊断`,version:`版本`,uptime:`运行时间`,homeAssistant:`Home Assistant`,connected:`已连接`,disconnected:`已断开`,bridgeStatus:`Bridge 状态`,refreshHealth:`刷新健康数据`,exportDiagnostic:`导出诊断`,memory:`内存`,fabricDetails:`Fabric 详情`,sessions:`会话`,subscriptions:`订阅`,noFabrics:`无 Fabric 连接`,systemMetrics:`系统指标`,heap:`堆内存`,rss:`RSS`,external:`外部`,systemHealth:`系统健康`,fetchFailed:`无法获取健康状态`,connectionError:`连接错误`,exportFailed:`无法导出诊断数据`,restartFailed:`无法重启 Bridge`,unableToLoad:`无法加载健康状态`,sortBy:`排序方式`,created:`创建时间`,ascending:`升序`,descending:`降序`,connectedTo:`已连接到`,autoRecovery:`自动恢复`,recoveryAttempts:`恢复尝试`},mapping:{title:`实体映射`,entityId:`实体 ID`,deviceType:`设备类型`,customName:`自定义名称`,status:`状态`,addMapping:`添加映射`,editMapping:`编辑映射`,deleteMapping:`删除映射`,saved:`已为 {{entityId}} 保存映射。重启 Bridge 以应用更改。`,saveFailed:`无法保存映射:{{error}}`,deleted:`已删除 {{entityId}} 的映射。`,deleteFailed:`无法删除映射。`,customProductName:`自定义产品名称`,customProductNameHelp:`覆盖报告给 Matter 控制器的产品名称(型号)。某些控制器(如 Aqara)会将此显示为设备名称。`,customVendorName:`自定义厂商名称`,customVendorNameHelp:`覆盖报告给 Matter 控制器的厂商/制造商名称。`,customSerialNumber:`自定义序列号`,customSerialNumberHelp:`覆盖报告给 Matter 控制器的序列号。`},languageSwitcher:{disclaimer:`翻译可能不完整。`,contribute:`帮助改进翻译!`},translationEditor:{title:`翻译编辑器`,editLanguage:`编辑语言`,info:`直接在浏览器中编辑翻译。更改会本地保存并立即应用。导出你的翻译以提交给项目。`,progress:`{{translated}} / {{total}} 个键已翻译`,localEdits:`{{count}} 处本地编辑`,searchPlaceholder:`搜索键或值...`,filterAll:`所有键`,filterMissing:`缺失`,filterEdited:`已编辑`,exportJson:`导出 JSON`,copyJson:`复制 JSON`,copied:`已复制!`,resetAll:`重置所有编辑`,resetKey:`重置为默认值`,noResults:`未找到匹配的翻译键。`,addLanguage:`添加语言`,newLanguageCode:`语言代码(如 pt、ja、ko)`,newLanguageName:`语言名称(如 Português)`,addLanguageButton:`添加`,languageExists:`该语言已存在。`,codeRequired:`语言代码为必填项。`,nameRequired:`语言名称为必填项。`,removeLanguage:`移除语言`,importJson:`导入 JSON`,importSuccess:`已导入 {{count}} 条翻译。`,importFailed:`导入失败:JSON 格式无效。`},notFound:{title:`页面未找到`,description:`您要查找的页面不存在。`,backToDashboard:`返回仪表盘`},footer:{github:`GitHub`,documentation:`文档`}},ks={common:{loading:`載入中`,notFound:`未找到`,save:`儲存`,cancel:`取消`,delete:`刪除`,edit:`編輯`,close:`關閉`,refresh:`重新整理`,search:`搜尋`,enabled:`已啟用`,disabled:`已停用`,online:`上線`,offline:`離線`,running:`執行中`,stopped:`已停止`,failed:`失敗`,starting:`啟動中`,devices:`裝置`,fabrics:`Fabrics`,port:`連接埠`,unknown:`未知`,confirm:`確認`,create:`建立`,back:`返回`,next:`下一步`,actions:`操作`,name:`名稱`,type:`類型`,error:`錯誤`,version:`版本`,copy:`複製`,copied:`已複製!`,copyId:`複製 ID`,later:`稍後`,skip:`跳過`,reset:`重設`,update:`更新`,all:`全部`,ascending:`遞增`,descending:`遞減`,moveUp:`上移`,moveDown:`下移`,selectAll:`全選`,selectNone:`全不選`,live:`即時`,new:`新增`,overwrite:`覆蓋`,active:`活動`,property:`屬性`,value:`值`,custom:`自定義`,startAll:`全部啟動`,stopAll:`全部停止`,restartAll:`全部重新啟動`,import:`匯入`,export:`匯出`,exportAll:`全部匯出`,wizard:`設定精靈`},nav:{bridges:`橋接器 (Bridges)`,devices:`所有裝置`,health:`狀態診斷`,diagnostics:`即時事件`,settings:`設定`,networkMap:`網路拓撲`,logs:`日誌`,startupOrder:`啟動順序`,lockCredentials:`鎖具憑證`,filterReference:`篩選器參考`,systemLogs:`系統日誌`,lightMode:`淺色模式`,darkMode:`深色模式`},status:{error:`錯誤`,unhealthy:`異常`,noBridges:`無橋接器`,loadingHealth:`正在載入健康狀態...`,unknown:`未知`},errorBoundary:{title:`發生錯誤`,fallbackMessage:`發生預料之外的錯誤。`,reload:`重新載入頁面`},settings:{title:`設定`,language:`語言`,languageDescription:`選擇介面語言。`,checkUpdates:`檢查更新`,backupRestore:`備份與還原`,exportBackup:`匯出備份`,importBackup:`匯入備份`,dangerZone:`危險區域`,resetAll:`全部重設`,about:`關於`,username:`使用者名稱`,password:`密碼`,enterNewPassword:`輸入新密碼`,enableAuth:`啟用驗證`,disableAuth:`停用驗證`,disableAuthMessage:`您確定要停用身份驗證嗎?這將允許任何存取此網址的使用者控制您的裝置。`,disableAuthConfirm:`確認停用`,usernamePasswordRequired:`需要使用者名稱和密碼`,authSaveFailed:`儲存驗證設定失敗`,authLoadFailed:`載入驗證設定失敗`,authDisabled:`驗證已停用`,authRemoveFailed:`移除驗證失敗`},dashboard:{title:`儀表板`,systemOverview:`系統概覽`,quickActions:`快速操作`,bridgeOverview:`橋接器概覽`,noBridges:`尚未設定橋接器。`,createBridge:`建立橋接器`,viewAll:`查看全部`,totalDevices:`裝置總數`,customize:`自定義`,startAll:`全部啟動`,stopAll:`全部停止`,restartAll:`全部重新啟動`,welcome:`歡迎使用 Home Assistant Matter Hub`,welcomeDescription:`將您的 Home Assistant 裝置橋接到 Apple Home、Google Home 和 Amazon Alexa 等 Matter 控制器。`,bridgeWizard:`橋接器精靈`,setupByArea:`按區域設定`,manualSetup:`手動設定`,areaSetup:`區域設定`,documentation:`文件`,quickNavigation:`快速導覽`,haConnection:`HA 連線`,startupOrder:`啟動順序`,lockCredentials:`鎖具憑證`,filterReference:`篩選器參考`,successMessage:`您的橋接器已連線到 {{count}} 個控制器 Fabric。裝置現在應該會出現在您的控制器 App 中。`,noBridgesHint:`尚未設定橋接器。請使用精靈或手動建立一個。`,customizeDashboard:`自定義儀表板`,bridgeStatusRunning:`橋接器運作中`,bridgeStatusFailed:`橋接器異常`,devicesFailed:`裝置失敗`,uptimeFormat:`已運行時間`},bridge:{name:`橋接器名稱`,port:`連接埠`,status:`狀態`,pairHint:`將此橋接器與您的控制器配對`,pairDescription:`開啟您的控制器 App(Apple Home、Google Home 或 Amazon Alexa),新增配件,掃描下方的 QR Code 或輸入手動配對碼。請確保您的控制器與 Home Assistant 位於同一網路環境。`,failedEntities:`失敗的實體`,serverModeRecommended:`建議為掃地機器人啟用伺服器模式`,serverModeDescription:`此橋接器包含一個橋接模式的掃地機器人。Apple Home 和 Alexa 會將橋接器顯示為額外裝置,導致重複項目。啟用伺服器模式可將掃地機器人作為獨立的 Matter 裝置公開。`,enableServerMode:`啟用伺服器模式`,enabling:`啟用中...`,start:`啟動`,stop:`停止`,restart:`重新啟動`,factoryReset:`恢復出廠設定`,pairingCode:`配對碼`,openCommissioning:`開啟配對視窗`,multiPair:`多 Fabric 配對`,deleteBridge:`刪除橋接器`,deleteConfirm:`確定要刪除此橋接器嗎?`,featureFlags:`功能旗標`,failedEntitiesCount:`{{count}} 個實體無法載入。`,clickToShow:`點擊顯示詳情`,clickToHide:`點擊隱藏詳情`,loadFailed:`無法載入橋接器詳情`,refreshHint:`每 30 秒會偵測一次新裝置和標籤更改。`,refreshingStates:`{{seconds}} 秒後重新整理狀態...`,serverModeSingleDeviceNote:`注意:伺服器模式要求掃地機器人為此橋接器上的唯一裝置。請先移除其他實體,再於設定中啟用伺服器模式。`,serverModeEnabled:`伺服器模式已啟用。橋接器將以掃地機器人作為獨立裝置重新啟動。`,serverModeEnableFailed:`無法啟用伺服器模式:{{error}}`,pairing:`配對`,bridgeInfo:`橋接器資訊`,commissioned:`已配對`,addController:`新增其他控制器`,openingCommissioning:`正在開啟配對視窗...`,fabricTooltip:`Fabric 詳情`,forceSync:`強制同步`,syncing:`同步中...`,forceSyncTooltip:`強制與 Home Assistant 同步實體`,editFilters:`編輯篩選器`,addFilters:`新增篩選器`,bridgeNotRunning:`橋接器未執行。請啟動以查看配對資訊。`,manualCode:`手動代碼`,openingWindow:`開啟視窗中...`,bridgeId:`橋接器 ID`,passcode:`配對密碼`,discriminator:`辨別碼 (Discriminator)`,connectedFabrics:`已連接的 Fabric ({{count}})`,noFabrics:`尚無控制器連接。請使用 Matter 控制器掃描 QR Code。`,entityFilters:`實體篩選器`,noFilters:`未設定篩選器。所有支援的實體都將公開。`,scanQrCode:`掃描 QR Code`,appleHomeWarning:`Apple Home 限制`,googleHomeWarning:`Google Home 限制`,resetSuccess:`橋接器重設成功`,deleteSuccess:`橋接器刪除成功`,confirmResetTitle:`重設橋接器`,confirmResetMessage:`確定要重設此橋接器嗎?這將移除所有配對資訊。`,confirmDeleteTitle:`刪除橋接器`,confirmDeleteMessage:`確定要永久刪除此橋接器嗎?此操作無法復原。`,importTitle:`匯入橋接器`,overwriteExisting:`覆蓋現有橋接器`,iconLabel:`橋接器圖示`,google:`Google`,alexa:`Alexa`,serverMode:`伺服器模式`,autoForceSync:`自動同步`,saveSuccess:`橋接器已儲存`,updateSuccess:`更新完成`,exportFailed:`匯出失敗`,actionStarted:`已啟動`,actionStopped:`已停止`,actionRestarted:`已重新啟動`,actionFailed:`{{action}} 失敗`,actionResult:`{{label}} {{count}} 個橋接器`,couldNotLoad:`無法載入橋接器`,showingFirst:`顯示前 {{count}} 個`,importParseFailed:`無法解析匯入檔案。請選擇正確的匯出檔案。`,importing:`匯入中...`,importCount:`匯入 {{count}} 個橋接器`,jsonEditor:`JSON 編輯器`,formEditor:`表單編輯器`},endpoints:{title:`端點 (Endpoints)`,searchPlaceholder:`搜尋端點...`,sortBy:`排序`,sortName:`名稱`,sortEndpoint:`端點 ID`,sortType:`類型`,cardView:`卡片檢視`,treeView:`樹狀檢視`,clusters:`叢集 (Clusters)`,entityUnavailable:`實體不可用`,showUnavailable:`顯示 {{count}} 個不可用項目`,showAll:`顯示所有實體`,uploadImage:`上傳裝置圖片`,removeImage:`移除自定義圖片`,editMapping:`編輯實體對應`,homeAssistantEntity:`Home Assistant 實體`,noEndpoints:`未找到端點。`,expandAll:`全部展開`,collapseAll:`全部摺疊`,viewAll:`查看所有裝置`,haState:`HA 狀態`,aboutEndpoint:`關於此端點`,entityId:`實體 ID`,customName:`自定義名稱`,deviceTypeOverride:`裝置類型覆蓋`,keyHaAttributes:`關鍵 HA 屬性`,entityMappings:`實體對應`,copyData:`複製數據到剪貼簿`,behavior:`行為`},health:{title:`狀態與診斷`,version:`版本`,uptime:`運行時間`,homeAssistant:`Home Assistant`,connected:`已連線`,disconnected:`已斷開`,bridgeStatus:`橋接器狀態`,refreshHealth:`重新整理狀態`,exportDiagnostic:`匯出診斷數據`,memory:`記憶體`,fabricDetails:`Fabric 詳情`,sessions:`工作階段 (Sessions)`,subscriptions:`訂閱 (Subscriptions)`,noFabrics:`無 Fabric 連接`,systemMetrics:`系統指標`,heap:`堆積記憶體 (Heap)`,rss:`常駐集大小 (RSS)`,external:`外部`,systemHealth:`系統健康度`,fetchFailed:`無法取得狀態`,connectionError:`連線錯誤`,exportFailed:`無法匯出診斷數據`,restartFailed:`無法重新啟動橋接器`,unableToLoad:`無法載入健康狀態`,sortBy:`排序方式`,created:`建立時間`,ascending:`遞增`,descending:`遞減`,connectedTo:`已連線至`,autoRecovery:`自動恢復`,recoveryAttempts:`恢復嘗試`},mapping:{title:`實體對應`,entityId:`實體 ID`,deviceType:`裝置類型`,customName:`自定義名稱`,status:`狀態`,addMapping:`新增對應`,editMapping:`編輯對應`,deleteMapping:`刪除對應`,saved:`已為 {{entityId}} 儲存對應。請重啟橋接器以套用變更。`,saveFailed:`無法儲存對應:{{error}}`,deleted:`已刪除 {{entityId}} 的對應。`,deleteFailed:`無法刪除對應。`,matterTag:`Matter 標籤`,exportProfile:`匯出設定檔`,importProfile:`匯入設定檔`,profileName:`設定檔名稱`,match:`匹配`,existing:`現有`,autoDetect:`自動偵測`,loadFailed:`載入失敗`,noMappings:`無對應資料`,applying:`套用中...`,applyCount:`套用數量`},notFound:{title:`找不到頁面`,description:`您搜尋的頁面不存在。`,backToDashboard:`返回儀表板`},devices:{title:`裝置列表`,searchPlaceholder:`搜尋裝置...`,filterBridge:`按橋接器篩選`,allBridges:`所有橋接器`,filterDeviceType:`按裝置類型篩選`,allTypes:`所有類型`,sortBy:`排序方式`,sortBridge:`橋接器`,sortType:`類型`,sortName:`名稱`,deviceCount:`裝置總數`,filteredCount:`已篩選數量`},diagnostics:{title:`即時事件`,stateUpdate:`狀態更新`,command:`指令`,entityError:`實體錯誤`,sessionOpen:`工作階段開啟`,sessionClose:`工作階段關閉`,subscription:`訂閱`,bridgeStart:`橋接器啟動`,bridgeStop:`橋接器停止`,filterEvents:`篩選事件`,clearEvents:`清除事件`,noEvents:`尚無事件`},startup:{title:`啟動設定`,description:`設定橋接器的啟動順序與延遲。`,saveSuccess:`啟動設定已儲存`,saveFailed:`儲存失敗`,saveChanges:`儲存變更`,unsavedChanges:`有未儲存的變更`,noBridges:`沒有可設定的橋接器`,saveOrder:`儲存順序`},areaSetup:{title:`按區域設定`,heading:`區域橋接器精靈`,description:`為每個 Home Assistant 區域建立獨立的橋接器。`,noAreas:`找不到區域。`,selectController:`選擇目標控制器`,selectAreas:`選擇區域`,clear:`清除`,createBridges:`建立橋接器`,results:`結果`,goToBridges:`前往橋接器頁面`,createdSuccess:`成功建立橋接器`,createdPartial:`部分橋接器建立失敗`,loadFailed:`無法載入區域`,creating:`正在建立...`,created:`已建立`,unknownError:`發生未知錯誤`},lockCredentials:{title:`門鎖憑證`,addCredential:`新增憑證`,editCredential:`編輯憑證`,lockEntityId:`門鎖實體`,lockEntityHelperText:`選擇要套用此憑證的門鎖實體。`,pinCode:`PIN 碼`,nameOptional:`名稱 (選填)`,namePlaceholder:`例如:清潔人員`,nameHelperText:`用來識別此憑證的易記名稱。`,entityRequired:`必須選擇實體`,pinLength:`PIN 碼長度必須在 4 到 8 位之間`,pinDigitsOnly:`PIN 碼只能包含數字`,saveFailed:`儲存憑證失敗`,loadFailed:`載入憑證失敗`,deleteFailed:`刪除憑證失敗`,updateFailed:`更新憑證失敗`,enable:`啟用`,disable:`停用`,confirmDeleteTitle:`刪除憑證`,confirmDeleteMessage:`確定要刪除此憑證嗎?`},labels:{title:`標籤與過濾`,info:`使用標籤來組織和篩選您的實體。`,searchPlaceholder:`搜尋標籤...`,loadFailed:`載入標籤失敗`,labelsSection:`標籤`,labelsHint:`按 Home Assistant 標籤篩選`,noLabels:`未發現標籤`,displayName:`顯示名稱`,labelId:`標籤 ID`,areaId:`區域 ID`,areasSection:`區域`,areasHint:`按區域篩選實體`,noAreas:`無可用區域`,otherFilterValues:`其他篩選值`,domains:`領域 (Domains)`,domainsHint:`按實體領域篩選`,platforms:`平台 (Platforms)`,platformsHint:`按整合平台篩選`,entityCategories:`實體類別`,entityCategoriesHint:`按類別篩選 (如:組態、診斷)`,deviceClasses:`裝置類別`,deviceClassesHint:`按裝置類別篩選`,deviceNames:`裝置名稱`,deviceNamesHint:`按裝置名稱篩選`,productNames:`產品名稱`,productNamesHint:`按產品型號篩選`},logs:{title:`日誌`,logLevel:`日誌層級`,error:`錯誤`,warning:`警告`,info:`資訊`,debug:`除錯`,searchPlaceholder:`搜尋日誌...`,noResults:`未找到日誌項目`,autoRefresh:`自動重新整理`},backup:{title:`備份與還原`,description:`管理您的配置備份以防止數據遺失。`,configBackup:`配置備份`,configBackupDesc:`僅備份橋接器設定與對應關係。`,configBackupNote:`不包含 Matter 配對身份資訊。`,fullBackup:`完整備份`,fullBackupDesc:`備份所有數據,包含 Matter 配對身份資訊。`,fullBackupWarning:`注意:還原完整備份會覆蓋現有的所有 Matter 憑證。`,restoreFromBackup:`從備份還原`,restoreDesc:`上傳備份檔案以還原設定。`,restoreTitle:`還原設定`,selectBridges:`選擇橋接器`,overwriteExisting:`覆蓋現有項目`,includeMappings:`包含實體對應`,restoreIdentities:`還原配對身份`,restore:`還原`,downloadSuccess:`下載成功`,restartRequired:`需要重新啟動`,restartMessage:`必須重新啟動套件以完成還原。`,restartNote:`重啟過程中連線將暫時中斷。`,restartNow:`立即重新啟動`,storedBackups:`已儲存的備份`,createSnapshot:`建立快照`,noSnapshots:`尚無快照`,downloadSnapshot:`下載快照`,restoreSnapshot:`還原快照`,auto:`自動`,manual:`手動`,snapshotCreated:`快照已建立`,snapshotRestored:`快照已還原`,confirmRestore:`確認還原`,confirmRestoreMessage:`確定要從此快照還原嗎?現有設定將被覆蓋。`,restoreWarning:`此操作無法撤銷。`,confirmDelete:`確認刪除`,confirmDeleteMessage:`確定要刪除此備份嗎?`,settings:`備份設定`,autoBackupLabel:`自動備份`,autoBackupDesc:`每天自動建立快照`,retentionCount:`保留數量`,retentionCountDesc:`要保留的快照份數`},networkMap:{title:`網路拓撲圖`,hubLabel:`Matter Hub`,undoMove:`復原移動`,resetLayout:`重置佈局`,refreshData:`重新整理數據`,fullscreen:`全螢幕`,exitFullscreen:`結束全螢幕`,legend:`圖例`,controller:`控制器`,hub:`集線器 (Hub)`,bridge:`橋接器`,device:`裝置`,failed:`失敗`},updateChecker:{title:`更新檢查`,checkNow:`立即檢查`,currentVersion:`目前版本`,latestVersion:`最新版本`,updateAvailable:`有可用更新!`,upToDate:`軟體已是最新狀態`,releaseNotes:`版本說明`,notAvailable:`無法取得版本資訊`,checkFailed:`檢查更新失敗`,unreachable:`無法連線至更新伺服器`,instructionAddon:`請在 Home Assistant Add-on 商店中更新。`,instructionDocker:`請拉取最新的 Docker 映像檔。`,instructionNpm:`請執行 npm install 以更新。`},bridgeWizard:{title:`建立橋接器精靈`,stepTemplate:`選擇範本`,stepController:`目標控制器`,stepBridgeInfo:`基本資訊`,stepEntityFilter:`實體篩選`,stepFeatureFlags:`功能旗標`,stepReview:`確認設定`,autoCompose:`自動組合`,autoForceSyncFlag:`自動強制同步`,invertCover:`反轉窗簾/捲簾方向`,invertCoverDescription:`若窗簾狀態相反,請啟用此項。`,includeHidden:`包含隱藏實體`,includeHiddenDescription:`是否顯示在 HA 中被隱藏的實體。`,bridgeName:`橋接器名稱`,portLabel:`連接埠號碼`,portAutoAssign:`自動分配連接埠`,nameRequired:`必須輸入名稱`,createFailed:`建立橋接器失敗`,bridgeInfoDescription:`為您的橋接器設定名稱與通訊埠。`,serverModeLabel:`啟用伺服器模式`,serverModeTooltip:`將此裝置作為單獨的 Matter 裝置公開,而非橋接模式。`,entityFilterDescription:`選擇哪些實體要透過此橋接器公開。`,includeAll:`包含所有支援的實體`,entityId:`實體 ID`,includePattern:`包含規則 (Pattern)`,entityFilters:`實體篩選器`,serverModeEntityHint:`伺服器模式僅支援單一實體。`,templatePreConfigured:`預設範本`,wildcardHint:`支援萬用字元如 light.*`,commaHint:`使用逗號分隔多個項目`,excludePatterns:`排除規則`,excludeHelperText:`排除特定實體,即使符合包含規則也會被過濾。`,skipTemplate:`不使用範本`,creating:`建立中...`,createBridge:`建立橋接器`,searchRules:`搜尋規則`,templateDescription:`範本可協助您快速預設篩選器和旗標。`,controllerDescription:`選擇您預計使用的控制器以套用推薦的最佳設定。`,controllerHint:`這將自動調整功能旗標以達到最佳相容性。`,templateApplied:`範本已套用`,filterPreConfiguredFrom:`篩選器已根據 {{template}} 預設`,featureFlagsDescription:`調整特殊功能以改善特定控制器的行為。`,recommendedFlags:`推薦旗標`,selectFlags:`選擇旗標`,reviewDescription:`請確認您的橋接器設定。`,bridgesToCreate:`待建立的橋接器`,bridgesCreated:`橋接器已建立`,addAnother:`新增另一個`},footer:{github:`GitHub`,documentation:`說明文件`},languageSwitcher:{disclaimer:`翻譯可能不完全完整。`,contribute:`協助改進翻譯!`},translationEditor:{title:`翻譯編輯器`,editLanguage:`編輯語言`,info:`直接在瀏覽器中編輯翻譯。變更會立即儲存在本地並生效。您可以匯出翻譯檔案並提交給專案。`,progress:`已翻譯 {{translated}} / {{total}} 個項目`,localEdits:`有 {{count}} 處本地修改`,searchPlaceholder:`搜尋鍵或翻譯內容...`,filterAll:`所有項目`,filterMissing:`未翻譯`,filterEdited:`已編輯`,exportJson:`匯出 JSON`,copyJson:`複製 JSON`,copied:`已複製!`,resetAll:`重置所有修改`,resetKey:`重置為預設值`,noResults:`未找到匹配的翻譯項目。`,addLanguage:`新增語言`,newLanguageCode:`語言代碼 (如 pt、ja、ko)`,newLanguageName:`語言名稱 (如 Português)`,addLanguageButton:`新增`,languageExists:`此語言已存在。`,codeRequired:`語言代碼為必填。`,nameRequired:`語言名稱為必填。`,removeLanguage:`移除語言`,removeLanguageConfirm:`確定要移除此語言嗎?所有未導出的本地修改都將丟失。`,importJson:`匯入 JSON`,importSuccess:`已成功匯入 {{count}} 條翻譯。`,importFailed:`匯入失敗:JSON 格式無效。`}},As=`hamh-translation-overrides`,js=`hamh-custom-languages`;function Ms(e,t=``){let n={};for(let[r,i]of Object.entries(e)){let e=t?`${t}.${r}`:r;typeof i==`object`&&i&&!Array.isArray(i)?Object.assign(n,Ms(i,e)):n[e]=String(i??``)}return n}function Ns(e){let t={};for(let[n,r]of Object.entries(e)){let e=n.split(`.`),i=t;for(let t=0;t<e.length-1;t++)e[t]in i||(i[e[t]]={}),i=i[e[t]];i[e[e.length-1]]=r}return t}function Ps(){try{let e=localStorage.getItem(As);if(!e)return;let t=JSON.parse(e);for(let[e,n]of Object.entries(t)){if(!n||Object.keys(n).length===0)continue;let t=vo.getResourceBundle(e,`translation`),r=Ns({...t?Ms(t):{},...n});vo.addResourceBundle(e,`translation`,r,!0,!0)}}catch{}}function Fs(){try{let e=localStorage.getItem(js);if(!e)return;let t=JSON.parse(e);for(let e of t)vo.hasResourceBundle(e.code,`translation`)||vo.addResourceBundle(e.code,`translation`,{},!0,!0)}catch{}}vo.use(Ho).use(ss).init({resources:{en:{translation:_s},de:{translation:gs},hu:{translation:bs},fr:{translation:ys},it:{translation:xs},ja:{translation:Ss},es:{translation:vs},zh:{translation:Os},"zh-TW":{translation:ks},th:{translation:Es},sv:{translation:Ts},tr:{translation:Ds},ru:{translation:ws},pl:{translation:Cs}},fallbackLng:`en`,interpolation:{escapeValue:!1},detection:{order:[`localStorage`,`navigator`,`htmlTag`],caches:[`localStorage`]}}),Fs(),Ps();var Is=vo;function Ls(e,...t){let n=new URL(`https://mui.com/production-error/?code=${e}`);return t.forEach(e=>n.searchParams.append(`args[]`,e)),`Minified MUI error #${e}; visit ${n} for the full message.`}function Rs(e){if(typeof e!=`string`)throw Error(Ls(7));return e.charAt(0).toUpperCase()+e.slice(1)}var zs=s((e=>{var t=Symbol.for(`react.fragment`),n=Symbol.for(`react.strict_mode`),r=Symbol.for(`react.profiler`),i=Symbol.for(`react.consumer`),a=Symbol.for(`react.context`),o=Symbol.for(`react.forward_ref`),s=Symbol.for(`react.suspense`),c=Symbol.for(`react.suspense_list`),l=Symbol.for(`react.memo`),u=Symbol.for(`react.lazy`),d=Symbol.for(`react.client.reference`);e.isValidElementType=function(e){return!!(typeof e==`string`||typeof e==`function`||e===t||e===r||e===n||e===s||e===c||typeof e==`object`&&e&&(e.$$typeof===u||e.$$typeof===l||e.$$typeof===a||e.$$typeof===i||e.$$typeof===o||e.$$typeof===d||e.getModuleId!==void 0))}})),Bs=s(((e,t)=>{t.exports=zs()}))();function Vs(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function Hs(e){if(C.isValidElement(e)||(0,Bs.isValidElementType)(e)||!Vs(e))return e;let t={};return Object.keys(e).forEach(n=>{t[n]=Hs(e[n])}),t}function Us(e,t,n={clone:!0}){let r=n.clone?{...e}:e;return Vs(e)&&Vs(t)&&Object.keys(t).forEach(i=>{C.isValidElement(t[i])||(0,Bs.isValidElementType)(t[i])?r[i]=t[i]:Vs(t[i])&&Object.prototype.hasOwnProperty.call(e,i)&&Vs(e[i])?r[i]=Us(e[i],t[i],n):n.clone?r[i]=Vs(t[i])?Hs(t[i]):t[i]:r[i]=t[i]}),r}function Ws(e,t){return t?Us(e,t,{clone:!1}):e}function Gs(e,t){if(!e.containerQueries)return t;let n=Object.keys(t).filter(e=>e.startsWith(`@container`)).sort((e,t)=>{let n=/min-width:\s*([0-9.]+)/;return(e.match(n)?.[1]||0)-+(t.match(n)?.[1]||0)});return n.length?n.reduce((e,n)=>{let r=t[n];return delete e[n],e[n]=r,e},{...t}):t}function Ks(e,t){return t===`@`||t.startsWith(`@`)&&(e.some(e=>t.startsWith(`@${e}`))||!!t.match(/^@\d/))}function qs(e,t){let n=t.match(/^@([^/]+)?\/?(.+)?$/);if(!n)return null;let[,r,i]=n,a=Number.isNaN(+r)?r||0:+r;return e.containerQueries(i).up(a)}function Js(e){let t=(e,t)=>e.replace(`@media`,t?`@container ${t}`:`@container`);function n(n,r){n.up=(...n)=>t(e.breakpoints.up(...n),r),n.down=(...n)=>t(e.breakpoints.down(...n),r),n.between=(...n)=>t(e.breakpoints.between(...n),r),n.only=(...n)=>t(e.breakpoints.only(...n),r),n.not=(...n)=>{let i=t(e.breakpoints.not(...n),r);return i.includes(`not all and`)?i.replace(`not all and `,``).replace(`min-width:`,`width<`).replace(`max-width:`,`width>`).replace(`and`,`or`):i}}let r={},i=e=>(n(r,e),r);return n(i),{...e,containerQueries:i}}var Ys={xs:0,sm:600,md:900,lg:1200,xl:1536},Xs={keys:[`xs`,`sm`,`md`,`lg`,`xl`],up:e=>`@media (min-width:${Ys[e]}px)`},Zs={containerQueries:e=>({up:t=>{let n=typeof t==`number`?t:Ys[t]||t;return typeof n==`number`&&(n=`${n}px`),e?`@container ${e} (min-width:${n})`:`@container (min-width:${n})`}})};function Qs(e,t,n){let r=e.theme||{};if(Array.isArray(t)){let e=r.breakpoints||Xs;return t.reduce((r,i,a)=>(r[e.up(e.keys[a])]=n(t[a]),r),{})}if(typeof t==`object`){let e=r.breakpoints||Xs;return Object.keys(t).reduce((i,a)=>{if(Ks(e.keys,a)){let e=qs(r.containerQueries?r:Zs,a);e&&(i[e]=n(t[a],a))}else if(Object.keys(e.values||Ys).includes(a)){let r=e.up(a);i[r]=n(t[a],a)}else{let e=a;i[e]=t[e]}return i},{})}return n(t)}function $s(e={}){return e.keys?.reduce((t,n)=>{let r=e.up(n);return t[r]={},t},{})||{}}function ec(e,t){return e.reduce((e,t)=>{let n=e[t];return(!n||Object.keys(n).length===0)&&delete e[t],e},t)}function tc(e,...t){let n=$s(e),r=[n,...t].reduce((e,t)=>Us(e,t),{});return ec(Object.keys(n),r)}function nc(e,t){if(typeof e!=`object`)return{};let n={},r=Object.keys(t);return Array.isArray(e)?r.forEach((t,r)=>{r<e.length&&(n[t]=!0)}):r.forEach(t=>{e[t]!=null&&(n[t]=!0)}),n}function rc({values:e,breakpoints:t,base:n}){let r=n||nc(e,t),i=Object.keys(r);if(i.length===0)return e;let a;return i.reduce((t,n,r)=>(Array.isArray(e)?(t[n]=e[r]==null?e[a]:e[r],a=r):typeof e==`object`?(t[n]=e[n]==null?e[a]:e[n],a=n):t[n]=e,t),{})}function ic(e,t,n=!0){if(!t||typeof t!=`string`)return null;if(e&&e.vars&&n){let n=`vars.${t}`.split(`.`).reduce((e,t)=>e&&e[t]?e[t]:null,e);if(n!=null)return n}return t.split(`.`).reduce((e,t)=>e&&e[t]!=null?e[t]:null,e)}function ac(e,t,n,r=n){let i;return i=typeof e==`function`?e(n):Array.isArray(e)?e[n]||r:ic(e,n)||r,t&&(i=t(i,r,e)),i}function oc(e){let{prop:t,cssProperty:n=e.prop,themeKey:r,transform:i}=e,a=e=>{if(e[t]==null)return null;let a=e[t],o=e.theme,s=ic(o,r)||{};return Qs(e,a,e=>{let r=ac(s,i,e);return e===r&&typeof e==`string`&&(r=ac(s,i,`${t}${e===`default`?``:Rs(e)}`,e)),n===!1?r:{[n]:r}})};return a.propTypes={},a.filterProps=[t],a}function sc(e){let t={};return n=>(t[n]===void 0&&(t[n]=e(n)),t[n])}var cc={m:`margin`,p:`padding`},lc={t:`Top`,r:`Right`,b:`Bottom`,l:`Left`,x:[`Left`,`Right`],y:[`Top`,`Bottom`]},uc={marginX:`mx`,marginY:`my`,paddingX:`px`,paddingY:`py`},dc=sc(e=>{if(e.length>2)if(uc[e])e=uc[e];else return[e];let[t,n]=e.split(``),r=cc[t],i=lc[n]||``;return Array.isArray(i)?i.map(e=>r+e):[r+i]}),fc=[`m`,`mt`,`mr`,`mb`,`ml`,`mx`,`my`,`margin`,`marginTop`,`marginRight`,`marginBottom`,`marginLeft`,`marginX`,`marginY`,`marginInline`,`marginInlineStart`,`marginInlineEnd`,`marginBlock`,`marginBlockStart`,`marginBlockEnd`],pc=[`p`,`pt`,`pr`,`pb`,`pl`,`px`,`py`,`padding`,`paddingTop`,`paddingRight`,`paddingBottom`,`paddingLeft`,`paddingX`,`paddingY`,`paddingInline`,`paddingInlineStart`,`paddingInlineEnd`,`paddingBlock`,`paddingBlockStart`,`paddingBlockEnd`],mc=[...fc,...pc];function hc(e,t,n,r){let i=ic(e,t,!0)??n;return typeof i==`number`||typeof i==`string`?e=>typeof e==`string`?e:typeof i==`string`?i.startsWith(`var(`)&&e===0?0:i.startsWith(`var(`)&&e===1?i:`calc(${e} * ${i})`:i*e:Array.isArray(i)?e=>{if(typeof e==`string`)return e;let t=i[Math.abs(e)];return e>=0?t:typeof t==`number`?-t:typeof t==`string`&&t.startsWith(`var(`)?`calc(-1 * ${t})`:`-${t}`}:typeof i==`function`?i:()=>void 0}function gc(e){return hc(e,`spacing`,8,`spacing`)}function _c(e,t){return typeof t==`string`||t==null?t:e(t)}function vc(e,t){return n=>e.reduce((e,r)=>(e[r]=_c(t,n),e),{})}function yc(e,t,n,r){if(!t.includes(n))return null;let i=vc(dc(n),r),a=e[n];return Qs(e,a,i)}function bc(e,t){let n=gc(e.theme);return Object.keys(e).map(r=>yc(e,t,r,n)).reduce(Ws,{})}function xc(e){return bc(e,fc)}xc.propTypes={},xc.filterProps=fc;function Sc(e){return bc(e,pc)}Sc.propTypes={},Sc.filterProps=pc;function Cc(e){return bc(e,mc)}Cc.propTypes={},Cc.filterProps=mc;function wc(...e){let t=e.reduce((e,t)=>(t.filterProps.forEach(n=>{e[n]=t}),e),{}),n=e=>Object.keys(e).reduce((n,r)=>t[r]?Ws(n,t[r](e)):n,{});return n.propTypes={},n.filterProps=e.reduce((e,t)=>e.concat(t.filterProps),[]),n}function Tc(e){return typeof e==`number`?`${e}px solid`:e}function Ec(e,t){return oc({prop:e,themeKey:`borders`,transform:t})}var Dc=Ec(`border`,Tc),Oc=Ec(`borderTop`,Tc),kc=Ec(`borderRight`,Tc),Ac=Ec(`borderBottom`,Tc),jc=Ec(`borderLeft`,Tc),Mc=Ec(`borderColor`),Nc=Ec(`borderTopColor`),Pc=Ec(`borderRightColor`),Fc=Ec(`borderBottomColor`),Ic=Ec(`borderLeftColor`),Lc=Ec(`outline`,Tc),Rc=Ec(`outlineColor`),zc=e=>{if(e.borderRadius!==void 0&&e.borderRadius!==null){let t=hc(e.theme,`shape.borderRadius`,4,`borderRadius`);return Qs(e,e.borderRadius,e=>({borderRadius:_c(t,e)}))}return null};zc.propTypes={},zc.filterProps=[`borderRadius`],wc(Dc,Oc,kc,Ac,jc,Mc,Nc,Pc,Fc,Ic,zc,Lc,Rc);var Bc=e=>{if(e.gap!==void 0&&e.gap!==null){let t=hc(e.theme,`spacing`,8,`gap`);return Qs(e,e.gap,e=>({gap:_c(t,e)}))}return null};Bc.propTypes={},Bc.filterProps=[`gap`];var Vc=e=>{if(e.columnGap!==void 0&&e.columnGap!==null){let t=hc(e.theme,`spacing`,8,`columnGap`);return Qs(e,e.columnGap,e=>({columnGap:_c(t,e)}))}return null};Vc.propTypes={},Vc.filterProps=[`columnGap`];var Hc=e=>{if(e.rowGap!==void 0&&e.rowGap!==null){let t=hc(e.theme,`spacing`,8,`rowGap`);return Qs(e,e.rowGap,e=>({rowGap:_c(t,e)}))}return null};Hc.propTypes={},Hc.filterProps=[`rowGap`],wc(Bc,Vc,Hc,oc({prop:`gridColumn`}),oc({prop:`gridRow`}),oc({prop:`gridAutoFlow`}),oc({prop:`gridAutoColumns`}),oc({prop:`gridAutoRows`}),oc({prop:`gridTemplateColumns`}),oc({prop:`gridTemplateRows`}),oc({prop:`gridTemplateAreas`}),oc({prop:`gridArea`}));function Uc(e,t){return t===`grey`?t:e}wc(oc({prop:`color`,themeKey:`palette`,transform:Uc}),oc({prop:`bgcolor`,cssProperty:`backgroundColor`,themeKey:`palette`,transform:Uc}),oc({prop:`backgroundColor`,themeKey:`palette`,transform:Uc}));function Wc(e){return e<=1&&e!==0?`${e*100}%`:e}var Gc=oc({prop:`width`,transform:Wc}),Kc=e=>e.maxWidth!==void 0&&e.maxWidth!==null?Qs(e,e.maxWidth,t=>{let n=e.theme?.breakpoints?.values?.[t]||Ys[t];return n?e.theme?.breakpoints?.unit===`px`?{maxWidth:n}:{maxWidth:`${n}${e.theme.breakpoints.unit}`}:{maxWidth:Wc(t)}}):null;Kc.filterProps=[`maxWidth`];var qc=oc({prop:`minWidth`,transform:Wc}),Jc=oc({prop:`height`,transform:Wc}),Yc=oc({prop:`maxHeight`,transform:Wc}),Xc=oc({prop:`minHeight`,transform:Wc});oc({prop:`size`,cssProperty:`width`,transform:Wc}),oc({prop:`size`,cssProperty:`height`,transform:Wc}),wc(Gc,Kc,qc,Jc,Yc,Xc,oc({prop:`boxSizing`}));var Zc={border:{themeKey:`borders`,transform:Tc},borderTop:{themeKey:`borders`,transform:Tc},borderRight:{themeKey:`borders`,transform:Tc},borderBottom:{themeKey:`borders`,transform:Tc},borderLeft:{themeKey:`borders`,transform:Tc},borderColor:{themeKey:`palette`},borderTopColor:{themeKey:`palette`},borderRightColor:{themeKey:`palette`},borderBottomColor:{themeKey:`palette`},borderLeftColor:{themeKey:`palette`},outline:{themeKey:`borders`,transform:Tc},outlineColor:{themeKey:`palette`},borderRadius:{themeKey:`shape.borderRadius`,style:zc},color:{themeKey:`palette`,transform:Uc},bgcolor:{themeKey:`palette`,cssProperty:`backgroundColor`,transform:Uc},backgroundColor:{themeKey:`palette`,transform:Uc},p:{style:Sc},pt:{style:Sc},pr:{style:Sc},pb:{style:Sc},pl:{style:Sc},px:{style:Sc},py:{style:Sc},padding:{style:Sc},paddingTop:{style:Sc},paddingRight:{style:Sc},paddingBottom:{style:Sc},paddingLeft:{style:Sc},paddingX:{style:Sc},paddingY:{style:Sc},paddingInline:{style:Sc},paddingInlineStart:{style:Sc},paddingInlineEnd:{style:Sc},paddingBlock:{style:Sc},paddingBlockStart:{style:Sc},paddingBlockEnd:{style:Sc},m:{style:xc},mt:{style:xc},mr:{style:xc},mb:{style:xc},ml:{style:xc},mx:{style:xc},my:{style:xc},margin:{style:xc},marginTop:{style:xc},marginRight:{style:xc},marginBottom:{style:xc},marginLeft:{style:xc},marginX:{style:xc},marginY:{style:xc},marginInline:{style:xc},marginInlineStart:{style:xc},marginInlineEnd:{style:xc},marginBlock:{style:xc},marginBlockStart:{style:xc},marginBlockEnd:{style:xc},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:Bc},rowGap:{style:Hc},columnGap:{style:Vc},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:`zIndex`},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:`shadows`},width:{transform:Wc},maxWidth:{style:Kc},minWidth:{transform:Wc},height:{transform:Wc},maxHeight:{transform:Wc},minHeight:{transform:Wc},boxSizing:{},font:{themeKey:`font`},fontFamily:{themeKey:`typography`},fontSize:{themeKey:`typography`},fontStyle:{themeKey:`typography`},fontWeight:{themeKey:`typography`},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:`typography`}};function Qc(...e){let t=e.reduce((e,t)=>e.concat(Object.keys(t)),[]),n=new Set(t);return e.every(e=>n.size===Object.keys(e).length)}function $c(e,t){return typeof e==`function`?e(t):e}function el(){function e(e,t,n,r){let i={[e]:t,theme:n},a=r[e];if(!a)return{[e]:t};let{cssProperty:o=e,themeKey:s,transform:c,style:l}=a;if(t==null)return null;if(s===`typography`&&t===`inherit`)return{[e]:t};let u=ic(n,s)||{};return l?l(i):Qs(i,t,t=>{let n=ac(u,c,t);return t===n&&typeof t==`string`&&(n=ac(u,c,`${e}${t===`default`?``:Rs(t)}`,t)),o===!1?n:{[o]:n}})}function t(n){let{sx:r,theme:i={},nested:a}=n||{};if(!r)return null;let o=i.unstable_sxConfig??Zc;function s(n){let r=n;if(typeof n==`function`)r=n(i);else if(typeof n!=`object`)return n;if(!r)return null;let s=$s(i.breakpoints),c=Object.keys(s),l=s;return Object.keys(r).forEach(n=>{let a=$c(r[n],i);if(a!=null)if(typeof a==`object`)if(o[n])l=Ws(l,e(n,a,i,o));else{let e=Qs({theme:i},a,e=>({[n]:e}));Qc(e,a)?l[n]=t({sx:a,theme:i,nested:!0}):l=Ws(l,e)}else l=Ws(l,e(n,a,i,o))}),!a&&i.modularCssLayers?{"@layer sx":Gs(i,ec(c,l))}:Gs(i,ec(c,l))}return Array.isArray(r)?r.map(s):s(r)}return t}var tl=el();tl.filterProps=[`sx`];var nl=e=>{let t={systemProps:{},otherProps:{}},n=e?.theme?.unstable_sxConfig??Zc;return Object.keys(e).forEach(r=>{n[r]?t.systemProps[r]=e[r]:t.otherProps[r]=e[r]}),t};function rl(e){let{sx:t,...n}=e,{systemProps:r,otherProps:i}=nl(n),a;return a=Array.isArray(t)?[r,...t]:typeof t==`function`?(...e)=>{let n=t(...e);return Vs(n)?{...r,...n}:r}:{...r,...t},{...i,sx:a}}function il(){return il=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},il.apply(null,arguments)}var al=!1;function ol(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}function sl(e){var t=document.createElement(`style`);return t.setAttribute(`data-emotion`,e.key),e.nonce!==void 0&&t.setAttribute(`nonce`,e.nonce),t.appendChild(document.createTextNode(``)),t.setAttribute(`data-s`,``),t}var cl=function(){function e(e){var t=this;this._insertTag=function(e){var n=t.tags.length===0?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling;t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=e.speedy===void 0?!al:e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(sl(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=ol(t);try{n.insertRule(e,n.cssRules.length)}catch{}}else t.appendChild(document.createTextNode(e));this.ctr++},t.flush=function(){this.tags.forEach(function(e){return e.parentNode?.removeChild(e)}),this.tags=[],this.ctr=0},e}(),ll=`-ms-`,ul=`-moz-`,dl=`-webkit-`,fl=`comm`,pl=`rule`,ml=`decl`,hl=`@import`,gl=`@keyframes`,_l=`@layer`,vl=Math.abs,yl=String.fromCharCode,bl=Object.assign;function xl(e,t){return El(e,0)^45?(((t<<2^El(e,0))<<2^El(e,1))<<2^El(e,2))<<2^El(e,3):0}function Sl(e){return e.trim()}function Cl(e,t){return(e=t.exec(e))?e[0]:e}function wl(e,t,n){return e.replace(t,n)}function Tl(e,t){return e.indexOf(t)}function El(e,t){return e.charCodeAt(t)|0}function Dl(e,t,n){return e.slice(t,n)}function Ol(e){return e.length}function kl(e){return e.length}function Al(e,t){return t.push(e),e}function jl(e,t){return e.map(t).join(``)}var Ml=1,Nl=1,Pl=0,Fl=0,Il=0,Ll=``;function Rl(e,t,n,r,i,a,o){return{value:e,root:t,parent:n,type:r,props:i,children:a,line:Ml,column:Nl,length:o,return:``}}function zl(e,t){return bl(Rl(``,null,null,``,null,null,0),e,{length:-e.length},t)}function Bl(){return Il}function Vl(){return Il=Fl>0?El(Ll,--Fl):0,Nl--,Il===10&&(Nl=1,Ml--),Il}function Hl(){return Il=Fl<Pl?El(Ll,Fl++):0,Nl++,Il===10&&(Nl=1,Ml++),Il}function Ul(){return El(Ll,Fl)}function Wl(){return Fl}function Gl(e,t){return Dl(Ll,e,t)}function Kl(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function ql(e){return Ml=Nl=1,Pl=Ol(Ll=e),Fl=0,[]}function Jl(e){return Ll=``,e}function Yl(e){return Sl(Gl(Fl-1,Ql(e===91?e+2:e===40?e+1:e)))}function Xl(e){for(;(Il=Ul())&&Il<33;)Hl();return Kl(e)>2||Kl(Il)>3?``:` `}function Zl(e,t){for(;--t&&Hl()&&!(Il<48||Il>102||Il>57&&Il<65||Il>70&&Il<97););return Gl(e,Wl()+(t<6&&Ul()==32&&Hl()==32))}function Ql(e){for(;Hl();)switch(Il){case e:return Fl;case 34:case 39:e!==34&&e!==39&&Ql(Il);break;case 40:e===41&&Ql(e);break;case 92:Hl();break}return Fl}function $l(e,t){for(;Hl()&&e+Il!==57&&!(e+Il===84&&Ul()===47););return`/*`+Gl(t,Fl-1)+`*`+yl(e===47?e:Hl())}function eu(e){for(;!Kl(Ul());)Hl();return Gl(e,Fl)}function tu(e){return Jl(nu(``,null,null,null,[``],e=ql(e),0,[0],e))}function nu(e,t,n,r,i,a,o,s,c){for(var l=0,u=0,d=o,f=0,p=0,m=0,h=1,g=1,_=1,v=0,y=``,b=i,x=a,S=r,C=y;g;)switch(m=v,v=Hl()){case 40:if(m!=108&&El(C,d-1)==58){Tl(C+=wl(Yl(v),`&`,`&\f`),`&\f`)!=-1&&(_=-1);break}case 34:case 39:case 91:C+=Yl(v);break;case 9:case 10:case 13:case 32:C+=Xl(m);break;case 92:C+=Zl(Wl()-1,7);continue;case 47:switch(Ul()){case 42:case 47:Al(iu($l(Hl(),Wl()),t,n),c);break;default:C+=`/`}break;case 123*h:s[l++]=Ol(C)*_;case 125*h:case 59:case 0:switch(v){case 0:case 125:g=0;case 59+u:_==-1&&(C=wl(C,/\f/g,``)),p>0&&Ol(C)-d&&Al(p>32?au(C+`;`,r,n,d-1):au(wl(C,` `,``)+`;`,r,n,d-2),c);break;case 59:C+=`;`;default:if(Al(S=ru(C,t,n,l,u,i,s,y,b=[],x=[],d),a),v===123)if(u===0)nu(C,t,S,S,b,a,d,s,x);else switch(f===99&&El(C,3)===110?100:f){case 100:case 108:case 109:case 115:nu(e,S,S,r&&Al(ru(e,S,S,0,0,i,s,y,i,b=[],d),x),i,x,d,s,r?b:x);break;default:nu(C,S,S,S,[``],x,0,s,x)}}l=u=p=0,h=_=1,y=C=``,d=o;break;case 58:d=1+Ol(C),p=m;default:if(h<1){if(v==123)--h;else if(v==125&&h++==0&&Vl()==125)continue}switch(C+=yl(v),v*h){case 38:_=u>0?1:(C+=`\f`,-1);break;case 44:s[l++]=(Ol(C)-1)*_,_=1;break;case 64:Ul()===45&&(C+=Yl(Hl())),f=Ul(),u=d=Ol(y=C+=eu(Wl())),v++;break;case 45:m===45&&Ol(C)==2&&(h=0)}}return a}function ru(e,t,n,r,i,a,o,s,c,l,u){for(var d=i-1,f=i===0?a:[``],p=kl(f),m=0,h=0,g=0;m<r;++m)for(var _=0,v=Dl(e,d+1,d=vl(h=o[m])),y=e;_<p;++_)(y=Sl(h>0?f[_]+` `+v:wl(v,/&\f/g,f[_])))&&(c[g++]=y);return Rl(e,t,n,i===0?pl:s,c,l,u)}function iu(e,t,n){return Rl(e,t,n,fl,yl(Bl()),Dl(e,2,-2),0)}function au(e,t,n,r){return Rl(e,t,n,ml,Dl(e,0,r),Dl(e,r+1,-1),r)}function ou(e,t){for(var n=``,r=kl(e),i=0;i<r;i++)n+=t(e[i],i,e,t)||``;return n}function su(e,t,n,r){switch(e.type){case _l:if(e.children.length)break;case hl:case ml:return e.return=e.return||e.value;case fl:return``;case gl:return e.return=e.value+`{`+ou(e.children,r)+`}`;case pl:e.value=e.props.join(`,`)}return Ol(n=ou(e.children,r))?e.return=e.value+`{`+n+`}`:``}function cu(e){var t=kl(e);return function(n,r,i,a){for(var o=``,s=0;s<t;s++)o+=e[s](n,r,i,a)||``;return o}}function lu(e){return function(t){t.root||(t=t.return)&&e(t)}}function uu(e){var t=Object.create(null);return function(n){return t[n]===void 0&&(t[n]=e(n)),t[n]}}var du=function(e,t,n){for(var r=0,i=0;r=i,i=Ul(),r===38&&i===12&&(t[n]=1),!Kl(i);)Hl();return Gl(e,Fl)},fu=function(e,t){var n=-1,r=44;do switch(Kl(r)){case 0:r===38&&Ul()===12&&(t[n]=1),e[n]+=du(Fl-1,t,n);break;case 2:e[n]+=Yl(r);break;case 4:if(r===44){e[++n]=Ul()===58?`&\f`:``,t[n]=e[n].length;break}default:e[n]+=yl(r)}while(r=Hl());return e},pu=function(e,t){return Jl(fu(ql(e),t))},mu=new WeakMap,hu=function(e){if(!(e.type!==`rule`||!e.parent||e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;n.type!==`rule`;)if(n=n.parent,!n)return;if(!(e.props.length===1&&t.charCodeAt(0)!==58&&!mu.get(n))&&!r){mu.set(e,!0);for(var i=[],a=pu(t,i),o=n.props,s=0,c=0;s<a.length;s++)for(var l=0;l<o.length;l++,c++)e.props[c]=i[s]?a[s].replace(/&\f/g,o[l]):o[l]+` `+a[s]}}},gu=function(e){if(e.type===`decl`){var t=e.value;t.charCodeAt(0)===108&&t.charCodeAt(2)===98&&(e.return=``,e.value=``)}};function _u(e,t){switch(xl(e,t)){case 5103:return dl+`print-`+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return dl+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return dl+e+ul+e+ll+e+e;case 6828:case 4268:return dl+e+ll+e+e;case 6165:return dl+e+ll+`flex-`+e+e;case 5187:return dl+e+wl(e,/(\w+).+(:[^]+)/,dl+`box-$1$2`+ll+`flex-$1$2`)+e;case 5443:return dl+e+ll+`flex-item-`+wl(e,/flex-|-self/,``)+e;case 4675:return dl+e+ll+`flex-line-pack`+wl(e,/align-content|flex-|-self/,``)+e;case 5548:return dl+e+ll+wl(e,`shrink`,`negative`)+e;case 5292:return dl+e+ll+wl(e,`basis`,`preferred-size`)+e;case 6060:return dl+`box-`+wl(e,`-grow`,``)+dl+e+ll+wl(e,`grow`,`positive`)+e;case 4554:return dl+wl(e,/([^-])(transform)/g,`$1`+dl+`$2`)+e;case 6187:return wl(wl(wl(e,/(zoom-|grab)/,dl+`$1`),/(image-set)/,dl+`$1`),e,``)+e;case 5495:case 3959:return wl(e,/(image-set\([^]*)/,dl+"$1$`$1");case 4968:return wl(wl(e,/(.+:)(flex-)?(.*)/,dl+`box-pack:$3`+ll+`flex-pack:$3`),/s.+-b[^;]+/,`justify`)+dl+e+e;case 4095:case 3583:case 4068:case 2532:return wl(e,/(.+)-inline(.+)/,dl+`$1$2`)+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(Ol(e)-1-t>6)switch(El(e,t+1)){case 109:if(El(e,t+4)!==45)break;case 102:return wl(e,/(.+:)(.+)-([^]+)/,`$1`+dl+`$2-$3$1`+ul+(El(e,t+3)==108?`$3`:`$2-$3`))+e;case 115:return~Tl(e,`stretch`)?_u(wl(e,`stretch`,`fill-available`),t)+e:e}break;case 4949:if(El(e,t+1)!==115)break;case 6444:switch(El(e,Ol(e)-3-(~Tl(e,`!important`)&&10))){case 107:return wl(e,`:`,`:`+dl)+e;case 101:return wl(e,/(.+:)([^;!]+)(;|!.+)?/,`$1`+dl+(El(e,14)===45?`inline-`:``)+`box$3$1`+dl+`$2$3$1`+ll+`$2box$3`)+e}break;case 5936:switch(El(e,t+11)){case 114:return dl+e+ll+wl(e,/[svh]\w+-[tblr]{2}/,`tb`)+e;case 108:return dl+e+ll+wl(e,/[svh]\w+-[tblr]{2}/,`tb-rl`)+e;case 45:return dl+e+ll+wl(e,/[svh]\w+-[tblr]{2}/,`lr`)+e}return dl+e+ll+e+e}return e}var vu=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case ml:e.return=_u(e.value,e.length);break;case gl:return ou([zl(e,{value:wl(e.value,`@`,`@`+dl)})],r);case pl:if(e.length)return jl(e.props,function(t){switch(Cl(t,/(::plac\w+|:read-\w+)/)){case`:read-only`:case`:read-write`:return ou([zl(e,{props:[wl(t,/:(read-\w+)/,`:`+ul+`$1`)]})],r);case`::placeholder`:return ou([zl(e,{props:[wl(t,/:(plac\w+)/,`:`+dl+`input-$1`)]}),zl(e,{props:[wl(t,/:(plac\w+)/,`:`+ul+`$1`)]}),zl(e,{props:[wl(t,/:(plac\w+)/,ll+`input-$1`)]})],r)}return``})}}],yu=function(e){var t=e.key;if(t===`css`){var n=document.querySelectorAll(`style[data-emotion]:not([data-s])`);Array.prototype.forEach.call(n,function(e){e.getAttribute(`data-emotion`).indexOf(` `)!==-1&&(document.head.appendChild(e),e.setAttribute(`data-s`,``))})}var r=e.stylisPlugins||vu,i={},a,o=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll(`style[data-emotion^="`+t+` "]`),function(e){for(var t=e.getAttribute(`data-emotion`).split(` `),n=1;n<t.length;n++)i[t[n]]=!0;o.push(e)});var s,c=[hu,gu],l,u=[su,lu(function(e){l.insert(e)})],d=cu(c.concat(r,u)),f=function(e){return ou(tu(e),d)};s=function(e,t,n,r){l=n,f(e?e+`{`+t.styles+`}`:t.styles),r&&(p.inserted[t.name]=!0)};var p={key:t,sheet:new cl({key:t,container:a,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:i,registered:{},insert:s};return p.sheet.hydrate(o),p},bu=s((e=>{var t=typeof Symbol==`function`&&Symbol.for,n=t?Symbol.for(`react.element`):60103,r=t?Symbol.for(`react.portal`):60106,i=t?Symbol.for(`react.fragment`):60107,a=t?Symbol.for(`react.strict_mode`):60108,o=t?Symbol.for(`react.profiler`):60114,s=t?Symbol.for(`react.provider`):60109,c=t?Symbol.for(`react.context`):60110,l=t?Symbol.for(`react.async_mode`):60111,u=t?Symbol.for(`react.concurrent_mode`):60111,d=t?Symbol.for(`react.forward_ref`):60112,f=t?Symbol.for(`react.suspense`):60113,p=t?Symbol.for(`react.suspense_list`):60120,m=t?Symbol.for(`react.memo`):60115,h=t?Symbol.for(`react.lazy`):60116,g=t?Symbol.for(`react.block`):60121,_=t?Symbol.for(`react.fundamental`):60117,v=t?Symbol.for(`react.responder`):60118,y=t?Symbol.for(`react.scope`):60119;function b(e){if(typeof e==`object`&&e){var t=e.$$typeof;switch(t){case n:switch(e=e.type,e){case l:case u:case i:case o:case a:case f:return e;default:switch(e&&=e.$$typeof,e){case c:case d:case h:case m:case s:return e;default:return t}}case r:return t}}}function x(e){return b(e)===u}e.AsyncMode=l,e.ConcurrentMode=u,e.ContextConsumer=c,e.ContextProvider=s,e.Element=n,e.ForwardRef=d,e.Fragment=i,e.Lazy=h,e.Memo=m,e.Portal=r,e.Profiler=o,e.StrictMode=a,e.Suspense=f,e.isAsyncMode=function(e){return x(e)||b(e)===l},e.isConcurrentMode=x,e.isContextConsumer=function(e){return b(e)===c},e.isContextProvider=function(e){return b(e)===s},e.isElement=function(e){return typeof e==`object`&&!!e&&e.$$typeof===n},e.isForwardRef=function(e){return b(e)===d},e.isFragment=function(e){return b(e)===i},e.isLazy=function(e){return b(e)===h},e.isMemo=function(e){return b(e)===m},e.isPortal=function(e){return b(e)===r},e.isProfiler=function(e){return b(e)===o},e.isStrictMode=function(e){return b(e)===a},e.isSuspense=function(e){return b(e)===f},e.isValidElementType=function(e){return typeof e==`string`||typeof e==`function`||e===i||e===u||e===o||e===a||e===f||e===p||typeof e==`object`&&!!e&&(e.$$typeof===h||e.$$typeof===m||e.$$typeof===s||e.$$typeof===c||e.$$typeof===d||e.$$typeof===_||e.$$typeof===v||e.$$typeof===y||e.$$typeof===g)},e.typeOf=b})),xu=s(((e,t)=>{t.exports=bu()})),Su=s(((e,t)=>{var n=xu(),r={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};s[n.ForwardRef]=a,s[n.Memo]=o;function c(e){return n.isMemo(e)?o:s[e.$$typeof]||r}var l=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;function h(e,t,n){if(typeof t!=`string`){if(m){var r=p(t);r&&r!==m&&h(e,r,n)}var a=u(t);d&&(a=a.concat(d(t)));for(var o=c(e),s=c(t),g=0;g<a.length;++g){var _=a[g];if(!i[_]&&!(n&&n[_])&&!(s&&s[_])&&!(o&&o[_])){var v=f(t,_);try{l(e,_,v)}catch{}}}}return e}t.exports=h})),Cu=!0;function wu(e,t,n){var r=``;return n.split(` `).forEach(function(n){e[n]===void 0?n&&(r+=n+` `):t.push(e[n]+`;`)}),r}var Tu=function(e,t,n){var r=e.key+`-`+t.name;(n===!1||Cu===!1)&&e.registered[r]===void 0&&(e.registered[r]=t.styles)},Eu=function(e,t,n){Tu(e,t,n);var r=e.key+`-`+t.name;if(e.inserted[t.name]===void 0){var i=t;do e.insert(t===i?`.`+r:``,i,e.sheet,!0),i=i.next;while(i!==void 0)}};function Du(e){for(var t=0,n,r=0,i=e.length;i>=4;++r,i-=4)n=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(i){case 3:t^=(e.charCodeAt(r+2)&255)<<16;case 2:t^=(e.charCodeAt(r+1)&255)<<8;case 1:t^=e.charCodeAt(r)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var Ou={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},ku=!1,Au=/[A-Z]|^ms/g,ju=/_EMO_([^_]+?)_([^]*?)_EMO_/g,Mu=function(e){return e.charCodeAt(1)===45},Nu=function(e){return e!=null&&typeof e!=`boolean`},Pu=uu(function(e){return Mu(e)?e:e.replace(Au,`-$&`).toLowerCase()}),Fu=function(e,t){switch(e){case`animation`:case`animationName`:if(typeof t==`string`)return t.replace(ju,function(e,t,n){return Bu={name:t,styles:n,next:Bu},t})}return Ou[e]!==1&&!Mu(e)&&typeof t==`number`&&t!==0?t+`px`:t},Iu=`Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.`;function Lu(e,t,n){if(n==null)return``;var r=n;if(r.__emotion_styles!==void 0)return r;switch(typeof n){case`boolean`:return``;case`object`:var i=n;if(i.anim===1)return Bu={name:i.name,styles:i.styles,next:Bu},i.name;var a=n;if(a.styles!==void 0){var o=a.next;if(o!==void 0)for(;o!==void 0;)Bu={name:o.name,styles:o.styles,next:Bu},o=o.next;return a.styles+`;`}return Ru(e,t,n);case`function`:if(e!==void 0){var s=Bu,c=n(e);return Bu=s,Lu(e,t,c)}break}var l=n;if(t==null)return l;var u=t[l];return u===void 0?l:u}function Ru(e,t,n){var r=``;if(Array.isArray(n))for(var i=0;i<n.length;i++)r+=Lu(e,t,n[i])+`;`;else for(var a in n){var o=n[a];if(typeof o!=`object`){var s=o;t!=null&&t[s]!==void 0?r+=a+`{`+t[s]+`}`:Nu(s)&&(r+=Pu(a)+`:`+Fu(a,s)+`;`)}else{if(a===`NO_COMPONENT_SELECTOR`&&ku)throw Error(Iu);if(Array.isArray(o)&&typeof o[0]==`string`&&(t==null||t[o[0]]===void 0))for(var c=0;c<o.length;c++)Nu(o[c])&&(r+=Pu(a)+`:`+Fu(a,o[c])+`;`);else{var l=Lu(e,t,o);switch(a){case`animation`:case`animationName`:r+=Pu(a)+`:`+l+`;`;break;default:r+=a+`{`+l+`}`}}}}return r}var zu=/label:\s*([^\s;{]+)\s*(;|$)/g,Bu;function Vu(e,t,n){if(e.length===1&&typeof e[0]==`object`&&e[0]!==null&&e[0].styles!==void 0)return e[0];var r=!0,i=``;Bu=void 0;var a=e[0];a==null||a.raw===void 0?(r=!1,i+=Lu(n,t,a)):i+=a[0];for(var o=1;o<e.length;o++)i+=Lu(n,t,e[o]),r&&(i+=a[o]);zu.lastIndex=0;for(var s=``,c;(c=zu.exec(i))!==null;)s+=`-`+c[1];return{name:Du(i)+s,styles:i,next:Bu}}var Hu=function(e){return e()},Uu=C.useInsertionEffect?C.useInsertionEffect:!1,Wu=Uu||Hu,Gu=Uu||C.useLayoutEffect,Ku=C.createContext(typeof HTMLElement<`u`?yu({key:`css`}):null);Ku.Provider;var qu=function(e){return(0,C.forwardRef)(function(t,n){return e(t,(0,C.useContext)(Ku),n)})},Ju=C.createContext({}),Yu={}.hasOwnProperty,Xu=`__EMOTION_TYPE_PLEASE_DO_NOT_USE__`,Zu=function(e,t){var n={};for(var r in t)Yu.call(t,r)&&(n[r]=t[r]);return n[Xu]=e,n},Qu=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return Tu(t,n,r),Wu(function(){return Eu(t,n,r)}),null},$u=qu(function(e,t,n){var r=e.css;typeof r==`string`&&t.registered[r]!==void 0&&(r=t.registered[r]);var i=e[Xu],a=[r],o=``;typeof e.className==`string`?o=wu(t.registered,a,e.className):e.className!=null&&(o=e.className+` `);var s=Vu(a,void 0,C.useContext(Ju));o+=t.key+`-`+s.name;var c={};for(var l in e)Yu.call(e,l)&&l!==`css`&&l!==Xu&&(c[l]=e[l]);return c.className=o,n&&(c.ref=n),C.createElement(C.Fragment,null,C.createElement(Qu,{cache:t,serialized:s,isStringTag:typeof i==`string`}),C.createElement(i,c))});Su();var ed=function(e,t){var n=arguments;if(t==null||!Yu.call(t,`css`))return C.createElement.apply(void 0,n);var r=n.length,i=Array(r);i[0]=$u,i[1]=Zu(e,t);for(var a=2;a<r;a++)i[a]=n[a];return C.createElement.apply(null,i)};(function(e){var t;(function(e){})(t||=e.JSX||={})})(ed||={});var td=qu(function(e,t){var n=e.styles,r=Vu([n],void 0,C.useContext(Ju)),i=C.useRef();return Gu(function(){var e=t.key+`-global`,n=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),a=!1,o=document.querySelector(`style[data-emotion="`+e+` `+r.name+`"]`);return t.sheet.tags.length&&(n.before=t.sheet.tags[0]),o!==null&&(a=!0,o.setAttribute(`data-emotion`,e),n.hydrate([o])),i.current=[n,a],function(){n.flush()}},[t]),Gu(function(){var e=i.current,n=e[0];if(e[1]){e[1]=!1;return}r.next!==void 0&&Eu(t,r.next,!0),n.tags.length&&(n.before=n.tags[n.tags.length-1].nextElementSibling,n.flush()),t.insert(``,r,n,!1)},[t,r.name]),null});function nd(){return Vu([...arguments])}function rd(){var e=nd.apply(void 0,arguments),t=`animation-`+e.name;return{name:t,styles:`@keyframes `+t+`{`+e.styles+`}`,anim:1,toString:function(){return`_EMO_`+this.name+`_`+this.styles+`_EMO_`}}}var id=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,ad=uu(function(e){return id.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91}),od=!1,sd=ad,cd=function(e){return e!==`theme`},ld=function(e){return typeof e==`string`&&e.charCodeAt(0)>96?sd:cd},ud=function(e,t,n){var r;if(t){var i=t.shouldForwardProp;r=e.__emotion_forwardProp&&i?function(t){return e.__emotion_forwardProp(t)&&i(t)}:i}return typeof r!=`function`&&n&&(r=e.__emotion_forwardProp),r},dd=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return Tu(t,n,r),Wu(function(){return Eu(t,n,r)}),null},fd=function e(t,n){var r=t.__emotion_real===t,i=r&&t.__emotion_base||t,a,o;n!==void 0&&(a=n.label,o=n.target);var s=ud(t,n,r),c=s||ld(i),l=!c(`as`);return function(){var u=arguments,d=r&&t.__emotion_styles!==void 0?t.__emotion_styles.slice(0):[];if(a!==void 0&&d.push(`label:`+a+`;`),u[0]==null||u[0].raw===void 0)d.push.apply(d,u);else{var f=u[0];d.push(f[0]);for(var p=u.length,m=1;m<p;m++)d.push(u[m],f[m])}var h=qu(function(e,t,n){var r=l&&e.as||i,a=``,u=[],f=e;if(e.theme==null){for(var p in f={},e)f[p]=e[p];f.theme=C.useContext(Ju)}typeof e.className==`string`?a=wu(t.registered,u,e.className):e.className!=null&&(a=e.className+` `);var m=Vu(d.concat(u),t.registered,f);a+=t.key+`-`+m.name,o!==void 0&&(a+=` `+o);var h=l&&s===void 0?ld(r):c,g={};for(var _ in e)l&&_===`as`||h(_)&&(g[_]=e[_]);return g.className=a,n&&(g.ref=n),C.createElement(C.Fragment,null,C.createElement(dd,{cache:t,serialized:m,isStringTag:typeof r==`string`}),C.createElement(r,g))});return h.displayName=a===void 0?`Styled(`+(typeof i==`string`?i:i.displayName||i.name||`Component`)+`)`:a,h.defaultProps=t.defaultProps,h.__emotion_real=h,h.__emotion_base=i,h.__emotion_styles=d,h.__emotion_forwardProp=s,Object.defineProperty(h,`toString`,{value:function(){return o===void 0&&od?`NO_COMPONENT_SELECTOR`:`.`+o}}),h.withComponent=function(t,r){return e(t,il({},n,r,{shouldForwardProp:ud(h,r,!0)})).apply(void 0,d)},h}},pd=`a.abbr.address.area.article.aside.audio.b.base.bdi.bdo.big.blockquote.body.br.button.canvas.caption.cite.code.col.colgroup.data.datalist.dd.del.details.dfn.dialog.div.dl.dt.em.embed.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.iframe.img.input.ins.kbd.keygen.label.legend.li.link.main.map.mark.marquee.menu.menuitem.meta.meter.nav.noscript.object.ol.optgroup.option.output.p.param.picture.pre.progress.q.rp.rt.ruby.s.samp.script.section.select.small.source.span.strong.style.sub.summary.sup.table.tbody.td.textarea.tfoot.th.thead.time.title.tr.track.u.ul.var.video.wbr.circle.clipPath.defs.ellipse.foreignObject.g.image.line.linearGradient.mask.path.pattern.polygon.polyline.radialGradient.rect.stop.svg.text.tspan`.split(`.`),md=fd.bind(null);pd.forEach(function(e){md[e]=md(e)});var hd=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),W=s(((e,t)=>{t.exports=hd()}))();function gd(e){return e==null||Object.keys(e).length===0}function _d(e){let{styles:t,defaultTheme:n={}}=e;return(0,W.jsx)(td,{styles:typeof t==`function`?e=>t(gd(e)?n:e):t})}function vd(e,t){return md(e,t)}function yd(e,t){Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}var bd=[];function xd(e){return bd[0]=e,Vu(bd)}var Sd=e=>{let t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>({...e,[t.key]:t.val}),{})};function Cd(e){let{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n=`px`,step:r=5,...i}=e,a=Sd(t),o=Object.keys(a);function s(e){return`@media (min-width:${typeof t[e]==`number`?t[e]:e}${n})`}function c(e){return`@media (max-width:${(typeof t[e]==`number`?t[e]:e)-r/100}${n})`}function l(e,i){let a=o.indexOf(i);return`@media (min-width:${typeof t[e]==`number`?t[e]:e}${n}) and (max-width:${(a!==-1&&typeof t[o[a]]==`number`?t[o[a]]:i)-r/100}${n})`}function u(e){return o.indexOf(e)+1<o.length?l(e,o[o.indexOf(e)+1]):s(e)}function d(e){let t=o.indexOf(e);return t===0?s(o[1]):t===o.length-1?c(o[t]):l(e,o[o.indexOf(e)+1]).replace(`@media`,`@media not all and`)}return{keys:o,values:a,up:s,down:c,between:l,only:u,not:d,unit:n,...i}}var wd={borderRadius:4};function Td(e=8,t=gc({spacing:e})){if(e.mui)return e;let n=(...e)=>(e.length===0?[1]:e).map(e=>{let n=t(e);return typeof n==`number`?`${n}px`:n}).join(` `);return n.mui=!0,n}function Ed(e,t){let n=this;if(n.vars){if(!n.colorSchemes?.[e]||typeof n.getColorSchemeSelector!=`function`)return{};let r=n.getColorSchemeSelector(e);return r===`&`?t:((r.includes(`data-`)||r.includes(`.`))&&(r=`*:where(${r.replace(/\s*&$/,``)}) &`),{[r]:t})}return n.palette.mode===e?t:{}}function Dd(e={},...t){let{breakpoints:n={},palette:r={},spacing:i,shape:a={},...o}=e,s=Cd(n),c=Td(i),l=Us({breakpoints:s,direction:`ltr`,components:{},palette:{mode:`light`,...r},spacing:c,shape:{...wd,...a}},o);return l=Js(l),l.applyStyles=Ed,l=t.reduce((e,t)=>Us(e,t),l),l.unstable_sxConfig={...Zc,...o?.unstable_sxConfig},l.unstable_sx=function(e){return tl({sx:e,theme:this})},l}function Od(e){return Object.keys(e).length===0}function kd(e=null){let t=C.useContext(Ju);return!t||Od(t)?e:t}var Ad=Dd();function jd(e=Ad){return kd(e)}function Md(e){let t=xd(e);return e!==t&&t.styles?(t.styles.match(/^@layer\s+[^{]*$/)||(t.styles=`@layer global{${t.styles}}`),t):e}function Nd({styles:e,themeId:t,defaultTheme:n={}}){let r=jd(n),i=t&&r[t]||r,a=typeof e==`function`?e(i):e;return i.modularCssLayers&&(a=Array.isArray(a)?a.map(e=>Md(typeof e==`function`?e(i):e)):Md(a)),(0,W.jsx)(_d,{styles:a})}var Pd=e=>e,Fd=(()=>{let e=Pd;return{configure(t){e=t},generate(t){return e(t)},reset(){e=Pd}}})();function Id(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=Id(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function G(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=Id(e))&&(r&&(r+=` `),r+=t);return r}function Ld(e={}){let{themeId:t,defaultTheme:n,defaultClassName:r=`MuiBox-root`,generateClassName:i}=e,a=vd(`div`,{shouldForwardProp:e=>e!==`theme`&&e!==`sx`&&e!==`as`})(tl);return C.forwardRef(function(e,o){let s=jd(n),{className:c,component:l=`div`,...u}=rl(e);return(0,W.jsx)(a,{as:l,ref:o,className:G(c,i?i(r):r),theme:t&&s[t]||s,...u})})}var Rd={active:`active`,checked:`checked`,completed:`completed`,disabled:`disabled`,error:`error`,expanded:`expanded`,focused:`focused`,focusVisible:`focusVisible`,open:`open`,readOnly:`readOnly`,required:`required`,selected:`selected`};function zd(e,t,n=`Mui`){let r=Rd[t];return r?`${n}-${r}`:`${Fd.generate(e)}-${t}`}function K(e,t,n=`Mui`){let r={};return t.forEach(t=>{r[t]=zd(e,t,n)}),r}function Bd(e){let{variants:t,...n}=e,r={variants:t,style:xd(n),isProcessed:!0};return r.style===n||t&&t.forEach(e=>{typeof e.style!=`function`&&(e.style=xd(e.style))}),r}var Vd=Dd();function Hd(e){return e!==`ownerState`&&e!==`theme`&&e!==`sx`&&e!==`as`}function Ud(e,t){return t&&e&&typeof e==`object`&&e.styles&&!e.styles.startsWith(`@layer`)&&(e.styles=`@layer ${t}{${String(e.styles)}}`),e}function Wd(e){return e?(t,n)=>n[e]:null}function Gd(e,t,n){e.theme=Yd(e.theme)?n:e.theme[t]||e.theme}function Kd(e,t,n){let r=typeof t==`function`?t(e):t;if(Array.isArray(r))return r.flatMap(t=>Kd(e,t,n));if(Array.isArray(r?.variants)){let t;if(r.isProcessed)t=n?Ud(r.style,n):r.style;else{let{variants:e,...i}=r;t=n?Ud(xd(i),n):i}return qd(e,r.variants,[t],n)}return r?.isProcessed?n?Ud(xd(r.style),n):r.style:n?Ud(xd(r),n):r}function qd(e,t,n=[],r=void 0){let i;variantLoop:for(let a=0;a<t.length;a+=1){let o=t[a];if(typeof o.props==`function`){if(i??={...e,...e.ownerState,ownerState:e.ownerState},!o.props(i))continue}else for(let t in o.props)if(e[t]!==o.props[t]&&e.ownerState?.[t]!==o.props[t])continue variantLoop;typeof o.style==`function`?(i??={...e,...e.ownerState,ownerState:e.ownerState},n.push(r?Ud(xd(o.style(i)),r):o.style(i))):n.push(r?Ud(xd(o.style),r):o.style)}return n}function Jd(e={}){let{themeId:t,defaultTheme:n=Vd,rootShouldForwardProp:r=Hd,slotShouldForwardProp:i=Hd}=e;function a(e){Gd(e,t,n)}return(e,t={})=>{yd(e,e=>e.filter(e=>e!==tl));let{name:n,slot:o,skipVariantsResolver:s,skipSx:c,overridesResolver:l=Wd(Zd(o)),...u}=t,d=n&&n.startsWith(`Mui`)||o?`components`:`custom`,f=s===void 0?o&&o!==`Root`&&o!==`root`||!1:s,p=c||!1,m=Hd;o===`Root`||o===`root`?m=r:o?m=i:Xd(e)&&(m=void 0);let h=vd(e,{shouldForwardProp:m,label:void 0,...u}),g=e=>{if(e.__emotion_real===e)return e;if(typeof e==`function`)return function(t){return Kd(t,e,t.theme.modularCssLayers?d:void 0)};if(Vs(e)){let t=Bd(e);return function(e){return t.variants?Kd(e,t,e.theme.modularCssLayers?d:void 0):e.theme.modularCssLayers?Ud(t.style,d):t.style}}return e},_=(...t)=>{let r=[],i=t.map(g),o=[];if(r.push(a),n&&l&&o.push(function(e){let t=e.theme.components?.[n]?.styleOverrides;if(!t)return null;let r={};for(let n in t)r[n]=Kd(e,t[n],e.theme.modularCssLayers?`theme`:void 0);return l(e,r)}),n&&!f&&o.push(function(e){let t=e.theme?.components?.[n]?.variants;return t?qd(e,t,[],e.theme.modularCssLayers?`theme`:void 0):null}),p||o.push(tl),Array.isArray(i[0])){let e=i.shift(),t=Array(r.length).fill(``),n=Array(o.length).fill(``),a;a=[...t,...e,...n],a.raw=[...t,...e.raw,...n],r.unshift(a)}let s=h(...r,...i,...o);return e.muiName&&(s.muiName=e.muiName),s};return h.withConfig&&(_.withConfig=h.withConfig),_}}function Yd(e){for(let t in e)return!1;return!0}function Xd(e){return typeof e==`string`&&e.charCodeAt(0)>96}function Zd(e){return e&&e.charAt(0).toLowerCase()+e.slice(1)}var Qd=Jd();function $d(e,t,n=!1){let r={...t};for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let a=i;if(a===`components`||a===`slots`)r[a]={...e[a],...r[a]};else if(a===`componentsProps`||a===`slotProps`){let i=e[a],o=t[a];if(!o)r[a]=i||{};else if(!i)r[a]=o;else{r[a]={...o};for(let e in i)if(Object.prototype.hasOwnProperty.call(i,e)){let t=e;r[a][t]=$d(i[t],o[t],n)}}}else a===`className`&&n&&t.className?r.className=G(e?.className,t?.className):a===`style`&&n&&t.style?r.style={...e?.style,...t?.style}:r[a]===void 0&&(r[a]=e[a])}return r}function ef(e){let{theme:t,name:n,props:r}=e;return!t||!t.components||!t.components[n]||!t.components[n].defaultProps?r:$d(t.components[n].defaultProps,r)}function tf({props:e,name:t,defaultTheme:n,themeId:r}){let i=jd(n);return r&&(i=i[r]||i),ef({theme:i,name:t,props:e})}var nf=typeof window<`u`?C.useLayoutEffect:C.useEffect;function rf(e,t,n,r,i){let[a,o]=C.useState(()=>i&&n?n(e).matches:r?r(e).matches:t);return nf(()=>{if(!n)return;let t=n(e),r=()=>{o(t.matches)};return r(),t.addEventListener(`change`,r),()=>{t.removeEventListener(`change`,r)}},[e,n]),a}var af={...C}.useSyncExternalStore;function of(e,t,n,r,i){let a=C.useCallback(()=>t,[t]),o=C.useMemo(()=>{if(i&&n)return()=>n(e).matches;if(r!==null){let{matches:t}=r(e);return()=>t}return a},[a,e,r,i,n]),[s,c]=C.useMemo(()=>{if(n===null)return[a,()=>()=>{}];let t=n(e);return[()=>t.matches,e=>(t.addEventListener(`change`,e),()=>{t.removeEventListener(`change`,e)})]},[a,n,e]);return af(c,s,o)}function sf(e={}){let{themeId:t}=e;return function(e,n={}){let r=kd();r&&t&&(r=r[t]||r);let i=typeof window<`u`&&window.matchMedia!==void 0,{defaultMatches:a=!1,matchMedia:o=i?window.matchMedia:null,ssrMatchMedia:s=null,noSsr:c=!1}=ef({name:`MuiUseMediaQuery`,props:n,theme:r}),l=typeof e==`function`?e(r):e;return l=l.replace(/^@media( ?)/m,``),l.includes(`print`)&&console.warn(["MUI: You have provided a `print` query to the `useMediaQuery` hook.",`Using the print media query to modify print styles can lead to unexpected results.`,"Consider using the `displayPrint` field in the `sx` prop instead.","More information about `displayPrint` on our docs: https://mui.com/system/display/#display-in-print."].join(`
13
13
  `)),(af===void 0?rf:of)(l,a,o,s,c)}}sf();function cf(e,t=-(2**53-1),n=2**53-1){return Math.max(t,Math.min(e,n))}function lf(e,t=0,n=1){return cf(e,t,n)}function uf(e){e=e.slice(1);let t=RegExp(`.{1,${e.length>=6?2:1}}`,`g`),n=e.match(t);return n&&n[0].length===1&&(n=n.map(e=>e+e)),n?`rgb${n.length===4?`a`:``}(${n.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(`, `)})`:``}function df(e){if(e.type)return e;if(e.charAt(0)===`#`)return df(uf(e));let t=e.indexOf(`(`),n=e.substring(0,t);if(![`rgb`,`rgba`,`hsl`,`hsla`,`color`].includes(n))throw Error(Ls(9,e));let r=e.substring(t+1,e.length-1),i;if(n===`color`){if(r=r.split(` `),i=r.shift(),r.length===4&&r[3].charAt(0)===`/`&&(r[3]=r[3].slice(1)),![`srgb`,`display-p3`,`a98-rgb`,`prophoto-rgb`,`rec-2020`].includes(i))throw Error(Ls(10,i))}else r=r.split(`,`);return r=r.map(e=>parseFloat(e)),{type:n,values:r,colorSpace:i}}var ff=e=>{let t=df(e);return t.values.slice(0,3).map((e,n)=>t.type.includes(`hsl`)&&n!==0?`${e}%`:e).join(` `)},pf=(e,t)=>{try{return ff(e)}catch{return e}};function mf(e){let{type:t,colorSpace:n}=e,{values:r}=e;return t.includes(`rgb`)?r=r.map((e,t)=>t<3?parseInt(e,10):e):t.includes(`hsl`)&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),r=t.includes(`color`)?`${n} ${r.join(` `)}`:`${r.join(`, `)}`,`${t}(${r})`}function hf(e){e=df(e);let{values:t}=e,n=t[0],r=t[1]/100,i=t[2]/100,a=r*Math.min(i,1-i),o=(e,t=(e+n/30)%12)=>i-a*Math.max(Math.min(t-3,9-t,1),-1),s=`rgb`,c=[Math.round(o(0)*255),Math.round(o(8)*255),Math.round(o(4)*255)];return e.type===`hsla`&&(s+=`a`,c.push(t[3])),mf({type:s,values:c})}function gf(e){e=df(e);let t=e.type===`hsl`||e.type===`hsla`?df(hf(e)).values:e.values;return t=t.map(t=>(e.type!==`color`&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function _f(e,t){let n=gf(e),r=gf(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function vf(e,t){return e=df(e),t=lf(t),(e.type===`rgb`||e.type===`hsl`)&&(e.type+=`a`),e.type===`color`?e.values[3]=`/${t}`:e.values[3]=t,mf(e)}function yf(e,t,n){try{return vf(e,t)}catch{return e}}function bf(e,t){if(e=df(e),t=lf(t),e.type.includes(`hsl`))e.values[2]*=1-t;else if(e.type.includes(`rgb`)||e.type.includes(`color`))for(let n=0;n<3;n+=1)e.values[n]*=1-t;return mf(e)}function xf(e,t,n){try{return bf(e,t)}catch{return e}}function Sf(e,t){if(e=df(e),t=lf(t),e.type.includes(`hsl`))e.values[2]+=(100-e.values[2])*t;else if(e.type.includes(`rgb`))for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(e.type.includes(`color`))for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return mf(e)}function Cf(e,t,n){try{return Sf(e,t)}catch{return e}}function wf(e,t=.15){return gf(e)>.5?bf(e,t):Sf(e,t)}function Tf(e,t,n){try{return wf(e,t)}catch{return e}}var Ef=C.createContext(null);function Df(){return C.useContext(Ef)}var Of=typeof Symbol==`function`&&Symbol.for?Symbol.for(`mui.nested`):`__THEME_NESTED__`;function eee(e,t){return typeof t==`function`?t(e):{...e,...t}}function kf(e){let{children:t,theme:n}=e,r=Df(),i=C.useMemo(()=>{let e=r===null?{...n}:eee(r,n);return e!=null&&(e[Of]=r!==null),e},[n,r]);return(0,W.jsx)(Ef.Provider,{value:i,children:t})}var Af=C.createContext();function jf({value:e,...t}){return(0,W.jsx)(Af.Provider,{value:e??!0,...t})}var Mf=()=>C.useContext(Af)??!1,Nf=C.createContext(void 0);function Pf({value:e,children:t}){return(0,W.jsx)(Nf.Provider,{value:e,children:t})}function Ff(e){let{theme:t,name:n,props:r}=e;if(!t||!t.components||!t.components[n])return r;let i=t.components[n];return i.defaultProps?$d(i.defaultProps,r,t.components.mergeClassNameAndStyle):!i.styleOverrides&&!i.variants?$d(i,r,t.components.mergeClassNameAndStyle):r}function If({props:e,name:t}){return Ff({props:e,name:t,theme:{components:C.useContext(Nf)}})}var Lf=0;function Rf(e){let[t,n]=C.useState(e),r=e||t;return C.useEffect(()=>{t??(Lf+=1,n(`mui-${Lf}`))},[t]),r}var zf={...C}.useId;function Bf(e){if(zf!==void 0){let t=zf();return e??t}return Rf(e)}function Vf(e){let t=kd(),n=Bf()||``,{modularCssLayers:r}=e,i=`mui.global, mui.components, mui.theme, mui.custom, mui.sx`;return i=!r||t!==null?``:typeof r==`string`?r.replace(/mui(?!\.)/g,i):`@layer ${i};`,nf(()=>{let e=document.querySelector(`head`);if(!e)return;let t=e.firstChild;if(i){if(t&&t.hasAttribute?.(`data-mui-layer-order`)&&t.getAttribute(`data-mui-layer-order`)===n)return;let r=document.createElement(`style`);r.setAttribute(`data-mui-layer-order`,n),r.textContent=i,e.prepend(r)}else e.querySelector(`style[data-mui-layer-order="${n}"]`)?.remove()},[i,n]),i?(0,W.jsx)(Nd,{styles:i}):null}var Hf={};function Uf(e,t,n,r=!1){return C.useMemo(()=>{let i=e&&t[e]||t;if(typeof n==`function`){let a=n(i),o=e?{...t,[e]:a}:a;return r?()=>o:o}return e?{...t,[e]:n}:{...t,...n}},[e,t,n,r])}function Wf(e){let{children:t,theme:n,themeId:r}=e,i=kd(Hf),a=Df()||Hf,o=Uf(r,i,n),s=Uf(r,a,n,!0),c=(r?o[r]:o).direction===`rtl`,l=Vf(o);return(0,W.jsx)(kf,{theme:s,children:(0,W.jsx)(Ju.Provider,{value:o,children:(0,W.jsx)(jf,{value:c,children:(0,W.jsxs)(Pf,{value:r?o[r].components:o.components,children:[l,t]})})})})}var Gf={theme:void 0};function Kf(e){let t,n;return function(r){let i=t;return(i===void 0||r.theme!==n)&&(Gf.theme=r.theme,i=Bd(e(Gf)),t=i,n=r.theme),i}}var qf=`mode`,Jf=`color-scheme`,Yf=`data-color-scheme`;function Xf(e){let{defaultMode:t=`system`,defaultLightColorScheme:n=`light`,defaultDarkColorScheme:r=`dark`,modeStorageKey:i=qf,colorSchemeStorageKey:a=Jf,attribute:o=Yf,colorSchemeNode:s=`document.documentElement`,nonce:c}=e||{},l=``,u=o;if(o===`class`&&(u=`.%s`),o===`data`&&(u=`[data-%s]`),u.startsWith(`.`)){let e=u.substring(1);l+=`${s}.classList.remove('${e}'.replace('%s', light), '${e}'.replace('%s', dark));
14
14
  ${s}.classList.add('${e}'.replace('%s', colorScheme));`}let d=u.match(/\[([^[\]]+)\]/);if(d){let[e,t]=d[1].split(`=`);t||(l+=`${s}.removeAttribute('${e}'.replace('%s', light));
15
15
  ${s}.removeAttribute('${e}'.replace('%s', dark));`),l+=`
@@ -456,7 +456,7 @@ $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,`$1$2`).replace(/\
456
456
  `)+1;for(;e!==0;)this.onNewLine(this.offset+e),e=this.source.indexOf(`
457
457
  `,e)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(e){let t=e.items[e.items.length-1];switch(this.type){case`newline`:if(this.onKeyLine=!1,t.value){let n=`end`in t.value?t.value.end:void 0;(Array.isArray(n)?n[n.length-1]:void 0)?.type===`comment`?n?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case`space`:case`comment`:if(t.value)e.items.push({start:[this.sourceToken]});else if(t.sep)t.sep.push(this.sourceToken);else{if(this.atIndentedComment(t.start,e.indent)){let n=e.items[e.items.length-2]?.value?.end;if(Array.isArray(n)){Array.prototype.push.apply(n,t.start),n.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return}if(this.indent>=e.indent){let n=!this.onKeyLine&&this.indent===e.indent,r=n&&(t.sep||t.explicitKey)&&this.type!==`seq-item-ind`,i=[];if(r&&t.sep&&!t.value){let n=[];for(let r=0;r<t.sep.length;++r){let i=t.sep[r];switch(i.type){case`newline`:n.push(r);break;case`space`:break;case`comment`:i.indent>e.indent&&(n.length=0);break;default:n.length=0}}n.length>=2&&(i=t.sep.splice(n[1]))}switch(this.type){case`anchor`:case`tag`:r||t.value?(i.push(this.sourceToken),e.items.push({start:i}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case`explicit-key-ind`:!t.sep&&!t.explicitKey?(t.start.push(this.sourceToken),t.explicitKey=!0):r||t.value?(i.push(this.sourceToken),e.items.push({start:i,explicitKey:!0})):this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case`map-value-ind`:if(t.explicitKey)if(!t.sep)if(q2(t.start,`newline`))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let e=Z2(t.start);this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:e,key:null,sep:[this.sourceToken]}]})}else if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(q2(t.sep,`map-value-ind`))this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:i,key:null,sep:[this.sourceToken]}]});else if(Y2(t.key)&&!q2(t.sep,`newline`)){let e=Z2(t.start),n=t.key,r=t.sep;r.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:e,key:n,sep:r}]})}else i.length>0?t.sep=t.sep.concat(i,this.sourceToken):t.sep.push(this.sourceToken);else t.sep?t.value||r?e.items.push({start:i,key:null,sep:[this.sourceToken]}):q2(t.sep,`map-value-ind`)?this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:{let n=this.flowScalar(this.type);r||t.value?(e.items.push({start:i,key:n,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(n):(Object.assign(t,{key:n,sep:[]}),this.onKeyLine=!0);return}default:{let r=this.startBlockValue(e);if(r){if(r.type===`block-seq`){if(!t.explicitKey&&t.sep&&!q2(t.sep,`newline`)){yield*this.pop({type:`error`,offset:this.offset,message:`Unexpected block-seq-ind on same line with key`,source:this.source});return}}else n&&e.items.push({start:i});this.stack.push(r);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let t=e.items[e.items.length-1];switch(this.type){case`newline`:if(t.value){let n=`end`in t.value?t.value.end:void 0;(Array.isArray(n)?n[n.length-1]:void 0)?.type===`comment`?n?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case`space`:case`comment`:if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){let n=e.items[e.items.length-2]?.value?.end;if(Array.isArray(n)){Array.prototype.push.apply(n,t.start),n.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case`anchor`:case`tag`:if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case`seq-item-ind`:if(this.indent!==e.indent)break;t.value||q2(t.start,`seq-item-ind`)?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let t=this.startBlockValue(e);if(t){this.stack.push(t);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type===`flow-error-end`){let e;do yield*this.pop(),e=this.peek(1);while(e?.type===`flow-collection`)}else if(e.end.length===0){switch(this.type){case`comma`:case`explicit-key-ind`:!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case`map-value-ind`:!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case`space`:case`comment`:case`newline`:case`anchor`:case`tag`:!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:{let n=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:n,sep:[]}):t.sep?this.stack.push(n):Object.assign(t,{key:n,sep:[]});return}case`flow-map-end`:case`flow-seq-end`:e.end.push(this.sourceToken);return}let n=this.startBlockValue(e);n?this.stack.push(n):(yield*this.pop(),yield*this.step())}else{let t=this.peek(2);if(t.type===`block-map`&&(this.type===`map-value-ind`&&t.indent===e.indent||this.type===`newline`&&!t.items[t.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type===`map-value-ind`&&t.type!==`flow-collection`){let n=Z2(X2(t));Q2(e);let r=e.end.splice(1,e.end.length);r.push(this.sourceToken);let i={type:`block-map`,offset:e.offset,indent:e.indent,items:[{start:n,key:e,sep:r}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=i}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let e=this.source.indexOf(`
458
458
  `)+1;for(;e!==0;)this.onNewLine(this.offset+e),e=this.source.indexOf(`
459
- `,e)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:return this.flowScalar(this.type);case`block-scalar-header`:return{type:`block-scalar`,offset:this.offset,indent:this.indent,props:[this.sourceToken],source:``};case`flow-map-start`:case`flow-seq-start`:return{type:`flow-collection`,offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case`seq-item-ind`:return{type:`block-seq`,offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case`explicit-key-ind`:{this.onKeyLine=!0;let t=Z2(X2(e));return t.push(this.sourceToken),{type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:t,explicitKey:!0}]}}case`map-value-ind`:{this.onKeyLine=!0;let t=Z2(X2(e));return{type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:t,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!==`comment`||this.indent<=t?!1:e.every(e=>e.type===`newline`||e.type===`space`)}*documentEnd(e){this.type!==`doc-mode`&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type===`newline`&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case`comma`:case`doc-start`:case`doc-end`:case`flow-seq-end`:case`flow-map-end`:case`map-value-ind`:yield*this.pop(),yield*this.step();break;case`newline`:this.onKeyLine=!1;default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type===`newline`&&(yield*this.pop())}}};function e4(e){let t=e.prettyErrors!==!1;return{lineCounter:e.lineCounter||t&&new K2||null,prettyErrors:t}}function YKe(e,t={}){let{lineCounter:n,prettyErrors:r}=e4(t),i=new $2(n?.addNewLine),a=new j2(t),o=Array.from(a.compose(i.parse(e)));if(r&&n)for(let t of o)t.errors.forEach(p2(e,n)),t.warnings.forEach(p2(e,n));return o.length>0?o:Object.assign([],{empty:!0},a.streamInfo())}function t4(e,t={}){let{lineCounter:n,prettyErrors:r}=e4(t),i=new $2(n?.addNewLine),a=new j2(t),o=null;for(let t of a.compose(i.parse(e),!0,e.length))if(!o)o=t;else if(o.options.logLevel!==`silent`){o.errors.push(new d2(t.range.slice(0,2),`MULTIPLE_DOCS`,`Source contains multiple documents; please use YAML.parseAllDocuments()`));break}return r&&n&&(o.errors.forEach(p2(e,n)),o.warnings.forEach(p2(e,n))),o}function XKe(e,t,n){let r;typeof t==`function`?r=t:n===void 0&&t&&typeof t==`object`&&(n=t);let i=t4(e,n);if(!i)return null;if(i.warnings.forEach(e=>s0(i.options.logLevel,e)),i.errors.length>0){if(i.options.logLevel!==`silent`)throw i.errors[0];i.errors=[]}return i.toJS(Object.assign({reviver:r},n))}function ZKe(e,t,n){let r=null;if(typeof t==`function`||Array.isArray(t)?r=t:n===void 0&&t&&(n=t),typeof n==`string`&&(n=n.length),typeof n==`number`){let e=Math.round(n);n=e<1?void 0:e>8?{indent:8}:{indent:e}}if(e===void 0){let{keepUndefined:e}=n??t??{};if(!e)return}return p1(e)&&!r?e.toString(n):new c2(e,r,n).toString(n)}var QKe=c({Alias:()=>R1,CST:()=>UKe,Composer:()=>j2,Document:()=>c2,Lexer:()=>G2,LineCounter:()=>K2,Pair:()=>m0,Parser:()=>$2,Scalar:()=>V1,Schema:()=>s2,YAMLError:()=>u2,YAMLMap:()=>v0,YAMLParseError:()=>d2,YAMLSeq:()=>b0,YAMLWarning:()=>f2,isAlias:()=>f1,isCollection:()=>v1,isDocument:()=>p1,isMap:()=>m1,isNode:()=>y1,isPair:()=>h1,isScalar:()=>g1,isSeq:()=>_1,parse:()=>XKe,parseAllDocuments:()=>YKe,parseDocument:()=>t4,stringify:()=>ZKe,visit:()=>w1,visitAsync:()=>E1});function $Ke(e){let t=null;try{t=QKe.parse(e.doc.toString())}catch{}let n=yq(e,hq.YAML);return{data:t,pointers:n}}var n4=e=>{switch(e){case hq.JSON:return BGe;case hq.JSON5:return HGe;case hq.YAML:return $Ke}};function eqe(e){return Object.entries(e)}function r4(e,t){if(typeof e==`string`||typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(e=>r4(e,t));if(e instanceof Map){let n=new Map;for(let[r,i]of e){let e=r,a=r4(i,t);n.set(e,a)}return n}if(e instanceof Set){let n=new Set;for(let r of e){let e=r4(r,t);n.add(e)}return n}let n={};function r(e,r,i,a){i===e&&a===r?n[i]=r4(r,t):n[i]=a}for(let[n,i]of eqe(e)){let e=t(n,i);if(e.length===2&&typeof e[0]==`string`)r(n,i,e[0],e[1]);else for(let[t,a]of e)r(n,i,t,a)}return n}var tqe=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},nqe=class{constructor(){this.completions=new Map,this.reservedKeys=new Set}reserve(e){this.reservedKeys.add(e)}add(e){this.reservedKeys.has(e.label)||this.completions.set(e.label,e)}};function i4(e){return!(!e||Rq(e)||e.name===`UnknownPropertyError`||e.type===`undefined`)}var rqe=class{constructor(e){this.opts=e,this.originalSchema=null,this.schema=null,this.laxSchema=null,this.mode=hq.JSON,this.mode=e.mode??hq.JSON,this.parser=this.opts?.jsonParser??n4(this.mode)}doComplete(e){let t=Mq(e.state);if(this.originalSchema!==t&&(this.schema=s4(t,t)??t,this.laxSchema=aqe(this.schema)),!this.schema||!this.laxSchema)return[];dq.log(`xxx`,`trying with original schema`);let n=this.doCompleteForSchema(e,this.schema);return n.options.length===0?(dq.log(`xxx`,`no completions with original schema, trying with lax schema`),this.doCompleteForSchema(e,this.laxSchema)):n}doCompleteForSchema(e,t){let n={from:e.pos,to:e.pos,options:[],filter:!1},r=e.state.doc.sliceString(0),i=bq(e.state,e.pos),a=e.state.sliceDoc(i.from,e.pos).replace(/^(["'])/,``);if(dq.log(`xxx`,`node`,i,`prefix`,a,`ctx`,e),!(wq(i,this.mode)||Tq(i,this.mode))&&!e.explicit)return dq.log(`xxx`,`no completions for non-word/primitive`,i),n;let o=Sq(e.state.doc,i),s=Sq(e.state.doc,i,!1);if(i&&(wq(i,this.mode)||Tq(i,this.mode)))n.from=i.from,n.to=i.to;else{let t=e.matchBefore(/[A-Za-z0-9._]*/),a=e.pos-o.length;dq.log(`xxx`,`overwriteStart after`,a,`ctx.pos`,e.pos,`word`,t,`currentWord`,o,`=>`,r[a-1],`..`,r[a],`..`,r),n.from=i.name===fq.INVALID?t?.from??e.pos:a,n.to=e.pos}let c=new nqe,l=!0,u=Aq(i,fq.PROPERTY_NAME,this.mode);if(u&&(dq.log(`xxx`,`closestPropertyNameNode`,u,`node`,i),i=u),Tq(i,this.mode)){dq.log(`xxx`,`isPropertyNameNode`,i);let e=i.parent;if(e){let t=Oq(e,this.mode);l=!t||t.name===fq.INVALID&&t.from-t.to===0||(t.parent?Eq(t.parent).length<=1:!1),dq.log(`xxx`,`addValue`,l,Oq(e,this.mode),i),i=Aq(e,fq.OBJECT,this.mode)??null}}if(dq.log(`xxx`,i,o,e,`node at pos`,bq(e.state,e.pos)),i&&[fq.OBJECT,fq.JSON_TEXT].includes(gq(i.name,this.mode))&&(Tq(bq(e.state,e.pos),this.mode)||u)){if(i.from===e.pos)return dq.log(`xxx`,`no completions for just before opening brace`),n;this.getPropertyCompletions(t,e,i,c,l,s)}else{let n=this.getValueCompletions(t,e,{},c);dq.log(`xxx`,`getValueCompletions res`,n)}return n.options=Array.from(c.completions.values()).filter(e=>xq(e.label).startsWith(a)),dq.log(`xxx`,`result`,n,`prefix`,a,`collector.completions`,c.completions,`reservedKeys`,c.reservedKeys),n}applySnippetCompletion(e){return aLe(typeof e.apply==`string`?e.apply:e.label,e)}getPropertyCompletions(e,t,n,r,i,a){let o=VLe(n,fq.PROPERTY,this.mode);dq.log(`xxx`,`getPropertyCompletions`,n,t,o),o.forEach(e=>{let n=Sq(t.state.doc,Dq(e,fq.PROPERTY_NAME,this.mode));r.reserve(xq(n))});let s=this.getSchemas(e,t);dq.log(`xxx`,`propertyCompletion schemas`,s),s.forEach(t=>{if(typeof t!=`object`)return;let n=t.properties;n&&Object.entries(n).forEach(([t,n])=>{if(typeof n==`object`){let o=n.description??``,s=n.type??``,c=Array.isArray(s)?s.toString():s,l={label:t,apply:this.getInsertTextForProperty(t,i,a,e,n),type:`property`,detail:c,info:()=>zY(`div`,{inner:r1(o)})};r.add(this.applySnippetCompletion(l))}});let o=t.propertyNames;if(typeof o==`object`&&(o.enum&&o.enum.forEach(t=>{let n=t?.toString();if(n){let t={label:n,apply:this.getInsertTextForProperty(n,i,a,e),type:`property`};r.add(this.applySnippetCompletion(t))}}),o.const)){let t=o.const.toString(),n={label:t,apply:this.getInsertTextForProperty(t,i,a,e),type:`property`};r.add(this.applySnippetCompletion(n))}})}getInsertTextForProperty(e,t,n,r,i){i&&=s4(i,r);let a=this.getInsertTextForPropertyName(e,n);if(!t)return a;a+=`: `;let o,s=0;if(typeof i==`object`){if(i.default!==void 0)o||=this.getInsertTextForGuessedValue(i.default,``),s++;else if(i.enum&&(!o&&i.enum.length===1&&(o=this.getInsertTextForGuessedValue(i.enum[0],``)),s+=i.enum.length),i.const!==void 0&&(o||=this.getInsertTextForGuessedValue(i.const,``),s++),Array.isArray(i.examples)&&i.examples.length&&(o||=this.getInsertTextForGuessedValue(i.examples[0],``),s+=i.examples.length),o===void 0&&s===0){let e=Array.isArray(i.type)?i.type[0]:i.type;switch(e||(i.properties?e=`object`:i.items&&(e=`array`)),e){case`boolean`:o=`#{}`;break;case`string`:o=this.getInsertTextForString(``);break;case`object`:switch(this.mode){case hq.JSON5:o=`{#{}}`;break;case hq.YAML:o=`#{}`;break;default:o=`{#{}}`;break}break;case`array`:o=`[#{}]`;break;case`number`:case`integer`:o=`#{0}`;break;case`null`:o=`#{null}`;break;default:o=`#{}`;break}}}return(!o||s>1)&&(dq.log(`xxx`,`value`,o,`nValueProposals`,s,i),o=`#{}`),a+o}getInsertTextForPropertyName(e,t){switch(this.mode){case hq.JSON5:case hq.YAML:return t.startsWith(`"`)?`"${e}"`:t.startsWith(`'`)?`'${e}'`:e;default:return`"${e}"`}}getInsertTextForString(e,t=`#`){switch(this.mode){case hq.JSON5:return`'${t}{${e}}'`;case hq.YAML:return`${t}{${e}}`;default:return`"${t}{${e}}"`}}getInsertTextForGuessedValue(e,t=``){switch(typeof e){case`object`:return e===null?"${null}"+t:this.getInsertTextForValue(e,t);case`string`:{let n=JSON.stringify(e);return n=n.substr(1,n.length-2),n=this.getInsertTextForPlainText(n),this.getInsertTextForString(n,`$`)+t}case`number`:case`boolean`:return"${"+JSON.stringify(e)+`}`+t}return this.getInsertTextForValue(e,t)}getInsertTextForPlainText(e){return e.replace(/[\\$}]/g,`\\$&`)}getInsertTextForValue(e,t){let n=JSON.stringify(e,null,` `);return n===`{}`?`{#{}}`+t:n===`[]`?`[#{}]`+t:this.getInsertTextForPlainText(n+t)}getValueCompletions(e,t,n,r){let i=eU(t.state).resolveInner(t.pos,-1),a=null,o;if(dq.log(`xxx`,`getValueCompletions`,i,t),i&&wq(i,this.mode)&&(a=i,i=i.parent),!i){this.addSchemaValueCompletions(e,n,r);return}if(gq(i.name,this.mode)===fq.PROPERTY){let e=Dq(i,fq.PROPERTY_NAME,this.mode);e&&(o=Sq(t.state.doc,e),i=i.parent)}if(dq.log(`xxx`,`node`,i,`parentKey`,o),i&&(o!==void 0||gq(i.name,this.mode)===fq.ARRAY)){let s=this.getSchemas(e,t);for(let e of s){if(typeof e!=`object`)return;if(gq(i.name,this.mode)===fq.ARRAY&&e.items){let t=r;if(e.uniqueItems&&(t=Object.assign(Object.assign({},t),{add(e){t.completions.has(e.label)||r.add(e)},reserve(e){r.reserve(e)}})),Array.isArray(e.items)){let r=0;if(a){let e=kq(i,a,this.mode);e>=0&&(r=e)}let o=e.items[r];o&&this.addSchemaValueCompletions(o,n,t)}else this.addSchemaValueCompletions(e.items,n,t)}if((e.type==null||e.type!==`object`)&&this.addSchemaValueCompletions(e,n,r),o!==void 0){let t=!1;if(e.properties){let i=e.properties[o];i&&(t=!0,this.addSchemaValueCompletions(i,n,r))}if(e.patternProperties&&!t){for(let i of Object.keys(e.patternProperties))if(this.extendedRegExp(i)?.test(o)){t=!0;let a=e.patternProperties[i];a&&this.addSchemaValueCompletions(a,n,r)}}if(e.additionalProperties&&!t){let t=e.additionalProperties;this.addSchemaValueCompletions(t,n,r)}}n.boolean&&(this.addBooleanValueCompletion(!0,r),this.addBooleanValueCompletion(!1,r)),n.null&&this.addNullValueCompletion(r)}}return{valuePrefix:a?Sq(t.state.doc,a,!0,!1):``}}addSchemaValueCompletions(e,t,n){typeof e==`object`&&(this.addEnumValueCompletions(e,n),this.addDefaultValueCompletions(e,n),this.collectTypes(e,t),Array.isArray(e.allOf)&&e.allOf.forEach(e=>this.addSchemaValueCompletions(e,t,n)),Array.isArray(e.anyOf)&&e.anyOf.forEach(e=>this.addSchemaValueCompletions(e,t,n)),Array.isArray(e.oneOf)&&e.oneOf.forEach(e=>this.addSchemaValueCompletions(e,t,n)))}addDefaultValueCompletions(e,t,n=0){let r=!1;if(e.default!==void 0){let i=e.type,a=e.default;for(let e=n;e>0;e--)a=[a],i=`array`;let o=Object.assign(Object.assign({type:i?.toString()},this.getAppliedValue(a)),{detail:`Default value`});t.add(o),r=!0}Array.isArray(e.examples)&&e.examples.forEach(i=>{let a=e.type,o=i;for(let e=n;e>0;e--)o=[o],a=`array`;t.add(Object.assign({type:a?.toString()},this.getAppliedValue(o))),r=!0}),!r&&typeof e.items==`object`&&!Array.isArray(e.items)&&n<5&&this.addDefaultValueCompletions(e.items,t,n+1)}addEnumValueCompletions(e,t){if(e.const!==void 0&&t.add(Object.assign(Object.assign({type:e.type?.toString()},this.getAppliedValue(e.const)),{info:e.description})),Array.isArray(e.enum))for(let n=0,r=e.enum.length;n<r;n++){let r=e.enum[n];t.add(Object.assign(Object.assign({type:e.type?.toString()},this.getAppliedValue(r)),{info:e.description}))}}addBooleanValueCompletion(e,t){t.add({type:`boolean`,label:e?`true`:`false`})}addNullValueCompletion(e){e.add({type:`null`,label:`null`})}collectTypes(e,t){if(Array.isArray(e.enum)||e.const!==void 0)return;let n=e.type;Array.isArray(n)?n.forEach(e=>t[e]=!0):n&&(t[n]=!0)}getSchemas(e,t){let{data:n}=this.parser(t.state),r=new RY(e),i=vq(t.state,t.pos,-1,this.mode);if(i===``&&(i=void 0),i!=null&&i.endsWith(`/`)){i=i.substring(0,i.length-1);let t=a4(e,n,i);if(t!=null)return[t]}let a=i?.replace(/\/[^/]*$/,``);a===``&&(a=void 0);let o=a4(e,n,a),s=i?.split(`/`).pop(),c=s==null||s in(o?.properties??{}),l=r.getSchema({pointer:i,data:n??void 0});return!c&&l?.type===`null`&&this.mode===`yaml`&&(l=void 0),dq.log(`xxxx`,`draft.getSchema`,l,`data`,n,`pointer`,i,`pointerPointsToKnownProperty`,c),Rq(l)&&(l=l.data?.schema),!i4(l)&&o?[o]:(i4(l)||(l=r.getSchema({pointer:a}),i=a),dq.log(`xxx`,`pointer..`,JSON.stringify(i)),!i4(l)&&(!i||i===`/`)&&(l=s4(e,e)??e),dq.log(`xxx`,`subSchema..`,l),l?Array.isArray(l.allOf)?[l,...l.allOf.map(t=>s4(t,e))]:Array.isArray(l.oneOf)?[l,...l.oneOf.map(t=>s4(t,e))]:Array.isArray(l.anyOf)?[l,...l.anyOf.map(t=>s4(t,e))]:[l]:[])}getAppliedValue(e){let t=xq(JSON.stringify(e));switch(this.mode){case hq.JSON5:return{label:t,apply:zLe(JSON.stringify(e))};case hq.YAML:return{label:t,apply:t};default:return{label:t,apply:JSON.stringify(e)}}}getValueFromLabel(e){return JSON.parse(e)}extendedRegExp(e){let t=``;e.startsWith(`(?i)`)&&(e=e.substring(4),t=`i`);try{return new RegExp(e,t+`u`)}catch{try{return new RegExp(e,t)}catch{return}}}};function iqe(e={}){let t=new rqe(e);return function(e){return t.doComplete(e)}}function aqe(e){return r4(e,(e,t)=>e===`additionalProperties`&&t===!1||e===`required`&&Array.isArray(t)||e===`unevaluatedProperties`&&t===!1||e===`unevaluatedItems`&&t===!1?[]:[e,t])}function a4(e,t,n){let r=new RY(e),i=r.getSchema({pointer:n,data:t??void 0});if(!i4(i))return;let a=o4(r,i),o={};for(let e of a){let i=sqe(n,e),a=r.getSchema({pointer:i,data:t??void 0});i4(a)&&Object.assign(o,{[e]:a})}if(a.length===0||Object.keys(o).length===0)return;let s=i,{allOf:c,anyOf:l,oneOf:u}=s,d=tqe(s,[`allOf`,`anyOf`,`oneOf`]);return Object.assign(Object.assign({},d),{properties:o})}function o4(e,t){if(t=s4(t,e.rootSchema),typeof t!=`object`||!t)return[];let n=[];function r(t){let r=o4(e,t);n.push(...r)}if(typeof t.properties==`object`&&t.properties!=null&&n.push(...Object.keys(t.properties)),typeof t.then==`object`&&t.then!=null&&r(t.then),Array.isArray(t.allOf))for(let e of t.allOf)r(e);if(Array.isArray(t.anyOf))for(let e of t.anyOf)r(e);if(Array.isArray(t.oneOf))for(let e of t.oneOf)r(e);return n}function s4(e,t){if(typeof e==`object`&&e.$ref){let n=oqe(t,e.$ref);if(typeof n==`object`){let t=Object.assign(Object.assign({},e),n);return Reflect.deleteProperty(t,`$ref`),t}}return e}function oqe(e,t){let n=t.split(`/`),r=e;return n.forEach(t=>{if(t){if(t===`#`){r=e;return}typeof r==`object`&&(r=r[t])}}),r}function sqe(e,t){return e===void 0?`/${t}`:`${e}/${t}`}var c4=(e,t)=>{let n=e.length>2,r=e.map((n,r)=>{let i="`"+(t?t(n):n)+"`";return r===e.length-1?`or `+i:i});return n?r.join(`, `):r.join(` `)},cqe=e=>e?.data?.pointer&&e?.data?.pointer!==`#`?e.data.pointer.slice(1):e?.data?.property?`/${e.data.property}`:``,lqe=e=>e.startState.field(jq)!==e.state.field(jq);function uqe(e){let t=new fqe(e);return e=>t.doValidation(e)}var dqe=[`NoAdditionalPropertiesError`,`RequiredPropertyError`,`InvalidPropertyNameError`,`ForbiddenPropertyError`,`UndefinedValueError`],fqe=class{constructor(e){this.options=e,this.schema=null,this.mode=hq.JSON,this.rewriteError=e=>{let t=e?.data?.errors;return e.code===`one-of-error`&&t?.length?`Expected one of ${c4(t,e=>e.data.expected)}`:e.code===`type-error`?`Expected \`${e?.data?.expected&&Array.isArray(e?.data?.expected)?c4(e?.data?.expected):e?.data?.expected}\` but received \`${e?.data?.received}\``:e.message.replaceAll("in `#` ",``).replaceAll("at `#`",``).replaceAll(`/`,`.`).replaceAll(`#.`,``)},this.mode=this.options?.mode??hq.JSON,this.parser=this.options?.jsonParser??n4(this.mode)}get schemaTitle(){return this.schema?.getSchema()?.title??`json-schema`}doValidation(e){let t=Mq(e.state);if(!t||(this.schema=new PY(t),!this.schema)||!e.state.doc.toString()?.length)return[];let n=this.parser(e.state);if(n.data==null)return[];let r=[];try{r=this.schema.validate(n.data)}catch{}return dq.log(`xxx`,`validation errors`,r,n.data),r.length?r.reduce((e,t)=>{let r=()=>{let n=this.rewriteError(t);e.push({from:0,to:0,message:n,severity:`error`,source:this.schemaTitle,renderMessage:()=>{let e=zY(`div`,{});return e.innerHTML=r1(n),e}})},i=cqe(t),a=n.pointers.get(i);if(t.name===`MaxPropertiesError`||t.name===`MinPropertiesError`||i===``)r();else if(a){let n=dqe.includes(t.name),r=this.rewriteError(t),i=n?a.keyFrom:a.valueFrom,o=n?a.keyTo:a.valueTo;o!==void 0&&i!==void 0&&e.push({from:i,to:o,message:r,renderMessage:()=>{let e=zY(`div`,{});return e.innerHTML=r1(r),e},severity:`error`,source:this.schemaTitle})}else r();return e},[]):[]}};function pqe(e){let t=new hqe(e);return async function(e,n,r){return t.doHover(e,n,r)}}function mqe(e){if(e.type)return e.$ref?`${e.$ref} (${e.type})`:e.type;if(e.$ref)return`${e.$ref}`}function l4(e,t,n){return`${t}: ${c4(e[t].map(e=>{try{let{data:t}=n.resolveRef({data:e,pointer:e.$ref});return mqe(t||e)}catch{return e.type}}))}`}var hqe=class{constructor(e){this.opts=e,this.schema=null,this.mode=hq.JSON,this.opts=Object.assign({parser:JSON.parse},this.opts),this.mode=this.opts?.mode??hq.JSON}getDataForCursor(e,t,n){let r=Mq(e.state);if(!r)return null;this.schema=new PY(r);let i=vq(e.state,t,n,this.mode),a;try{a=this.opts.parser(e.state.doc.toString())}catch{}if(!i)return null;let o=this.schema.getSchema({pointer:i,data:a,withSchemaWarning:!0});return Rq(o)&&(o=o?.data.schema.$ref?this.schema.resolveRef(o):o?.data.schema),{schema:o,pointer:i}}formatMessage(e){let{message:t,typeInfo:n}=e;return t?zY(`div`,{class:`cm6-json-schema-hover`},[zY(`div`,{class:`cm6-json-schema-hover--description`,inner:r1(t,!1)}),zY(`div`,{class:`cm6-json-schema-hover--code-wrapper`},[zY(`div`,{class:`cm6-json-schema-hover--code`,inner:r1(n,!1)})])]):zY(`div`,{class:`cm6-json-schema-hover`},[zY(`div`,{class:`cm6-json-schema-hover--code-wrapper`},[zY(`code`,{class:`cm6-json-schema-hover--code`,inner:r1(n,!1)})])])}getHoverTexts(e,t){let n=``,r=null,{schema:i}=e;return i.oneOf&&(n=l4(i,`oneOf`,t)),i.anyOf&&(n=l4(i,`anyOf`,t)),i.allOf&&(n=l4(i,`allOf`,t)),i.type&&(n=Array.isArray(i.type)?c4(i.type):i.type),i.$ref&&(n=` Reference: ${i.$ref}`),i.enum&&(n=`\`enum\`: ${c4(i.enum)}`),i.format&&(n+=`\`format\`: ${i.format}`),i.pattern&&(n+=`\`pattern\`: ${i.pattern}`),i.description&&(r=i.description),{message:r,typeInfo:n}}async doHover(e,t,n){let r=t,i=t;try{let a=this.getDataForCursor(e,t,n);if(dq.log(`cursorData`,a),!a?.schema)return null;let o=(this.opts?.getHoverTexts??this.getHoverTexts)(a,this.schema),s=(this.opts?.formatHover??this.formatMessage)(o);return{pos:r,end:i,arrow:!0,above:!0,create:e=>({dom:s})}}catch(e){return dq.log(e),null}}},gqe=e=>(0,W.jsx)(ny,{disablePadding:!0,children:e.validationErrors.map((e,t)=>(0,W.jsx)(ay,{disableGutters:!0,disablePadding:!0,children:(0,W.jsxs)(Gv,{direction:`row`,spacing:1,children:[(0,W.jsx)(Q,{variant:`body2`,children:`•`}),(0,W.jsx)(Q,{variant:`caption`,children:e.instancePath.length===0?`/`:e.instancePath}),(0,W.jsx)(Q,{variant:`body2`,children:e.message})]})},t.toString()))}),u4=e=>{let t;try{t=JSON.parse(e)}catch{t=void 0}return t};function _qe({schema:e,customValidate:t}){let n=(0,C.useMemo)(()=>new dF.default({allErrors:!0}),[]);return(0,C.useCallback)(r=>{let i=[];return n.validate(e,r),i.push(...n.errors??[]),i.push(...t?.(r)??[]),i},[n,e,t])}var vqe=e=>{let t=yqe(),[n,r]=(0,C.useState)(()=>JSON.stringify(e.value,null,2)),i=_qe(e),[a,o]=(0,C.useState)([]);(0,C.useEffect)(()=>{o(i(e.value))},[i,e.value]);let s=e.onChange,c=(0,C.useCallback)(e=>{let t=u4(e),n=i(t);s(t,n.length===0),r(e),o(n)},[i,s]),l=()=>{let e=u4(n);e&&r(JSON.stringify(e,null,2))};return(0,W.jsxs)(Gv,{spacing:2,children:[(0,W.jsxs)(Z,{position:`relative`,children:[(0,W.jsx)(lq,{value:n,onChange:e=>c(e),extensions:[pPe(),iW(dPe(),{delay:100}),iW(uqe(),{delay:100,needsRefresh:lqe}),KU.data.of({autocomplete:iqe({mode:`json4`})}),AH(pqe()),WLe(e.schema)],theme:t,height:`400px`}),(0,W.jsx)(_v,{sx:{position:`absolute`,right:`0`,bottom:`0`},onClick:()=>l(),children:`Prettify`})]}),a.length>0&&(0,W.jsx)(Kh,{severity:`error`,variant:`outlined`,children:(0,W.jsx)(gqe,{validationErrors:a})})]})};function yqe(){return Em().palette.mode===`dark`?FPe:jPe}var bqe=[{value:``,label:`Auto (based on domain/name)`},{value:`light`,label:`💡 Light`},{value:`switch`,label:`🔌 Switch`},{value:`climate`,label:`🌡️ Climate`},{value:`cover`,label:`🪟 Cover`},{value:`fan`,label:`🌀 Fan`},{value:`lock`,label:`🔒 Lock`},{value:`sensor`,label:`📊 Sensor`},{value:`media_player`,label:`📺 Media Player`},{value:`vacuum`,label:`🧹 Vacuum`},{value:`remote`,label:`🎮 Remote`},{value:`humidifier`,label:`💧 Humidifier`},{value:`speaker`,label:`🔊 Speaker`},{value:`garage`,label:`🚗 Garage`},{value:`door`,label:`🚪 Door`},{value:`window`,label:`🪟 Window`},{value:`motion`,label:`🏃 Motion`},{value:`battery`,label:`🔋 Battery`},{value:`power`,label:`⚡ Power`},{value:`camera`,label:`📷 Camera`},{value:`default`,label:`🔗 Default`}],xqe=({bridgeId:e,selectedIcon:t,onIconChange:n})=>{let r=(0,C.useRef)(null),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(null),[c,l]=(0,C.useState)(!1),[u,d]=(0,C.useState)(null);(0,C.useEffect)(()=>{e&&DE(e).then(t=>{a(t),t&&s(`${OE(e)}?t=${Date.now()}`)}).catch(()=>{a(!1)})},[e]);let f=(0,C.useCallback)(async t=>{let i=t.target.files?.[0];if(!(!i||!e)){d(null),l(!0);try{await uge(e,i),a(!0),s(`${OE(e)}?t=${Date.now()}`),n(void 0)}catch(e){d(e instanceof Error?e.message:`Upload failed`)}finally{l(!1),r.current&&(r.current.value=``)}}},[e,n]),p=(0,C.useCallback)(async()=>{if(e){d(null);try{await dge(e),a(!1),s(null)}catch(e){d(e instanceof Error?e.message:`Delete failed`)}}},[e]),m=(0,C.useCallback)(e=>{n(e===``?void 0:e)},[n]);return(0,W.jsxs)(Gv,{spacing:2,children:[(0,W.jsxs)(Mv,{fullWidth:!0,size:`small`,children:[(0,W.jsx)(Hx,{id:`icon-select-label`,children:`Bridge Icon`}),(0,W.jsx)(wS,{labelId:`icon-select-label`,value:t??``,label:`Bridge Icon`,onChange:e=>m(e.target.value),disabled:i,children:bqe.map(e=>(0,W.jsx)(TS,{value:e.value,children:e.label},e.value))}),(0,W.jsx)(DS,{children:i?`Custom icon is set. Delete it to use preset icons.`:`Select a preset icon or upload a custom image`})]}),e&&(0,W.jsxs)(Z,{children:[(0,W.jsx)(Q,{variant:`subtitle2`,color:`text.secondary`,gutterBottom:!0,children:`Custom Icon`}),(0,W.jsxs)(Gv,{direction:`row`,spacing:2,alignItems:`center`,children:[i&&o&&(0,W.jsx)(Z,{component:`img`,src:o,alt:`Custom bridge icon`,sx:{width:48,height:48,objectFit:`contain`,borderRadius:1,border:`1px solid`,borderColor:`divider`}}),(0,W.jsx)(`input`,{ref:r,type:`file`,accept:`image/png,image/jpeg,image/gif,image/webp,image/svg+xml`,style:{display:`none`},onChange:f}),(0,W.jsx)(_v,{variant:`outlined`,size:`small`,startIcon:(0,W.jsx)(whe,{}),onClick:()=>r.current?.click(),disabled:c,children:c?`Uploading...`:`Upload Image`}),i&&(0,W.jsx)(_v,{variant:`outlined`,size:`small`,color:`error`,startIcon:(0,W.jsx)(zS,{}),onClick:p,children:`Delete`})]}),u&&(0,W.jsx)(Q,{variant:`caption`,color:`error`,sx:{mt:1},children:u}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,sx:{mt:1,display:`block`},children:`Supported formats: PNG, JPG, GIF, WebP, SVG (max 5MB)`})]}),!e&&(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:`Save the bridge first to upload a custom icon.`})]})},d4={light:`Light`,switch:`On/Off Plug-in Unit`,lock:`Door Lock`,fan:`Fan`,binary_sensor:`Sensor`,sensor:`Sensor`,cover:`Window Covering`,climate:`Thermostat`,media_player:`Speaker / Video Player`,vacuum:`Robot Vacuum Cleaner`,humidifier:`Humidifier`,valve:`Water Valve`,alarm_control_panel:`On/Off Plug-in Unit`,event:`Generic Switch`,button:`Generic Switch`,input_button:`Generic Switch`,automation:`On/Off Switch`,script:`On/Off Switch`,scene:`On/Off Switch`,remote:`On/Off`,water_heater:`Water Heater`,input_boolean:`On/Off Plug-in Unit`,select:`Mode Select`,input_select:`Mode Select`,siren:`On/Off Plug-in Unit`,weather:`Sensor`},f4=e=>{try{return JSON.parse(e)}catch{return}};function Sqe({filter:e}){let[t,n]=(0,C.useState)(!1),[r,i]=(0,C.useState)(null),[a,o]=(0,C.useState)(null),[s,c]=(0,C.useState)(!1),l=(0,C.useRef)(null),u=(0,C.useRef)(``),d=(0,C.useCallback)(async()=>{n(!0),o(null);try{let t=await fetch(`api/matter/filter-preview`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),n=await t.text(),r=f4(n);if(!t.ok){let e=typeof r==`object`&&r&&`error`in r?String(r.error):n||`Failed to fetch preview`;throw Error(e)}i(r??f4(n)),c(!0)}catch(e){o(e instanceof Error?e.message:`Unknown error`)}finally{n(!1)}},[e]);(0,C.useEffect)(()=>{if(!(e.include.length>0&&e.include.some(e=>e.type&&e.value))){i(null),c(!1);return}let t=JSON.stringify(e);if(t!==u.current)return u.current=t,l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{d()},800),()=>{l.current&&clearTimeout(l.current)}},[e,d]);let f=r?r.entities.reduce((e,t)=>(e[t.domain]=(e[t.domain]||0)+1,e),{}):{},p=[];if(r){r.entities.some(e=>e.domain===`vacuum`)&&p.push(`This filter includes a vacuum. Consider using Server Mode (standalone device node) for Apple Home/Alexa compatibility.`),r.total>50&&p.push(`${r.total} entities is a large number. Consider splitting across multiple bridges for better stability.`);let e=Object.keys(f).filter(e=>!d4[e]);e.length>0&&p.push(`Unsupported domains will be skipped: ${e.join(`, `)}`)}return(0,W.jsxs)(Z,{sx:{mt:2},children:[(0,W.jsx)(_v,{variant:`outlined`,startIcon:t?(0,W.jsx)(Vh,{size:16}):(0,W.jsx)(Ghe,{}),onClick:d,disabled:t,size:`small`,children:t?`Loading...`:`Preview Matching Entities`}),a&&(0,W.jsx)(Kh,{severity:`error`,sx:{mt:1},children:a}),(0,W.jsx)(ey,{in:s&&r!==null,children:r&&(0,W.jsxs)(Z,{sx:{mt:2},children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,mb:1,children:[(0,W.jsxs)(Q,{variant:`subtitle1`,fontWeight:`bold`,children:[r.total,` entities match`]}),r.truncated&&(0,W.jsx)(kv,{label:`Showing first 100`,size:`small`,color:`warning`,variant:`outlined`})]}),p.length>0&&(0,W.jsx)(Gv,{spacing:.5,sx:{mb:1.5},children:p.map(e=>(0,W.jsx)(Kh,{severity:`warning`,variant:`outlined`,icon:e.includes(`vacuum`)?(0,W.jsx)(pv,{fontSize:`small`}):(0,W.jsx)(Tb,{fontSize:`small`}),sx:{py:0},children:(0,W.jsx)(Q,{variant:`caption`,children:e})},e))}),(0,W.jsx)(Z,{display:`flex`,gap:.5,flexWrap:`wrap`,mb:2,children:Object.entries(f).sort((e,t)=>t[1]-e[1]).map(([e,t])=>(0,W.jsx)(kv,{label:`${e}: ${t}${d4[e]?` → ${d4[e]}`:``}`,size:`small`,variant:`outlined`,color:d4[e]?`default`:`warning`},e))}),(0,W.jsx)(ny,{dense:!0,sx:{maxHeight:200,overflow:`auto`,bgcolor:`background.paper`,borderRadius:1,border:1,borderColor:`divider`},children:r.entities.map(e=>(0,W.jsx)(ay,{divider:!0,children:(0,W.jsx)(ly,{primary:e.friendly_name||e.entity_id,secondary:`${e.entity_id}${d4[e.domain]?` → ${d4[e.domain]}`:``}`,primaryTypographyProps:{variant:`body2`},secondaryTypographyProps:{variant:`caption`,fontFamily:`monospace`}})},e.entity_id))}),(0,W.jsx)(_v,{size:`small`,onClick:()=>c(!1),sx:{mt:1},children:`Hide Preview`})]})})]})}var Cqe=vF().ObjectFieldTemplate;function wqe(e){return(e.fieldPathId?.$id??``)===`root_filter`?(0,W.jsx)(Tqe,{...e}):(0,W.jsx)(Cqe,{...e})}function Tqe(e){let t=(e.formData?.include?.length??0)+(e.formData?.exclude?.length??0),[n,r]=(0,C.useState)(t>0);return(0,W.jsxs)(sC,{expanded:n,onChange:(e,t)=>r(t),variant:`outlined`,disableGutters:!0,sx:{borderRadius:2,"&::before":{display:`none`},overflow:`hidden`},children:[(0,W.jsxs)(uC,{expandIcon:(0,W.jsx)(nC,{}),sx:{px:2,"& .MuiAccordionSummary-content":{alignItems:`center`,gap:1.5}},children:[(0,W.jsx)(bb,{fontSize:`small`,color:`action`}),(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:600,children:`Entity Filters`}),(0,W.jsx)(zx,{badgeContent:t,color:`primary`,sx:{ml:1},max:99,children:(0,W.jsx)(Z,{})}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,sx:{ml:1},children:n?`Click to collapse`:`${t} rule${t===1?``:`s`} configured`})]}),(0,W.jsx)(cC,{sx:{px:2,pb:2},children:e.properties.map(e=>(0,W.jsx)(`div`,{children:e.content},e.name))})]})}function Eqe(e){let t=(0,C.useRef)(e),n=t.current;return t.current=e,n}function p4(e){let{items:t,canAdd:n,onAddClick:r,title:i,formData:a}=e,o=a??[],[s,c]=(0,C.useState)(()=>new Set),[l,u]=(0,C.useState)(``),d=Eqe(o.length);(0,C.useEffect)(()=>{if(o.length>d){let e=o.length-1,t=o[e];!t?.type&&!t?.value&&c(t=>new Set([...t,e]))}},[o,d]);let f=(0,C.useCallback)(e=>{c(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),p=(0,C.useMemo)(()=>{if(!l.trim())return null;let e=l.toLowerCase(),t=[];for(let n=0;n<o.length;n++){let r=o[n],i=r?.type??``,a=r?.value??``;(i.toLowerCase().includes(e)||a.toLowerCase().includes(e))&&t.push(n)}return new Set(t)},[l,o]),m=(0,C.useMemo)(()=>{let e=Array.from({length:t.length},(e,t)=>t);return p?e.filter(e=>p.has(e)):e},[t.length,p]);return(0,W.jsxs)(Z,{children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:1,children:[(0,W.jsx)(Q,{variant:`subtitle2`,fontWeight:600,children:i}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsx)(kv,{label:t.length,size:`small`,color:`default`,sx:{height:22,fontSize:`0.75rem`}}),n&&(0,W.jsx)(_v,{size:`small`,startIcon:(0,W.jsx)(hb,{}),onClick:r,children:`Add`})]})]}),t.length>3&&(0,W.jsx)(OS,{size:`small`,fullWidth:!0,placeholder:`Search rules...`,value:l,onChange:e=>u(e.target.value),slotProps:{input:{startAdornment:(0,W.jsx)(hF,{position:`start`,children:(0,W.jsx)(vE,{fontSize:`small`,color:`action`})})}},sx:{mb:1}}),p&&m.length===0&&(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,textAlign:`center`,py:2,children:`No matching rules`}),(0,W.jsx)(Gv,{spacing:.5,children:m.map(e=>{let n=o[e],r=n?.type??``,i=n?.value??``,a=s.has(e);return(0,W.jsxs)(Z,{sx:{border:1,borderColor:`divider`,borderRadius:1,overflow:`hidden`},children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,sx:{px:1.5,py:.75,cursor:`pointer`,"&:hover":{bgcolor:`action.hover`},bgcolor:a?`action.selected`:`transparent`},onClick:()=>f(e),children:[a?(0,W.jsx)(fhe,{fontSize:`small`,color:`action`}):(0,W.jsx)(mhe,{fontSize:`small`,color:`action`}),r||i?(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,ml:.5,flex:1,minWidth:0,children:[(0,W.jsx)(kv,{label:r,size:`small`,variant:`outlined`,sx:{height:22,fontSize:`0.75rem`,flexShrink:0}}),(0,W.jsx)(Q,{variant:`body2`,noWrap:!0,sx:{flex:1,minWidth:0},children:i})]}):(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,ml:.5,fontStyle:`italic`,children:`New rule (click to configure)`})]}),(0,W.jsx)(ey,{in:a,children:(0,W.jsx)(Z,{sx:{px:2,pb:1.5,pt:.5},children:t[e]})})]},e)})})]})}var Dqe=new Set([``,`pattern`,`regex`]);function Oqe(e){let{schema:t,formData:n,onChange:r,disabled:i,readonly:a,fieldPathId:o}=e,s=n??{},c=s.type??``,l=s.value??``,u=i||a,d=t.properties??{},f=(d.type?.oneOf??[]).filter(e=>typeof e.const==`string`),p=d.value?.title??`Value`,m=f.find(e=>e.const===c),h=(0,C.useCallback)(e=>r({...s,type:e},o.path),[s,r,o]),g=(0,C.useCallback)(e=>r({...s,value:e},o.path),[s,r,o]),_=Dqe.has(c)&&!u;return(0,W.jsxs)(Gv,{spacing:2,sx:{pt:1},children:[(0,W.jsxs)(Mv,{fullWidth:!0,size:`small`,disabled:u,children:[(0,W.jsx)(Hx,{id:`${o.path}-type`,children:`Type`}),(0,W.jsx)(wS,{labelId:`${o.path}-type`,label:`Type`,value:c,onChange:e=>h(e.target.value),children:f.map(e=>(0,W.jsx)(TS,{value:e.const,children:e.title??e.const},e.const))})]}),m?.description&&(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:m.description}),_?(0,W.jsx)($S,{value:l,onChange:g,label:p,placeholder:`sensor.living_room_*`,helperText:`Search or type an entity ID. Wildcards and regex still work.`,margin:`none`}):(0,W.jsx)(OS,{fullWidth:!0,size:`small`,label:p,value:l,disabled:u,onChange:e=>g(e.target.value),helperText:d.value?.description})]})}function kqe(e){let{schema:t,formData:n={},onChange:r,disabled:i,readonly:a,fieldPathId:o}=e,s=t.properties??{},c=(0,C.useCallback)((e,t)=>{r({...n,[e]:t},o.path)},[n,r,o]);return(0,W.jsxs)(Z,{children:[(0,W.jsx)(Q,{variant:`h6`,sx:{mb:2},children:`Feature Flags`}),(0,W.jsx)(Rv,{container:!0,spacing:2,children:Object.entries(s).map(([e,t])=>{let r=n[e]??t.default??!1;return(0,W.jsx)(Rv,{size:{xs:12,sm:6,lg:4},children:(0,W.jsx)(vv,{variant:`outlined`,sx:{height:`100%`,opacity:t.title?.toLowerCase().includes(`deprecated`)??!1?.6:1,transition:`border-color 0.2s, box-shadow 0.2s`,borderColor:r?`primary.main`:`divider`,"&:hover":{transform:`none`,boxShadow:`none`}},children:(0,W.jsx)(bv,{onClick:()=>{!i&&!a&&c(e,!r)},disabled:i||a,sx:{height:`100%`},children:(0,W.jsxs)(xv,{sx:{display:`flex`,flexDirection:`column`,height:`100%`,p:2,"&:last-child":{pb:2}},children:[(0,W.jsxs)(Z,{display:`flex`,justifyContent:`space-between`,alignItems:`flex-start`,gap:1,children:[(0,W.jsxs)(Z,{sx:{flex:1,minWidth:0},children:[(0,W.jsx)(Q,{variant:`subtitle2`,fontWeight:600,sx:{lineHeight:1.3},children:t.title??e}),r&&(0,W.jsx)(kv,{label:`Active`,size:`small`,color:`primary`,variant:`outlined`,sx:{mt:.5,height:20,fontSize:`0.7rem`}})]}),(0,W.jsx)(YS,{checked:r,size:`small`,disabled:i||a,tabIndex:-1,onClick:e=>e.stopPropagation(),onChange:t=>c(e,t.target.checked)})]}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,sx:{mt:1,lineHeight:1.4,flex:1},children:t.description})]})})})},e)})})]})}var m4=function(e){return e.JSON_EDITOR=`JSON_EDITOR`,e.FIELDS_EDITOR=`FIELDS_EDITOR`,e}(m4||{}),h4=e=>{let{t}=hs(),[n,r]=(0,C.useState)(m4.FIELDS_EDITOR),i=()=>{r(n===m4.FIELDS_EDITOR?m4.JSON_EDITOR:m4.FIELDS_EDITOR)},[a,o]=(0,C.useState)(e.bridge),[s,c]=(0,C.useState)(!0),l=(0,C.useCallback)(t=>{let n=t;if(!n?.port)return[];let r=e.usedPorts[n.port];return r!==void 0&&r!==e.bridgeId?[{instancePath:`/port`,message:`Port is already used by bridge with id ${r}`}]:[]},[e.bridgeId,e.usedPorts]),u=(e,t)=>{let n=e=>e?.icon;o(t=>{let r=n(t);return r==null?{...e}:{...e,icon:r}}),c(t)},d=(0,C.useCallback)(e=>{o(t=>{if(e!=null)return{...t,icon:e};let{icon:n,...r}=t??{};return r})},[]),f=(0,C.useMemo)(()=>{let e=a?.featureFlags,t=[];return e?.serverMode&&t.push({severity:`warning`,message:`Server Mode is enabled. The node carries up to 10 devices; the first entity is the primary and drives the node name and type. More than one device is experimental.`}),e?.serverMode&&e?.vacuumOnOff===!1&&t.push({severity:`warning`,message:`Server Mode with Vacuum OnOff disabled: Alexa REQUIRES the OnOff cluster (PowerController) for robotic vacuums. Without it, the vacuum commissions but never appears in Alexa. Only disable this for Apple Home.`}),!e?.serverMode&&e?.vacuumOnOff&&t.push({severity:`warning`,message:`Vacuum OnOff is enabled in bridge mode. This adds a non-standard cluster to the RVC device type which may cause issues with Apple Home and Google Home.`}),e?.autoForceSync&&e?.autoComposedDevices&&t.push({severity:`warning`,message:`Auto Force Sync with Auto Composed Devices increases network traffic. Composed devices have more clusters, so each sync cycle sends more data.`}),t},[a]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Kh,{severity:`warning`,variant:`outlined`,children:[`Please consult`,` `,(0,W.jsx)(Jv,{href:Y9.faq.bridgeConfig,target:`_blank`,children:`the documentation`}),` `,`for proper bridge configurations.`,` `,(0,W.jsx)(`strong`,{children:`Especially if you are using labels, see the "Labels" section.`})]}),(0,W.jsxs)(Kh,{severity:`info`,variant:`outlined`,children:[(0,W.jsx)(`strong`,{children:`Community tip:`}),` Users have reported that bridges with a large number of devices can become unstable depending on the controller. If you experience connectivity issues, consider splitting your devices across multiple bridges.`]}),f.map(e=>(0,W.jsx)(Kh,{severity:e.severity,variant:`outlined`,children:e.message},e.message)),(0,W.jsxs)(Gv,{spacing:2,children:[(0,W.jsx)(Z,{display:`flex`,justifyContent:`flex-end`,children:(0,W.jsx)(_v,{onClick:()=>i(),title:n===m4.FIELDS_EDITOR?t(`bridge.jsonEditor`):t(`bridge.formEditor`),children:n===m4.FIELDS_EDITOR?(0,W.jsx)(Xhe,{}):(0,W.jsx)(Rhe,{})})}),n===m4.FIELDS_EDITOR&&(0,W.jsx)(Oke,{value:a??{},onChange:u,schema:uv,uiSchema:{icon:{"ui:widget":`hidden`},featureFlags:{"ui:field":`featureFlags`},filter:{include:{"ui:options":{ArrayFieldTemplate:p4},items:{"ui:field":`entityFilterRule`}},exclude:{"ui:options":{ArrayFieldTemplate:p4},items:{"ui:field":`entityFilterRule`}}}},customValidate:l,templates:{ObjectFieldTemplate:wqe},fields:{featureFlags:kqe,entityFilterRule:Oqe}}),n===m4.JSON_EDITOR&&(0,W.jsx)(vqe,{value:a??{},onChange:u,schema:uv,customValidate:l}),a?.filter&&(0,W.jsx)(Sqe,{filter:a.filter}),(0,W.jsx)(vv,{variant:`outlined`,children:(0,W.jsxs)(xv,{children:[(0,W.jsx)(Q,{variant:`subtitle1`,gutterBottom:!0,fontWeight:600,children:t(`bridge.iconLabel`)}),(0,W.jsx)(xqe,{bridgeId:e.bridgeId,selectedIcon:a?.icon,onIconChange:d})]})}),(0,W.jsxs)(Rv,{container:!0,children:[(0,W.jsx)(Rv,{size:{xs:6,sm:4,md:3},children:(0,W.jsx)(_v,{fullWidth:!0,variant:`outlined`,color:`error`,onClick:e.onCancel,children:t(`common.cancel`)})}),(0,W.jsx)(Rv,{size:{xs:0,sm:4,md:6},sx:{display:{xs:`none`,sm:`block`}}}),(0,W.jsx)(Rv,{size:{xs:6,sm:4,md:3},children:(0,W.jsx)(_v,{fullWidth:!0,variant:`outlined`,disabled:!s,onClick:async()=>{s&&await e.onSave(a)},children:t(`common.save`)})})]})]})]})},Aqe={name:``,featureFlags:{},filter:{include:[],exclude:[]}};function jqe(e){let t=5540;for(;e[t];)t++;return t}var Mqe=()=>{let{t:e}=hs(),t=Xv(),n=Cr(),[r,i]=(0,C.useState)(),a=!!VT().content?.length,o=HT(),s=(0,C.useCallback)(e=>{i(e?.id)},[]),c=(0,C.useMemo)(()=>{if(!o)return;let e=jqe(o);if(r){let t=rv.find(e=>e.id===r);if(t)return{name:t.name,port:e,filter:{...t.filter},featureFlags:{...t.featureFlags},icon:t.icon}}return{...Aqe,port:e}},[o,r]),l=WT(),u=()=>{n(-1)};return!c||!o?e(`common.loading`):(0,W.jsxs)(Gv,{spacing:4,children:[(0,W.jsx)(Yv,{items:[{name:e(`nav.bridges`),to:Y9.bridges},{name:e(`common.create`),to:Y9.createBridge}]}),a&&(0,W.jsx)(Kh,{severity:`info`,variant:`outlined`,children:(0,W.jsxs)(Q,{children:[`Did you know that you can connect the same bridge with multiple assistants?`,` `,(0,W.jsx)(Jv,{href:Y9.faq.multiFabric,target:`_blank`,children:`Learn more.`})]})}),(0,W.jsx)(HE,{selectedTemplate:r,onSelect:s}),(0,W.jsx)(h4,{bridge:c,usedPorts:o,onSave:async n=>{await l({...n}).then(()=>t.show({message:e(`bridge.saveSuccess`),severity:`success`})).then(()=>u()).catch(e=>t.show({message:e.message,severity:`error`}))},onCancel:u},r??`custom`)]})},Nqe=()=>{let{t:e}=hs(),t=Xv(),n=Cr(),{bridgeId:r}=Dr(),{content:i,isLoading:a}=UT(r),o=HT(),s=Wme(),c=(0,C.useMemo)(()=>{if(!(a||!i))return{name:i.name,port:i.port,filter:i.filter,...i.countryCode!=null&&{countryCode:i.countryCode},...i.featureFlags!=null&&{featureFlags:i.featureFlags},...i.icon!=null&&{icon:i.icon},...i.priority!=null&&{priority:i.priority},...i.serialNumberSuffix!=null&&{serialNumberSuffix:i.serialNumberSuffix}}},[a,i]),l=()=>{n(-1)};return a||!o?e(`common.loading`):!i||!c?e(`notFound.title`):(0,W.jsxs)(Gv,{spacing:4,children:[(0,W.jsx)(Yv,{items:[{name:e(`nav.bridges`),to:Y9.bridges},{name:i.name,to:Y9.bridge(r)},{name:e(`common.edit`),to:Y9.editBridge(r)}]}),(0,W.jsx)(h4,{bridgeId:r,bridge:c,usedPorts:o,onSave:async n=>{await s({...n,id:r}).then(()=>t.show({message:e(`bridge.updateSuccess`),severity:`success`})).then(()=>l()).catch(e=>t.show({message:e.message,severity:`error`}))},onCancel:l})]})};async function Pqe(){let e=await fetch(`api/backup/snapshots`);return await F_(e,`Failed to fetch backups`),P_(e)}async function Fqe(){let e=await fetch(`api/backup/snapshots/create`,{method:`POST`});return await F_(e,`Failed to create backup`),P_(e)}async function Iqe(e){let t=await fetch(`api/backup/snapshots/${encodeURIComponent(e)}/download`);if(!t.ok)throw Error(`Failed to download backup`);let n=await t.blob(),r=window.URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=e,document.body.appendChild(i),i.click(),window.URL.revokeObjectURL(r),document.body.removeChild(i)}async function Lqe(e,t){let n=await fetch(`api/backup/snapshots/${encodeURIComponent(e)}/restore`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({overwriteExisting:!0,includeMappings:!0,restoreIdentity:!0,...t})});return await F_(n,`Failed to restore backup`),P_(n)}async function Rqe(e){await F_(await fetch(`api/backup/snapshots/${encodeURIComponent(e)}`,{method:`DELETE`}),`Failed to delete backup`)}async function zqe(){let e=await fetch(`api/backup/settings`);return await F_(e,`Failed to fetch backup settings`),P_(e)}async function Bqe(e){let t=await fetch(`api/backup/settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});return await F_(t,`Failed to update backup settings`),P_(t)}function Vqe(e){return e<1024?`${e} B`:e<1024*1024?`${Math.round(e/1024)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function g4(){let{t:e}=hs(),[t,n]=(0,C.useState)(!1),[r,i]=(0,C.useState)(null),[a,o]=(0,C.useState)(null),[s,c]=(0,C.useState)(null),[l,u]=(0,C.useState)(new Set),[d,f]=(0,C.useState)(!1),[p,m]=(0,C.useState)(!0),[h,g]=(0,C.useState)(!0),[_,v]=(0,C.useState)(!1),[y,b]=(0,C.useState)(!1),[x,S]=(0,C.useState)(null),w=(0,C.useRef)(null),[T,E]=(0,C.useState)([]),[D,O]=(0,C.useState)(!0),[k,A]=(0,C.useState)(null),[j,M]=(0,C.useState)(null),[N,P]=(0,C.useState)(null),[F,I]=(0,C.useState)(!1),L=(0,C.useCallback)(async()=>{try{O(!0);let[e,t]=await Promise.all([Pqe(),zqe()]);E(e),A(t)}catch(e){i(e instanceof Error?e.message:`Failed to load backups`)}finally{O(!1)}},[]);(0,C.useEffect)(()=>{L()},[L]);let R=async()=>{I(!0),i(null);try{await Fqe(),o(e(`backup.snapshotCreated`)),await L()}catch(e){i(e instanceof Error?e.message:`Failed to create backup`)}finally{I(!1)}},ee=async e=>{try{await Iqe(e)}catch(e){i(e instanceof Error?e.message:`Failed to download backup`)}},z=async t=>{n(!0),i(null);try{let n=await Lqe(t);n.errors.length>0?i(`Restored ${n.bridgesRestored} bridges with ${n.errors.length} errors`):o(e(`backup.snapshotRestored`,{bridges:n.bridgesRestored,mappings:n.mappingsRestored,identities:n.identitiesRestored})),M(null),n.restartRequired&&b(!0)}catch(e){i(e instanceof Error?e.message:`Failed to restore backup`)}finally{n(!1)}},te=async e=>{try{await Rqe(e),P(null),await L()}catch(e){i(e instanceof Error?e.message:`Failed to delete backup`)}},B=async e=>{try{A(await Bqe(e))}catch(e){i(e instanceof Error?e.message:`Failed to update settings`)}},V=async(t=!1)=>{n(!0),i(null);try{let n=await fetch(t?`api/backup/download?includeIdentity=true`:`api/backup/download`);if(!n.ok)throw Error(`Failed to create backup`);let r=await n.blob(),i=window.URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=n.headers.get(`Content-Disposition`)?.match(/filename="(.+)"/)?.[1]||`hamh-backup.zip`,document.body.appendChild(a),a.click(),window.URL.revokeObjectURL(i),document.body.removeChild(a),o(e(`backup.downloadSuccess`))}catch(e){i(e instanceof Error?e.message:`Unknown error`)}finally{n(!1)}},ne=async e=>{let t=e.target.files?.[0];if(t){S(t),n(!0),i(null);try{let e=new FormData;e.append(`file`,t);let n=await fetch(`api/backup/restore/preview`,{method:`POST`,body:e});if(!n.ok){let e=await n.text(),t=`Failed to parse backup`;try{let n=JSON.parse(e);n.error&&(t=n.error)}catch{e&&(t=`${t} (HTTP ${n.status}: ${e.slice(0,120)})`)}throw Error(t)}let r=await n.json();c(r),u(new Set(r.bridges.map(e=>e.id))),v(!0)}catch(e){i(e instanceof Error?e.message:`Unknown error`)}finally{n(!1),w.current&&(w.current.value=``)}}},re=async()=>{if(x){n(!0),i(null);try{let e=new FormData;e.append(`file`,x),e.append(`options`,JSON.stringify({bridgeIds:Array.from(l),overwriteExisting:d,includeMappings:p,restoreIdentity:h&&s?.includesIdentity}));let t=await fetch(`api/backup/restore`,{method:`POST`,body:e});if(!t.ok){let e=await t.text(),n=`Failed to restore backup`;try{let t=JSON.parse(e);t.error&&(n=t.error)}catch{e&&(n=`${n} (HTTP ${t.status}: ${e.slice(0,120)})`)}throw Error(n)}let n=await t.json();if(n.errors.length>0)i(`Restored ${n.bridgesRestored} bridges with ${n.errors.length} errors`);else{let e=[`Restored ${n.bridgesRestored} bridges`];n.mappingsRestored>0&&e.push(`${n.mappingsRestored} entity mappings`),n.identitiesRestored>0&&e.push(`${n.identitiesRestored} identities`),o(`${e.join(`, `)}!`)}v(!1),c(null),S(null),n.restartRequired&&b(!0)}catch(e){i(e instanceof Error?e.message:`Unknown error`)}finally{n(!1)}}},ie=e=>{let t=new Set(l);t.has(e)?t.delete(e):t.add(e),u(t)};return(0,W.jsxs)(vv,{children:[(0,W.jsxs)(xv,{children:[(0,W.jsxs)(Q,{variant:`h6`,gutterBottom:!0,children:[(0,W.jsx)(QT,{sx:{mr:1,verticalAlign:`middle`}}),e(`backup.title`)]}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mb:2},children:e(`backup.description`)}),r&&(0,W.jsx)(Kh,{severity:`error`,sx:{mb:2},onClose:()=>i(null),children:r}),a&&(0,W.jsx)(Kh,{severity:`success`,sx:{mb:2},onClose:()=>o(null),children:a}),(0,W.jsxs)(Rv,{container:!0,spacing:2,children:[(0,W.jsx)(Rv,{size:{xs:12,md:4},children:(0,W.jsxs)(qm,{sx:{p:2,height:`100%`,display:`flex`,flexDirection:`column`},children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,mb:1,children:[(0,W.jsx)(QT,{color:`primary`}),(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:`bold`,children:e(`backup.configBackup`)})]}),(0,W.jsxs)(Z,{sx:{flexGrow:1},children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`backup.configBackupDesc`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`backup.configBackupNote`)})]}),(0,W.jsx)(_v,{variant:`contained`,startIcon:t?(0,W.jsx)(Vh,{size:20,color:`inherit`}):(0,W.jsx)(QT,{}),onClick:()=>V(!1),disabled:t,fullWidth:!0,sx:{mt:2},children:e(`backup.configBackup`)})]})}),(0,W.jsx)(Rv,{size:{xs:12,md:4},children:(0,W.jsxs)(qm,{sx:{p:2,height:`100%`,display:`flex`,flexDirection:`column`},children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,mb:1,children:[(0,W.jsx)(yE,{color:`warning`}),(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:`bold`,children:e(`backup.fullBackup`)})]}),(0,W.jsxs)(Z,{sx:{flexGrow:1},children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`backup.fullBackupDesc`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`backup.fullBackupWarning`)})]}),(0,W.jsx)(_v,{variant:`contained`,color:`warning`,startIcon:t?(0,W.jsx)(Vh,{size:20,color:`inherit`}):(0,W.jsx)(QT,{}),onClick:()=>V(!0),disabled:t,fullWidth:!0,sx:{mt:2},children:e(`backup.fullBackup`)})]})}),(0,W.jsx)(Rv,{size:{xs:12,md:4},children:(0,W.jsxs)(qm,{sx:{p:2,height:`100%`,display:`flex`,flexDirection:`column`},children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,mb:1,children:[(0,W.jsx)(gE,{color:`info`}),(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:`bold`,children:e(`backup.restoreFromBackup`)})]}),(0,W.jsx)(Z,{sx:{flexGrow:1},children:(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`backup.restoreDesc`)})}),(0,W.jsxs)(_v,{variant:`outlined`,color:`info`,startIcon:(0,W.jsx)(gE,{}),component:`label`,disabled:t,fullWidth:!0,sx:{mt:2},children:[e(`backup.restoreFromBackup`),(0,W.jsx)(`input`,{ref:w,type:`file`,accept:`.zip`,hidden:!0,onChange:ne})]})]})})]}),(0,W.jsx)(Kb,{sx:{my:3}}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:2,children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsx)(QT,{color:`primary`}),(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:`bold`,children:e(`backup.storedBackups`)}),T.length>0&&(0,W.jsx)(kv,{label:T.length,size:`small`,color:`primary`,variant:`outlined`})]}),(0,W.jsx)(_v,{variant:`outlined`,size:`small`,startIcon:F?(0,W.jsx)(Vh,{size:16,color:`inherit`}):(0,W.jsx)(hb,{}),onClick:R,disabled:F,children:e(`backup.createSnapshot`)})]}),D?(0,W.jsx)(Z,{display:`flex`,justifyContent:`center`,p:2,children:(0,W.jsx)(Vh,{size:24})}):T.length===0?(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{textAlign:`center`,py:2},children:e(`backup.noSnapshots`)}):(0,W.jsx)(ny,{dense:!0,children:T.map(t=>(0,W.jsxs)(ay,{secondaryAction:(0,W.jsxs)(Z,{display:`flex`,gap:.5,children:[(0,W.jsx)(mb,{title:e(`backup.downloadSnapshot`),children:(0,W.jsx)(Uh,{size:`small`,onClick:()=>ee(t.filename),children:(0,W.jsx)(LT,{fontSize:`small`})})}),(0,W.jsx)(mb,{title:e(`backup.restoreSnapshot`),children:(0,W.jsx)(Uh,{size:`small`,color:`warning`,onClick:()=>M(t.filename),children:(0,W.jsx)(gE,{fontSize:`small`})})}),(0,W.jsx)(mb,{title:e(`common.delete`),children:(0,W.jsx)(Uh,{size:`small`,color:`error`,onClick:()=>P(t.filename),children:(0,W.jsx)(zS,{fontSize:`small`})})})]}),children:[(0,W.jsx)(sy,{sx:{minWidth:36},children:(0,W.jsx)(QT,{fontSize:`small`,color:t.auto?`action`:`primary`})}),(0,W.jsx)(ly,{primary:(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsxs)(Q,{variant:`body2`,children:[`v`,t.version]}),(0,W.jsx)(kv,{label:t.auto?e(`backup.auto`):e(`backup.manual`),size:`small`,variant:`outlined`,color:t.auto?`default`:`primary`}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:Vqe(t.sizeBytes)})]}),secondary:new Date(t.createdAt).toLocaleString()})]},t.filename))}),(0,W.jsx)(Kb,{sx:{my:3}}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,mb:2,children:[(0,W.jsx)(RT,{color:`action`}),(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:`bold`,children:e(`backup.settings`)})]}),k&&(0,W.jsxs)(Z,{sx:{display:`flex`,flexDirection:`column`,gap:2,maxWidth:400},children:[(0,W.jsx)(Lv,{control:(0,W.jsx)(YS,{checked:k.autoBackup,onChange:e=>B({autoBackup:e.target.checked})}),label:e(`backup.autoBackupLabel`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mt:-1},children:e(`backup.autoBackupDesc`)}),(0,W.jsx)(OS,{label:e(`backup.retentionCount`),type:`number`,size:`small`,value:k.backupRetentionCount,onChange:e=>{let t=parseInt(e.target.value,10);t>=1&&t<=100&&B({backupRetentionCount:t})},inputProps:{min:1,max:100},helperText:e(`backup.retentionCountDesc`),sx:{maxWidth:200}})]})]}),(0,W.jsxs)(Vb,{open:_,onClose:()=>v(!1),maxWidth:`sm`,fullWidth:!0,children:[(0,W.jsx)(Wb,{children:e(`backup.restoreTitle`)}),(0,W.jsx)(Ub,{children:s&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Q,{variant:`body2`,color:`text.secondary`,gutterBottom:!0,children:[`Backup created: `,new Date(s.createdAt).toLocaleString()]}),s.includesIdentity&&(0,W.jsx)(Kh,{severity:`info`,sx:{mt:1},children:`This backup includes Matter identity data (keypairs, fabric credentials). Restoring identities allows bridges to reconnect without re-commissioning.`}),(0,W.jsxs)(Q,{variant:`subtitle2`,sx:{mt:2,mb:1},children:[e(`backup.selectBridges`),`:`]}),(0,W.jsx)(ny,{dense:!0,children:s.bridges.map(e=>(0,W.jsxs)(ay,{onClick:()=>ie(e.id),sx:{cursor:`pointer`},children:[(0,W.jsx)(sy,{children:(0,W.jsx)(Ev,{edge:`start`,checked:l.has(e.id),tabIndex:-1,disableRipple:!0})}),(0,W.jsx)(ly,{primary:e.name,secondary:(0,W.jsxs)(W.Fragment,{children:[`Port: `,e.port,e.hasMappings&&` • ${e.mappingCount} entity mappings`,e.exists&&(0,W.jsx)(Q,{component:`span`,color:`warning.main`,sx:{ml:1},children:`(exists)`})]})})]},e.id))}),(0,W.jsxs)(Z,{sx:{mt:2},children:[(0,W.jsx)(Lv,{control:(0,W.jsx)(Ev,{checked:d,onChange:e=>f(e.target.checked)}),label:e(`backup.overwriteExisting`)}),(0,W.jsx)(Lv,{control:(0,W.jsx)(Ev,{checked:p,onChange:e=>m(e.target.checked)}),label:e(`backup.includeMappings`)}),s?.includesIdentity&&(0,W.jsx)(Lv,{control:(0,W.jsx)(Ev,{checked:h,onChange:e=>g(e.target.checked)}),label:e(`backup.restoreIdentities`)})]})]})}),(0,W.jsxs)(Hb,{children:[(0,W.jsx)(_v,{onClick:()=>v(!1),children:e(`common.cancel`)}),(0,W.jsx)(_v,{variant:`contained`,onClick:re,disabled:t||l.size===0,startIcon:t?(0,W.jsx)(Vh,{size:20,color:`inherit`}):null,children:e(`backup.restore`)})]})]}),(0,W.jsxs)(Vb,{open:y,onClose:()=>b(!1),children:[(0,W.jsxs)(Wb,{children:[(0,W.jsx)(hE,{sx:{mr:1,verticalAlign:`middle`}}),e(`backup.restartRequired`)]}),(0,W.jsxs)(Ub,{children:[(0,W.jsx)(Q,{children:e(`backup.restartMessage`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mt:1},children:e(`backup.restartNote`)})]}),(0,W.jsxs)(Hb,{children:[(0,W.jsx)(_v,{onClick:()=>b(!1),children:e(`common.later`)}),(0,W.jsx)(_v,{variant:`contained`,color:`warning`,onClick:async()=>{n(!0);try{await fetch(`api/backup/restart`,{method:`POST`}),o(`Application is restarting...`)}catch(e){i(e instanceof Error?e.message:`Failed to restart`)}finally{n(!1),b(!1)}},disabled:t,startIcon:t?(0,W.jsx)(Vh,{size:20,color:`inherit`}):(0,W.jsx)(hE,{}),children:e(`backup.restartNow`)})]})]}),(0,W.jsxs)(Vb,{open:j!==null,onClose:()=>M(null),children:[(0,W.jsxs)(Wb,{children:[(0,W.jsx)(gE,{sx:{mr:1,verticalAlign:`middle`}}),e(`backup.confirmRestore`)]}),(0,W.jsxs)(Ub,{children:[(0,W.jsx)(Q,{children:e(`backup.confirmRestoreMessage`,{filename:j})}),(0,W.jsx)(Kh,{severity:`warning`,sx:{mt:2},children:e(`backup.restoreWarning`)})]}),(0,W.jsxs)(Hb,{children:[(0,W.jsx)(_v,{onClick:()=>M(null),children:e(`common.cancel`)}),(0,W.jsx)(_v,{variant:`contained`,color:`warning`,onClick:()=>j&&z(j),disabled:t,startIcon:t?(0,W.jsx)(Vh,{size:20,color:`inherit`}):null,children:e(`backup.restore`)})]})]}),(0,W.jsxs)(Vb,{open:N!==null,onClose:()=>P(null),children:[(0,W.jsxs)(Wb,{children:[(0,W.jsx)(zS,{sx:{mr:1,verticalAlign:`middle`}}),e(`backup.confirmDelete`)]}),(0,W.jsx)(Ub,{children:(0,W.jsx)(Q,{children:e(`backup.confirmDeleteMessage`,{filename:N})})}),(0,W.jsxs)(Hb,{children:[(0,W.jsx)(_v,{onClick:()=>P(null),children:e(`common.cancel`)}),(0,W.jsx)(_v,{variant:`contained`,color:`error`,onClick:()=>N&&te(N),children:e(`common.delete`)})]})]})]})}var Hqe=e=>{let t=Math.floor(e/86400),n=Math.floor(e%86400/3600),r=Math.floor(e%3600/60);return t>0?`${t}d ${n}h ${r}m`:n>0?`${n}h ${r}m`:`${r}m`};function Uqe(e={}){let{t}=hs(),[n,r]=(0,C.useState)(null),[i,a]=(0,C.useState)(!0),[o,s]=(0,C.useState)(null),[c,l]=(0,C.useState)(`name`),[u,d]=(0,C.useState)(`asc`),f=e.sortField??c,p=e.sortDirection??u,m=e.onSortFieldChange??l,h=e.onSortDirectionChange??d,g=(0,C.useCallback)(async()=>{try{let e=await fetch(`api/health/detailed`);e.ok?(r(await e.json()),s(null)):s(t(`health.fetchFailed`))}catch{s(t(`health.connectionError`))}finally{a(!1)}},[t]);(0,C.useEffect)(()=>{g();let e=setInterval(g,1e4);return()=>clearInterval(e)},[g]);let _=(0,C.useCallback)(async()=>{try{let e=await fetch(`api/diagnostic/export`);if(e.ok){let t=await e.blob(),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=e.headers.get(`Content-Disposition`)?.match(/filename="(.+)"/)?.[1]??`hamh-diagnostic-${new Date().toISOString().replace(/[:.]/g,`-`)}.json`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}}catch{s(t(`health.exportFailed`))}},[t]),v=async e=>{try{await fetch(`api/matter/bridges/${e}/actions/restart`,{method:`POST`}),g()}catch{s(t(`health.restartFailed`))}};return i?(0,W.jsx)(Z,{display:`flex`,justifyContent:`center`,p:4,children:(0,W.jsx)(Vh,{})}):o||!n?(0,W.jsx)(Kh,{severity:`error`,sx:{m:2},children:o??t(`health.unableToLoad`)}):(0,W.jsxs)(Z,{sx:{p:2},children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:2,children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[n.status===`healthy`?(0,W.jsx)(fv,{color:`success`}):n.status===`degraded`?(0,W.jsx)(Qv,{color:`warning`}):(0,W.jsx)(Tx,{color:`error`}),(0,W.jsx)(Q,{variant:`h5`,children:t(`health.systemHealth`)}),(0,W.jsx)(kv,{label:n.status.toUpperCase(),color:n.status===`healthy`?`success`:n.status===`degraded`?`warning`:`error`,size:`small`})]}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsx)(_v,{variant:`outlined`,size:`small`,startIcon:(0,W.jsx)($T,{}),onClick:_,children:t(`health.exportDiagnostic`)}),(0,W.jsx)(mb,{title:t(`common.refresh`),children:(0,W.jsx)(Uh,{onClick:g,"aria-label":`Refresh health data`,children:(0,W.jsx)(mE,{})})})]})]}),(0,W.jsxs)(Rv,{container:!0,spacing:2,children:[(0,W.jsx)(Rv,{size:{xs:12,md:4},children:(0,W.jsxs)(qm,{sx:{p:2},children:[(0,W.jsx)(Q,{variant:`subtitle2`,color:`text.secondary`,children:t(`health.version`)}),(0,W.jsx)(Q,{variant:`h6`,children:n.version})]})}),(0,W.jsx)(Rv,{size:{xs:12,md:4},children:(0,W.jsxs)(qm,{sx:{p:2},children:[(0,W.jsx)(Q,{variant:`subtitle2`,color:`text.secondary`,children:t(`health.uptime`)}),(0,W.jsx)(Q,{variant:`h6`,children:Hqe(n.uptime)})]})}),(0,W.jsx)(Rv,{size:{xs:12,md:4},children:(0,W.jsxs)(qm,{sx:{p:2},children:[(0,W.jsx)(Q,{variant:`subtitle2`,color:`text.secondary`,children:t(`health.homeAssistant`)}),(0,W.jsx)(kv,{label:n.services.homeAssistant.connected?t(`health.connected`):t(`health.disconnected`),color:n.services.homeAssistant.connected?`success`:`error`,size:`small`})]})})]}),(0,W.jsx)(Kb,{sx:{my:3}}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:2,flexWrap:`wrap`,gap:1,children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsx)(uE,{}),(0,W.jsx)(Q,{variant:`h6`,children:t(`health.bridgeStatus`)}),(0,W.jsx)(kv,{label:`${n.services.bridges.running}/${n.services.bridges.total} ${t(`common.running`)}`,size:`small`,variant:`outlined`})]}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsx)(Px,{fontSize:`small`,color:`action`}),(0,W.jsxs)(Mv,{size:`small`,sx:{minWidth:120},children:[(0,W.jsx)(Hx,{children:t(`health.sortBy`)}),(0,W.jsxs)(wS,{value:f,label:t(`health.sortBy`),onChange:e=>m(e.target.value),children:[(0,W.jsx)(TS,{value:`name`,children:t(`common.name`)}),(0,W.jsx)(TS,{value:`created`,children:t(`health.created`)})]})]}),(0,W.jsx)(mb,{title:t(p===`asc`?`health.ascending`:`health.descending`),children:(0,W.jsx)(Uh,{size:`small`,onClick:()=>h(p===`asc`?`desc`:`asc`),"aria-label":`Sort ${p===`asc`?`descending`:`ascending`}`,children:p===`asc`?(0,W.jsx)(XT,{fontSize:`small`}):(0,W.jsx)(YT,{fontSize:`small`})})})]})]}),(0,W.jsx)(Rv,{container:!0,spacing:2,alignItems:`stretch`,children:[...n.bridgeDetails].sort((e,t)=>{let n=0;return n=f===`name`?e.name.localeCompare(t.name):e.id.localeCompare(t.id),p===`asc`?n:-n}).map(e=>(0,W.jsx)(Rv,{size:{xs:12,sm:6,md:6,lg:4,xl:3},sx:{display:`flex`},children:(0,W.jsx)(vv,{variant:`outlined`,sx:{width:`100%`,height:`100%`,minWidth:280,maxWidth:480,display:`flex`,flexDirection:`column`,borderColor:e.status===`running`?`success.main`:e.status===`failed`?`error.main`:`warning.main`},children:(0,W.jsxs)(xv,{sx:{flex:1,display:`flex`,flexDirection:`column`,p:2,"&:last-child":{pb:2}},children:[(0,W.jsxs)(Z,{display:`flex`,justifyContent:`space-between`,alignItems:`flex-start`,flexShrink:0,children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,minWidth:0,children:[(0,W.jsx)(_b,{}),(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:`bold`,noWrap:!0,sx:{maxWidth:140},children:e.name})]}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:.5,flexShrink:0,children:[(0,W.jsx)(kv,{label:e.status.toUpperCase(),color:e.status===`running`?`success`:e.status===`failed`?`error`:`warning`,size:`small`}),e.status===`failed`&&(0,W.jsx)(mb,{title:t(`bridge.restart`),children:(0,W.jsx)(Uh,{size:`small`,onClick:()=>v(e.id),children:(0,W.jsx)(hhe,{})})})]})]}),e.statusReason&&(0,W.jsx)(Q,{variant:`body2`,color:`error`,sx:{mt:1,flexShrink:0},children:e.statusReason}),(0,W.jsx)(Z,{sx:{mt:`auto`,pt:1,flexShrink:0},children:(0,W.jsxs)(Z,{display:`flex`,flexWrap:`wrap`,gap:.5,alignItems:`center`,children:[(0,W.jsx)(kv,{label:`${t(`common.port`)} ${e.port}`,size:`small`,variant:`outlined`,color:`default`}),(0,W.jsx)(kv,{label:`${e.deviceCount} ${t(`common.devices`)}`,size:`small`,variant:`outlined`,color:`default`}),(0,W.jsx)(kv,{label:`${e.fabricCount} ${t(`common.fabrics`)}`,size:`small`,variant:`outlined`,color:`default`}),e.failedEntityCount>0&&(0,W.jsx)(kv,{label:`${e.failedEntityCount} failed`,color:`error`,size:`small`})]})}),e.connectivity&&e.status===`running`&&(0,W.jsx)(Z,{sx:{mt:1,flexShrink:0},children:(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,children:[t(`health.sessions`),`:`,` `,e.connectivity.totalSessions,` |`,` `,t(`health.subscriptions`),`:`,` `,e.connectivity.totalSubscriptions,e.connectivity.fabricSummary&&e.connectivity.fabricSummary.length>1&&` (${e.connectivity.fabricSummary.length} ${t(`health.fabrics`)})`]})}),e.fabrics.length>0&&(0,W.jsxs)(Z,{sx:{mt:1,flexShrink:0},children:[(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,children:[t(`health.connectedTo`),`:`]}),(0,W.jsx)(Z,{display:`flex`,gap:.5,flexWrap:`wrap`,mt:.5,children:e.fabrics.map(e=>(0,W.jsx)(mb,{title:(0,W.jsxs)(Z,{sx:{fontSize:`0.75rem`},children:[(0,W.jsxs)(`div`,{children:[`Fabric #`,e.fabricIndex]}),(0,W.jsxs)(`div`,{children:[`Vendor: `,Cx(e.rootVendorId),` `,`(0x`,e.rootVendorId.toString(16).toUpperCase().padStart(4,`0`),`)`]}),(0,W.jsxs)(`div`,{children:[`Fabric ID: `,e.fabricId]}),(0,W.jsxs)(`div`,{children:[`Node ID: `,e.nodeId]}),(0,W.jsxs)(`div`,{children:[`Root Node ID: `,e.rootNodeId]})]}),children:(0,W.jsx)(kv,{icon:(0,W.jsx)(wx,{fabric:e}),label:e.label||Cx(e.rootVendorId),size:`small`,variant:`outlined`})},e.fabricIndex))})]})]})})},e.id))}),n.recovery.enabled&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Kb,{sx:{my:3}}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,mb:1,children:[(0,W.jsx)(hhe,{}),(0,W.jsx)(Q,{variant:`h6`,children:t(`health.autoRecovery`)}),(0,W.jsx)(kv,{label:t(`common.enabled`),color:`success`,size:`small`})]}),(0,W.jsxs)(Q,{variant:`body2`,color:`text.secondary`,children:[t(`health.recoveryAttempts`),`: `,n.recovery.recoveryCount,n.recovery.lastRecoveryAttempt&&` | Last attempt: ${new Date(n.recovery.lastRecoveryAttempt).toLocaleString()}`]})]}),(0,W.jsx)(Kb,{sx:{my:3}}),(0,W.jsx)(g4,{})]})}var _4=e=>e===`pass`?`success`:e===`warn`?`warning`:`error`;function Wqe(){let{t:e}=hs(),[t,n]=(0,C.useState)(null),[r,i]=(0,C.useState)(!1),[a,o]=(0,C.useState)(null),[s,c]=(0,C.useState)(!1),l=(0,C.useCallback)(async()=>{i(!0),o(null);try{let t=await fetch(`api/network`);t.ok?n(await t.json()):o(e(`health.fetchFailed`))}catch{o(e(`health.connectionError`))}finally{i(!1)}},[e]);(0,C.useEffect)(()=>{l()},[l]);let u=t?.checks.filter(e=>e.status===`pass`).length??0,d=t?.checks.filter(e=>e.status===`warn`).length??0,f=t?.checks.filter(e=>e.status===`fail`).length??0;return(0,W.jsxs)(qm,{variant:`outlined`,sx:{p:2},children:[(0,W.jsxs)(Z,{display:`flex`,justifyContent:`space-between`,alignItems:`center`,mb:1,children:[(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:`bold`,children:e(`health.networkDiagnostics`)}),(0,W.jsx)(_v,{size:`small`,onClick:l,disabled:r,children:r?(0,W.jsx)(Vh,{size:16}):e(`health.refresh`)})]}),a&&(0,W.jsx)(Kh,{severity:`error`,sx:{mb:1},children:a}),t&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Z,{display:`flex`,gap:1,mb:1.5,flexWrap:`wrap`,children:[u>0&&(0,W.jsx)(kv,{label:`${u} ${e(`health.checksPassed`)}`,color:`success`,size:`small`,variant:`outlined`}),d>0&&(0,W.jsx)(kv,{label:`${d} ${e(`health.checksWarning`)}`,color:`warning`,size:`small`,variant:`outlined`}),f>0&&(0,W.jsx)(kv,{label:`${f} ${e(`health.checksFailed`)}`,color:`error`,size:`small`,variant:`outlined`}),(0,W.jsx)(kv,{label:t.matterConfig.boundInterface?`mDNS: ${t.matterConfig.boundInterface}`:`mDNS: all interfaces`,size:`small`,variant:`outlined`}),(0,W.jsx)(kv,{label:`IPv4: ${t.matterConfig.ipv4Enabled?`on`:`off`}`,size:`small`,variant:`outlined`})]}),t.checks.filter(e=>e.status!==`pass`).map(e=>(0,W.jsxs)(Kh,{severity:_4(e.status),sx:{mb:1},children:[(0,W.jsx)(`strong`,{children:e.message}),e.detail&&(0,W.jsx)(Q,{variant:`body2`,sx:{mt:.5},children:e.detail})]},e.name)),(0,W.jsx)(_v,{size:`small`,onClick:()=>c(!s),sx:{mt:.5},children:e(s?`health.hideDetails`:`health.showDetails`)}),(0,W.jsxs)(ey,{in:s,children:[(0,W.jsx)(Q,{variant:`subtitle2`,sx:{mt:1,mb:.5},children:e(`health.allChecks`)}),(0,W.jsxs)(pC,{size:`small`,children:[(0,W.jsx)(bC,{children:(0,W.jsxs)(CC,{children:[(0,W.jsx)(_C,{children:e(`health.check`)}),(0,W.jsx)(_C,{children:e(`health.statusLabel`)}),(0,W.jsx)(_C,{children:e(`health.message`)})]})}),(0,W.jsx)(gC,{children:t.checks.map(e=>(0,W.jsxs)(CC,{children:[(0,W.jsx)(_C,{children:(0,W.jsx)(Q,{variant:`body2`,children:e.name})}),(0,W.jsx)(_C,{children:(0,W.jsx)(kv,{label:e.status,color:_4(e.status),size:`small`})}),(0,W.jsxs)(_C,{children:[(0,W.jsx)(Q,{variant:`body2`,children:e.message}),e.detail&&(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,display:`block`,children:e.detail})]})]},e.name))})]}),(0,W.jsx)(Q,{variant:`subtitle2`,sx:{mt:2,mb:.5},children:e(`health.networkInterfaces`)}),(0,W.jsxs)(pC,{size:`small`,children:[(0,W.jsx)(bC,{children:(0,W.jsxs)(CC,{children:[(0,W.jsx)(_C,{children:e(`health.interfaceName`)}),(0,W.jsx)(_C,{children:`IPv4`}),(0,W.jsx)(_C,{children:`IPv6`}),(0,W.jsx)(_C,{children:`MAC`})]})}),(0,W.jsx)(gC,{children:t.interfaces.filter(e=>!e.internal).map(e=>(0,W.jsxs)(CC,{children:[(0,W.jsx)(_C,{children:e.name}),(0,W.jsx)(_C,{children:e.ipv4.join(`, `)||`-`}),(0,W.jsx)(_C,{children:(0,W.jsx)(Q,{variant:`body2`,sx:{wordBreak:`break-all`,maxWidth:240},children:e.ipv6.join(`, `)||`-`})}),(0,W.jsx)(_C,{children:e.mac})]},e.name))})]})]})]})]})}var v4=`hamh-translation-overrides`;function y4(e,t=``){let n={};for(let[r,i]of Object.entries(e)){let e=t?`${t}.${r}`:r;typeof i==`object`&&i&&!Array.isArray(i)?Object.assign(n,y4(i,e)):n[e]=String(i??``)}return n}function b4(e){let t={};for(let[n,r]of Object.entries(e)){let e=n.split(`.`),i=t;for(let t=0;t<e.length-1;t++)e[t]in i||(i[e[t]]={}),i=i[e[t]];i[e[e.length-1]]=r}return t}function x4(e){try{let t=localStorage.getItem(v4);return t?JSON.parse(t)[e]??{}:{}}catch{return{}}}function S4(e,t){try{let n=localStorage.getItem(v4),r=n?JSON.parse(n):{};Object.keys(t).length===0?delete r[e]:r[e]=t,localStorage.setItem(v4,JSON.stringify(r))}catch{}}var C4=`hamh-custom-languages`;function Gqe(){try{let e=localStorage.getItem(C4);return e?JSON.parse(e):[]}catch{return[]}}function w4(e){localStorage.setItem(C4,JSON.stringify(e))}var T4=[{code:`de`,name:`Deutsch`},{code:`fr`,name:`Français`},{code:`es`,name:`Español`},{code:`it`,name:`Italiano`},{code:`zh`,name:`中文`},{code:`zh-TW`,name:`繁體中文`},{code:`ja`,name:`日本語`},{code:`th`,name:`ไทย`},{code:`sv`,name:`Svenska`},{code:`tr`,name:`Türkçe`},{code:`ru`,name:`Русский`}];function Kqe(){let{t:e,i18n:t}=hs(),n=t.language??`en`,r=T4.some(e=>e.code===n)?n:n.split(`-`)[0]??`en`,[i,a]=(0,C.useState)(()=>r===`en`?`de`:r),[o,s]=(0,C.useState)(``),[c,l]=(0,C.useState)(()=>x4(i)),[u,d]=(0,C.useState)(!1),[f,p]=(0,C.useState)(`all`),[m,h]=(0,C.useState)(Gqe),[g,_]=(0,C.useState)(!1),[v,y]=(0,C.useState)(``),[b,x]=(0,C.useState)(``),[S,w]=(0,C.useState)(``),[T,E]=(0,C.useState)(``),D=(0,C.useMemo)(()=>[...T4,...m],[m]),O=(0,C.useCallback)(e=>m.some(t=>t.code===e),[m]),k=(0,C.useMemo)(()=>y4(_s),[]),A=(0,C.useMemo)(()=>{let e=t.getResourceBundle(i,`translation`);return e?y4(e):{}},[i,t]),j=(0,C.useMemo)(()=>Object.keys(k).map(e=>({key:e,section:e.split(`.`)[0],enValue:k[e],currentValue:c[e]??A[e]??``,isOverridden:e in c})),[k,A,c]),M=(0,C.useMemo)(()=>{let e=j;if(o){let t=o.toLowerCase();e=e.filter(e=>e.key.toLowerCase().includes(t)||e.enValue.toLowerCase().includes(t)||e.currentValue.toLowerCase().includes(t))}return f===`missing`?e=e.filter(e=>!e.currentValue):f===`edited`&&(e=e.filter(e=>e.isOverridden)),e},[j,o,f]),N=(0,C.useMemo)(()=>[...new Set(M.map(e=>e.section))],[M]),P=Object.keys(k).length,F=j.filter(e=>e.currentValue).length,I=Object.keys(c).length,L=P>0?F/P*100:0;(0,C.useEffect)(()=>{l(x4(i))},[i]);let R=(0,C.useCallback)(e=>{l(e),S4(i,e);let n=t.getResourceBundle(i,`translation`),r=n?y4(n):{},a={};for(let[t,n]of Object.entries(e))n&&n!==r[t]&&(a[t]=n);if(Object.keys(a).length>0){let e=b4({...r,...a});t.addResourceBundle(i,`translation`,e,!0,!0)}},[i,t]),ee=(0,C.useCallback)((e,t)=>{let n={...c,[e]:t};t||delete n[e],R(n)},[c,R]),z=(0,C.useCallback)(e=>{let t={...c};delete t[e],R(t)},[c,R]),te=(0,C.useCallback)(()=>{R({})},[R]),B=(0,C.useCallback)(()=>{let e={};for(let t of Object.keys(k))e[t]=c[t]??A[t]??``;let t=b4(e),n=JSON.stringify(t,null,2),r=new Blob([n],{type:`application/json`}),a=URL.createObjectURL(r),o=document.createElement(`a`);o.href=a,o.download=`${i}.json`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(a)},[k,A,c,i]),V=(0,C.useCallback)(()=>{let e={};for(let t of Object.keys(k))e[t]=c[t]??A[t]??``;let t=b4(e);navigator.clipboard.writeText(JSON.stringify(t,null,2)),d(!0),setTimeout(()=>d(!1),2e3)},[k,A,c]),ne=(0,C.useCallback)(()=>{let n=v.trim().toLowerCase(),r=b.trim();if(!n){w(e(`translationEditor.codeRequired`));return}if(!r){w(e(`translationEditor.nameRequired`));return}if(T4.some(e=>e.code===n)||m.some(e=>e.code===n)||n===`en`){w(e(`translationEditor.languageExists`));return}let i=[...m,{code:n,name:r}];h(i),w4(i),t.addResourceBundle(n,`translation`,{},!0,!0),a(n),_(!1),y(``),x(``),w(``)},[v,b,m,t,e]),re=(0,C.useCallback)(()=>{if(!O(i))return;let e=m.filter(e=>e.code!==i);h(e),w4(e),S4(i,{}),a(T4[0].code)},[i,m,O]),ie=(0,C.useCallback)(()=>{let t=document.createElement(`input`);t.type=`file`,t.accept=`.json`,t.onchange=()=>{let n=t.files?.[0];if(!n)return;let r=new FileReader;r.onload=()=>{try{let t=JSON.parse(r.result);if(typeof t!=`object`||!t)throw Error();let n=y4(t),i=new Set(Object.keys(k)),a={},o=0;for(let[e,t]of Object.entries(n))i.has(e)&&t&&(a[e]=t,o++);R({...c,...a}),E(e(`translationEditor.importSuccess`,{count:o}))}catch{E(e(`translationEditor.importFailed`))}},r.readAsText(n)},t.click()},[k,c,R,e]);return(0,W.jsxs)(Z,{sx:{p:2},children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:2,flexWrap:`wrap`,gap:1,children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsx)(Qhe,{}),(0,W.jsx)(Q,{variant:`h5`,children:e(`translationEditor.title`)})]}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsxs)(Mv,{size:`small`,sx:{minWidth:140},children:[(0,W.jsx)(Hx,{children:e(`translationEditor.editLanguage`)}),(0,W.jsx)(wS,{value:i,label:e(`translationEditor.editLanguage`),onChange:e=>a(e.target.value),children:D.map(e=>(0,W.jsxs)(TS,{value:e.code,children:[(0,W.jsx)(ly,{primary:e.name}),O(e.code)&&(0,W.jsx)(sy,{sx:{minWidth:`auto`,ml:1},children:(0,W.jsx)(nE,{fontSize:`small`,color:`disabled`})})]},e.code))})]}),(0,W.jsx)(mb,{title:e(`translationEditor.addLanguage`),children:(0,W.jsx)(Uh,{size:`small`,onClick:()=>_(e=>!e),children:(0,W.jsx)(hb,{fontSize:`small`})})}),O(i)&&(0,W.jsx)(mb,{title:e(`translationEditor.removeLanguage`),children:(0,W.jsx)(Uh,{size:`small`,color:`error`,onClick:re,children:(0,W.jsx)(nE,{fontSize:`small`})})})]})]}),(0,W.jsx)(ey,{in:g,children:(0,W.jsxs)(Z,{display:`flex`,gap:1,mb:2,alignItems:`flex-start`,flexWrap:`wrap`,children:[(0,W.jsx)(OS,{size:`small`,label:e(`translationEditor.newLanguageCode`),value:v,onChange:e=>y(e.target.value),error:!!S,sx:{width:180}}),(0,W.jsx)(OS,{size:`small`,label:e(`translationEditor.newLanguageName`),value:b,onChange:e=>x(e.target.value),sx:{width:220}}),(0,W.jsx)(_v,{variant:`contained`,size:`small`,onClick:ne,children:e(`translationEditor.addLanguageButton`)}),S&&(0,W.jsx)(Q,{variant:`caption`,color:`error`,sx:{mt:.5},children:S})]})}),(0,W.jsx)(Kh,{severity:`info`,sx:{mb:2},children:e(`translationEditor.info`)}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:2,mb:2,flexWrap:`wrap`,children:[(0,W.jsxs)(Z,{sx:{flexGrow:1,minWidth:200},children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:.5,children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`translationEditor.progress`,{translated:F,total:P})}),(0,W.jsxs)(Q,{variant:`body2`,fontWeight:600,children:[Math.round(L),`%`]})]}),(0,W.jsx)(Wv,{variant:`determinate`,value:L,sx:{height:8,borderRadius:4}})]}),I>0&&(0,W.jsx)(kv,{label:e(`translationEditor.localEdits`,{count:I}),color:`primary`,size:`small`})]}),(0,W.jsxs)(Z,{display:`flex`,gap:1,mb:2,flexWrap:`wrap`,children:[(0,W.jsx)(OS,{size:`small`,placeholder:e(`translationEditor.searchPlaceholder`),value:o,onChange:e=>s(e.target.value),sx:{flexGrow:1,minWidth:200},slotProps:{input:{startAdornment:(0,W.jsx)(hF,{position:`start`,children:(0,W.jsx)(vE,{fontSize:`small`})})}}}),(0,W.jsx)(Mv,{size:`small`,sx:{minWidth:130},children:(0,W.jsxs)(wS,{value:f,onChange:e=>p(e.target.value),children:[(0,W.jsx)(TS,{value:`all`,children:e(`translationEditor.filterAll`)}),(0,W.jsx)(TS,{value:`missing`,children:e(`translationEditor.filterMissing`)}),(0,W.jsx)(TS,{value:`edited`,children:e(`translationEditor.filterEdited`)})]})})]}),(0,W.jsxs)(Z,{display:`flex`,gap:1,mb:3,flexWrap:`wrap`,children:[(0,W.jsx)(_v,{variant:`outlined`,size:`small`,startIcon:(0,W.jsx)(TE,{}),onClick:B,children:e(`translationEditor.exportJson`)}),(0,W.jsx)(_v,{variant:`outlined`,size:`small`,startIcon:(0,W.jsx)(LT,{}),onClick:ie,children:e(`translationEditor.importJson`)}),(0,W.jsx)(mb,{title:u?e(`translationEditor.copied`):``,children:(0,W.jsx)(_v,{variant:`outlined`,size:`small`,startIcon:(0,W.jsx)(gb,{}),onClick:V,children:e(`translationEditor.copyJson`)})}),I>0&&(0,W.jsx)(_v,{variant:`outlined`,size:`small`,color:`warning`,startIcon:(0,W.jsx)(gE,{}),onClick:te,children:e(`translationEditor.resetAll`)})]}),N.map(t=>(0,W.jsxs)(Z,{sx:{mb:3},children:[(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:600,sx:{mb:1,textTransform:`capitalize`},children:t}),(0,W.jsx)(Kb,{sx:{mb:1.5}}),M.filter(e=>e.section===t).map(t=>(0,W.jsxs)(Z,{sx:{display:`grid`,gridTemplateColumns:{xs:`1fr`,md:`1fr 1fr auto`},gap:1,mb:1.5,alignItems:`start`},children:[(0,W.jsxs)(Z,{children:[(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,sx:{fontFamily:`monospace`},children:t.key}),(0,W.jsx)(Q,{variant:`body2`,sx:{mt:.25},children:t.enValue})]}),(0,W.jsx)(OS,{size:`small`,fullWidth:!0,multiline:t.enValue.length>60,minRows:1,maxRows:4,value:t.currentValue,onChange:e=>ee(t.key,e.target.value),placeholder:t.enValue,sx:{"& .MuiOutlinedInput-root":t.isOverridden?{borderColor:`primary.main`,"& fieldset":{borderColor:`primary.main`,borderWidth:2}}:{}}}),t.isOverridden&&(0,W.jsx)(mb,{title:e(`translationEditor.resetKey`),children:(0,W.jsx)(Uh,{size:`small`,onClick:()=>z(t.key),children:(0,W.jsx)(gE,{fontSize:`small`})})})]},t.key))]},t)),M.length===0&&(0,W.jsx)(Q,{color:`text.secondary`,sx:{textAlign:`center`,py:4},children:e(`translationEditor.noResults`)}),(0,W.jsx)(ng,{open:!!T,autoHideDuration:3e3,onClose:()=>E(``),message:T})]})}var E4=e=>{let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n.toFixed(1)} ${t[r]}`},D4=e=>{let t=Math.floor(e/86400),n=Math.floor(e%86400/3600),r=Math.floor(e%3600/60);return t>0?`${t}d ${n}h ${r}m`:n>0?`${n}h ${r}m`:`${r}m`},qqe=()=>{let[e,t]=(0,C.useState)(null),[n,r]=(0,C.useState)(!0),[i,a]=(0,C.useState)(!0);if((0,C.useEffect)(()=>{let e=null,n=async()=>{try{let n=await fetch(`api/system/info`);n.ok?(t(await n.json()),a(!0)):n.status===404&&(a(!1),e&&=(clearInterval(e),null))}catch{}finally{r(!1)}};return n(),e=setInterval(n,3e4),()=>{e&&clearInterval(e)}},[]),!i)return null;if(n)return(0,W.jsx)(vv,{children:(0,W.jsx)(xv,{children:(0,W.jsx)(Q,{children:`Loading system information...`})})});if(!e)return(0,W.jsx)(vv,{children:(0,W.jsx)(xv,{children:(0,W.jsx)(Q,{color:`error`,children:`Failed to load system information`})})});let o=e.memory.used/e.memory.total*100,s=e.storage.used/e.storage.total*100;return(0,W.jsx)(vv,{children:(0,W.jsxs)(xv,{children:[(0,W.jsxs)(Q,{variant:`h6`,gutterBottom:!0,sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)(The,{}),`System Information`]}),(0,W.jsxs)(Rv,{container:!0,spacing:3,children:[(0,W.jsx)(Rv,{size:{xs:12,md:6},children:(0,W.jsxs)(Gv,{spacing:2,children:[(0,W.jsxs)(Z,{children:[(0,W.jsx)(Q,{variant:`subtitle2`,color:`text.secondary`,children:`Application`}),(0,W.jsxs)(Gv,{spacing:1,sx:{mt:1},children:[(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,W.jsx)(Q,{variant:`body2`,children:`Version:`}),(0,W.jsx)(kv,{label:e.version,size:`small`,color:`primary`})]}),(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,W.jsx)(Q,{variant:`body2`,children:`Environment:`}),(0,W.jsx)(kv,{label:e.environment,size:`small`,variant:`outlined`,color:e.environment===`Home Assistant Add-on`?`success`:`default`})]}),(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,W.jsx)(Q,{variant:`body2`,children:`Node.js:`}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e.nodeVersion})]}),(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,W.jsx)(Q,{variant:`body2`,children:`Process Uptime:`}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:D4(e.process.uptime)})]})]})]}),(0,W.jsxs)(Z,{children:[(0,W.jsx)(Q,{variant:`subtitle2`,color:`text.secondary`,children:`System`}),(0,W.jsxs)(Gv,{spacing:1,sx:{mt:1},children:[(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,W.jsx)(Q,{variant:`body2`,children:`Hostname:`}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e.hostname})]}),(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,W.jsx)(Q,{variant:`body2`,children:`Platform:`}),(0,W.jsxs)(Q,{variant:`body2`,color:`text.secondary`,children:[e.platform,` (`,e.arch,`)`]})]}),(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,W.jsx)(Q,{variant:`body2`,children:`CPU:`}),(0,W.jsxs)(Q,{variant:`body2`,color:`text.secondary`,sx:{maxWidth:200,textAlign:`right`},noWrap:!0,title:e.cpuModel,children:[e.cpuCount,`x`,` `,e.cpuModel.split(`@`)[0].trim()]})]}),(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,W.jsx)(Q,{variant:`body2`,children:`System Uptime:`}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:D4(e.uptime)})]})]})]})]})}),(0,W.jsx)(Rv,{size:{xs:12,md:6},children:(0,W.jsxs)(Gv,{spacing:2,children:[(0,W.jsxs)(Z,{children:[(0,W.jsxs)(Q,{variant:`subtitle2`,color:`text.secondary`,sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)(uE,{}),`Memory Usage`]}),(0,W.jsxs)(Z,{sx:{mt:1},children:[(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`,mb:1},children:[(0,W.jsxs)(Q,{variant:`body2`,children:[E4(e.memory.used),` /`,` `,E4(e.memory.total)]}),(0,W.jsxs)(Q,{variant:`body2`,color:`text.secondary`,children:[o.toFixed(1),`%`]})]}),(0,W.jsx)(Z,{sx:{height:8,backgroundColor:`action.hover`,borderRadius:4,overflow:`hidden`},children:(0,W.jsx)(Z,{sx:{height:`100%`,width:`${o}%`,backgroundColor:o>80?`error.main`:o>60?`warning.main`:`success.main`,transition:`width 0.3s ease`}})})]})]}),(0,W.jsxs)(Z,{children:[(0,W.jsxs)(Q,{variant:`subtitle2`,color:`text.secondary`,sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)(uE,{}),`HAMH Process Memory`]}),(0,W.jsxs)(Z,{sx:{mt:1},children:[(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`,mb:.5},children:[(0,W.jsxs)(Q,{variant:`body2`,children:[`RSS: `,E4(e.process.rss)]}),(0,W.jsxs)(Q,{variant:`body2`,color:`text.secondary`,children:[`Heap: `,E4(e.process.heapUsed),` /`,` `,E4(e.process.heapSizeLimit)]})]}),(0,W.jsx)(Z,{sx:{height:8,backgroundColor:`action.hover`,borderRadius:4,overflow:`hidden`},children:(0,W.jsx)(Z,{sx:{height:`100%`,width:`${Math.min(e.process.heapUsed/e.process.heapSizeLimit*100,100)}%`,backgroundColor:e.process.heapUsed/e.process.heapSizeLimit>.85?`error.main`:e.process.heapUsed/e.process.heapSizeLimit>.6?`warning.main`:`success.main`,transition:`width 0.3s ease`}})})]})]}),(0,W.jsxs)(Z,{children:[(0,W.jsxs)(Q,{variant:`subtitle2`,color:`text.secondary`,sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)(Yhe,{}),`Storage Usage`]}),(0,W.jsxs)(Z,{sx:{mt:1},children:[(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`,mb:1},children:[(0,W.jsxs)(Q,{variant:`body2`,children:[E4(e.storage.used),` /`,` `,E4(e.storage.total)]}),(0,W.jsxs)(Q,{variant:`body2`,color:`text.secondary`,children:[s.toFixed(1),`%`]})]}),(0,W.jsx)(Z,{sx:{height:8,backgroundColor:`action.hover`,borderRadius:4,overflow:`hidden`},children:(0,W.jsx)(Z,{sx:{height:`100%`,width:`${s}%`,backgroundColor:s>80?`error.main`:s>60?`warning.main`:`success.main`,transition:`width 0.3s ease`}})})]})]})]})}),(0,W.jsxs)(Rv,{size:{xs:12},children:[(0,W.jsxs)(Q,{variant:`subtitle2`,color:`text.secondary`,sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)(Vhe,{}),`Network Interfaces`]}),(0,W.jsx)(Gv,{spacing:1,sx:{mt:1},children:e.network.interfaces.map(e=>(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,W.jsx)(Q,{variant:`body2`,children:e.name}),(0,W.jsx)(kv,{label:`${e.address} (${e.family})`,size:`small`,variant:`outlined`})]},`${e.name}-${e.address}`))})]})]})]})})},O4=200;function Jqe(){let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(null),[i,a]=(0,C.useState)(!1),o=(0,C.useRef)(null),s=(0,C.useRef)(void 0),c=(0,C.useCallback)(()=>{if(o.current?.readyState===WebSocket.OPEN)return;let e=window.location.protocol===`https:`?`wss:`:`ws:`,n=document.querySelector(`base`)?.href||window.location.origin,i=new URL(n),l=`${e}//${i.host}${i.pathname}api/ws`.replace(/\/+/g,`/`).replace(`:/`,`://`),u=new WebSocket(l);o.current=u,u.onopen=()=>{a(!0),u.send(JSON.stringify({type:`subscribe_diagnostics`}))},u.onmessage=e=>{try{let n=JSON.parse(e.data);if(n.type===`diagnostic_event`){let e=n.data;t(t=>{let n=[...t,e];return n.length>O4?n.slice(-O4):n})}else if(n.type===`diagnostic_snapshot`){let e=n.data;r(e),t(e.recentEvents??[])}}catch{}},u.onclose=()=>{a(!1),o.current=null,s.current=setTimeout(c,3e3)},u.onerror=()=>u.close()},[]);return(0,C.useEffect)(()=>(c(),()=>{clearTimeout(s.current),o.current&&(o.current.send(JSON.stringify({type:`unsubscribe_diagnostics`})),o.current.close())}),[c]),{events:e,snapshot:n,connected:i,clearEvents:(0,C.useCallback)(()=>t([]),[])}}function k4(e){let t=e.replace(`#`,``),n=Number.parseInt(t.substring(0,2),16)/255,r=Number.parseInt(t.substring(2,4),16)/255,i=Number.parseInt(t.substring(4,6),16)/255;return .2126*(n<=.03928?n/12.92:((n+.055)/1.055)**2.4)+.7152*(r<=.03928?r/12.92:((r+.055)/1.055)**2.4)+.0722*(i<=.03928?i/12.92:((i+.055)/1.055)**2.4)>.179?`#000`:`#fff`}var A4={state_update:`#4caf50`,command_received:`#2196f3`,entity_error:`#f44336`,session_opened:`#ff9800`,session_closed:`#9e9e9e`,subscription_changed:`#9c27b0`,bridge_started:`#00bcd4`,bridge_stopped:`#795548`,entity_warning:`#ff9800`},j4={state_update:`diagnostics.stateUpdate`,command_received:`diagnostics.command`,entity_error:`diagnostics.entityError`,session_opened:`diagnostics.sessionOpen`,session_closed:`diagnostics.sessionClose`,subscription_changed:`diagnostics.subscription`,bridge_started:`diagnostics.bridgeStart`,bridge_stopped:`diagnostics.bridgeStop`,entity_warning:`diagnostics.entityWarning`};function Yqe(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}.${String(t.getMilliseconds()).padStart(3,`0`)}`}var M4=Object.keys(A4);function Xqe({sortField:e,sortDirection:t}={}){let{t:n}=hs(),r=Em(),{events:i,snapshot:a,connected:o,clearEvents:s}=Jqe(),[c,l]=(0,C.useState)(new Set(M4)),[u,d]=(0,C.useState)(!1),f=e=>{l(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},p=i.filter(e=>c.has(e.type)),m=(0,C.useMemo)(()=>{let n=a?.bridges??[];return e?[...n].sort((n,r)=>{let i=0;return i=e===`name`?n.bridgeName.localeCompare(r.bridgeName):n.bridgeId.localeCompare(r.bridgeId),t===`desc`?-i:i}):n},[a?.bridges,e,t]),h={};for(let e of i)h[e.type]=(h[e.type]??0)+1;return(0,W.jsx)(vv,{children:(0,W.jsxs)(xv,{children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:2,children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsx)(Zhe,{}),(0,W.jsx)(Q,{variant:`h6`,children:n(`diagnostics.title`)}),(0,W.jsx)(kv,{icon:(0,W.jsx)(jhe,{sx:{fontSize:10,color:o?r.palette.success.main:r.palette.error.main}}),label:n(o?`common.live`:`common.offline`),size:`small`,variant:`outlined`})]}),(0,W.jsxs)(Gv,{direction:`row`,spacing:.5,alignItems:`center`,children:[(0,W.jsx)(mb,{title:n(`diagnostics.filterEvents`),children:(0,W.jsx)(Uh,{size:`small`,onClick:()=>d(e=>!e),color:u?`primary`:`default`,children:(0,W.jsx)(bb,{})})}),(0,W.jsx)(mb,{title:n(`diagnostics.clearEvents`),children:(0,W.jsx)(Uh,{size:`small`,onClick:s,children:(0,W.jsx)(Che,{})})})]})]}),(0,W.jsxs)(Gv,{direction:`row`,spacing:.5,flexWrap:`wrap`,sx:{mb:2,gap:.5},children:[M4.map(e=>{let t=h[e]??0;if(t===0&&!u)return null;let r=A4[e];return(0,W.jsx)(kv,{label:`${n(j4[e])}: ${t}`,size:`small`,sx:{bgcolor:c.has(e)?r:`action.disabledBackground`,color:c.has(e)?k4(r):`text.disabled`,fontSize:`0.7rem`,height:22,cursor:`pointer`,opacity:c.has(e)?1:.5},onClick:()=>f(e)},e)}),a?.system&&(0,W.jsx)(kv,{label:`Total: ${a.system.eventCount}`,size:`small`,variant:`outlined`,sx:{fontSize:`0.7rem`,height:22}})]}),(0,W.jsx)(ey,{in:u,children:(0,W.jsx)(qm,{variant:`outlined`,sx:{p:1.5,mb:2},children:(0,W.jsx)(Rv,{container:!0,spacing:0,children:M4.map(e=>{let t=A4[e];return(0,W.jsx)(Rv,{size:{xs:6,sm:4,md:3},children:(0,W.jsx)(Lv,{control:(0,W.jsx)(Ev,{size:`small`,checked:c.has(e),onChange:()=>f(e),sx:{color:t,"&.Mui-checked":{color:t}}}),label:(0,W.jsx)(Q,{variant:`caption`,children:n(j4[e])})})},e)})})})}),m.length>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Rv,{container:!0,spacing:1,sx:{mb:2},children:m.map(e=>(0,W.jsx)(Zqe,{bridge:e},e.bridgeId))}),(0,W.jsx)(Kb,{sx:{mb:2}})]}),(0,W.jsx)(Z,{sx:{maxHeight:400,overflow:`auto`,bgcolor:`background.default`,borderRadius:1,p:1},children:p.length===0?(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{textAlign:`center`,py:4},children:i.length===0?`Waiting for diagnostic events…`:n(`diagnostics.noEvents`)}):p.map(e=>{let t=A4[e.type];return(0,W.jsxs)(Z,{sx:{display:`flex`,alignItems:`flex-start`,gap:1,py:.4,px:.5,minWidth:0,borderBottom:`1px solid`,borderColor:`divider`,"&:hover":{bgcolor:`action.hover`},"&:last-child":{borderBottom:`none`}},children:[(0,W.jsx)(Q,{variant:`caption`,sx:{color:`text.secondary`,whiteSpace:`nowrap`,fontFamily:`monospace`,fontSize:`0.72rem`,minWidth:85,pt:.1},children:Yqe(e.timestamp)}),(0,W.jsx)(kv,{label:j4[e.type]?n(j4[e.type]):e.type,size:`small`,sx:{bgcolor:t??`#757575`,color:k4(t??`#757575`),fontSize:`0.62rem`,fontWeight:600,height:18,minWidth:90}}),e.bridgeName&&(0,W.jsxs)(Q,{variant:`caption`,sx:{color:`primary.main`,fontWeight:600,whiteSpace:`nowrap`,overflow:`hidden`,textOverflow:`ellipsis`,fontSize:`0.72rem`,maxWidth:140,flexShrink:0},children:[`[`,e.bridgeName,`]`]}),e.entityId&&(0,W.jsx)(Q,{variant:`caption`,sx:{color:`warning.main`,fontFamily:`monospace`,whiteSpace:`nowrap`,overflow:`hidden`,textOverflow:`ellipsis`,fontSize:`0.72rem`,maxWidth:220,flexShrink:1},children:e.entityId}),(0,W.jsx)(Q,{variant:`caption`,sx:{color:`text.primary`,flex:1,wordBreak:`break-word`,fontSize:`0.72rem`},children:e.message})]},e.id)})})]})})}function Zqe({bridge:e}){let[t,n]=(0,C.useState)(!1);return(0,W.jsx)(Rv,{size:{xs:12,sm:6},children:(0,W.jsxs)(qm,{variant:`outlined`,sx:{p:1.5,overflow:`hidden`,minWidth:0},children:[(0,W.jsxs)(Z,{display:`flex`,justifyContent:`space-between`,alignItems:`center`,sx:{cursor:`pointer`},onClick:()=>n(e=>!e),children:[(0,W.jsxs)(Z,{sx:{minWidth:0,overflow:`hidden`},children:[(0,W.jsx)(Q,{variant:`body2`,fontWeight:500,noWrap:!0,children:e.bridgeName}),(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,noWrap:!0,children:[e.entityCount,` devices · `,e.sessionCount,` sessions`]})]}),(0,W.jsxs)(Gv,{direction:`row`,spacing:.5,alignItems:`center`,flexWrap:`wrap`,justifyContent:`flex-end`,sx:{flexShrink:0,ml:1},children:[Object.entries(e.featureFlags).filter(([,e])=>e).map(([e])=>(0,W.jsx)(kv,{label:e.replace(/^auto/,``).replace(/([A-Z])/g,` $1`).trim(),size:`small`,variant:`outlined`,sx:{fontSize:`0.6rem`,height:18}},e)),(0,W.jsx)(kv,{label:e.status,size:`small`,color:e.status===`running`?`success`:e.status===`failed`?`error`:`default`,sx:{height:20}}),(0,W.jsx)(nC,{sx:{transform:t?`rotate(180deg)`:`rotate(0deg)`,transition:`transform 0.2s`,fontSize:18,color:`text.secondary`}})]})]}),(0,W.jsx)(ey,{in:t,children:(0,W.jsx)(Z,{sx:{mt:1,maxHeight:200,overflow:`auto`},children:e.entities.map(e=>(0,W.jsxs)(Z,{sx:{display:`flex`,alignItems:`baseline`,gap:.5,py:.3,borderBottom:`1px solid`,borderColor:`divider`},children:[(0,W.jsx)(Q,{variant:`caption`,sx:{fontFamily:`monospace`,fontSize:`0.68rem`,minWidth:180,flexShrink:0,color:e.available?`text.primary`:`error.main`},noWrap:!0,children:e.entityId}),(0,W.jsx)(Z,{display:`flex`,gap:.3,flexWrap:`wrap`,children:e.matterClusters.map(e=>(0,W.jsx)(kv,{label:e,size:`small`,variant:`outlined`,sx:{fontSize:`0.58rem`,height:16,"& .MuiChip-label":{px:.5}}},e))})]},e.entityId))})})]})})}var Qqe=()=>{let[e,t]=(0,C.useState)(`name`),[n,r]=(0,C.useState)(`asc`);return(0,W.jsxs)(Z,{sx:{display:`flex`,flexDirection:`column`,gap:3},children:[(0,W.jsx)(Uqe,{sortField:e,sortDirection:n,onSortFieldChange:t,onSortDirectionChange:r}),(0,W.jsx)(Z,{sx:{px:2},children:(0,W.jsx)(Xqe,{sortField:e,sortDirection:n})}),(0,W.jsx)(Z,{sx:{px:2},children:(0,W.jsx)(Wqe,{})}),(0,W.jsx)(Z,{sx:{px:2,pb:2},children:(0,W.jsx)(qqe,{})}),(0,W.jsx)(Kb,{}),(0,W.jsx)(Kqe,{})]})};async function $qe(){let e=await fetch(`api/matter/labels?_s=${Date.now()}`);return await F_(e,`Failed to fetch labels`),P_(e)}async function eJe(){let e=await fetch(`api/matter/areas?_s=${Date.now()}`);return await F_(e,`Failed to fetch areas`),P_(e)}async function tJe(){let e=await fetch(`api/matter/filter-values?_s=${Date.now()}`);return await F_(e,`Failed to fetch filter values`),P_(e)}var N4=({values:e,copiedId:t,onCopy:n,searchable:r})=>{let[i,a]=(0,C.useState)(``),o=(0,C.useMemo)(()=>{if(!i)return e;let t=i.toLowerCase();return e.filter(e=>e.toLowerCase().includes(t))},[e,i]);return e.length===0?(0,W.jsx)(Z,{sx:{p:2,textAlign:`center`},children:(0,W.jsx)(Q,{color:`text.secondary`,variant:`body2`,children:`No values found.`})}):(0,W.jsxs)(Z,{children:[r&&e.length>10&&(0,W.jsx)(Z,{sx:{px:2,pt:1,pb:.5},children:(0,W.jsx)(OS,{size:`small`,fullWidth:!0,placeholder:`Search...`,value:i,onChange:e=>a(e.target.value),slotProps:{input:{startAdornment:(0,W.jsx)(hF,{position:`start`,children:(0,W.jsx)(vE,{fontSize:`small`})})}}})}),(0,W.jsxs)(Z,{sx:{p:1.5,display:`flex`,flexWrap:`wrap`,gap:.75},children:[o.map(e=>(0,W.jsx)(kv,{label:e,size:`small`,variant:t===e?`filled`:`outlined`,color:t===e?`success`:`default`,onClick:()=>n(e),sx:{fontFamily:`monospace`,fontSize:`0.8rem`}},e)),i&&o.length===0&&(0,W.jsxs)(Q,{color:`text.secondary`,variant:`body2`,sx:{p:1},children:[`No matches for "`,i,`"`]})]})]})},nJe=()=>{let{t:e}=hs(),[t,n]=(0,C.useState)([]),[r,i]=(0,C.useState)([]),[a,o]=(0,C.useState)(null),[s,c]=(0,C.useState)(!0),[l,u]=(0,C.useState)(null),[d,f]=(0,C.useState)(null),p=(0,C.useCallback)(async()=>{c(!0);try{let[e,t,r]=await Promise.all([$qe(),eJe(),tJe()]);n(e),i(t),o(r),u(null)}catch(t){u(t instanceof Error?t.message:e(`labels.loadFailed`))}finally{c(!1)}},[e]);(0,C.useEffect)(()=>{p()},[p]);let m=e=>{navigator.clipboard.writeText(e),f(e),setTimeout(()=>f(null),2e3)};return s?(0,W.jsx)(Z,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,W.jsx)(Vh,{})}):(0,W.jsxs)(Z,{sx:{p:2},children:[(0,W.jsxs)(Q,{variant:`h5`,component:`h1`,sx:{mb:3},children:[(0,W.jsx)(bb,{sx:{mr:1,verticalAlign:`middle`}}),e(`labels.title`)]}),(0,W.jsx)(Kh,{severity:`info`,sx:{mb:3},children:e(`labels.info`)}),l&&(0,W.jsx)(Kh,{severity:`error`,sx:{mb:2},children:l}),(0,W.jsxs)(Q,{variant:`h6`,sx:{mb:1},children:[(0,W.jsx)(cE,{sx:{mr:.5,fontSize:20,verticalAlign:`middle`}}),e(`labels.labelsSection`),` (`,t.length,`)`]}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mb:2},children:e(`labels.labelsHint`)}),(0,W.jsx)(vv,{sx:{mb:4},children:t.length===0?(0,W.jsx)(Z,{sx:{p:3,textAlign:`center`},children:(0,W.jsx)(Q,{color:`text.secondary`,children:e(`labels.noLabels`)})}):(0,W.jsx)(vC,{children:(0,W.jsxs)(pC,{size:`small`,children:[(0,W.jsx)(bC,{children:(0,W.jsxs)(CC,{children:[(0,W.jsx)(_C,{sx:{fontWeight:`bold`},children:e(`labels.displayName`)}),(0,W.jsx)(_C,{sx:{fontWeight:`bold`},children:e(`labels.labelId`)}),(0,W.jsx)(_C,{width:48})]})}),(0,W.jsx)(gC,{children:t.map(t=>(0,W.jsxs)(CC,{hover:!0,children:[(0,W.jsxs)(_C,{children:[t.color&&(0,W.jsx)(Z,{component:`span`,sx:{display:`inline-block`,width:12,height:12,borderRadius:`50%`,backgroundColor:t.color,mr:1,verticalAlign:`middle`}}),t.name]}),(0,W.jsx)(_C,{children:(0,W.jsx)(`code`,{children:t.label_id})}),(0,W.jsx)(_C,{children:(0,W.jsx)(mb,{title:d===t.label_id?e(`common.copied`):e(`common.copyId`),children:(0,W.jsx)(Uh,{size:`small`,onClick:()=>m(t.label_id),children:(0,W.jsx)(gb,{fontSize:`small`})})})})]},t.label_id))})]})})}),(0,W.jsxs)(Q,{variant:`h6`,sx:{mb:1},children:[(0,W.jsx)(AT,{sx:{mr:.5,fontSize:20,verticalAlign:`middle`}}),e(`labels.areasSection`),` (`,r.length,`)`]}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mb:2},children:e(`labels.areasHint`)}),(0,W.jsx)(vv,{sx:{mb:4},children:r.length===0?(0,W.jsx)(Z,{sx:{p:3,textAlign:`center`},children:(0,W.jsx)(Q,{color:`text.secondary`,children:e(`labels.noAreas`)})}):(0,W.jsx)(vC,{children:(0,W.jsxs)(pC,{size:`small`,children:[(0,W.jsx)(bC,{children:(0,W.jsxs)(CC,{children:[(0,W.jsx)(_C,{sx:{fontWeight:`bold`},children:e(`labels.displayName`)}),(0,W.jsx)(_C,{sx:{fontWeight:`bold`},children:e(`labels.areaId`)}),(0,W.jsx)(_C,{width:48})]})}),(0,W.jsx)(gC,{children:r.map(t=>(0,W.jsxs)(CC,{hover:!0,children:[(0,W.jsx)(_C,{children:t.name}),(0,W.jsx)(_C,{children:(0,W.jsx)(`code`,{children:t.area_id})}),(0,W.jsx)(_C,{children:(0,W.jsx)(mb,{title:d===t.area_id?e(`common.copied`):e(`common.copyId`),children:(0,W.jsx)(Uh,{size:`small`,onClick:()=>m(t.area_id),children:(0,W.jsx)(gb,{fontSize:`small`})})})})]},t.area_id))})]})})}),a&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Q,{variant:`h6`,sx:{mb:2},children:e(`labels.otherFilterValues`)}),(0,W.jsxs)(sC,{defaultExpanded:!0,children:[(0,W.jsxs)(uC,{expandIcon:(0,W.jsx)(nC,{}),children:[(0,W.jsx)(tge,{sx:{mr:1}}),(0,W.jsxs)(Q,{children:[e(`labels.domains`),` (`,a.domains.length,`)`]})]}),(0,W.jsxs)(cC,{sx:{p:0},children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{px:2,pb:1},children:e(`labels.domainsHint`)}),(0,W.jsx)(N4,{values:a.domains,copiedId:d,onCopy:m})]})]}),(0,W.jsxs)(sC,{children:[(0,W.jsxs)(uC,{expandIcon:(0,W.jsx)(nC,{}),children:[(0,W.jsx)(iE,{sx:{mr:1}}),(0,W.jsxs)(Q,{children:[e(`labels.platforms`),` (`,a.platforms.length,`)`]})]}),(0,W.jsxs)(cC,{sx:{p:0},children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{px:2,pb:1},children:e(`labels.platformsHint`)}),(0,W.jsx)(N4,{values:a.platforms,copiedId:d,onCopy:m})]})]}),(0,W.jsxs)(sC,{children:[(0,W.jsxs)(uC,{expandIcon:(0,W.jsx)(nC,{}),children:[(0,W.jsx)(bhe,{sx:{mr:1}}),(0,W.jsxs)(Q,{children:[e(`labels.entityCategories`),` (`,a.entityCategories.length,`)`]})]}),(0,W.jsxs)(cC,{sx:{p:0},children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{px:2,pb:1},children:e(`labels.entityCategoriesHint`)}),(0,W.jsx)(N4,{values:a.entityCategories,copiedId:d,onCopy:m})]})]}),(0,W.jsxs)(sC,{children:[(0,W.jsxs)(uC,{expandIcon:(0,W.jsx)(nC,{}),children:[(0,W.jsx)(bhe,{sx:{mr:1}}),(0,W.jsxs)(Q,{children:[e(`labels.deviceClasses`),` (`,a.deviceClasses.length,`)`]})]}),(0,W.jsxs)(cC,{sx:{p:0},children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{px:2,pb:1},children:e(`labels.deviceClassesHint`)}),(0,W.jsx)(N4,{values:a.deviceClasses,copiedId:d,onCopy:m,searchable:!0})]})]}),(0,W.jsxs)(sC,{children:[(0,W.jsxs)(uC,{expandIcon:(0,W.jsx)(nC,{}),children:[(0,W.jsx)(_b,{sx:{mr:1}}),(0,W.jsxs)(Q,{children:[e(`labels.deviceNames`),` (`,a.deviceNames.length,`)`]})]}),(0,W.jsxs)(cC,{sx:{p:0},children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{px:2,pb:1},children:e(`labels.deviceNamesHint`)}),(0,W.jsx)(N4,{values:a.deviceNames,copiedId:d,onCopy:m,searchable:!0})]})]}),(0,W.jsxs)(sC,{children:[(0,W.jsxs)(uC,{expandIcon:(0,W.jsx)(nC,{}),children:[(0,W.jsx)(_b,{sx:{mr:1}}),(0,W.jsxs)(Q,{children:[e(`labels.productNames`),` (`,a.productNames.length,`)`]})]}),(0,W.jsxs)(cC,{sx:{p:0},children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{px:2,pb:1},children:e(`labels.productNamesHint`)}),(0,W.jsx)(N4,{values:a.productNames,copiedId:d,onCopy:m,searchable:!0})]})]})]})]})};async function rJe(){let e=await fetch(`api/lock-credentials`);return await F_(e,`Failed to fetch lock credentials`),P_(e)}async function iJe(e,t){let n=await fetch(`api/lock-credentials/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});return await F_(n,`Failed to update lock credential`),P_(n)}async function aJe(e,t){let n=await fetch(`api/lock-credentials/${encodeURIComponent(e)}/enabled`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:t})});return await F_(n,`Failed to toggle credential`),P_(n)}async function oJe(e){await F_(await fetch(`api/lock-credentials/${encodeURIComponent(e)}`,{method:`DELETE`}),`Failed to delete lock credential`)}var sJe=({open:e,onClose:t,onSave:n,initialEntityId:r=``,initialName:i=``,isEdit:a=!1})=>{let{t:o}=hs(),[s,c]=(0,C.useState)(r),[l,u]=(0,C.useState)(``),[d,f]=(0,C.useState)(i),[p,m]=(0,C.useState)(``),[h,g]=(0,C.useState)(!1);return(0,C.useEffect)(()=>{e&&(c(r),f(i),u(``),m(``))},[e,r,i]),(0,W.jsxs)(Vb,{open:e,onClose:t,maxWidth:`sm`,fullWidth:!0,children:[(0,W.jsx)(Wb,{children:o(a?`lockCredentials.editCredential`:`lockCredentials.addCredential`)}),(0,W.jsx)(Ub,{children:(0,W.jsxs)(Z,{sx:{display:`flex`,flexDirection:`column`,gap:2,mt:1},children:[p&&(0,W.jsx)(Kh,{severity:`error`,children:p}),(0,W.jsx)(OS,{label:o(`lockCredentials.lockEntityId`),placeholder:`lock.front_door`,value:s,onChange:e=>c(e.target.value),disabled:a,fullWidth:!0,helperText:o(`lockCredentials.lockEntityHelperText`)}),(0,W.jsx)(OS,{label:o(`lockCredentials.pinCode`),type:`password`,placeholder:`1234`,value:l,onChange:e=>u(e.target.value.replace(/\D/g,``).slice(0,8)),fullWidth:!0,helperText:`4-8 digit PIN code for this lock`,inputProps:{inputMode:`numeric`,pattern:`[0-9]*`}}),(0,W.jsx)(OS,{label:o(`lockCredentials.nameOptional`),placeholder:o(`lockCredentials.namePlaceholder`),value:d,onChange:e=>f(e.target.value),fullWidth:!0,helperText:o(`lockCredentials.nameHelperText`)})]})}),(0,W.jsxs)(Hb,{children:[(0,W.jsx)(_v,{onClick:t,disabled:h,children:o(`common.cancel`)}),(0,W.jsx)(_v,{onClick:async()=>{if(!s.trim()){m(o(`lockCredentials.entityRequired`));return}if(!l||l.length<4||l.length>8){m(o(`lockCredentials.pinLength`));return}if(!/^\d+$/.test(l)){m(o(`lockCredentials.pinDigitsOnly`));return}g(!0);try{await n(s.trim(),l,d.trim()),t()}catch(e){m(e instanceof Error?e.message:o(`lockCredentials.saveFailed`))}finally{g(!1)}},variant:`contained`,disabled:h,startIcon:h?(0,W.jsx)(Vh,{size:16}):(0,W.jsx)(_E,{}),children:o(`common.save`)})]})]})},cJe=()=>{let{t:e}=hs(),[t,n]=(0,C.useState)([]),[r,i]=(0,C.useState)(!0),[a,o]=(0,C.useState)(null),[s,c]=(0,C.useState)(!1),[l,u]=(0,C.useState)(null),d=(0,C.useCallback)(async()=>{i(!0);try{n((await rJe()).credentials),o(null)}catch(t){o(t instanceof Error?t.message:e(`lockCredentials.loadFailed`))}finally{i(!1)}},[e]);(0,C.useEffect)(()=>{d()},[d]);let f=async(e,t,n)=>{await iJe(e,{entityId:e,pinCode:t,name:n||void 0,enabled:!0}),await d()},[p,m]=(0,C.useState)(null),h=async t=>{m(null);try{await oJe(t),await d()}catch(t){o(t instanceof Error?t.message:e(`lockCredentials.deleteFailed`))}},g=async t=>{try{await aJe(t.entityId,!t.enabled),await d()}catch(t){o(t instanceof Error?t.message:e(`lockCredentials.updateFailed`))}},_=e=>{u(e),c(!0)},v=()=>{u(null),c(!0)};return(0,W.jsxs)(Z,{sx:{p:2},children:[(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,mb:3},children:[(0,W.jsxs)(Q,{variant:`h5`,component:`h1`,children:[(0,W.jsx)(kT,{sx:{mr:1,verticalAlign:`middle`}}),e(`lockCredentials.title`)]}),(0,W.jsx)(_v,{variant:`contained`,startIcon:(0,W.jsx)(hb,{}),onClick:v,children:e(`lockCredentials.addCredential`)})]}),(0,W.jsx)(Kh,{severity:`info`,sx:{mb:3},children:`Configure PIN codes for locks that require authentication for remote lock/unlock operations. The PIN will be sent with lock/unlock commands to Matter locks.`}),a&&(0,W.jsx)(Kh,{severity:`error`,sx:{mb:2},children:a}),r?(0,W.jsx)(Z,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,W.jsx)(Vh,{})}):t.length===0?(0,W.jsx)(vv,{children:(0,W.jsxs)(xv,{sx:{textAlign:`center`,py:4},children:[(0,W.jsx)(kT,{sx:{fontSize:48,color:`text.secondary`,mb:2}}),(0,W.jsx)(Q,{variant:`h6`,color:`text.secondary`,children:`No lock credentials configured`}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mb:2},children:`Add a PIN code for your Matter locks to enable remote lock/unlock`}),(0,W.jsx)(_v,{variant:`outlined`,startIcon:(0,W.jsx)(hb,{}),onClick:v,children:`Add Your First Credential`})]})}):(0,W.jsx)(vv,{children:(0,W.jsx)(ny,{children:t.map((n,r)=>(0,W.jsxs)(ay,{divider:r<t.length-1,onClick:()=>_(n),sx:{cursor:`pointer`,"&:hover":{bgcolor:`action.hover`}},children:[(0,W.jsx)(sy,{children:(0,W.jsx)(kT,{color:n.enabled?`primary`:`disabled`})}),(0,W.jsx)(ly,{primary:n.name||n.entityId,secondary:(0,W.jsxs)(W.Fragment,{children:[n.name&&(0,W.jsx)(Q,{component:`span`,variant:`body2`,color:`text.secondary`,children:n.entityId}),(0,W.jsx)(Q,{component:`span`,variant:`body2`,color:`text.secondary`,sx:{ml:n.name?2:0},children:`PIN: ****`})]})}),(0,W.jsxs)(iy,{children:[(0,W.jsx)(mb,{title:n.enabled?e(`lockCredentials.disable`):e(`lockCredentials.enable`),children:(0,W.jsx)(YS,{edge:`end`,checked:n.enabled,onChange:e=>{e.stopPropagation(),g(n)}})}),(0,W.jsx)(mb,{title:e(`common.delete`),children:(0,W.jsx)(Uh,{edge:`end`,onClick:e=>{e.stopPropagation(),m(n.entityId)},sx:{ml:1},children:(0,W.jsx)(zS,{})})})]})]},n.entityId))})}),(0,W.jsx)(sJe,{open:s,onClose:()=>c(!1),onSave:f,initialEntityId:l?.entityId,initialName:l?.name,isEdit:!!l}),(0,W.jsx)(qT,{open:p!==null,title:e(`lockCredentials.confirmDeleteTitle`),message:e(`lockCredentials.confirmDeleteMessage`,{entity:p??``}),confirmLabel:e(`common.delete`),confirmColor:`error`,onConfirm:()=>{p&&h(p)},onCancel:()=>m(null)})]})},lJe=()=>{let e=Cr(),{t}=hs();return(0,W.jsxs)(Z,{display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,minHeight:`60vh`,gap:2,p:4,children:[(0,W.jsx)(qhe,{color:`disabled`,sx:{fontSize:64}}),(0,W.jsx)(Q,{variant:`h5`,fontWeight:600,children:t(`notFound.title`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:t(`notFound.description`)}),(0,W.jsx)(_v,{variant:`contained`,startIcon:(0,W.jsx)(oE,{}),onClick:()=>e(Y9.dashboard),children:t(`notFound.backToDashboard`)})]})};function P4(e){if(typeof e==`string`||typeof e==`number`)return``+e;let t=``;if(Array.isArray(e))for(let n=0,r;n<e.length;n++)(r=P4(e[n]))!==``&&(t+=(t&&` `)+r);else for(let n in e)e[n]&&(t+=(t&&` `)+n);return t}var uJe={value:()=>{}};function F4(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+``)||r in n||/[\s.]/.test(r))throw Error(`illegal type: `+r);n[r]=[]}return new I4(n)}function I4(e){this._=e}function dJe(e,t){return e.trim().split(/^|\s+/).map(function(e){var n=``,r=e.indexOf(`.`);if(r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw Error(`unknown type: `+e);return{type:e,name:n}})}I4.prototype=F4.prototype={constructor:I4,on:function(e,t){var n=this._,r=dJe(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(e=r[a]).type)&&(i=fJe(n[i],e.name)))return i;return}if(t!=null&&typeof t!=`function`)throw Error(`invalid callback: `+t);for(;++a<o;)if(i=(e=r[a]).type)n[i]=L4(n[i],e.name,t);else if(t==null)for(i in n)n[i]=L4(n[i],e.name,null);return this},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new I4(e)},call:function(e,t){if((i=arguments.length-2)>0)for(var n=Array(i),r=0,i,a;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(a=this._[e],r=0,i=a.length;r<i;++r)a[r].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(var r=this._[e],i=0,a=r.length;i<a;++i)r[i].value.apply(t,n)}};function fJe(e,t){for(var n=0,r=e.length,i;n<r;++n)if((i=e[n]).name===t)return i.value}function L4(e,t,n){for(var r=0,i=e.length;r<i;++r)if(e[r].name===t){e[r]=uJe,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var R4={svg:`http://www.w3.org/2000/svg`,xhtml:`http://www.w3.org/1999/xhtml`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`};function z4(e){var t=e+=``,n=t.indexOf(`:`);return n>=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),R4.hasOwnProperty(t)?{space:R4[t],local:e}:e}function pJe(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===`http://www.w3.org/1999/xhtml`&&t.documentElement.namespaceURI===`http://www.w3.org/1999/xhtml`?t.createElement(e):t.createElementNS(n,e)}}function mJe(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function B4(e){var t=z4(e);return(t.local?mJe:pJe)(t)}function hJe(){}function V4(e){return e==null?hJe:function(){return this.querySelector(e)}}function gJe(e){typeof e!=`function`&&(e=V4(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=Array(o),c,l,u=0;u<o;++u)(c=a[u])&&(l=e.call(c,c.__data__,u,a))&&(`__data__`in c&&(l.__data__=c.__data__),s[u]=l);return new n3(r,this._parents)}function _Je(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function vJe(){return[]}function H4(e){return e==null?vJe:function(){return this.querySelectorAll(e)}}function yJe(e){return function(){return _Je(e.apply(this,arguments))}}function bJe(e){e=typeof e==`function`?yJe(e):H4(e);for(var t=this._groups,n=t.length,r=[],i=[],a=0;a<n;++a)for(var o=t[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&(r.push(e.call(c,c.__data__,l,o)),i.push(c));return new n3(r,i)}function U4(e){return function(){return this.matches(e)}}function W4(e){return function(t){return t.matches(e)}}var xJe=Array.prototype.find;function SJe(e){return function(){return xJe.call(this.children,e)}}function CJe(){return this.firstElementChild}function wJe(e){return this.select(e==null?CJe:SJe(typeof e==`function`?e:W4(e)))}var TJe=Array.prototype.filter;function EJe(){return Array.from(this.children)}function DJe(e){return function(){return TJe.call(this.children,e)}}function OJe(e){return this.selectAll(e==null?EJe:DJe(typeof e==`function`?e:W4(e)))}function kJe(e){typeof e!=`function`&&(e=U4(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new n3(r,this._parents)}function G4(e){return Array(e.length)}function AJe(){return new n3(this._enter||this._groups.map(G4),this._parents)}function K4(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}K4.prototype={constructor:K4,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function jJe(e){return function(){return e}}function MJe(e,t,n,r,i,a){for(var o=0,s,c=t.length,l=a.length;o<l;++o)(s=t[o])?(s.__data__=a[o],r[o]=s):n[o]=new K4(e,a[o]);for(;o<c;++o)(s=t[o])&&(i[o]=s)}function NJe(e,t,n,r,i,a,o){var s,c,l=new Map,u=t.length,d=a.length,f=Array(u),p;for(s=0;s<u;++s)(c=t[s])&&(f[s]=p=o.call(c,c.__data__,s,t)+``,l.has(p)?i[s]=c:l.set(p,c));for(s=0;s<d;++s)p=o.call(e,a[s],s,a)+``,(c=l.get(p))?(r[s]=c,c.__data__=a[s],l.delete(p)):n[s]=new K4(e,a[s]);for(s=0;s<u;++s)(c=t[s])&&l.get(f[s])===c&&(i[s]=c)}function PJe(e){return e.__data__}function FJe(e,t){if(!arguments.length)return Array.from(this,PJe);var n=t?NJe:MJe,r=this._parents,i=this._groups;typeof e!=`function`&&(e=jJe(e));for(var a=i.length,o=Array(a),s=Array(a),c=Array(a),l=0;l<a;++l){var u=r[l],d=i[l],f=d.length,p=IJe(e.call(u,u&&u.__data__,l,r)),m=p.length,h=s[l]=Array(m),g=o[l]=Array(m);n(u,d,h,g,c[l]=Array(f),p,t);for(var _=0,v=0,y,b;_<m;++_)if(y=h[_]){for(_>=v&&(v=_+1);!(b=g[v])&&++v<m;);y._next=b||null}}return o=new n3(o,r),o._enter=s,o._exit=c,o}function IJe(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function LJe(){return new n3(this._exit||this._groups.map(G4),this._parents)}function RJe(e,t,n){var r=this.enter(),i=this,a=this.exit();return typeof e==`function`?(r=e(r),r&&=r.selection()):r=r.append(e+``),t!=null&&(i=t(i),i&&=i.selection()),n==null?a.remove():n(a),r&&i?r.merge(i).order():i}function zJe(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,i=n.length,a=r.length,o=Math.min(i,a),s=Array(i),c=0;c<o;++c)for(var l=n[c],u=r[c],d=l.length,f=s[c]=Array(d),p,m=0;m<d;++m)(p=l[m]||u[m])&&(f[m]=p);for(;c<i;++c)s[c]=n[c];return new n3(s,this._parents)}function BJe(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r=e[t],i=r.length-1,a=r[i],o;--i>=0;)(o=r[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function VJe(e){e||=HJe;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;a<r;++a){for(var o=n[a],s=o.length,c=i[a]=Array(s),l,u=0;u<s;++u)(l=o[u])&&(c[u]=l);c.sort(t)}return new n3(i,this._parents).order()}function HJe(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function UJe(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function WJe(){return Array.from(this)}function GJe(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null}function KJe(){let e=0;for(let t of this)++e;return e}function qJe(){return!this.node()}function JJe(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var i=t[n],a=0,o=i.length,s;a<o;++a)(s=i[a])&&e.call(s,s.__data__,a,i);return this}function YJe(e){return function(){this.removeAttribute(e)}}function XJe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function ZJe(e,t){return function(){this.setAttribute(e,t)}}function QJe(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function $Je(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function eYe(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function tYe(e,t){var n=z4(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((t==null?n.local?XJe:YJe:typeof t==`function`?n.local?eYe:$Je:n.local?QJe:ZJe)(n,t))}function q4(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function nYe(e){return function(){this.style.removeProperty(e)}}function rYe(e,t,n){return function(){this.style.setProperty(e,t,n)}}function iYe(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function aYe(e,t,n){return arguments.length>1?this.each((t==null?nYe:typeof t==`function`?iYe:rYe)(e,t,n??``)):J4(this.node(),e)}function J4(e,t){return e.style.getPropertyValue(t)||q4(e).getComputedStyle(e,null).getPropertyValue(t)}function oYe(e){return function(){delete this[e]}}function sYe(e,t){return function(){this[e]=t}}function cYe(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function lYe(e,t){return arguments.length>1?this.each((t==null?oYe:typeof t==`function`?cYe:sYe)(e,t)):this.node()[e]}function Y4(e){return e.trim().split(/^|\s+/)}function X4(e){return e.classList||new Z4(e)}function Z4(e){this._node=e,this._names=Y4(e.getAttribute(`class`)||``)}Z4.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(`class`,this._names.join(` `)))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(`class`,this._names.join(` `)))},contains:function(e){return this._names.indexOf(e)>=0}};function Q4(e,t){for(var n=X4(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function $4(e,t){for(var n=X4(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function uYe(e){return function(){Q4(this,e)}}function dYe(e){return function(){$4(this,e)}}function fYe(e,t){return function(){(t.apply(this,arguments)?Q4:$4)(this,e)}}function pYe(e,t){var n=Y4(e+``);if(arguments.length<2){for(var r=X4(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof t==`function`?fYe:t?uYe:dYe)(n,t))}function mYe(){this.textContent=``}function hYe(e){return function(){this.textContent=e}}function gYe(e){return function(){this.textContent=e.apply(this,arguments)??``}}function _Ye(e){return arguments.length?this.each(e==null?mYe:(typeof e==`function`?gYe:hYe)(e)):this.node().textContent}function vYe(){this.innerHTML=``}function yYe(e){return function(){this.innerHTML=e}}function bYe(e){return function(){this.innerHTML=e.apply(this,arguments)??``}}function xYe(e){return arguments.length?this.each(e==null?vYe:(typeof e==`function`?bYe:yYe)(e)):this.node().innerHTML}function SYe(){this.nextSibling&&this.parentNode.appendChild(this)}function CYe(){return this.each(SYe)}function wYe(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function TYe(){return this.each(wYe)}function EYe(e){var t=typeof e==`function`?e:B4(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function DYe(){return null}function OYe(e,t){var n=typeof e==`function`?e:B4(e),r=t==null?DYe:typeof t==`function`?t:V4(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function kYe(){var e=this.parentNode;e&&e.removeChild(this)}function AYe(){return this.each(kYe)}function jYe(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function MYe(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function NYe(e){return this.select(e?MYe:jYe)}function PYe(e){return arguments.length?this.property(`__data__`,e):this.node().__data__}function FYe(e){return function(t){e.call(this,t,this.__data__)}}function IYe(e){return e.trim().split(/^|\s+/).map(function(e){var t=``,n=e.indexOf(`.`);return n>=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function LYe(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n<i;++n)a=t[n],(!e.type||a.type===e.type)&&a.name===e.name?this.removeEventListener(a.type,a.listener,a.options):t[++r]=a;++r?t.length=r:delete this.__on}}}function RYe(e,t,n){return function(){var r=this.__on,i,a=FYe(t);if(r){for(var o=0,s=r.length;o<s;++o)if((i=r[o]).type===e.type&&i.name===e.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=a,i.options=n),i.value=t;return}}this.addEventListener(e.type,a,n),i={type:e.type,name:e.name,value:t,listener:a,options:n},r?r.push(i):this.__on=[i]}}function zYe(e,t,n){var r=IYe(e+``),i,a=r.length,o;if(arguments.length<2){var s=this.node().__on;if(s){for(var c=0,l=s.length,u;c<l;++c)for(i=0,u=s[c];i<a;++i)if((o=r[i]).type===u.type&&o.name===u.name)return u.value}return}for(s=t?RYe:LYe,i=0;i<a;++i)this.each(s(r[i],t,n));return this}function e3(e,t,n){var r=q4(e),i=r.CustomEvent;typeof i==`function`?i=new i(t,n):(i=r.document.createEvent(`Event`),n?(i.initEvent(t,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function BYe(e,t){return function(){return e3(this,e,t)}}function VYe(e,t){return function(){return e3(this,e,t.apply(this,arguments))}}function HYe(e,t){return this.each((typeof t==`function`?VYe:BYe)(e,t))}function*UYe(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length,o;i<a;++i)(o=r[i])&&(yield o)}var t3=[null];function n3(e,t){this._groups=e,this._parents=t}function r3(){return new n3([[document.documentElement]],t3)}function WYe(){return this}n3.prototype=r3.prototype={constructor:n3,select:gJe,selectAll:bJe,selectChild:wJe,selectChildren:OJe,filter:kJe,data:FJe,enter:AJe,exit:LJe,join:RJe,merge:zJe,selection:WYe,order:BJe,sort:VJe,call:UJe,nodes:WJe,node:GJe,size:KJe,empty:qJe,each:JJe,attr:tYe,style:aYe,property:lYe,classed:pYe,text:_Ye,html:xYe,raise:CYe,lower:TYe,append:EYe,insert:OYe,remove:AYe,clone:NYe,datum:PYe,on:zYe,dispatch:HYe,[Symbol.iterator]:UYe};function i3(e){return typeof e==`string`?new n3([[document.querySelector(e)]],[document.documentElement]):new n3([[e]],t3)}function GYe(e){let t;for(;t=e.sourceEvent;)e=t;return e}function a3(e,t){if(e=GYe(e),t===void 0&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}if(t.getBoundingClientRect){var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}}return[e.pageX,e.pageY]}var KYe={passive:!1},o3={capture:!0,passive:!1};function s3(e){e.stopImmediatePropagation()}function c3(e){e.preventDefault(),e.stopImmediatePropagation()}function l3(e){var t=e.document.documentElement,n=i3(e).on(`dragstart.drag`,c3,o3);`onselectstart`in t?n.on(`selectstart.drag`,c3,o3):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect=`none`)}function u3(e,t){var n=e.document.documentElement,r=i3(e).on(`dragstart.drag`,null);t&&(r.on(`click.drag`,c3,o3),setTimeout(function(){r.on(`click.drag`,null)},0)),`onselectstart`in n?r.on(`selectstart.drag`,null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}var d3=e=>()=>e;function f3(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:a,x:o,y:s,dx:c,dy:l,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:u}})}f3.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function qYe(e){return!e.ctrlKey&&!e.button}function JYe(){return this.parentNode}function YYe(e,t){return t??{x:e.x,y:e.y}}function XYe(){return navigator.maxTouchPoints||`ontouchstart`in this}function p3(){var e=qYe,t=JYe,n=YYe,r=XYe,i={},a=F4(`start`,`drag`,`end`),o=0,s,c,l,u,d=0;function f(e){e.on(`mousedown.drag`,p).filter(r).on(`touchstart.drag`,g).on(`touchmove.drag`,_,KYe).on(`touchend.drag touchcancel.drag`,v).style(`touch-action`,`none`).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}function p(n,r){if(!(u||!e.call(this,n,r))){var i=y(this,t.call(this,n,r),n,r,`mouse`);i&&(i3(n.view).on(`mousemove.drag`,m,o3).on(`mouseup.drag`,h,o3),l3(n.view),s3(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(c3(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){i3(e.view).on(`mousemove.drag mouseup.drag`,null),u3(e.view,l),c3(e),i.mouse(`end`,e)}function g(n,r){if(e.call(this,n,r)){var i=n.changedTouches,a=t.call(this,n,r),o=i.length,s,c;for(s=0;s<o;++s)(c=y(this,a,n,r,i[s].identifier,i[s]))&&(s3(n),c(`start`,n,i[s]))}}function _(e){var t=e.changedTouches,n=t.length,r,a;for(r=0;r<n;++r)(a=i[t[r].identifier])&&(c3(e),a(`drag`,e,t[r]))}function v(e){var t=e.changedTouches,n=t.length,r,a;for(u&&clearTimeout(u),u=setTimeout(function(){u=null},500),r=0;r<n;++r)(a=i[t[r].identifier])&&(s3(e),a(`end`,e,t[r]))}function y(e,t,r,s,c,l){var u=a.copy(),d=a3(l||r,t),p,m,h;if((h=n.call(e,new f3(`beforestart`,{sourceEvent:r,target:f,identifier:c,active:o,x:d[0],y:d[1],dx:0,dy:0,dispatch:u}),s))!=null)return p=h.x-d[0]||0,m=h.y-d[1]||0,function n(r,a,l){var g=d,_;switch(r){case`start`:i[c]=n,_=o++;break;case`end`:delete i[c],--o;case`drag`:d=a3(l||a,t),_=o;break}u.call(r,e,new f3(r,{sourceEvent:a,subject:h,target:f,identifier:c,active:_,x:d[0]+p,y:d[1]+m,dx:d[0]-g[0],dy:d[1]-g[1],dispatch:u}),s)}}return f.filter=function(t){return arguments.length?(e=typeof t==`function`?t:d3(!!t),f):e},f.container=function(e){return arguments.length?(t=typeof e==`function`?e:d3(e),f):t},f.subject=function(e){return arguments.length?(n=typeof e==`function`?e:d3(e),f):n},f.touchable=function(e){return arguments.length?(r=typeof e==`function`?e:d3(!!e),f):r},f.on=function(){var e=a.on.apply(a,arguments);return e===a?f:e},f.clickDistance=function(e){return arguments.length?(d=(e=+e)*e,f):Math.sqrt(d)},f}function m3(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function h3(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function g3(){}var _3=.7,v3=1/_3,y3=`\\s*([+-]?\\d+)\\s*`,b3=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,x3=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,ZYe=/^#([0-9a-f]{3,8})$/,QYe=RegExp(`^rgb\\(${y3},${y3},${y3}\\)$`),$Ye=RegExp(`^rgb\\(${x3},${x3},${x3}\\)$`),eXe=RegExp(`^rgba\\(${y3},${y3},${y3},${b3}\\)$`),tXe=RegExp(`^rgba\\(${x3},${x3},${x3},${b3}\\)$`),nXe=RegExp(`^hsl\\(${b3},${x3},${x3}\\)$`),rXe=RegExp(`^hsla\\(${b3},${x3},${x3},${b3}\\)$`),S3={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};m3(g3,T3,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:C3,formatHex:C3,formatHex8:iXe,formatHsl:aXe,formatRgb:w3,toString:w3});function C3(){return this.rgb().formatHex()}function iXe(){return this.rgb().formatHex8()}function aXe(){return I3(this).formatHsl()}function w3(){return this.rgb().formatRgb()}function T3(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=ZYe.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?E3(t):n===3?new k3(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?D3(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?D3(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=QYe.exec(e))?new k3(t[1],t[2],t[3],1):(t=$Ye.exec(e))?new k3(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=eXe.exec(e))?D3(t[1],t[2],t[3],t[4]):(t=tXe.exec(e))?D3(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=nXe.exec(e))?F3(t[1],t[2]/100,t[3]/100,1):(t=rXe.exec(e))?F3(t[1],t[2]/100,t[3]/100,t[4]):S3.hasOwnProperty(e)?E3(S3[e]):e===`transparent`?new k3(NaN,NaN,NaN,0):null}function E3(e){return new k3(e>>16&255,e>>8&255,e&255,1)}function D3(e,t,n,r){return r<=0&&(e=t=n=NaN),new k3(e,t,n,r)}function oXe(e){return e instanceof g3||(e=T3(e)),e?(e=e.rgb(),new k3(e.r,e.g,e.b,e.opacity)):new k3}function O3(e,t,n,r){return arguments.length===1?oXe(e):new k3(e,t,n,r??1)}function k3(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}m3(k3,O3,h3(g3,{brighter(e){return e=e==null?v3:v3**+e,new k3(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?_3:_3**+e,new k3(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new k3(N3(this.r),N3(this.g),N3(this.b),M3(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:A3,formatHex:A3,formatHex8:sXe,formatRgb:j3,toString:j3}));function A3(){return`#${P3(this.r)}${P3(this.g)}${P3(this.b)}`}function sXe(){return`#${P3(this.r)}${P3(this.g)}${P3(this.b)}${P3((isNaN(this.opacity)?1:this.opacity)*255)}`}function j3(){let e=M3(this.opacity);return`${e===1?`rgb(`:`rgba(`}${N3(this.r)}, ${N3(this.g)}, ${N3(this.b)}${e===1?`)`:`, ${e})`}`}function M3(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function N3(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function P3(e){return e=N3(e),(e<16?`0`:``)+e.toString(16)}function F3(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new L3(e,t,n,r)}function I3(e){if(e instanceof L3)return new L3(e.h,e.s,e.l,e.opacity);if(e instanceof g3||(e=T3(e)),!e)return new L3;if(e instanceof L3)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new L3(o,s,c,e.opacity)}function cXe(e,t,n,r){return arguments.length===1?I3(e):new L3(e,t,n,r??1)}function L3(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}m3(L3,cXe,h3(g3,{brighter(e){return e=e==null?v3:v3**+e,new L3(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?_3:_3**+e,new L3(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new k3(B3(e>=240?e-240:e+120,i,r),B3(e,i,r),B3(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new L3(R3(this.h),z3(this.s),z3(this.l),M3(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=M3(this.opacity);return`${e===1?`hsl(`:`hsla(`}${R3(this.h)}, ${z3(this.s)*100}%, ${z3(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function R3(e){return e=(e||0)%360,e<0?e+360:e}function z3(e){return Math.max(0,Math.min(1,e||0))}function B3(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var V3=e=>()=>e;function lXe(e,t){return function(n){return e+n*t}}function uXe(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function dXe(e){return(e=+e)==1?H3:function(t,n){return n-t?uXe(t,n,e):V3(isNaN(t)?n:t)}}function H3(e,t){var n=t-e;return n?lXe(e,n):V3(isNaN(e)?t:e)}var U3=(function e(t){var n=dXe(t);function r(e,t){var r=n((e=O3(e)).r,(t=O3(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=H3(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function fXe(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function pXe(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function mXe(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o;for(o=0;o<r;++o)i[o]=J3(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function hXe(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function W3(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function gXe(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=J3(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var G3=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,K3=new RegExp(G3.source,`g`);function _Xe(e){return function(){return e}}function vXe(e){return function(t){return e(t)+``}}function q3(e,t){var n=G3.lastIndex=K3.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=G3.exec(e))&&(i=K3.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:W3(r,i)})),n=K3.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?vXe(c[0].x):_Xe(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}function J3(e,t){var n=typeof t,r;return t==null||n===`boolean`?V3(t):(n===`number`?W3:n===`string`?(r=T3(t))?(t=r,U3):q3:t instanceof T3?U3:t instanceof Date?hXe:pXe(t)?fXe:Array.isArray(t)?mXe:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?gXe:W3)(e,t)}var Y3=180/Math.PI,X3={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Z3(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*Y3,skewX:Math.atan(c)*Y3,scaleX:o,scaleY:s}}var Q3;function yXe(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?X3:Z3(t.a,t.b,t.c,t.d,t.e,t.f)}function bXe(e){return e==null||(Q3||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),Q3.setAttribute(`transform`,e),!(e=Q3.transform.baseVal.consolidate()))?X3:(e=e.matrix,Z3(e.a,e.b,e.c,e.d,e.e,e.f))}function $3(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:W3(e,i)},{i:c-2,x:W3(r,a)})}else (i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:W3(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:W3(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:W3(e,n)},{i:s-2,x:W3(t,r)})}else (n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var xXe=$3(yXe,`px, `,`px)`,`deg)`),SXe=$3(bXe,`, `,`)`,`)`),CXe=1e-12;function e6(e){return((e=Math.exp(e))+1/e)/2}function wXe(e){return((e=Math.exp(e))-1/e)/2}function TXe(e){return((e=Math.exp(2*e))-1)/(e+1)}var t6=(function e(t,n,r){function i(e,i){var a=e[0],o=e[1],s=e[2],c=i[0],l=i[1],u=i[2],d=c-a,f=l-o,p=d*d+f*f,m,h;if(p<CXe)h=Math.log(u/s)/t,m=function(e){return[a+e*d,o+e*f,s*Math.exp(t*e*h)]};else{var g=Math.sqrt(p),_=(u*u-s*s+r*p)/(2*s*n*g),v=(u*u-s*s-r*p)/(2*u*n*g),y=Math.log(Math.sqrt(_*_+1)-_);h=(Math.log(Math.sqrt(v*v+1)-v)-y)/t,m=function(e){var r=e*h,i=e6(y),c=s/(n*g)*(i*TXe(t*r+y)-wXe(y));return[a+c*d,o+c*f,s*i/e6(t*r+y)]}}return m.duration=h*1e3*t/Math.SQRT2,m}return i.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},i})(Math.SQRT2,2,4),n6=0,r6=0,i6=0,a6=1e3,o6,s6,c6=0,l6=0,u6=0,d6=typeof performance==`object`&&performance.now?performance:Date,f6=typeof window==`object`&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function p6(){return l6||=(f6(EXe),d6.now()+u6)}function EXe(){l6=0}function m6(){this._call=this._time=this._next=null}m6.prototype=h6.prototype={constructor:m6,restart:function(e,t,n){if(typeof e!=`function`)throw TypeError(`callback is not a function`);n=(n==null?p6():+n)+(t==null?0:+t),!this._next&&s6!==this&&(s6?s6._next=this:o6=this,s6=this),this._call=e,this._time=n,_6()},stop:function(){this._call&&(this._call=null,this._time=1/0,_6())}};function h6(e,t,n){var r=new m6;return r.restart(e,t,n),r}function DXe(){p6(),++n6;for(var e=o6,t;e;)(t=l6-e._time)>=0&&e._call.call(void 0,t),e=e._next;--n6}function g6(){l6=(c6=d6.now())+u6,n6=r6=0;try{DXe()}finally{n6=0,kXe(),l6=0}}function OXe(){var e=d6.now(),t=e-c6;t>a6&&(u6-=t,c6=e)}function kXe(){for(var e,t=o6,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:o6=n);s6=e,_6(r)}function _6(e){n6||(r6&&=clearTimeout(r6),e-l6>24?(e<1/0&&(r6=setTimeout(g6,e-d6.now()-u6)),i6&&=clearInterval(i6)):(i6||=(c6=d6.now(),setInterval(OXe,a6)),n6=1,f6(g6)))}function v6(e,t,n){var r=new m6;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var AXe=F4(`start`,`end`,`cancel`,`interrupt`),jXe=[];function y6(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;MXe(e,n,{name:t,index:r,group:i,on:AXe,tween:jXe,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function b6(e,t){var n=S6(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function x6(e,t){var n=S6(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function S6(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function MXe(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=h6(a,0,n.time);function a(e){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=e&&o(e-n.delay)}function o(a){var l,u,d,f;if(n.state!==1)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===3)return v6(o);f.state===4?(f.state=6,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l<t&&(f.state=6,f.timer.stop(),f.on.call(`cancel`,e,e.__data__,f.index,f.group),delete r[l])}if(v6(function(){n.state===3&&(n.state=4,n.timer.restart(s,n.delay,n.time),s(a))}),n.state=2,n.on.call(`start`,e,e.__data__,n.index,n.group),n.state===2){for(n.state=3,i=Array(d=n.tween.length),l=0,u=-1;l<d;++l)(f=n.tween[l].value.call(e,e.__data__,n.index,n.group))&&(i[++u]=f);i.length=u+1}}function s(t){for(var r=t<n.duration?n.ease.call(null,t/n.duration):(n.timer.restart(c),n.state=5,1),a=-1,o=i.length;++a<o;)i[a].call(e,r);n.state===5&&(n.on.call(`end`,e,e.__data__,n.index,n.group),c())}function c(){for(var i in n.state=6,n.timer.stop(),delete r[t],r)return;delete e.__transition}}function C6(e,t){var n=e.__transition,r,i,a=!0,o;if(n){for(o in t=t==null?null:t+``,n){if((r=n[o]).name!==t){a=!1;continue}i=r.state>2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]}a&&delete e.__transition}}function NXe(e){return this.each(function(){C6(this,e)})}function PXe(e,t){var n,r;return function(){var i=x6(this,e),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o<s;++o)if(r[o].name===t){r=r.slice(),r.splice(o,1);break}}i.tween=r}}function FXe(e,t,n){var r,i;if(typeof n!=`function`)throw Error();return function(){var a=x6(this,e),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:t,value:n},c=0,l=i.length;c<l;++c)if(i[c].name===t){i[c]=s;break}c===l&&i.push(s)}a.tween=i}}function IXe(e,t){var n=this._id;if(e+=``,arguments.length<2){for(var r=S6(this.node(),n).tween,i=0,a=r.length,o;i<a;++i)if((o=r[i]).name===e)return o.value;return null}return this.each((t==null?PXe:FXe)(n,e,t))}function w6(e,t,n){var r=e._id;return e.each(function(){var e=x6(this,r);(e.value||={})[t]=n.apply(this,arguments)}),function(e){return S6(e,r).value[t]}}function T6(e,t){var n;return(typeof t==`number`?W3:t instanceof T3?U3:(n=T3(t))?(t=n,U3):q3)(e,t)}function LXe(e){return function(){this.removeAttribute(e)}}function RXe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function zXe(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttribute(e);return o===i?null:o===r?a:a=t(r=o,n)}}function BXe(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttributeNS(e.space,e.local);return o===i?null:o===r?a:a=t(r=o,n)}}function VXe(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttribute(e):(o=this.getAttribute(e),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function HXe(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttributeNS(e.space,e.local):(o=this.getAttributeNS(e.space,e.local),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function UXe(e,t){var n=z4(e),r=n===`transform`?SXe:T6;return this.attrTween(e,typeof t==`function`?(n.local?HXe:VXe)(n,r,w6(this,`attr.`+e,t)):t==null?(n.local?RXe:LXe)(n):(n.local?BXe:zXe)(n,r,t))}function WXe(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function GXe(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function KXe(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&GXe(e,i)),n}return i._value=t,i}function qXe(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&WXe(e,i)),n}return i._value=t,i}function JXe(e,t){var n=`attr.`+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!=`function`)throw Error();var r=z4(e);return this.tween(n,(r.local?KXe:qXe)(r,t))}function YXe(e,t){return function(){b6(this,e).delay=+t.apply(this,arguments)}}function XXe(e,t){return t=+t,function(){b6(this,e).delay=t}}function ZXe(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?YXe:XXe)(t,e)):S6(this.node(),t).delay}function QXe(e,t){return function(){x6(this,e).duration=+t.apply(this,arguments)}}function $Xe(e,t){return t=+t,function(){x6(this,e).duration=t}}function eZe(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?QXe:$Xe)(t,e)):S6(this.node(),t).duration}function tZe(e,t){if(typeof t!=`function`)throw Error();return function(){x6(this,e).ease=t}}function nZe(e){var t=this._id;return arguments.length?this.each(tZe(t,e)):S6(this.node(),t).ease}function rZe(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=`function`)throw Error();x6(this,e).ease=n}}function iZe(e){if(typeof e!=`function`)throw Error();return this.each(rZe(this._id,e))}function aZe(e){typeof e!=`function`&&(e=U4(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new D6(r,this._parents,this._name,this._id)}function oZe(e){if(e._id!==this._id)throw Error();for(var t=this._groups,n=e._groups,r=t.length,i=n.length,a=Math.min(r,i),o=Array(r),s=0;s<a;++s)for(var c=t[s],l=n[s],u=c.length,d=o[s]=Array(u),f,p=0;p<u;++p)(f=c[p]||l[p])&&(d[p]=f);for(;s<r;++s)o[s]=t[s];return new D6(o,this._parents,this._name,this._id)}function sZe(e){return(e+``).trim().split(/^|\s+/).every(function(e){var t=e.indexOf(`.`);return t>=0&&(e=e.slice(0,t)),!e||e===`start`})}function cZe(e,t,n){var r,i,a=sZe(t)?b6:x6;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function lZe(e,t){var n=this._id;return arguments.length<2?S6(this.node(),n).on.on(e):this.each(cZe(n,e,t))}function uZe(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function dZe(){return this.on(`end.remove`,uZe(this._id))}function fZe(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=V4(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o<i;++o)for(var s=r[o],c=s.length,l=a[o]=Array(c),u,d,f=0;f<c;++f)(u=s[f])&&(d=e.call(u,u.__data__,f,s))&&(`__data__`in u&&(d.__data__=u.__data__),l[f]=d,y6(l[f],t,n,f,l,S6(u,n)));return new D6(a,this._parents,t,n)}function pZe(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=H4(e));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var c=r[s],l=c.length,u,d=0;d<l;++d)if(u=c[d]){for(var f=e.call(u,u.__data__,d,c),p,m=S6(u,n),h=0,g=f.length;h<g;++h)(p=f[h])&&y6(p,t,n,h,f,m);a.push(f),o.push(u)}return new D6(a,o,t,n)}var mZe=r3.prototype.constructor;function hZe(){return new mZe(this._groups,this._parents)}function gZe(e,t){var n,r,i;return function(){var a=J4(this,e),o=(this.style.removeProperty(e),J4(this,e));return a===o?null:a===n&&o===r?i:i=t(n=a,r=o)}}function E6(e){return function(){this.style.removeProperty(e)}}function _Ze(e,t,n){var r,i=n+``,a;return function(){var o=J4(this,e);return o===i?null:o===r?a:a=t(r=o,n)}}function vZe(e,t,n){var r,i,a;return function(){var o=J4(this,e),s=n(this),c=s+``;return s??(c=s=(this.style.removeProperty(e),J4(this,e))),o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s))}}function yZe(e,t){var n,r,i,a=`style.`+t,o=`end.`+a,s;return function(){var c=x6(this,e),l=c.on,u=c.value[a]==null?s||=E6(t):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(o,i=u),c.on=r}}function bZe(e,t,n){var r=(e+=``)==`transform`?xXe:T6;return t==null?this.styleTween(e,gZe(e,r)).on(`end.style.`+e,E6(e)):typeof t==`function`?this.styleTween(e,vZe(e,r,w6(this,`style.`+e,t))).each(yZe(this._id,e)):this.styleTween(e,_Ze(e,r,t),n).on(`end.style.`+e,null)}function xZe(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function SZe(e,t,n){var r,i;function a(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&xZe(e,a,n)),r}return a._value=t,a}function CZe(e,t,n){var r=`style.`+(e+=``);if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!=`function`)throw Error();return this.tween(r,SZe(e,t,n??``))}function wZe(e){return function(){this.textContent=e}}function TZe(e){return function(){this.textContent=e(this)??``}}function EZe(e){return this.tween(`text`,typeof e==`function`?TZe(w6(this,`text`,e)):wZe(e==null?``:e+``))}function DZe(e){return function(t){this.textContent=e.call(this,t)}}function OZe(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&DZe(r)),t}return r._value=e,r}function kZe(e){var t=`text`;if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!=`function`)throw Error();return this.tween(t,OZe(e))}function AZe(){for(var e=this._name,t=this._id,n=O6(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)if(c=o[l]){var u=S6(c,t);y6(c,e,n,l,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new D6(r,this._parents,e,n)}function jZe(){var e,t,n=this,r=n._id,i=n.size();return new Promise(function(a,o){var s={value:o},c={value:function(){--i===0&&a()}};n.each(function(){var n=x6(this,r),i=n.on;i!==e&&(t=(e=i).copy(),t._.cancel.push(s),t._.interrupt.push(s),t._.end.push(c)),n.on=t}),i===0&&a()})}var MZe=0;function D6(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function NZe(e){return r3().transition(e)}function O6(){return++MZe}var k6=r3.prototype;D6.prototype=NZe.prototype={constructor:D6,select:fZe,selectAll:pZe,selectChild:k6.selectChild,selectChildren:k6.selectChildren,filter:aZe,merge:oZe,selection:hZe,transition:AZe,call:k6.call,nodes:k6.nodes,node:k6.node,size:k6.size,empty:k6.empty,each:k6.each,on:lZe,attr:UXe,attrTween:JXe,style:bZe,styleTween:CZe,text:EZe,textTween:kZe,remove:dZe,tween:IXe,delay:ZXe,duration:eZe,ease:nZe,easeVarying:iZe,end:jZe,[Symbol.iterator]:k6[Symbol.iterator]};function PZe(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var FZe={time:null,delay:0,duration:250,ease:PZe};function IZe(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw Error(`transition ${t} not found`);return n}function LZe(e){var t,n;e instanceof D6?(t=e._id,e=e._name):(t=O6(),(n=FZe).time=p6(),e=e==null?null:e+``);for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&y6(c,e,t,l,o,n||IZe(c,t));return new D6(r,this._parents,e,t)}r3.prototype.interrupt=NXe,r3.prototype.transition=LZe;var A6=e=>()=>e;function RZe(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function j6(e,t,n){this.k=e,this.x=t,this.y=n}j6.prototype={constructor:j6,scale:function(e){return e===1?this:new j6(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new j6(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return`translate(`+this.x+`,`+this.y+`) scale(`+this.k+`)`}};var M6=new j6(1,0,0);N6.prototype=j6.prototype;function N6(e){for(;!e.__zoom;)if(!(e=e.parentNode))return M6;return e.__zoom}function P6(e){e.stopImmediatePropagation()}function F6(e){e.preventDefault(),e.stopImmediatePropagation()}function zZe(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function BZe(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute(`viewBox`)?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function I6(){return this.__zoom||M6}function VZe(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function HZe(){return navigator.maxTouchPoints||`ontouchstart`in this}function UZe(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],a=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function L6(){var e=zZe,t=BZe,n=UZe,r=VZe,i=HZe,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=t6,l=F4(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,I6).on(`wheel.zoom`,w,{passive:!1}).on(`mousedown.zoom`,T).on(`dblclick.zoom`,E).filter(i).on(`touchstart.zoom`,D).on(`touchmove.zoom`,O).on(`touchend.zoom touchcancel.zoom`,k).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}_.transform=function(e,t,n,r){var i=e.selection?e.selection():e;i.property(`__zoom`,I6),e===i?i.interrupt().each(function(){S(this,arguments).event(r).start().zoom(null,typeof t==`function`?t.apply(this,arguments):t).end()}):x(e,t,n,r)},_.scaleBy=function(e,t,n,r){_.scaleTo(e,function(){return this.__zoom.k*(typeof t==`function`?t.apply(this,arguments):t)},n,r)},_.scaleTo=function(e,r,i,a){_.transform(e,function(){var e=t.apply(this,arguments),a=this.__zoom,s=i==null?b(e):typeof i==`function`?i.apply(this,arguments):i,c=a.invert(s),l=typeof r==`function`?r.apply(this,arguments):r;return n(y(v(a,l),s,c),e,o)},i,a)},_.translateBy=function(e,r,i,a){_.transform(e,function(){return n(this.__zoom.translate(typeof r==`function`?r.apply(this,arguments):r,typeof i==`function`?i.apply(this,arguments):i),t.apply(this,arguments),o)},null,a)},_.translateTo=function(e,r,i,a,s){_.transform(e,function(){var e=t.apply(this,arguments),s=this.__zoom,c=a==null?b(e):typeof a==`function`?a.apply(this,arguments):a;return n(M6.translate(c[0],c[1]).scale(s.k).translate(typeof r==`function`?-r.apply(this,arguments):-r,typeof i==`function`?-i.apply(this,arguments):-i),e,o)},a,s)};function v(e,t){return t=Math.max(a[0],Math.min(a[1],t)),t===e.k?e:new j6(t,e.x,e.y)}function y(e,t,n){var r=t[0]-n[0]*e.k,i=t[1]-n[1]*e.k;return r===e.x&&i===e.y?e:new j6(e.k,r,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function x(e,n,r,i){e.on(`start.zoom`,function(){S(this,arguments).event(i).start()}).on(`interrupt.zoom end.zoom`,function(){S(this,arguments).event(i).end()}).tween(`zoom`,function(){var e=this,a=arguments,o=S(e,a).event(i),s=t.apply(e,a),l=r==null?b(s):typeof r==`function`?r.apply(e,a):r,u=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),d=e.__zoom,f=typeof n==`function`?n.apply(e,a):n,p=c(d.invert(l).concat(u/d.k),f.invert(l).concat(u/f.k));return function(e){if(e===1)e=f;else{var t=p(e),n=u/t[2];e=new j6(n,l[0]-t[0]*n,l[1]-t[1]*n)}o.zoom(null,e)}})}function S(e,t,n){return!n&&e.__zooming||new C(e,t)}function C(e,n){this.that=e,this.args=n,this.active=0,this.sourceEvent=null,this.extent=t.apply(e,n),this.taps=0}C.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit(`start`)),this},zoom:function(e,t){return this.mouse&&e!==`mouse`&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&e!==`touch`&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&e!==`touch`&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit(`zoom`),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit(`end`)),this},emit:function(e){var t=i3(this.that).datum();l.call(e,this.that,new RZe(e,{sourceEvent:this.sourceEvent,target:_,type:e,transform:this.that.__zoom,dispatch:l}),t)}};function w(t,...i){if(!e.apply(this,arguments))return;var s=S(this,i).event(t),c=this.__zoom,l=Math.max(a[0],Math.min(a[1],c.k*2**r.apply(this,arguments))),u=a3(t);if(s.wheel)(s.mouse[0][0]!==u[0]||s.mouse[0][1]!==u[1])&&(s.mouse[1]=c.invert(s.mouse[0]=u)),clearTimeout(s.wheel);else if(c.k===l)return;else s.mouse=[u,c.invert(u)],C6(this),s.start();F6(t),s.wheel=setTimeout(d,m),s.zoom(`mouse`,n(y(v(c,l),s.mouse[0],s.mouse[1]),s.extent,o));function d(){s.wheel=null,s.end()}}function T(t,...r){if(f||!e.apply(this,arguments))return;var i=t.currentTarget,a=S(this,r,!0).event(t),s=i3(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=a3(t,i),l=t.clientX,u=t.clientY;l3(t.view),P6(t),a.mouse=[c,this.__zoom.invert(c)],C6(this),a.start();function d(e){if(F6(e),!a.moved){var t=e.clientX-l,r=e.clientY-u;a.moved=t*t+r*r>h}a.event(e).zoom(`mouse`,n(y(a.that.__zoom,a.mouse[0]=a3(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),u3(e.view,a.moved),F6(e),a.event(e).end()}}function E(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=a3(r.changedTouches?r.changedTouches[0]:r,this),l=a.invert(c),u=a.k*(r.shiftKey?.5:2),d=n(y(v(a,u),c,l),t.apply(this,i),o);F6(r),s>0?i3(this).transition().duration(s).call(x,d,c,r):i3(this).call(_.transform,d,c,r)}}function D(t,...n){if(e.apply(this,arguments)){var r=t.touches,i=r.length,a=S(this,n,t.changedTouches.length===i).event(t),o,s,c,l;for(P6(t),s=0;s<i;++s)c=r[s],l=a3(c,this),l=[l,this.__zoom.invert(l),c.identifier],a.touch0?!a.touch1&&a.touch0[2]!==l[2]&&(a.touch1=l,a.taps=0):(a.touch0=l,o=!0,a.taps=1+!!u);u&&=clearTimeout(u),o&&(a.taps<2&&(d=l[0],u=setTimeout(function(){u=null},p)),C6(this),a.start())}}function O(e,...t){if(this.__zooming){var r=S(this,t).event(e),i=e.changedTouches,a=i.length,s,c,l,u;for(F6(e),s=0;s<a;++s)c=i[s],l=a3(c,this),r.touch0&&r.touch0[2]===c.identifier?r.touch0[0]=l:r.touch1&&r.touch1[2]===c.identifier&&(r.touch1[0]=l);if(c=r.that.__zoom,r.touch1){var d=r.touch0[0],f=r.touch0[1],p=r.touch1[0],m=r.touch1[1],h=(h=p[0]-d[0])*h+(h=p[1]-d[1])*h,g=(g=m[0]-f[0])*g+(g=m[1]-f[1])*g;c=v(c,Math.sqrt(h/g)),l=[(d[0]+p[0])/2,(d[1]+p[1])/2],u=[(f[0]+m[0])/2,(f[1]+m[1])/2]}else if(r.touch0)l=r.touch0[0],u=r.touch0[1];else return;r.zoom(`touch`,n(y(c,l,u),r.extent,o))}}function k(e,...t){if(this.__zooming){var n=S(this,t).event(e),r=e.changedTouches,i=r.length,a,o;for(P6(e),f&&clearTimeout(f),f=setTimeout(function(){f=null},p),a=0;a<i;++a)o=r[a],n.touch0&&n.touch0[2]===o.identifier?delete n.touch0:n.touch1&&n.touch1[2]===o.identifier&&delete n.touch1;if(n.touch1&&!n.touch0&&(n.touch0=n.touch1,delete n.touch1),n.touch0)n.touch0[1]=this.__zoom.invert(n.touch0[0]);else if(n.end(),n.taps===2&&(o=a3(o,this),Math.hypot(d[0]-o[0],d[1]-o[1])<g)){var s=i3(this).on(`dblclick.zoom`);s&&s.apply(this,arguments)}}}return _.wheelDelta=function(e){return arguments.length?(r=typeof e==`function`?e:A6(+e),_):r},_.filter=function(t){return arguments.length?(e=typeof t==`function`?t:A6(!!t),_):e},_.touchable=function(e){return arguments.length?(i=typeof e==`function`?e:A6(!!e),_):i},_.extent=function(e){return arguments.length?(t=typeof e==`function`?e:A6([[+e[0][0],+e[0][1]],[+e[1][0],+e[1][1]]]),_):t},_.scaleExtent=function(e){return arguments.length?(a[0]=+e[0],a[1]=+e[1],_):[a[0],a[1]]},_.translateExtent=function(e){return arguments.length?(o[0][0]=+e[0][0],o[1][0]=+e[1][0],o[0][1]=+e[0][1],o[1][1]=+e[1][1],_):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},_.constrain=function(e){return arguments.length?(n=e,_):n},_.duration=function(e){return arguments.length?(s=+e,_):s},_.interpolate=function(e){return arguments.length?(c=e,_):c},_.on=function(){var e=l.on.apply(l,arguments);return e===l?_:e},_.clickDistance=function(e){return arguments.length?(h=(e=+e)*e,_):Math.sqrt(h)},_.tapDistance=function(e){return arguments.length?(g=+e,_):g},_}var R6={error001:()=>`[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001`,error002:()=>`It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.`,error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>`The React Flow parent container needs a width and a height to render the graph.`,error005:()=>`Only child nodes can use a parent extent.`,error006:()=>`Can't create edge. An edge needs a source and a target.`,error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:t,sourceHandle:n,targetHandle:r})=>`Couldn't create edge for ${e} handle id: "${e===`source`?n:r}", edge id: ${t}.`,error010:()=>`Handle: No node id found. Make sure to only use a Handle inside a custom Node.`,error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e=`react`)=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>`useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.`,error015:()=>`It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.`},z6=[[-1/0,-1/0],[1/0,1/0]],B6=[`Enter`,` `,`Escape`],V6={"node.a11yDescription.default":`Press enter or space to select a node. Press delete to remove it and escape to cancel.`,"node.a11yDescription.keyboardDisabled":`Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.`,"node.a11yDescription.ariaLiveMessage":({direction:e,x:t,y:n})=>`Moved selected node ${e}. New position, x: ${t}, y: ${n}`,"edge.a11yDescription.default":`Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.`,"controls.ariaLabel":`Control Panel`,"controls.zoomIn.ariaLabel":`Zoom In`,"controls.zoomOut.ariaLabel":`Zoom Out`,"controls.fitView.ariaLabel":`Fit View`,"controls.interactive.ariaLabel":`Toggle Interactivity`,"minimap.ariaLabel":`Mini Map`,"handle.ariaLabel":`Handle`},H6;(function(e){e.Strict=`strict`,e.Loose=`loose`})(H6||={});var U6;(function(e){e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`})(U6||={});var W6;(function(e){e.Partial=`partial`,e.Full=`full`})(W6||={});var G6={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null},K6;(function(e){e.Bezier=`default`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e.SimpleBezier=`simplebezier`})(K6||={});var q6;(function(e){e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`})(q6||={});var J6;(function(e){e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`})(J6||={});var Y6={[J6.Left]:J6.Right,[J6.Right]:J6.Left,[J6.Top]:J6.Bottom,[J6.Bottom]:J6.Top};function X6(e){return e===null?null:e?`valid`:`invalid`}var Z6=e=>`id`in e&&`source`in e&&`target`in e,WZe=e=>`id`in e&&`position`in e&&!(`source`in e)&&!(`target`in e),Q6=e=>`id`in e&&`internals`in e&&!(`source`in e)&&!(`target`in e),$6=(e,t=[0,0])=>{let{width:n,height:r}=w8(e),i=e.origin??t,a=n*i[0],o=r*i[1];return{x:e.position.x-a,y:e.position.y-o}},GZe=(e,t={nodeOrigin:[0,0]})=>e.length===0?{x:0,y:0,width:0,height:0}:u8(e.reduce((e,n)=>{let r=typeof n==`string`,i=!t.nodeLookup&&!r?n:void 0;return t.nodeLookup&&(i=r?t.nodeLookup.get(n):Q6(n)?n:t.nodeLookup.get(n.id)),c8(e,i?f8(i,t.nodeOrigin):{x:0,y:0,x2:0,y2:0})},{x:1/0,y:1/0,x2:-1/0,y2:-1/0})),e8=(e,t={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},r=!1;return e.forEach(e=>{(t.filter===void 0||t.filter(e))&&(n=c8(n,f8(e)),r=!0)}),r?u8(n):{x:0,y:0,width:0,height:0}},t8=(e,t,[n,r,i]=[0,0,1],a=!1,o=!1)=>{let s={...v8(t,[n,r,i]),width:t.width/i,height:t.height/i},c=[];for(let t of e.values()){let{measured:e,selectable:n=!0,hidden:r=!1}=t;if(o&&!n||r)continue;let i=e.width??t.width??t.initialWidth??null,l=e.height??t.height??t.initialHeight??null,u=m8(s,d8(t)),d=(i??0)*(l??0),f=a&&u>0;(!t.internals.handleBounds||f||u>=d||t.dragging)&&c.push(t)}return c},KZe=(e,t)=>{let n=new Set;return e.forEach(e=>{n.add(e.id)}),t.filter(e=>n.has(e.source)||n.has(e.target))};function qZe(e,t){let n=new Map,r=t?.nodes?new Set(t.nodes.map(e=>e.id)):null;return e.forEach(e=>{e.measured.width&&e.measured.height&&(t?.includeHiddenNodes||!e.hidden)&&(!r||r.has(e.id))&&n.set(e.id,e)}),n}async function JZe({nodes:e,width:t,height:n,panZoom:r,minZoom:i,maxZoom:a},o){if(e.size===0)return Promise.resolve(!0);let s=x8(e8(qZe(e,o)),t,n,o?.minZoom??i,o?.maxZoom??a,o?.padding??.1);return await r.setViewport(s,{duration:o?.duration,ease:o?.ease,interpolate:o?.interpolate}),Promise.resolve(!0)}function n8({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:r=[0,0],nodeExtent:i,onError:a}){let o=n.get(e),s=o.parentId?n.get(o.parentId):void 0,{x:c,y:l}=s?s.internals.positionAbsolute:{x:0,y:0},u=o.origin??r,d=o.extent||i;if(o.extent===`parent`&&!o.expandParent)if(!s)a?.(`005`,R6.error005());else{let e=s.measured.width,t=s.measured.height;e&&t&&(d=[[c,l],[c+e,l+t]])}else s&&C8(o.extent)&&(d=[[o.extent[0][0]+c,o.extent[0][1]+l],[o.extent[1][0]+c,o.extent[1][1]+l]]);let f=C8(d)?i8(t,d,o.measured):t;return(o.measured.width===void 0||o.measured.height===void 0)&&a?.(`015`,R6.error015()),{position:{x:f.x-c+(o.measured.width??0)*u[0],y:f.y-l+(o.measured.height??0)*u[1]},positionAbsolute:f}}async function YZe({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:r,onBeforeDelete:i}){let a=new Set(e.map(e=>e.id)),o=[];for(let e of n){if(e.deletable===!1)continue;let t=a.has(e.id),n=!t&&e.parentId&&o.find(t=>t.id===e.parentId);(t||n)&&o.push(e)}let s=new Set(t.map(e=>e.id)),c=r.filter(e=>e.deletable!==!1),l=KZe(o,c);for(let e of c)s.has(e.id)&&!l.find(t=>t.id===e.id)&&l.push(e);if(!i)return{edges:l,nodes:o};let u=await i({nodes:o,edges:l});return typeof u==`boolean`?u?{edges:l,nodes:o}:{edges:[],nodes:[]}:u}var r8=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),i8=(e={x:0,y:0},t,n)=>({x:r8(e.x,t[0][0],t[1][0]-(n?.width??0)),y:r8(e.y,t[0][1],t[1][1]-(n?.height??0))});function a8(e,t,n){let{width:r,height:i}=w8(n),{x:a,y:o}=n.internals.positionAbsolute;return i8(e,[[a,o],[a+r,o+i]],t)}var o8=(e,t,n)=>e<t?r8(Math.abs(e-t),1,t)/t:e>n?-r8(Math.abs(e-n),1,t)/t:0,s8=(e,t,n=15,r=40)=>[o8(e.x,r,t.width-r)*n,o8(e.y,r,t.height-r)*n],c8=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),l8=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),u8=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),d8=(e,t=[0,0])=>{let{x:n,y:r}=Q6(e)?e.internals.positionAbsolute:$6(e,t);return{x:n,y:r,width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}},f8=(e,t=[0,0])=>{let{x:n,y:r}=Q6(e)?e.internals.positionAbsolute:$6(e,t);return{x:n,y:r,x2:n+(e.measured?.width??e.width??e.initialWidth??0),y2:r+(e.measured?.height??e.height??e.initialHeight??0)}},p8=(e,t)=>u8(c8(l8(e),l8(t))),m8=(e,t)=>{let n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),r=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return Math.ceil(n*r)},h8=e=>g8(e.width)&&g8(e.height)&&g8(e.x)&&g8(e.y),g8=e=>!isNaN(e)&&isFinite(e),XZe=(e,t)=>{},_8=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),v8=({x:e,y:t},[n,r,i],a=!1,o=[1,1])=>{let s={x:(e-n)/i,y:(t-r)/i};return a?_8(s,o):s},y8=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r});function b8(e,t){if(typeof e==`number`)return Math.floor((t-t/(1+e))*.5);if(typeof e==`string`&&e.endsWith(`px`)){let t=parseFloat(e);if(!Number.isNaN(t))return Math.floor(t)}if(typeof e==`string`&&e.endsWith(`%`)){let n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(t*n*.01)}return console.error(`[React Flow] The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function ZZe(e,t,n){if(typeof e==`string`||typeof e==`number`){let r=b8(e,n),i=b8(e,t);return{top:r,right:i,bottom:r,left:i,x:i*2,y:r*2}}if(typeof e==`object`){let r=b8(e.top??e.y??0,n),i=b8(e.bottom??e.y??0,n),a=b8(e.left??e.x??0,t),o=b8(e.right??e.x??0,t);return{top:r,right:o,bottom:i,left:a,x:a+o,y:r+i}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function QZe(e,t,n,r,i,a){let{x:o,y:s}=y8(e,[t,n,r]),{x:c,y:l}=y8({x:e.x+e.width,y:e.y+e.height},[t,n,r]),u=i-c,d=a-l;return{left:Math.floor(o),top:Math.floor(s),right:Math.floor(u),bottom:Math.floor(d)}}var x8=(e,t,n,r,i,a)=>{let o=ZZe(a,t,n),s=(t-o.x)/e.width,c=(n-o.y)/e.height,l=r8(Math.min(s,c),r,i),u=e.x+e.width/2,d=e.y+e.height/2,f=t/2-u*l,p=n/2-d*l,m=QZe(e,f,p,l,t,n),h={left:Math.min(m.left-o.left,0),top:Math.min(m.top-o.top,0),right:Math.min(m.right-o.right,0),bottom:Math.min(m.bottom-o.bottom,0)};return{x:f-h.left+h.right,y:p-h.top+h.bottom,zoom:l}},S8=()=>typeof navigator<`u`&&navigator?.userAgent?.indexOf(`Mac`)>=0;function C8(e){return e!=null&&e!==`parent`}function w8(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function T8(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function E8(e,t={width:0,height:0},n,r,i){let a={...e},o=r.get(n);if(o){let e=o.origin||i;a.x+=o.internals.positionAbsolute.x-(t.width??0)*e[0],a.y+=o.internals.positionAbsolute.y-(t.height??0)*e[1]}return a}function D8(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function $Ze(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function eQe(e){return{...V6,...e||{}}}function O8(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:i}){let{x:a,y:o}=N8(e),s=v8({x:a-(i?.left??0),y:o-(i?.top??0)},r),{x:c,y:l}=n?_8(s,t):s;return{xSnapped:c,ySnapped:l,...s}}var k8=e=>({width:e.offsetWidth,height:e.offsetHeight}),A8=e=>e?.getRootNode?.()||window?.document,tQe=[`INPUT`,`SELECT`,`TEXTAREA`];function j8(e){let t=e.composedPath?.()?.[0]||e.target;return t?.nodeType===1?tQe.includes(t.nodeName)||t.hasAttribute(`contenteditable`)||!!t.closest(`.nokey`):!1}var M8=e=>`clientX`in e,N8=(e,t)=>{let n=M8(e),r=n?e.clientX:e.touches?.[0].clientX,i=n?e.clientY:e.touches?.[0].clientY;return{x:r-(t?.left??0),y:i-(t?.top??0)}},P8=(e,t,n,r,i)=>{let a=t.querySelectorAll(`.${e}`);return!a||!a.length?null:Array.from(a).map(t=>{let a=t.getBoundingClientRect();return{id:t.getAttribute(`data-handleid`),type:e,nodeId:i,position:t.getAttribute(`data-handlepos`),x:(a.left-n.left)/r,y:(a.top-n.top)/r,...k8(t)}})};function F8({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:i,sourceControlY:a,targetControlX:o,targetControlY:s}){let c=e*.125+i*.375+o*.375+n*.125,l=t*.125+a*.375+s*.375+r*.125;return[c,l,Math.abs(c-e),Math.abs(l-t)]}function I8(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function L8({pos:e,x1:t,y1:n,x2:r,y2:i,c:a}){switch(e){case J6.Left:return[t-I8(t-r,a),n];case J6.Right:return[t+I8(r-t,a),n];case J6.Top:return[t,n-I8(n-i,a)];case J6.Bottom:return[t,n+I8(i-n,a)]}}function R8({sourceX:e,sourceY:t,sourcePosition:n=J6.Bottom,targetX:r,targetY:i,targetPosition:a=J6.Top,curvature:o=.25}){let[s,c]=L8({pos:n,x1:e,y1:t,x2:r,y2:i,c:o}),[l,u]=L8({pos:a,x1:r,y1:i,x2:e,y2:t,c:o}),[d,f,p,m]=F8({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:s,sourceControlY:c,targetControlX:l,targetControlY:u});return[`M${e},${t} C${s},${c} ${l},${u} ${r},${i}`,d,f,p,m]}function z8({sourceX:e,sourceY:t,targetX:n,targetY:r}){let i=Math.abs(n-e)/2,a=n<e?n+i:n-i,o=Math.abs(r-t)/2;return[a,r<t?r+o:r-o,i,o]}function nQe({sourceNode:e,targetNode:t,selected:n=!1,zIndex:r=0,elevateOnSelect:i=!1,zIndexMode:a=`basic`}){return a===`manual`?r:(i&&n?r+1e3:r)+Math.max(e.parentId||i&&e.selected?e.internals.z:0,t.parentId||i&&t.selected?t.internals.z:0)}function rQe({sourceNode:e,targetNode:t,width:n,height:r,transform:i}){let a=c8(f8(e),f8(t));return a.x===a.x2&&(a.x2+=1),a.y===a.y2&&(a.y2+=1),m8({x:-i[0]/i[2],y:-i[1]/i[2],width:n/i[2],height:r/i[2]},u8(a))>0}var iQe=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||``}-${n}${r||``}`,aQe=(e,t)=>t.some(t=>t.source===e.source&&t.target===e.target&&(t.sourceHandle===e.sourceHandle||!t.sourceHandle&&!e.sourceHandle)&&(t.targetHandle===e.targetHandle||!t.targetHandle&&!e.targetHandle)),oQe=(e,t,n={})=>{if(!e.source||!e.target)return R6.error006(),t;let r=n.getEdgeId||iQe,i;return i=Z6(e)?{...e}:{...e,id:r(e)},aQe(i,t)?t:(i.sourceHandle===null&&delete i.sourceHandle,i.targetHandle===null&&delete i.targetHandle,t.concat(i))};function B8({sourceX:e,sourceY:t,targetX:n,targetY:r}){let[i,a,o,s]=z8({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,a,o,s]}var V8={[J6.Left]:{x:-1,y:0},[J6.Right]:{x:1,y:0},[J6.Top]:{x:0,y:-1},[J6.Bottom]:{x:0,y:1}},sQe=({source:e,sourcePosition:t=J6.Bottom,target:n})=>t===J6.Left||t===J6.Right?e.x<n.x?{x:1,y:0}:{x:-1,y:0}:e.y<n.y?{x:0,y:1}:{x:0,y:-1},H8=(e,t)=>Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2);function cQe({source:e,sourcePosition:t=J6.Bottom,target:n,targetPosition:r=J6.Top,center:i,offset:a,stepPosition:o}){let s=V8[t],c=V8[r],l={x:e.x+s.x*a,y:e.y+s.y*a},u={x:n.x+c.x*a,y:n.y+c.y*a},d=sQe({source:l,sourcePosition:t,target:u}),f=d.x===0?`y`:`x`,p=d[f],m=[],h,g,_={x:0,y:0},v={x:0,y:0},[,,y,b]=z8({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[f]*c[f]===-1){f===`x`?(h=i.x??l.x+(u.x-l.x)*o,g=i.y??(l.y+u.y)/2):(h=i.x??(l.x+u.x)/2,g=i.y??l.y+(u.y-l.y)*o);let e=[{x:h,y:l.y},{x:h,y:u.y}],t=[{x:l.x,y:g},{x:u.x,y:g}];m=s[f]===p?f===`x`?e:t:f===`x`?t:e}else{let i=[{x:l.x,y:u.y}],o=[{x:u.x,y:l.y}];if(m=f===`x`?s.x===p?o:i:s.y===p?i:o,t===r){let t=Math.abs(e[f]-n[f]);if(t<=a){let r=Math.min(a-1,a-t);s[f]===p?_[f]=(l[f]>e[f]?-1:1)*r:v[f]=(u[f]>n[f]?-1:1)*r}}if(t!==r){let e=f===`x`?`y`:`x`,t=s[f]===c[e],n=l[e]>u[e],r=l[e]<u[e];(s[f]===1&&(!t&&n||t&&r)||s[f]!==1&&(!t&&r||t&&n))&&(m=f===`x`?i:o)}let d={x:l.x+_.x,y:l.y+_.y},y={x:u.x+v.x,y:u.y+v.y};Math.max(Math.abs(d.x-m[0].x),Math.abs(y.x-m[0].x))>=Math.max(Math.abs(d.y-m[0].y),Math.abs(y.y-m[0].y))?(h=(d.x+y.x)/2,g=m[0].y):(h=m[0].x,g=(d.y+y.y)/2)}let x={x:l.x+_.x,y:l.y+_.y},S={x:u.x+v.x,y:u.y+v.y};return[[e,...x.x!==m[0].x||x.y!==m[0].y?[x]:[],...m,...S.x!==m[m.length-1].x||S.y!==m[m.length-1].y?[S]:[],n],h,g,y,b]}function lQe(e,t,n,r){let i=Math.min(H8(e,t)/2,H8(t,n)/2,r),{x:a,y:o}=t;if(e.x===a&&a===n.x||e.y===o&&o===n.y)return`L${a} ${o}`;if(e.y===o){let t=e.x<n.x?-1:1,r=e.y<n.y?1:-1;return`L ${a+i*t},${o}Q ${a},${o} ${a},${o+i*r}`}let s=e.x<n.x?1:-1;return`L ${a},${o+i*(e.y<n.y?-1:1)}Q ${a},${o} ${a+i*s},${o}`}function U8({sourceX:e,sourceY:t,sourcePosition:n=J6.Bottom,targetX:r,targetY:i,targetPosition:a=J6.Top,borderRadius:o=5,centerX:s,centerY:c,offset:l=20,stepPosition:u=.5}){let[d,f,p,m,h]=cQe({source:{x:e,y:t},sourcePosition:n,target:{x:r,y:i},targetPosition:a,center:{x:s,y:c},offset:l,stepPosition:u}),g=`M${d[0].x} ${d[0].y}`;for(let e=1;e<d.length-1;e++)g+=lQe(d[e-1],d[e],d[e+1],o);return g+=`L${d[d.length-1].x} ${d[d.length-1].y}`,[g,f,p,m,h]}function W8(e){return e&&!!(e.internals.handleBounds||e.handles?.length)&&!!(e.measured.width||e.width||e.initialWidth)}function uQe(e){let{sourceNode:t,targetNode:n}=e;if(!W8(t)||!W8(n))return null;let r=t.internals.handleBounds||G8(t.handles),i=n.internals.handleBounds||G8(n.handles),a=q8(r?.source??[],e.sourceHandle),o=q8(e.connectionMode===H6.Strict?i?.target??[]:(i?.target??[]).concat(i?.source??[]),e.targetHandle);if(!a||!o)return e.onError?.(`008`,R6.error008(a?`target`:`source`,{id:e.id,sourceHandle:e.sourceHandle,targetHandle:e.targetHandle})),null;let s=a?.position||J6.Bottom,c=o?.position||J6.Top,l=K8(t,a,s),u=K8(n,o,c);return{sourceX:l.x,sourceY:l.y,targetX:u.x,targetY:u.y,sourcePosition:s,targetPosition:c}}function G8(e){if(!e)return null;let t=[],n=[];for(let r of e)r.width=r.width??1,r.height=r.height??1,r.type===`source`?t.push(r):r.type===`target`&&n.push(r);return{source:t,target:n}}function K8(e,t,n=J6.Left,r=!1){let i=(t?.x??0)+e.internals.positionAbsolute.x,a=(t?.y??0)+e.internals.positionAbsolute.y,{width:o,height:s}=t??w8(e);if(r)return{x:i+o/2,y:a+s/2};switch(t?.position??n){case J6.Top:return{x:i+o/2,y:a};case J6.Right:return{x:i+o,y:a+s/2};case J6.Bottom:return{x:i+o/2,y:a+s};case J6.Left:return{x:i,y:a+s/2}}}function q8(e,t){return e&&(t?e.find(e=>e.id===t):e[0])||null}function J8(e,t){return e?typeof e==`string`?e:`${t?`${t}__`:``}${Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(`&`)}`:``}function dQe(e,{id:t,defaultColor:n,defaultMarkerStart:r,defaultMarkerEnd:i}){let a=new Set;return e.reduce((e,o)=>([o.markerStart||r,o.markerEnd||i].forEach(r=>{if(r&&typeof r==`object`){let i=J8(r,t);a.has(i)||(e.push({id:i,color:r.color||n,...r}),a.add(i))}}),e),[]).sort((e,t)=>e.id.localeCompare(t.id))}var Y8=1e3,fQe=10,X8={nodeOrigin:[0,0],nodeExtent:z6,elevateNodesOnSelect:!0,zIndexMode:`basic`,defaults:{}},pQe={...X8,checkEquality:!0};function Z8(e,t){let n={...e};for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return n}function mQe(e,t,n){let r=Z8(X8,n);for(let n of e.values())if(n.parentId)e5(n,e,t,r);else{let e=i8($6(n,r.nodeOrigin),C8(n.extent)?n.extent:r.nodeExtent,w8(n));n.internals.positionAbsolute=e}}function hQe(e,t){if(!e.handles)return e.measured?t?.internals.handleBounds:void 0;let n=[],r=[];for(let t of e.handles){let i={id:t.id,width:t.width??1,height:t.height??1,nodeId:e.id,x:t.x,y:t.y,position:t.position,type:t.type};t.type===`source`?n.push(i):t.type===`target`&&r.push(i)}return{source:n,target:r}}function Q8(e){return e===`manual`}function $8(e,t,n,r={}){let i=Z8(pQe,r),a={i:0},o=new Map(t),s=i?.elevateNodesOnSelect&&!Q8(i.zIndexMode)?Y8:0,c=e.length>0,l=!1;t.clear(),n.clear();for(let u of e){let e=o.get(u.id);if(i.checkEquality&&u===e?.internals.userNode)t.set(u.id,e);else{let n=i8($6(u,i.nodeOrigin),C8(u.extent)?u.extent:i.nodeExtent,w8(u));e={...i.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:n,handleBounds:hQe(u,e),z:t5(u,s,i.zIndexMode),userNode:u}},t.set(u.id,e)}(e.measured===void 0||e.measured.width===void 0||e.measured.height===void 0)&&!e.hidden&&(c=!1),u.parentId&&e5(e,t,n,r,a),l||=u.selected??!1}return{nodesInitialized:c,hasSelectedNodes:l}}function gQe(e,t){if(!e.parentId)return;let n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function e5(e,t,n,r,i){let{elevateNodesOnSelect:a,nodeOrigin:o,nodeExtent:s,zIndexMode:c}=Z8(X8,r),l=e.parentId,u=t.get(l);if(!u){console.warn(`Parent node ${l} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}gQe(e,n),i&&!u.parentId&&u.internals.rootParentIndex===void 0&&c===`auto`&&(u.internals.rootParentIndex=++i.i,u.internals.z=u.internals.z+i.i*fQe),i&&u.internals.rootParentIndex!==void 0&&(i.i=u.internals.rootParentIndex);let{x:d,y:f,z:p}=_Qe(e,u,o,s,a&&!Q8(c)?Y8:0,c),{positionAbsolute:m}=e.internals,h=d!==m.x||f!==m.y;(h||p!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:h?{x:d,y:f}:m,z:p}})}function t5(e,t,n){let r=g8(e.zIndex)?e.zIndex:0;return Q8(n)?r:r+(e.selected?t:0)}function _Qe(e,t,n,r,i,a){let{x:o,y:s}=t.internals.positionAbsolute,c=w8(e),l=$6(e,n),u=C8(e.extent)?i8(l,e.extent,c):l,d=i8({x:o+u.x,y:s+u.y},r,c);e.extent===`parent`&&(d=a8(d,c,t));let f=t5(e,i,a),p=t.internals.z??0;return{x:d.x,y:d.y,z:p>=f?p+1:f}}function n5(e,t,n,r=[0,0]){let i=[],a=new Map;for(let n of e){let e=t.get(n.parentId);if(!e)continue;let r=p8(a.get(n.parentId)?.expandedRect??d8(e),n.rect);a.set(n.parentId,{expandedRect:r,parent:e})}return a.size>0&&a.forEach(({expandedRect:t,parent:a},o)=>{let s=a.internals.positionAbsolute,c=w8(a),l=a.origin??r,u=t.x<s.x?Math.round(Math.abs(s.x-t.x)):0,d=t.y<s.y?Math.round(Math.abs(s.y-t.y)):0,f=Math.max(c.width,Math.round(t.width)),p=Math.max(c.height,Math.round(t.height)),m=(f-c.width)*l[0],h=(p-c.height)*l[1];(u>0||d>0||m||h)&&(i.push({id:o,type:`position`,position:{x:a.position.x-u+m,y:a.position.y-d+h}}),n.get(o)?.forEach(t=>{e.some(e=>e.id===t.id)||i.push({id:t.id,type:`position`,position:{x:t.position.x+u,y:t.position.y+d}})})),(c.width<t.width||c.height<t.height||u||d)&&i.push({id:o,type:`dimensions`,setAttributes:!0,dimensions:{width:f+(u?l[0]*u-m:0),height:p+(d?l[1]*d-h:0)}})}),i}function vQe(e,t,n,r,i,a,o){let s=r?.querySelector(`.xyflow__viewport`),c=!1;if(!s)return{changes:[],updatedInternals:c};let l=[],u=window.getComputedStyle(s),{m22:d}=new window.DOMMatrixReadOnly(u.transform),f=[];for(let r of e.values()){let e=t.get(r.id);if(!e)continue;if(e.hidden){t.set(e.id,{...e,internals:{...e.internals,handleBounds:void 0}}),c=!0;continue}let s=k8(r.nodeElement),u=e.measured.width!==s.width||e.measured.height!==s.height;if(s.width&&s.height&&(u||!e.internals.handleBounds||r.force)){let p=r.nodeElement.getBoundingClientRect(),m=C8(e.extent)?e.extent:a,{positionAbsolute:h}=e.internals;e.parentId&&e.extent===`parent`?h=a8(h,s,t.get(e.parentId)):m&&(h=i8(h,m,s));let g={...e,measured:s,internals:{...e.internals,positionAbsolute:h,handleBounds:{source:P8(`source`,r.nodeElement,p,d,e.id),target:P8(`target`,r.nodeElement,p,d,e.id)}}};t.set(e.id,g),e.parentId&&e5(g,t,n,{nodeOrigin:i,zIndexMode:o}),c=!0,u&&(l.push({id:e.id,type:`dimensions`,dimensions:s}),e.expandParent&&e.parentId&&f.push({id:e.id,parentId:e.parentId,rect:d8(g,i)}))}}if(f.length>0){let e=n5(f,t,n,i);l.push(...e)}return{changes:l,updatedInternals:c}}async function yQe({delta:e,panZoom:t,transform:n,translateExtent:r,width:i,height:a}){if(!t||!e.x&&!e.y)return Promise.resolve(!1);let o=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[i,a]],r),s=!!o&&(o.x!==n[0]||o.y!==n[1]||o.k!==n[2]);return Promise.resolve(s)}function r5(e,t,n,r,i,a){let o=i,s=r.get(o)||new Map;r.set(o,s.set(n,t)),o=`${i}-${e}`;let c=r.get(o)||new Map;if(r.set(o,c.set(n,t)),a){o=`${i}-${e}-${a}`;let s=r.get(o)||new Map;r.set(o,s.set(n,t))}}function i5(e,t,n){e.clear(),t.clear();for(let r of n){let{source:n,target:i,sourceHandle:a=null,targetHandle:o=null}=r,s={edgeId:r.id,source:n,target:i,sourceHandle:a,targetHandle:o},c=`${n}-${a}--${i}-${o}`;r5(`source`,s,`${i}-${o}--${n}-${a}`,e,n,a),r5(`target`,s,c,e,i,o),t.set(r.id,r)}}function a5(e,t){if(!e.parentId)return!1;let n=t.get(e.parentId);return n?n.selected?!0:a5(n,t):!1}function o5(e,t,n){let r=e;do{if(r?.matches?.(t))return!0;if(r===n)return!1;r=r?.parentElement}while(r);return!1}function bQe(e,t,n,r){let i=new Map;for(let[a,o]of e)if((o.selected||o.id===r)&&(!o.parentId||!a5(o,e))&&(o.draggable||t&&o.draggable===void 0)){let t=e.get(a);t&&i.set(a,{id:a,position:t.position||{x:0,y:0},distance:{x:n.x-t.internals.positionAbsolute.x,y:n.y-t.internals.positionAbsolute.y},extent:t.extent,parentId:t.parentId,origin:t.origin,expandParent:t.expandParent,internals:{positionAbsolute:t.internals.positionAbsolute||{x:0,y:0}},measured:{width:t.measured.width??0,height:t.measured.height??0}})}return i}function s5({nodeId:e,dragItems:t,nodeLookup:n,dragging:r=!0}){let i=[];for(let[e,a]of t){let t=n.get(e)?.internals.userNode;t&&i.push({...t,position:a.position,dragging:r})}if(!e)return[i[0],i];let a=n.get(e)?.internals.userNode;return[a?{...a,position:t.get(e)?.position||a.position,dragging:r}:i[0],i]}function xQe({dragItems:e,snapGrid:t,x:n,y:r}){let i=e.values().next().value;if(!i)return null;let a={x:n-i.distance.x,y:r-i.distance.y},o=_8(a,t);return{x:o.x-a.x,y:o.y-a.y}}function SQe({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:r,onDragStop:i}){let a={x:null,y:null},o=0,s=new Map,c=!1,l={x:0,y:0},u=null,d=!1,f=null,p=!1,m=!1,h=null;function g({noDragClassName:g,handleSelector:_,domNode:v,isSelectable:y,nodeId:b,nodeClickDistance:x=0}){f=i3(v);function S({x:e,y:n}){let{nodeLookup:i,nodeExtent:o,snapGrid:c,snapToGrid:l,nodeOrigin:u,onNodeDrag:d,onSelectionDrag:f,onError:p,updateNodePositions:g}=t();a={x:e,y:n};let _=!1,v=s.size>1,y=v&&o?l8(e8(s)):null,x=v&&l?xQe({dragItems:s,snapGrid:c,x:e,y:n}):null;for(let[t,r]of s){if(!i.has(t))continue;let a={x:e-r.distance.x,y:n-r.distance.y};l&&(a=x?{x:Math.round(a.x+x.x),y:Math.round(a.y+x.y)}:_8(a,c));let s=null;if(v&&o&&!r.extent&&y){let{positionAbsolute:e}=r.internals,t=e.x-y.x+o[0][0],n=e.x+r.measured.width-y.x2+o[1][0],i=e.y-y.y+o[0][1],a=e.y+r.measured.height-y.y2+o[1][1];s=[[t,i],[n,a]]}let{position:d,positionAbsolute:f}=n8({nodeId:t,nextPosition:a,nodeLookup:i,nodeExtent:s||o,nodeOrigin:u,onError:p});_=_||r.position.x!==d.x||r.position.y!==d.y,r.position=d,r.internals.positionAbsolute=f}if(m||=_,_&&(g(s,!0),h&&(r||d||!b&&f))){let[e,t]=s5({nodeId:b,dragItems:s,nodeLookup:i});r?.(h,s,e,t),d?.(h,e,t),b||f?.(h,t)}}async function C(){if(!u)return;let{transform:e,panBy:n,autoPanSpeed:r,autoPanOnNodeDrag:i}=t();if(!i){c=!1,cancelAnimationFrame(o);return}let[s,d]=s8(l,u,r);(s!==0||d!==0)&&(a.x=(a.x??0)-s/e[2],a.y=(a.y??0)-d/e[2],await n({x:s,y:d})&&S(a)),o=requestAnimationFrame(C)}function w(r){let{nodeLookup:i,multiSelectionActive:o,nodesDraggable:c,transform:l,snapGrid:f,snapToGrid:p,selectNodesOnDrag:m,onNodeDragStart:h,onSelectionDragStart:g,unselectNodesAndEdges:_}=t();d=!0,(!m||!y)&&!o&&b&&(i.get(b)?.selected||_()),y&&m&&b&&e?.(b);let v=O8(r.sourceEvent,{transform:l,snapGrid:f,snapToGrid:p,containerBounds:u});if(a=v,s=bQe(i,c,v,b),s.size>0&&(n||h||!b&&g)){let[e,t]=s5({nodeId:b,dragItems:s,nodeLookup:i});n?.(r.sourceEvent,s,e,t),h?.(r.sourceEvent,e,t),b||g?.(r.sourceEvent,t)}}let T=p3().clickDistance(x).on(`start`,e=>{let{domNode:n,nodeDragThreshold:r,transform:i,snapGrid:o,snapToGrid:s}=t();u=n?.getBoundingClientRect()||null,p=!1,m=!1,h=e.sourceEvent,r===0&&w(e),a=O8(e.sourceEvent,{transform:i,snapGrid:o,snapToGrid:s,containerBounds:u}),l=N8(e.sourceEvent,u)}).on(`drag`,e=>{let{autoPanOnNodeDrag:n,transform:r,snapGrid:i,snapToGrid:o,nodeDragThreshold:f,nodeLookup:m}=t(),g=O8(e.sourceEvent,{transform:r,snapGrid:i,snapToGrid:o,containerBounds:u});if(h=e.sourceEvent,(e.sourceEvent.type===`touchmove`&&e.sourceEvent.touches.length>1||b&&!m.has(b))&&(p=!0),!p){if(!c&&n&&d&&(c=!0,C()),!d){let t=N8(e.sourceEvent,u),n=t.x-l.x,r=t.y-l.y;Math.sqrt(n*n+r*r)>f&&w(e)}(a.x!==g.xSnapped||a.y!==g.ySnapped)&&s&&d&&(l=N8(e.sourceEvent,u),S(g))}}).on(`end`,e=>{if(!(!d||p)&&(c=!1,d=!1,cancelAnimationFrame(o),s.size>0)){let{nodeLookup:n,updateNodePositions:r,onNodeDragStop:a,onSelectionDragStop:o}=t();if(m&&=(r(s,!1),!1),i||a||!b&&o){let[t,r]=s5({nodeId:b,dragItems:s,nodeLookup:n,dragging:!1});i?.(e.sourceEvent,s,t,r),a?.(e.sourceEvent,t,r),b||o?.(e.sourceEvent,r)}}}).filter(e=>{let t=e.target;return!e.button&&(!g||!o5(t,`.${g}`,v))&&(!_||o5(t,_,v))});f.call(T)}function _(){f?.on(`.drag`,null)}return{update:g,destroy:_}}function CQe(e,t,n){let r=[],i={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(let e of t.values())m8(i,d8(e))>0&&r.push(e);return r}var wQe=250;function TQe(e,t,n,r){let i=[],a=1/0,o=CQe(e,n,t+wQe);for(let n of o){let o=[...n.internals.handleBounds?.source??[],...n.internals.handleBounds?.target??[]];for(let s of o){if(r.nodeId===s.nodeId&&r.type===s.type&&r.id===s.id)continue;let{x:o,y:c}=K8(n,s,s.position,!0),l=Math.sqrt((o-e.x)**2+(c-e.y)**2);l>t||(l<a?(i=[{...s,x:o,y:c}],a=l):l===a&&i.push({...s,x:o,y:c}))}}if(!i.length)return null;if(i.length>1){let e=r.type===`source`?`target`:`source`;return i.find(t=>t.type===e)??i[0]}return i[0]}function c5(e,t,n,r,i,a=!1){let o=r.get(e);if(!o)return null;let s=i===`strict`?o.internals.handleBounds?.[t]:[...o.internals.handleBounds?.source??[],...o.internals.handleBounds?.target??[]],c=(n?s?.find(e=>e.id===n):s?.[0])??null;return c&&a?{...c,...K8(o,c,c.position,!0)}:c}function l5(e,t){return e||(t?.classList.contains(`target`)?`target`:t?.classList.contains(`source`)?`source`:null)}function EQe(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}var u5=()=>!0;function DQe(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:i,edgeUpdaterType:a,isTarget:o,domNode:s,nodeLookup:c,lib:l,autoPanOnConnect:u,flowId:d,panBy:f,cancelConnection:p,onConnectStart:m,onConnect:h,onConnectEnd:g,isValidConnection:_=u5,onReconnectEnd:v,updateConnection:y,getTransform:b,getFromHandle:x,autoPanSpeed:S,dragThreshold:C=1,handleDomNode:w}){let T=A8(e.target),E=0,D,{x:O,y:k}=N8(e),A=l5(a,w),j=s?.getBoundingClientRect(),M=!1;if(!j||!A)return;let N=c5(i,A,r,c,t);if(!N)return;let P=N8(e,j),F=!1,I=null,L=!1,R=null;function ee(){if(!u||!j)return;let[e,t]=s8(P,j,S);f({x:e,y:t}),E=requestAnimationFrame(ee)}let z={...N,nodeId:i,type:A,position:N.position},te=c.get(i),B={inProgress:!0,isValid:null,from:K8(te,z,J6.Left,!0),fromHandle:z,fromPosition:z.position,fromNode:te,to:P,toHandle:null,toPosition:Y6[z.position],toNode:null,pointer:P};function V(){M=!0,y(B),m?.(e,{nodeId:i,handleId:r,handleType:A})}C===0&&V();function ne(e){if(!M){let{x:t,y:n}=N8(e),r=t-O,i=n-k;if(!(r*r+i*i>C*C))return;V()}if(!x()||!z){re(e);return}let a=b();P=N8(e,j),D=TQe(v8(P,a,!1,[1,1]),n,c,z),F||=(ee(),!0);let s=d5(e,{handle:D,connectionMode:t,fromNodeId:i,fromHandleId:r,fromType:o?`target`:`source`,isValidConnection:_,doc:T,lib:l,flowId:d,nodeLookup:c});R=s.handleDomNode,I=s.connection,L=EQe(!!D,s.isValid);let u=c.get(i),f=u?K8(u,z,J6.Left,!0):B.from,p={...B,from:f,isValid:L,to:s.toHandle&&L?y8({x:s.toHandle.x,y:s.toHandle.y},a):P,toHandle:s.toHandle,toPosition:L&&s.toHandle?s.toHandle.position:Y6[z.position],toNode:s.toHandle?c.get(s.toHandle.nodeId):null,pointer:P};y(p),B=p}function re(e){if(!(`touches`in e&&e.touches.length>0)){if(M){(D||R)&&I&&L&&h?.(I);let{inProgress:t,...n}=B,r={...n,toPosition:B.toHandle?B.toPosition:null};g?.(e,r),a&&v?.(e,r)}p(),cancelAnimationFrame(E),F=!1,L=!1,I=null,R=null,T.removeEventListener(`mousemove`,ne),T.removeEventListener(`mouseup`,re),T.removeEventListener(`touchmove`,ne),T.removeEventListener(`touchend`,re)}}T.addEventListener(`mousemove`,ne),T.addEventListener(`mouseup`,re),T.addEventListener(`touchmove`,ne),T.addEventListener(`touchend`,re)}function d5(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:i,fromType:a,doc:o,lib:s,flowId:c,isValidConnection:l=u5,nodeLookup:u}){let d=a===`target`,f=t?o.querySelector(`.${s}-flow__handle[data-id="${c}-${t?.nodeId}-${t?.id}-${t?.type}"]`):null,{x:p,y:m}=N8(e),h=o.elementFromPoint(p,m),g=h?.classList.contains(`${s}-flow__handle`)?h:f,_={handleDomNode:g,isValid:!1,connection:null,toHandle:null};if(g){let e=l5(void 0,g),t=g.getAttribute(`data-nodeid`),a=g.getAttribute(`data-handleid`),o=g.classList.contains(`connectable`),s=g.classList.contains(`connectableend`);if(!t||!e)return _;let c={source:d?t:r,sourceHandle:d?a:i,target:d?r:t,targetHandle:d?i:a};_.connection=c,_.isValid=o&&s&&(n===H6.Strict?d&&e===`source`||!d&&e===`target`:t!==r||a!==i)&&l(c),_.toHandle=c5(t,e,a,u,n,!0)}return _}var f5={onPointerDown:DQe,isValid:d5};function OQe({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){let i=i3(e);function a({translateExtent:e,width:a,height:o,zoomStep:s=1,pannable:c=!0,zoomable:l=!0,inversePan:u=!1}){let d=e=>{if(e.sourceEvent.type!==`wheel`||!t)return;let r=n(),i=e.sourceEvent.ctrlKey&&S8()?10:1,a=-e.sourceEvent.deltaY*(e.sourceEvent.deltaMode===1?.05:e.sourceEvent.deltaMode?1:.002)*s,o=r[2]*2**(a*i);t.scaleTo(o)},f=[0,0],p=L6().on(`start`,e=>{(e.sourceEvent.type===`mousedown`||e.sourceEvent.type===`touchstart`)&&(f=[e.sourceEvent.clientX??e.sourceEvent.touches[0].clientX,e.sourceEvent.clientY??e.sourceEvent.touches[0].clientY])}).on(`zoom`,c?i=>{let s=n();if(i.sourceEvent.type!==`mousemove`&&i.sourceEvent.type!==`touchmove`||!t)return;let c=[i.sourceEvent.clientX??i.sourceEvent.touches[0].clientX,i.sourceEvent.clientY??i.sourceEvent.touches[0].clientY],l=[c[0]-f[0],c[1]-f[1]];f=c;let d=r()*Math.max(s[2],Math.log(s[2]))*(u?-1:1),p={x:s[0]-l[0]*d,y:s[1]-l[1]*d},m=[[0,0],[a,o]];t.setViewportConstrained({x:p.x,y:p.y,zoom:s[2]},m,e)}:null).on(`zoom.wheel`,l?d:null);i.call(p,{})}function o(){i.on(`zoom`,null)}return{update:a,destroy:o,pointer:a3}}var p5=e=>({x:e.x,y:e.y,zoom:e.k}),m5=({x:e,y:t,zoom:n})=>M6.translate(e,t).scale(n),h5=(e,t)=>e.target.closest(`.${t}`),g5=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),kQe=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,_5=(e,t=0,n=kQe,r=()=>{})=>{let i=typeof t==`number`&&t>0;return i||r(),i?e.transition().duration(t).ease(n).on(`end`,r):e},v5=e=>{let t=e.ctrlKey&&S8()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function AQe({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:i,panOnScrollSpeed:a,zoomOnPinch:o,onPanZoomStart:s,onPanZoom:c,onPanZoomEnd:l}){return u=>{if(h5(u,t))return u.ctrlKey&&u.preventDefault(),!1;u.preventDefault(),u.stopImmediatePropagation();let d=n.property(`__zoom`).k||1;if(u.ctrlKey&&o){let e=a3(u),t=d*2**v5(u);r.scaleTo(n,t,e,u);return}let f=u.deltaMode===1?20:1,p=i===U6.Vertical?0:u.deltaX*f,m=i===U6.Horizontal?0:u.deltaY*f;!S8()&&u.shiftKey&&i!==U6.Vertical&&(p=u.deltaY*f,m=0),r.translateBy(n,-(p/d)*a,-(m/d)*a,{internal:!0});let h=p5(n.property(`__zoom`));clearTimeout(e.panScrollTimeout),e.isPanScrolling?(c?.(u,h),e.panScrollTimeout=setTimeout(()=>{l?.(u,h),e.isPanScrolling=!1},150)):(e.isPanScrolling=!0,s?.(u,h))}}function jQe({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,i){let a=r.type===`wheel`,o=!t&&a&&!r.ctrlKey,s=h5(r,e);if(r.ctrlKey&&a&&s&&r.preventDefault(),o||s)return null;r.preventDefault(),n.call(this,r,i)}}function MQe({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{if(r.sourceEvent?.internal)return;let i=p5(r.transform);e.mouseButton=r.sourceEvent?.button||0,e.isZoomingOrPanning=!0,e.prevViewport=i,r.sourceEvent?.type===`mousedown`&&t(!0),n&&n?.(r.sourceEvent,i)}}function NQe({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:i}){return a=>{e.usedRightMouseButton=!!(n&&g5(t,e.mouseButton??0)),a.sourceEvent?.sync||r([a.transform.x,a.transform.y,a.transform.k]),i&&!a.sourceEvent?.internal&&i?.(a.sourceEvent,p5(a.transform))}}function PQe({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:i,onPaneContextMenu:a}){return o=>{if(!o.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,a&&g5(t,e.mouseButton??0)&&!e.usedRightMouseButton&&o.sourceEvent&&a(o.sourceEvent),e.usedRightMouseButton=!1,r(!1),i)){let t=p5(o.transform);e.prevViewport=t,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{i?.(o.sourceEvent,t)},n?150:0)}}}function FQe({zoomActivationKeyPressed:e,zoomOnScroll:t,zoomOnPinch:n,panOnDrag:r,panOnScroll:i,zoomOnDoubleClick:a,userSelectionActive:o,noWheelClassName:s,noPanClassName:c,lib:l,connectionInProgress:u}){return d=>{let f=e||t,p=n&&d.ctrlKey,m=d.type===`wheel`;if(d.button===1&&d.type===`mousedown`&&(h5(d,`${l}-flow__node`)||h5(d,`${l}-flow__edge`)))return!0;if(!r&&!f&&!i&&!a&&!n||o||u&&!m||h5(d,s)&&m||h5(d,c)&&(!m||i&&m&&!e)||!n&&d.ctrlKey&&m)return!1;if(!n&&d.type===`touchstart`&&d.touches?.length>1)return d.preventDefault(),!1;if(!f&&!i&&!p&&m||!r&&(d.type===`mousedown`||d.type===`touchstart`)||Array.isArray(r)&&!r.includes(d.button)&&d.type===`mousedown`)return!1;let h=Array.isArray(r)&&r.includes(d.button)||!d.button||d.button<=1;return(!d.ctrlKey||m)&&h}}function IQe({domNode:e,minZoom:t,maxZoom:n,translateExtent:r,viewport:i,onPanZoom:a,onPanZoomStart:o,onPanZoomEnd:s,onDraggingChange:c}){let l={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{x:0,y:0,zoom:0},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},u=e.getBoundingClientRect(),d=L6().scaleExtent([t,n]).translateExtent(r),f=i3(e).call(d);v({x:i.x,y:i.y,zoom:r8(i.zoom,t,n)},[[0,0],[u.width,u.height]],r);let p=f.on(`wheel.zoom`),m=f.on(`dblclick.zoom`);d.wheelDelta(v5);function h(e,t){return f?new Promise(n=>{d?.interpolate(t?.interpolate===`linear`?J3:t6).transform(_5(f,t?.duration,t?.ease,()=>n(!0)),e)}):Promise.resolve(!1)}function g({noWheelClassName:e,noPanClassName:t,onPaneContextMenu:n,userSelectionActive:r,panOnScroll:i,panOnDrag:u,panOnScrollMode:h,panOnScrollSpeed:g,preventScrolling:v,zoomOnPinch:y,zoomOnScroll:b,zoomOnDoubleClick:x,zoomActivationKeyPressed:S,lib:C,onTransformChange:w,connectionInProgress:T,paneClickDistance:E,selectionOnDrag:D}){r&&!l.isZoomingOrPanning&&_();let O=i&&!S&&!r;d.clickDistance(D?1/0:!g8(E)||E<0?0:E);let k=O?AQe({zoomPanValues:l,noWheelClassName:e,d3Selection:f,d3Zoom:d,panOnScrollMode:h,panOnScrollSpeed:g,zoomOnPinch:y,onPanZoomStart:o,onPanZoom:a,onPanZoomEnd:s}):jQe({noWheelClassName:e,preventScrolling:v,d3ZoomHandler:p});if(f.on(`wheel.zoom`,k,{passive:!1}),!r){let e=MQe({zoomPanValues:l,onDraggingChange:c,onPanZoomStart:o});d.on(`start`,e);let t=NQe({zoomPanValues:l,panOnDrag:u,onPaneContextMenu:!!n,onPanZoom:a,onTransformChange:w});d.on(`zoom`,t);let r=PQe({zoomPanValues:l,panOnDrag:u,panOnScroll:i,onPaneContextMenu:n,onPanZoomEnd:s,onDraggingChange:c});d.on(`end`,r)}let A=FQe({zoomActivationKeyPressed:S,panOnDrag:u,zoomOnScroll:b,panOnScroll:i,zoomOnDoubleClick:x,zoomOnPinch:y,userSelectionActive:r,noPanClassName:t,noWheelClassName:e,lib:C,connectionInProgress:T});d.filter(A),x?f.on(`dblclick.zoom`,m):f.on(`dblclick.zoom`,null)}function _(){d.on(`zoom`,null)}async function v(e,t,n){let r=m5(e),i=d?.constrain()(r,t,n);return i&&await h(i),new Promise(e=>e(i))}async function y(e,t){let n=m5(e);return await h(n,t),new Promise(e=>e(n))}function b(e){if(f){let t=m5(e),n=f.property(`__zoom`);(n.k!==e.zoom||n.x!==e.x||n.y!==e.y)&&d?.transform(f,t,null,{sync:!0})}}function x(){let e=f?N6(f.node()):{x:0,y:0,k:1};return{x:e.x,y:e.y,zoom:e.k}}function S(e,t){return f?new Promise(n=>{d?.interpolate(t?.interpolate===`linear`?J3:t6).scaleTo(_5(f,t?.duration,t?.ease,()=>n(!0)),e)}):Promise.resolve(!1)}function C(e,t){return f?new Promise(n=>{d?.interpolate(t?.interpolate===`linear`?J3:t6).scaleBy(_5(f,t?.duration,t?.ease,()=>n(!0)),e)}):Promise.resolve(!1)}function w(e){d?.scaleExtent(e)}function T(e){d?.translateExtent(e)}function E(e){let t=!g8(e)||e<0?0:e;d?.clickDistance(t)}return{update:g,destroy:_,setViewport:y,setViewportConstrained:v,getViewport:x,scaleTo:S,scaleBy:C,setScaleExtent:w,setTranslateExtent:T,syncViewport:b,setClickDistance:E}}var y5;(function(e){e.Line=`line`,e.Handle=`handle`})(y5||={});function LQe({width:e,prevWidth:t,height:n,prevHeight:r,affectsX:i,affectsY:a}){let o=e-t,s=n-r,c=[o>0?1:o<0?-1:0,s>0?1:s<0?-1:0];return o&&i&&(c[0]*=-1),s&&a&&(c[1]*=-1),c}function b5(e){return{isHorizontal:e.includes(`right`)||e.includes(`left`),isVertical:e.includes(`bottom`)||e.includes(`top`),affectsX:e.includes(`left`),affectsY:e.includes(`top`)}}function x5(e,t){return Math.max(0,t-e)}function S5(e,t){return Math.max(0,e-t)}function C5(e,t,n){return Math.max(0,t-e,e-n)}function w5(e,t){return e?!t:t}function RQe(e,t,n,r,i,a,o,s){let{affectsX:c,affectsY:l}=t,{isHorizontal:u,isVertical:d}=t,f=u&&d,{xSnapped:p,ySnapped:m}=n,{minWidth:h,maxWidth:g,minHeight:_,maxHeight:v}=r,{x:y,y:b,width:x,height:S,aspectRatio:C}=e,w=Math.floor(u?p-e.pointerX:0),T=Math.floor(d?m-e.pointerY:0),E=x+(c?-w:w),D=S+(l?-T:T),O=-a[0]*x,k=-a[1]*S,A=C5(E,h,g),j=C5(D,_,v);if(o){let e=0,t=0;c&&w<0?e=x5(y+w+O,o[0][0]):!c&&w>0&&(e=S5(y+E+O,o[1][0])),l&&T<0?t=x5(b+T+k,o[0][1]):!l&&T>0&&(t=S5(b+D+k,o[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(s){let e=0,t=0;c&&w>0?e=S5(y+w,s[0][0]):!c&&w<0&&(e=x5(y+E,s[1][0])),l&&T>0?t=S5(b+T,s[0][1]):!l&&T<0&&(t=x5(b+D,s[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(i){if(u){let e=C5(E/C,_,v)*C;if(A=Math.max(A,e),o){let e=0;e=!c&&!l||c&&!l&&f?S5(b+k+E/C,o[1][1])*C:x5(b+k+(c?w:-w)/C,o[0][1])*C,A=Math.max(A,e)}if(s){let e=0;e=!c&&!l||c&&!l&&f?x5(b+E/C,s[1][1])*C:S5(b+(c?w:-w)/C,s[0][1])*C,A=Math.max(A,e)}}if(d){let e=C5(D*C,h,g)/C;if(j=Math.max(j,e),o){let e=0;e=!c&&!l||l&&!c&&f?S5(y+D*C+O,o[1][0])/C:x5(y+(l?T:-T)*C+O,o[0][0])/C,j=Math.max(j,e)}if(s){let e=0;e=!c&&!l||l&&!c&&f?x5(y+D*C,s[1][0])/C:S5(y+(l?T:-T)*C,s[0][0])/C,j=Math.max(j,e)}}}T+=T<0?j:-j,w+=w<0?A:-A,i&&(f?E>D*C?T=(w5(c,l)?-w:w)/C:w=(w5(c,l)?-T:T)*C:u?(T=w/C,l=c):(w=T*C,c=l));let M=c?y+w:y,N=l?b+T:b;return{width:x+(c?-w:w),height:S+(l?-T:T),x:a[0]*w*(c?-1:1)+M,y:a[1]*T*(l?-1:1)+N}}var T5={width:0,height:0,x:0,y:0},zQe={...T5,pointerX:0,pointerY:0,aspectRatio:1};function BQe(e){return[[0,0],[e.measured.width,e.measured.height]]}function VQe(e,t,n){let r=t.position.x+e.position.x,i=t.position.y+e.position.y,a=e.measured.width??0,o=e.measured.height??0,s=n[0]*a,c=n[1]*o;return[[r-s,i-c],[r+a-s,i+o-c]]}function HQe({domNode:e,nodeId:t,getStoreItems:n,onChange:r,onEnd:i}){let a=i3(e),o={controlDirection:b5(`bottom-right`),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function s({controlPosition:e,boundaries:s,keepAspectRatio:c,resizeDirection:l,onResizeStart:u,onResize:d,onResizeEnd:f,shouldResize:p}){let m={...T5},h={...zQe};o={boundaries:s,resizeDirection:l,keepAspectRatio:c,controlDirection:b5(e)};let g,_=null,v=[],y,b,x,S=!1,C=p3().on(`start`,e=>{let{nodeLookup:r,transform:i,snapGrid:a,snapToGrid:o,nodeOrigin:s,paneDomNode:c}=n();if(g=r.get(t),!g)return;_=c?.getBoundingClientRect()??null;let{xSnapped:l,ySnapped:d}=O8(e.sourceEvent,{transform:i,snapGrid:a,snapToGrid:o,containerBounds:_});m={width:g.measured.width??0,height:g.measured.height??0,x:g.position.x??0,y:g.position.y??0},h={...m,pointerX:l,pointerY:d,aspectRatio:m.width/m.height},y=void 0,g.parentId&&(g.extent===`parent`||g.expandParent)&&(y=r.get(g.parentId),b=y&&g.extent===`parent`?BQe(y):void 0),v=[],x=void 0;for(let[e,n]of r)if(n.parentId===t&&(v.push({id:e,position:{...n.position},extent:n.extent}),n.extent===`parent`||n.expandParent)){let e=VQe(n,g,n.origin??s);x=x?[[Math.min(e[0][0],x[0][0]),Math.min(e[0][1],x[0][1])],[Math.max(e[1][0],x[1][0]),Math.max(e[1][1],x[1][1])]]:e}u?.(e,{...m})}).on(`drag`,e=>{let{transform:t,snapGrid:i,snapToGrid:a,nodeOrigin:s}=n(),c=O8(e.sourceEvent,{transform:t,snapGrid:i,snapToGrid:a,containerBounds:_}),l=[];if(!g)return;let{x:u,y:f,width:C,height:w}=m,T={},E=g.origin??s,{width:D,height:O,x:k,y:A}=RQe(h,o.controlDirection,c,o.boundaries,o.keepAspectRatio,E,b,x),j=D!==C,M=O!==w,N=k!==u&&j,P=A!==f&&M;if(!N&&!P&&!j&&!M)return;if((N||P||E[0]===1||E[1]===1)&&(T.x=N?k:m.x,T.y=P?A:m.y,m.x=T.x,m.y=T.y,v.length>0)){let e=k-u,t=A-f;for(let n of v)n.position={x:n.position.x-e+E[0]*(D-C),y:n.position.y-t+E[1]*(O-w)},l.push(n)}if((j||M)&&(T.width=j&&(!o.resizeDirection||o.resizeDirection===`horizontal`)?D:m.width,T.height=M&&(!o.resizeDirection||o.resizeDirection===`vertical`)?O:m.height,m.width=T.width,m.height=T.height),y&&g.expandParent){let e=E[0]*(T.width??0);T.x&&T.x<e&&(m.x=e,h.x-=T.x-e);let t=E[1]*(T.height??0);T.y&&T.y<t&&(m.y=t,h.y-=T.y-t)}let F=LQe({width:m.width,prevWidth:C,height:m.height,prevHeight:w,affectsX:o.controlDirection.affectsX,affectsY:o.controlDirection.affectsY}),I={...m,direction:F};p?.(e,I)!==!1&&(S=!0,d?.(e,I),r(T,l))}).on(`end`,e=>{S&&=(f?.(e,{...m}),i?.({...m}),!1)});a.call(C)}function c(){a.on(`.drag`,null)}return{update:s,destroy:c}}var E5=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e)),destroy:()=>{n.clear()}},o=t=e(r,i,a);return a},UQe=e=>e?E5(e):E5,{useDebugValue:WQe}=C.default,{useSyncExternalStoreWithSelector:GQe}=JC.default,KQe=e=>e;function D5(e,t=KQe,n){let r=GQe(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return WQe(r),r}var O5=(e,t)=>{let n=UQe(e),r=(e,r=t)=>D5(n,e,r);return Object.assign(r,n),r},qQe=(e,t)=>e?O5(e,t):O5;function k5(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||!Object.is(e[r],t[r]))return!1;return!0}var A5=(0,C.createContext)(null),JQe=A5.Provider,j5=R6.error001();function M5(e,t){let n=(0,C.useContext)(A5);if(n===null)throw Error(j5);return D5(n,e,t)}function N5(){let e=(0,C.useContext)(A5);if(e===null)throw Error(j5);return(0,C.useMemo)(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}var P5={display:`none`},YQe={position:`absolute`,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0px, 0px, 0px, 0px)`,clipPath:`inset(100%)`},F5=`react-flow__node-desc`,I5=`react-flow__edge-desc`,XQe=`react-flow__aria-live`,ZQe=e=>e.ariaLiveMessage,QQe=e=>e.ariaLabelConfig;function $Qe({rfId:e}){let t=M5(ZQe);return(0,W.jsx)(`div`,{id:`${XQe}-${e}`,"aria-live":`assertive`,"aria-atomic":`true`,style:YQe,children:t})}function e$e({rfId:e,disableKeyboardA11y:t}){let n=M5(QQe);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{id:`${F5}-${e}`,style:P5,children:t?n[`node.a11yDescription.default`]:n[`node.a11yDescription.keyboardDisabled`]}),(0,W.jsx)(`div`,{id:`${I5}-${e}`,style:P5,children:n[`edge.a11yDescription.default`]}),!t&&(0,W.jsx)($Qe,{rfId:e})]})}var L5=(0,C.forwardRef)(({position:e=`top-left`,children:t,className:n,style:r,...i},a)=>(0,W.jsx)(`div`,{className:P4([`react-flow__panel`,n,...`${e}`.split(`-`)]),style:r,ref:a,...i,children:t}));L5.displayName=`Panel`;function t$e({proOptions:e,position:t=`bottom-right`}){return e?.hideAttribution?null:(0,W.jsx)(L5,{position:t,className:`react-flow__attribution`,"data-message":`Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev`,children:(0,W.jsx)(`a`,{href:`https://reactflow.dev`,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`React Flow attribution`,children:`React Flow`})})}var n$e=e=>{let t=[],n=[];for(let[,n]of e.nodeLookup)n.selected&&t.push(n.internals.userNode);for(let[,t]of e.edgeLookup)t.selected&&n.push(t);return{selectedNodes:t,selectedEdges:n}},R5=e=>e.id;function r$e(e,t){return k5(e.selectedNodes.map(R5),t.selectedNodes.map(R5))&&k5(e.selectedEdges.map(R5),t.selectedEdges.map(R5))}function i$e({onSelectionChange:e}){let t=N5(),{selectedNodes:n,selectedEdges:r}=M5(n$e,r$e);return(0,C.useEffect)(()=>{let i={nodes:n,edges:r};e?.(i),t.getState().onSelectionChangeHandlers.forEach(e=>e(i))},[n,r,e]),null}var a$e=e=>!!e.onSelectionChangeHandlers;function o$e({onSelectionChange:e}){let t=M5(a$e);return e||t?(0,W.jsx)(i$e,{onSelectionChange:e}):null}var z5=typeof window<`u`?C.useLayoutEffect:C.useEffect,B5=[0,0],s$e={x:0,y:0,zoom:1},V5=[...`nodes.edges.defaultNodes.defaultEdges.onConnect.onConnectStart.onConnectEnd.onClickConnectStart.onClickConnectEnd.nodesDraggable.autoPanOnNodeFocus.nodesConnectable.nodesFocusable.edgesFocusable.edgesReconnectable.elevateNodesOnSelect.elevateEdgesOnSelect.minZoom.maxZoom.nodeExtent.onNodesChange.onEdgesChange.elementsSelectable.connectionMode.snapGrid.snapToGrid.translateExtent.connectOnClick.defaultEdgeOptions.fitView.fitViewOptions.onNodesDelete.onEdgesDelete.onDelete.onNodeDrag.onNodeDragStart.onNodeDragStop.onSelectionDrag.onSelectionDragStart.onSelectionDragStop.onMoveStart.onMove.onMoveEnd.noPanClassName.nodeOrigin.autoPanOnConnect.autoPanOnNodeDrag.onError.connectionRadius.isValidConnection.selectNodesOnDrag.nodeDragThreshold.connectionDragThreshold.onBeforeDelete.debug.autoPanSpeed.ariaLabelConfig.zIndexMode`.split(`.`),`rfId`],c$e=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),H5={translateExtent:z6,nodeOrigin:B5,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:`nopan`,rfId:`1`};function l$e(e){let{setNodes:t,setEdges:n,setMinZoom:r,setMaxZoom:i,setTranslateExtent:a,setNodeExtent:o,reset:s,setDefaultNodesAndEdges:c}=M5(c$e,k5),l=N5();z5(()=>(c(e.defaultNodes,e.defaultEdges),()=>{u.current=H5,s()}),[]);let u=(0,C.useRef)(H5);return z5(()=>{for(let s of V5){let c=e[s];c!==u.current[s]&&e[s]!==void 0&&(s===`nodes`?t(c):s===`edges`?n(c):s===`minZoom`?r(c):s===`maxZoom`?i(c):s===`translateExtent`?a(c):s===`nodeExtent`?o(c):s===`ariaLabelConfig`?l.setState({ariaLabelConfig:eQe(c)}):s===`fitView`?l.setState({fitViewQueued:c}):s===`fitViewOptions`?l.setState({fitViewOptions:c}):l.setState({[s]:c}))}u.current=e},V5.map(t=>e[t])),null}function U5(){return typeof window>`u`||!window.matchMedia?null:window.matchMedia(`(prefers-color-scheme: dark)`)}function u$e(e){let[t,n]=(0,C.useState)(e===`system`?null:e);return(0,C.useEffect)(()=>{if(e!==`system`){n(e);return}let t=U5(),r=()=>n(t?.matches?`dark`:`light`);return r(),t?.addEventListener(`change`,r),()=>{t?.removeEventListener(`change`,r)}},[e]),t===null?U5()?.matches?`dark`:`light`:t}var W5=typeof document<`u`?document:null;function G5(e=null,t={target:W5,actInsideInputWithModifier:!0}){let[n,r]=(0,C.useState)(!1),i=(0,C.useRef)(!1),a=(0,C.useRef)(new Set([])),[o,s]=(0,C.useMemo)(()=>{if(e!==null){let t=(Array.isArray(e)?e:[e]).filter(e=>typeof e==`string`).map(e=>e.replace(`+`,`
459
+ `,e)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:return this.flowScalar(this.type);case`block-scalar-header`:return{type:`block-scalar`,offset:this.offset,indent:this.indent,props:[this.sourceToken],source:``};case`flow-map-start`:case`flow-seq-start`:return{type:`flow-collection`,offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case`seq-item-ind`:return{type:`block-seq`,offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case`explicit-key-ind`:{this.onKeyLine=!0;let t=Z2(X2(e));return t.push(this.sourceToken),{type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:t,explicitKey:!0}]}}case`map-value-ind`:{this.onKeyLine=!0;let t=Z2(X2(e));return{type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:t,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!==`comment`||this.indent<=t?!1:e.every(e=>e.type===`newline`||e.type===`space`)}*documentEnd(e){this.type!==`doc-mode`&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type===`newline`&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case`comma`:case`doc-start`:case`doc-end`:case`flow-seq-end`:case`flow-map-end`:case`map-value-ind`:yield*this.pop(),yield*this.step();break;case`newline`:this.onKeyLine=!1;default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type===`newline`&&(yield*this.pop())}}};function e4(e){let t=e.prettyErrors!==!1;return{lineCounter:e.lineCounter||t&&new K2||null,prettyErrors:t}}function YKe(e,t={}){let{lineCounter:n,prettyErrors:r}=e4(t),i=new $2(n?.addNewLine),a=new j2(t),o=Array.from(a.compose(i.parse(e)));if(r&&n)for(let t of o)t.errors.forEach(p2(e,n)),t.warnings.forEach(p2(e,n));return o.length>0?o:Object.assign([],{empty:!0},a.streamInfo())}function t4(e,t={}){let{lineCounter:n,prettyErrors:r}=e4(t),i=new $2(n?.addNewLine),a=new j2(t),o=null;for(let t of a.compose(i.parse(e),!0,e.length))if(!o)o=t;else if(o.options.logLevel!==`silent`){o.errors.push(new d2(t.range.slice(0,2),`MULTIPLE_DOCS`,`Source contains multiple documents; please use YAML.parseAllDocuments()`));break}return r&&n&&(o.errors.forEach(p2(e,n)),o.warnings.forEach(p2(e,n))),o}function XKe(e,t,n){let r;typeof t==`function`?r=t:n===void 0&&t&&typeof t==`object`&&(n=t);let i=t4(e,n);if(!i)return null;if(i.warnings.forEach(e=>s0(i.options.logLevel,e)),i.errors.length>0){if(i.options.logLevel!==`silent`)throw i.errors[0];i.errors=[]}return i.toJS(Object.assign({reviver:r},n))}function ZKe(e,t,n){let r=null;if(typeof t==`function`||Array.isArray(t)?r=t:n===void 0&&t&&(n=t),typeof n==`string`&&(n=n.length),typeof n==`number`){let e=Math.round(n);n=e<1?void 0:e>8?{indent:8}:{indent:e}}if(e===void 0){let{keepUndefined:e}=n??t??{};if(!e)return}return p1(e)&&!r?e.toString(n):new c2(e,r,n).toString(n)}var QKe=c({Alias:()=>R1,CST:()=>UKe,Composer:()=>j2,Document:()=>c2,Lexer:()=>G2,LineCounter:()=>K2,Pair:()=>m0,Parser:()=>$2,Scalar:()=>V1,Schema:()=>s2,YAMLError:()=>u2,YAMLMap:()=>v0,YAMLParseError:()=>d2,YAMLSeq:()=>b0,YAMLWarning:()=>f2,isAlias:()=>f1,isCollection:()=>v1,isDocument:()=>p1,isMap:()=>m1,isNode:()=>y1,isPair:()=>h1,isScalar:()=>g1,isSeq:()=>_1,parse:()=>XKe,parseAllDocuments:()=>YKe,parseDocument:()=>t4,stringify:()=>ZKe,visit:()=>w1,visitAsync:()=>E1});function $Ke(e){let t=null;try{t=QKe.parse(e.doc.toString())}catch{}let n=yq(e,hq.YAML);return{data:t,pointers:n}}var n4=e=>{switch(e){case hq.JSON:return BGe;case hq.JSON5:return HGe;case hq.YAML:return $Ke}};function eqe(e){return Object.entries(e)}function r4(e,t){if(typeof e==`string`||typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(e=>r4(e,t));if(e instanceof Map){let n=new Map;for(let[r,i]of e){let e=r,a=r4(i,t);n.set(e,a)}return n}if(e instanceof Set){let n=new Set;for(let r of e){let e=r4(r,t);n.add(e)}return n}let n={};function r(e,r,i,a){i===e&&a===r?n[i]=r4(r,t):n[i]=a}for(let[n,i]of eqe(e)){let e=t(n,i);if(e.length===2&&typeof e[0]==`string`)r(n,i,e[0],e[1]);else for(let[t,a]of e)r(n,i,t,a)}return n}var tqe=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},nqe=class{constructor(){this.completions=new Map,this.reservedKeys=new Set}reserve(e){this.reservedKeys.add(e)}add(e){this.reservedKeys.has(e.label)||this.completions.set(e.label,e)}};function i4(e){return!(!e||Rq(e)||e.name===`UnknownPropertyError`||e.type===`undefined`)}var rqe=class{constructor(e){this.opts=e,this.originalSchema=null,this.schema=null,this.laxSchema=null,this.mode=hq.JSON,this.mode=e.mode??hq.JSON,this.parser=this.opts?.jsonParser??n4(this.mode)}doComplete(e){let t=Mq(e.state);if(this.originalSchema!==t&&(this.schema=s4(t,t)??t,this.laxSchema=aqe(this.schema)),!this.schema||!this.laxSchema)return[];dq.log(`xxx`,`trying with original schema`);let n=this.doCompleteForSchema(e,this.schema);return n.options.length===0?(dq.log(`xxx`,`no completions with original schema, trying with lax schema`),this.doCompleteForSchema(e,this.laxSchema)):n}doCompleteForSchema(e,t){let n={from:e.pos,to:e.pos,options:[],filter:!1},r=e.state.doc.sliceString(0),i=bq(e.state,e.pos),a=e.state.sliceDoc(i.from,e.pos).replace(/^(["'])/,``);if(dq.log(`xxx`,`node`,i,`prefix`,a,`ctx`,e),!(wq(i,this.mode)||Tq(i,this.mode))&&!e.explicit)return dq.log(`xxx`,`no completions for non-word/primitive`,i),n;let o=Sq(e.state.doc,i),s=Sq(e.state.doc,i,!1);if(i&&(wq(i,this.mode)||Tq(i,this.mode)))n.from=i.from,n.to=i.to;else{let t=e.matchBefore(/[A-Za-z0-9._]*/),a=e.pos-o.length;dq.log(`xxx`,`overwriteStart after`,a,`ctx.pos`,e.pos,`word`,t,`currentWord`,o,`=>`,r[a-1],`..`,r[a],`..`,r),n.from=i.name===fq.INVALID?t?.from??e.pos:a,n.to=e.pos}let c=new nqe,l=!0,u=Aq(i,fq.PROPERTY_NAME,this.mode);if(u&&(dq.log(`xxx`,`closestPropertyNameNode`,u,`node`,i),i=u),Tq(i,this.mode)){dq.log(`xxx`,`isPropertyNameNode`,i);let e=i.parent;if(e){let t=Oq(e,this.mode);l=!t||t.name===fq.INVALID&&t.from-t.to===0||(t.parent?Eq(t.parent).length<=1:!1),dq.log(`xxx`,`addValue`,l,Oq(e,this.mode),i),i=Aq(e,fq.OBJECT,this.mode)??null}}if(dq.log(`xxx`,i,o,e,`node at pos`,bq(e.state,e.pos)),i&&[fq.OBJECT,fq.JSON_TEXT].includes(gq(i.name,this.mode))&&(Tq(bq(e.state,e.pos),this.mode)||u)){if(i.from===e.pos)return dq.log(`xxx`,`no completions for just before opening brace`),n;this.getPropertyCompletions(t,e,i,c,l,s)}else{let n=this.getValueCompletions(t,e,{},c);dq.log(`xxx`,`getValueCompletions res`,n)}return n.options=Array.from(c.completions.values()).filter(e=>xq(e.label).startsWith(a)),dq.log(`xxx`,`result`,n,`prefix`,a,`collector.completions`,c.completions,`reservedKeys`,c.reservedKeys),n}applySnippetCompletion(e){return aLe(typeof e.apply==`string`?e.apply:e.label,e)}getPropertyCompletions(e,t,n,r,i,a){let o=VLe(n,fq.PROPERTY,this.mode);dq.log(`xxx`,`getPropertyCompletions`,n,t,o),o.forEach(e=>{let n=Sq(t.state.doc,Dq(e,fq.PROPERTY_NAME,this.mode));r.reserve(xq(n))});let s=this.getSchemas(e,t);dq.log(`xxx`,`propertyCompletion schemas`,s),s.forEach(t=>{if(typeof t!=`object`)return;let n=t.properties;n&&Object.entries(n).forEach(([t,n])=>{if(typeof n==`object`){let o=n.description??``,s=n.type??``,c=Array.isArray(s)?s.toString():s,l={label:t,apply:this.getInsertTextForProperty(t,i,a,e,n),type:`property`,detail:c,info:()=>zY(`div`,{inner:r1(o)})};r.add(this.applySnippetCompletion(l))}});let o=t.propertyNames;if(typeof o==`object`&&(o.enum&&o.enum.forEach(t=>{let n=t?.toString();if(n){let t={label:n,apply:this.getInsertTextForProperty(n,i,a,e),type:`property`};r.add(this.applySnippetCompletion(t))}}),o.const)){let t=o.const.toString(),n={label:t,apply:this.getInsertTextForProperty(t,i,a,e),type:`property`};r.add(this.applySnippetCompletion(n))}})}getInsertTextForProperty(e,t,n,r,i){i&&=s4(i,r);let a=this.getInsertTextForPropertyName(e,n);if(!t)return a;a+=`: `;let o,s=0;if(typeof i==`object`){if(i.default!==void 0)o||=this.getInsertTextForGuessedValue(i.default,``),s++;else if(i.enum&&(!o&&i.enum.length===1&&(o=this.getInsertTextForGuessedValue(i.enum[0],``)),s+=i.enum.length),i.const!==void 0&&(o||=this.getInsertTextForGuessedValue(i.const,``),s++),Array.isArray(i.examples)&&i.examples.length&&(o||=this.getInsertTextForGuessedValue(i.examples[0],``),s+=i.examples.length),o===void 0&&s===0){let e=Array.isArray(i.type)?i.type[0]:i.type;switch(e||(i.properties?e=`object`:i.items&&(e=`array`)),e){case`boolean`:o=`#{}`;break;case`string`:o=this.getInsertTextForString(``);break;case`object`:switch(this.mode){case hq.JSON5:o=`{#{}}`;break;case hq.YAML:o=`#{}`;break;default:o=`{#{}}`;break}break;case`array`:o=`[#{}]`;break;case`number`:case`integer`:o=`#{0}`;break;case`null`:o=`#{null}`;break;default:o=`#{}`;break}}}return(!o||s>1)&&(dq.log(`xxx`,`value`,o,`nValueProposals`,s,i),o=`#{}`),a+o}getInsertTextForPropertyName(e,t){switch(this.mode){case hq.JSON5:case hq.YAML:return t.startsWith(`"`)?`"${e}"`:t.startsWith(`'`)?`'${e}'`:e;default:return`"${e}"`}}getInsertTextForString(e,t=`#`){switch(this.mode){case hq.JSON5:return`'${t}{${e}}'`;case hq.YAML:return`${t}{${e}}`;default:return`"${t}{${e}}"`}}getInsertTextForGuessedValue(e,t=``){switch(typeof e){case`object`:return e===null?"${null}"+t:this.getInsertTextForValue(e,t);case`string`:{let n=JSON.stringify(e);return n=n.substr(1,n.length-2),n=this.getInsertTextForPlainText(n),this.getInsertTextForString(n,`$`)+t}case`number`:case`boolean`:return"${"+JSON.stringify(e)+`}`+t}return this.getInsertTextForValue(e,t)}getInsertTextForPlainText(e){return e.replace(/[\\$}]/g,`\\$&`)}getInsertTextForValue(e,t){let n=JSON.stringify(e,null,` `);return n===`{}`?`{#{}}`+t:n===`[]`?`[#{}]`+t:this.getInsertTextForPlainText(n+t)}getValueCompletions(e,t,n,r){let i=eU(t.state).resolveInner(t.pos,-1),a=null,o;if(dq.log(`xxx`,`getValueCompletions`,i,t),i&&wq(i,this.mode)&&(a=i,i=i.parent),!i){this.addSchemaValueCompletions(e,n,r);return}if(gq(i.name,this.mode)===fq.PROPERTY){let e=Dq(i,fq.PROPERTY_NAME,this.mode);e&&(o=Sq(t.state.doc,e),i=i.parent)}if(dq.log(`xxx`,`node`,i,`parentKey`,o),i&&(o!==void 0||gq(i.name,this.mode)===fq.ARRAY)){let s=this.getSchemas(e,t);for(let e of s){if(typeof e!=`object`)return;if(gq(i.name,this.mode)===fq.ARRAY&&e.items){let t=r;if(e.uniqueItems&&(t=Object.assign(Object.assign({},t),{add(e){t.completions.has(e.label)||r.add(e)},reserve(e){r.reserve(e)}})),Array.isArray(e.items)){let r=0;if(a){let e=kq(i,a,this.mode);e>=0&&(r=e)}let o=e.items[r];o&&this.addSchemaValueCompletions(o,n,t)}else this.addSchemaValueCompletions(e.items,n,t)}if((e.type==null||e.type!==`object`)&&this.addSchemaValueCompletions(e,n,r),o!==void 0){let t=!1;if(e.properties){let i=e.properties[o];i&&(t=!0,this.addSchemaValueCompletions(i,n,r))}if(e.patternProperties&&!t){for(let i of Object.keys(e.patternProperties))if(this.extendedRegExp(i)?.test(o)){t=!0;let a=e.patternProperties[i];a&&this.addSchemaValueCompletions(a,n,r)}}if(e.additionalProperties&&!t){let t=e.additionalProperties;this.addSchemaValueCompletions(t,n,r)}}n.boolean&&(this.addBooleanValueCompletion(!0,r),this.addBooleanValueCompletion(!1,r)),n.null&&this.addNullValueCompletion(r)}}return{valuePrefix:a?Sq(t.state.doc,a,!0,!1):``}}addSchemaValueCompletions(e,t,n){typeof e==`object`&&(this.addEnumValueCompletions(e,n),this.addDefaultValueCompletions(e,n),this.collectTypes(e,t),Array.isArray(e.allOf)&&e.allOf.forEach(e=>this.addSchemaValueCompletions(e,t,n)),Array.isArray(e.anyOf)&&e.anyOf.forEach(e=>this.addSchemaValueCompletions(e,t,n)),Array.isArray(e.oneOf)&&e.oneOf.forEach(e=>this.addSchemaValueCompletions(e,t,n)))}addDefaultValueCompletions(e,t,n=0){let r=!1;if(e.default!==void 0){let i=e.type,a=e.default;for(let e=n;e>0;e--)a=[a],i=`array`;let o=Object.assign(Object.assign({type:i?.toString()},this.getAppliedValue(a)),{detail:`Default value`});t.add(o),r=!0}Array.isArray(e.examples)&&e.examples.forEach(i=>{let a=e.type,o=i;for(let e=n;e>0;e--)o=[o],a=`array`;t.add(Object.assign({type:a?.toString()},this.getAppliedValue(o))),r=!0}),!r&&typeof e.items==`object`&&!Array.isArray(e.items)&&n<5&&this.addDefaultValueCompletions(e.items,t,n+1)}addEnumValueCompletions(e,t){if(e.const!==void 0&&t.add(Object.assign(Object.assign({type:e.type?.toString()},this.getAppliedValue(e.const)),{info:e.description})),Array.isArray(e.enum))for(let n=0,r=e.enum.length;n<r;n++){let r=e.enum[n];t.add(Object.assign(Object.assign({type:e.type?.toString()},this.getAppliedValue(r)),{info:e.description}))}}addBooleanValueCompletion(e,t){t.add({type:`boolean`,label:e?`true`:`false`})}addNullValueCompletion(e){e.add({type:`null`,label:`null`})}collectTypes(e,t){if(Array.isArray(e.enum)||e.const!==void 0)return;let n=e.type;Array.isArray(n)?n.forEach(e=>t[e]=!0):n&&(t[n]=!0)}getSchemas(e,t){let{data:n}=this.parser(t.state),r=new RY(e),i=vq(t.state,t.pos,-1,this.mode);if(i===``&&(i=void 0),i!=null&&i.endsWith(`/`)){i=i.substring(0,i.length-1);let t=a4(e,n,i);if(t!=null)return[t]}let a=i?.replace(/\/[^/]*$/,``);a===``&&(a=void 0);let o=a4(e,n,a),s=i?.split(`/`).pop(),c=s==null||s in(o?.properties??{}),l=r.getSchema({pointer:i,data:n??void 0});return!c&&l?.type===`null`&&this.mode===`yaml`&&(l=void 0),dq.log(`xxxx`,`draft.getSchema`,l,`data`,n,`pointer`,i,`pointerPointsToKnownProperty`,c),Rq(l)&&(l=l.data?.schema),!i4(l)&&o?[o]:(i4(l)||(l=r.getSchema({pointer:a}),i=a),dq.log(`xxx`,`pointer..`,JSON.stringify(i)),!i4(l)&&(!i||i===`/`)&&(l=s4(e,e)??e),dq.log(`xxx`,`subSchema..`,l),l?Array.isArray(l.allOf)?[l,...l.allOf.map(t=>s4(t,e))]:Array.isArray(l.oneOf)?[l,...l.oneOf.map(t=>s4(t,e))]:Array.isArray(l.anyOf)?[l,...l.anyOf.map(t=>s4(t,e))]:[l]:[])}getAppliedValue(e){let t=xq(JSON.stringify(e));switch(this.mode){case hq.JSON5:return{label:t,apply:zLe(JSON.stringify(e))};case hq.YAML:return{label:t,apply:t};default:return{label:t,apply:JSON.stringify(e)}}}getValueFromLabel(e){return JSON.parse(e)}extendedRegExp(e){let t=``;e.startsWith(`(?i)`)&&(e=e.substring(4),t=`i`);try{return new RegExp(e,t+`u`)}catch{try{return new RegExp(e,t)}catch{return}}}};function iqe(e={}){let t=new rqe(e);return function(e){return t.doComplete(e)}}function aqe(e){return r4(e,(e,t)=>e===`additionalProperties`&&t===!1||e===`required`&&Array.isArray(t)||e===`unevaluatedProperties`&&t===!1||e===`unevaluatedItems`&&t===!1?[]:[e,t])}function a4(e,t,n){let r=new RY(e),i=r.getSchema({pointer:n,data:t??void 0});if(!i4(i))return;let a=o4(r,i),o={};for(let e of a){let i=sqe(n,e),a=r.getSchema({pointer:i,data:t??void 0});i4(a)&&Object.assign(o,{[e]:a})}if(a.length===0||Object.keys(o).length===0)return;let s=i,{allOf:c,anyOf:l,oneOf:u}=s,d=tqe(s,[`allOf`,`anyOf`,`oneOf`]);return Object.assign(Object.assign({},d),{properties:o})}function o4(e,t){if(t=s4(t,e.rootSchema),typeof t!=`object`||!t)return[];let n=[];function r(t){let r=o4(e,t);n.push(...r)}if(typeof t.properties==`object`&&t.properties!=null&&n.push(...Object.keys(t.properties)),typeof t.then==`object`&&t.then!=null&&r(t.then),Array.isArray(t.allOf))for(let e of t.allOf)r(e);if(Array.isArray(t.anyOf))for(let e of t.anyOf)r(e);if(Array.isArray(t.oneOf))for(let e of t.oneOf)r(e);return n}function s4(e,t){if(typeof e==`object`&&e.$ref){let n=oqe(t,e.$ref);if(typeof n==`object`){let t=Object.assign(Object.assign({},e),n);return Reflect.deleteProperty(t,`$ref`),t}}return e}function oqe(e,t){let n=t.split(`/`),r=e;return n.forEach(t=>{if(t){if(t===`#`){r=e;return}typeof r==`object`&&(r=r[t])}}),r}function sqe(e,t){return e===void 0?`/${t}`:`${e}/${t}`}var c4=(e,t)=>{let n=e.length>2,r=e.map((n,r)=>{let i="`"+(t?t(n):n)+"`";return r===e.length-1?`or `+i:i});return n?r.join(`, `):r.join(` `)},cqe=e=>e?.data?.pointer&&e?.data?.pointer!==`#`?e.data.pointer.slice(1):e?.data?.property?`/${e.data.property}`:``,lqe=e=>e.startState.field(jq)!==e.state.field(jq);function uqe(e){let t=new fqe(e);return e=>t.doValidation(e)}var dqe=[`NoAdditionalPropertiesError`,`RequiredPropertyError`,`InvalidPropertyNameError`,`ForbiddenPropertyError`,`UndefinedValueError`],fqe=class{constructor(e){this.options=e,this.schema=null,this.mode=hq.JSON,this.rewriteError=e=>{let t=e?.data?.errors;return e.code===`one-of-error`&&t?.length?`Expected one of ${c4(t,e=>e.data.expected)}`:e.code===`type-error`?`Expected \`${e?.data?.expected&&Array.isArray(e?.data?.expected)?c4(e?.data?.expected):e?.data?.expected}\` but received \`${e?.data?.received}\``:e.message.replaceAll("in `#` ",``).replaceAll("at `#`",``).replaceAll(`/`,`.`).replaceAll(`#.`,``)},this.mode=this.options?.mode??hq.JSON,this.parser=this.options?.jsonParser??n4(this.mode)}get schemaTitle(){return this.schema?.getSchema()?.title??`json-schema`}doValidation(e){let t=Mq(e.state);if(!t||(this.schema=new PY(t),!this.schema)||!e.state.doc.toString()?.length)return[];let n=this.parser(e.state);if(n.data==null)return[];let r=[];try{r=this.schema.validate(n.data)}catch{}return dq.log(`xxx`,`validation errors`,r,n.data),r.length?r.reduce((e,t)=>{let r=()=>{let n=this.rewriteError(t);e.push({from:0,to:0,message:n,severity:`error`,source:this.schemaTitle,renderMessage:()=>{let e=zY(`div`,{});return e.innerHTML=r1(n),e}})},i=cqe(t),a=n.pointers.get(i);if(t.name===`MaxPropertiesError`||t.name===`MinPropertiesError`||i===``)r();else if(a){let n=dqe.includes(t.name),r=this.rewriteError(t),i=n?a.keyFrom:a.valueFrom,o=n?a.keyTo:a.valueTo;o!==void 0&&i!==void 0&&e.push({from:i,to:o,message:r,renderMessage:()=>{let e=zY(`div`,{});return e.innerHTML=r1(r),e},severity:`error`,source:this.schemaTitle})}else r();return e},[]):[]}};function pqe(e){let t=new hqe(e);return async function(e,n,r){return t.doHover(e,n,r)}}function mqe(e){if(e.type)return e.$ref?`${e.$ref} (${e.type})`:e.type;if(e.$ref)return`${e.$ref}`}function l4(e,t,n){return`${t}: ${c4(e[t].map(e=>{try{let{data:t}=n.resolveRef({data:e,pointer:e.$ref});return mqe(t||e)}catch{return e.type}}))}`}var hqe=class{constructor(e){this.opts=e,this.schema=null,this.mode=hq.JSON,this.opts=Object.assign({parser:JSON.parse},this.opts),this.mode=this.opts?.mode??hq.JSON}getDataForCursor(e,t,n){let r=Mq(e.state);if(!r)return null;this.schema=new PY(r);let i=vq(e.state,t,n,this.mode),a;try{a=this.opts.parser(e.state.doc.toString())}catch{}if(!i)return null;let o=this.schema.getSchema({pointer:i,data:a,withSchemaWarning:!0});return Rq(o)&&(o=o?.data.schema.$ref?this.schema.resolveRef(o):o?.data.schema),{schema:o,pointer:i}}formatMessage(e){let{message:t,typeInfo:n}=e;return t?zY(`div`,{class:`cm6-json-schema-hover`},[zY(`div`,{class:`cm6-json-schema-hover--description`,inner:r1(t,!1)}),zY(`div`,{class:`cm6-json-schema-hover--code-wrapper`},[zY(`div`,{class:`cm6-json-schema-hover--code`,inner:r1(n,!1)})])]):zY(`div`,{class:`cm6-json-schema-hover`},[zY(`div`,{class:`cm6-json-schema-hover--code-wrapper`},[zY(`code`,{class:`cm6-json-schema-hover--code`,inner:r1(n,!1)})])])}getHoverTexts(e,t){let n=``,r=null,{schema:i}=e;return i.oneOf&&(n=l4(i,`oneOf`,t)),i.anyOf&&(n=l4(i,`anyOf`,t)),i.allOf&&(n=l4(i,`allOf`,t)),i.type&&(n=Array.isArray(i.type)?c4(i.type):i.type),i.$ref&&(n=` Reference: ${i.$ref}`),i.enum&&(n=`\`enum\`: ${c4(i.enum)}`),i.format&&(n+=`\`format\`: ${i.format}`),i.pattern&&(n+=`\`pattern\`: ${i.pattern}`),i.description&&(r=i.description),{message:r,typeInfo:n}}async doHover(e,t,n){let r=t,i=t;try{let a=this.getDataForCursor(e,t,n);if(dq.log(`cursorData`,a),!a?.schema)return null;let o=(this.opts?.getHoverTexts??this.getHoverTexts)(a,this.schema),s=(this.opts?.formatHover??this.formatMessage)(o);return{pos:r,end:i,arrow:!0,above:!0,create:e=>({dom:s})}}catch(e){return dq.log(e),null}}},gqe=e=>(0,W.jsx)(ny,{disablePadding:!0,children:e.validationErrors.map((e,t)=>(0,W.jsx)(ay,{disableGutters:!0,disablePadding:!0,children:(0,W.jsxs)(Gv,{direction:`row`,spacing:1,children:[(0,W.jsx)(Q,{variant:`body2`,children:`•`}),(0,W.jsx)(Q,{variant:`caption`,children:e.instancePath.length===0?`/`:e.instancePath}),(0,W.jsx)(Q,{variant:`body2`,children:e.message})]})},t.toString()))}),u4=e=>{let t;try{t=JSON.parse(e)}catch{t=void 0}return t};function _qe({schema:e,customValidate:t}){let n=(0,C.useMemo)(()=>new dF.default({allErrors:!0}),[]);return(0,C.useCallback)(r=>{let i=[];return n.validate(e,r),i.push(...n.errors??[]),i.push(...t?.(r)??[]),i},[n,e,t])}var vqe=e=>{let t=yqe(),[n,r]=(0,C.useState)(()=>JSON.stringify(e.value,null,2)),i=_qe(e),[a,o]=(0,C.useState)([]);(0,C.useEffect)(()=>{o(i(e.value))},[i,e.value]);let s=e.onChange,c=(0,C.useCallback)(e=>{let t=u4(e),n=i(t);s(t,n.length===0),r(e),o(n)},[i,s]),l=()=>{let e=u4(n);e&&r(JSON.stringify(e,null,2))};return(0,W.jsxs)(Gv,{spacing:2,children:[(0,W.jsxs)(Z,{position:`relative`,children:[(0,W.jsx)(lq,{value:n,onChange:e=>c(e),extensions:[pPe(),iW(dPe(),{delay:100}),iW(uqe(),{delay:100,needsRefresh:lqe}),KU.data.of({autocomplete:iqe({mode:`json4`})}),AH(pqe()),WLe(e.schema)],theme:t,height:`400px`}),(0,W.jsx)(_v,{sx:{position:`absolute`,right:`0`,bottom:`0`},onClick:()=>l(),children:`Prettify`})]}),a.length>0&&(0,W.jsx)(Kh,{severity:`error`,variant:`outlined`,children:(0,W.jsx)(gqe,{validationErrors:a})})]})};function yqe(){return Em().palette.mode===`dark`?FPe:jPe}var bqe=[{value:``,label:`Auto (based on domain/name)`},{value:`light`,label:`💡 Light`},{value:`switch`,label:`🔌 Switch`},{value:`climate`,label:`🌡️ Climate`},{value:`cover`,label:`🪟 Cover`},{value:`fan`,label:`🌀 Fan`},{value:`lock`,label:`🔒 Lock`},{value:`sensor`,label:`📊 Sensor`},{value:`media_player`,label:`📺 Media Player`},{value:`vacuum`,label:`🧹 Vacuum`},{value:`remote`,label:`🎮 Remote`},{value:`humidifier`,label:`💧 Humidifier`},{value:`speaker`,label:`🔊 Speaker`},{value:`garage`,label:`🚗 Garage`},{value:`door`,label:`🚪 Door`},{value:`window`,label:`🪟 Window`},{value:`motion`,label:`🏃 Motion`},{value:`battery`,label:`🔋 Battery`},{value:`power`,label:`⚡ Power`},{value:`camera`,label:`📷 Camera`},{value:`default`,label:`🔗 Default`}],xqe=({bridgeId:e,selectedIcon:t,onIconChange:n})=>{let r=(0,C.useRef)(null),[i,a]=(0,C.useState)(!1),[o,s]=(0,C.useState)(null),[c,l]=(0,C.useState)(!1),[u,d]=(0,C.useState)(null);(0,C.useEffect)(()=>{e&&DE(e).then(t=>{a(t),t&&s(`${OE(e)}?t=${Date.now()}`)}).catch(()=>{a(!1)})},[e]);let f=(0,C.useCallback)(async t=>{let i=t.target.files?.[0];if(!(!i||!e)){d(null),l(!0);try{await uge(e,i),a(!0),s(`${OE(e)}?t=${Date.now()}`),n(void 0)}catch(e){d(e instanceof Error?e.message:`Upload failed`)}finally{l(!1),r.current&&(r.current.value=``)}}},[e,n]),p=(0,C.useCallback)(async()=>{if(e){d(null);try{await dge(e),a(!1),s(null)}catch(e){d(e instanceof Error?e.message:`Delete failed`)}}},[e]),m=(0,C.useCallback)(e=>{n(e===``?void 0:e)},[n]);return(0,W.jsxs)(Gv,{spacing:2,children:[(0,W.jsxs)(Mv,{fullWidth:!0,size:`small`,children:[(0,W.jsx)(Hx,{id:`icon-select-label`,children:`Bridge Icon`}),(0,W.jsx)(wS,{labelId:`icon-select-label`,value:t??``,label:`Bridge Icon`,onChange:e=>m(e.target.value),disabled:i,children:bqe.map(e=>(0,W.jsx)(TS,{value:e.value,children:e.label},e.value))}),(0,W.jsx)(DS,{children:i?`Custom icon is set. Delete it to use preset icons.`:`Select a preset icon or upload a custom image`})]}),e&&(0,W.jsxs)(Z,{children:[(0,W.jsx)(Q,{variant:`subtitle2`,color:`text.secondary`,gutterBottom:!0,children:`Custom Icon`}),(0,W.jsxs)(Gv,{direction:`row`,spacing:2,alignItems:`center`,children:[i&&o&&(0,W.jsx)(Z,{component:`img`,src:o,alt:`Custom bridge icon`,sx:{width:48,height:48,objectFit:`contain`,borderRadius:1,border:`1px solid`,borderColor:`divider`}}),(0,W.jsx)(`input`,{ref:r,type:`file`,accept:`image/png,image/jpeg,image/gif,image/webp,image/svg+xml`,style:{display:`none`},onChange:f}),(0,W.jsx)(_v,{variant:`outlined`,size:`small`,startIcon:(0,W.jsx)(whe,{}),onClick:()=>r.current?.click(),disabled:c,children:c?`Uploading...`:`Upload Image`}),i&&(0,W.jsx)(_v,{variant:`outlined`,size:`small`,color:`error`,startIcon:(0,W.jsx)(zS,{}),onClick:p,children:`Delete`})]}),u&&(0,W.jsx)(Q,{variant:`caption`,color:`error`,sx:{mt:1},children:u}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,sx:{mt:1,display:`block`},children:`Supported formats: PNG, JPG, GIF, WebP, SVG (max 5MB)`})]}),!e&&(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:`Save the bridge first to upload a custom icon.`})]})},d4={light:`Light`,switch:`On/Off Plug-in Unit`,lock:`Door Lock`,fan:`Fan`,binary_sensor:`Sensor`,sensor:`Sensor`,cover:`Window Covering`,climate:`Thermostat`,media_player:`Speaker / Video Player`,vacuum:`Robot Vacuum Cleaner`,humidifier:`Humidifier`,valve:`Water Valve`,alarm_control_panel:`On/Off Plug-in Unit`,event:`Generic Switch`,button:`Generic Switch`,input_button:`Generic Switch`,automation:`On/Off Switch`,script:`On/Off Switch`,scene:`On/Off Switch`,remote:`On/Off`,water_heater:`Water Heater`,input_boolean:`On/Off Plug-in Unit`,select:`Mode Select`,input_select:`Mode Select`,siren:`On/Off Plug-in Unit`,weather:`Sensor`},f4=e=>{try{return JSON.parse(e)}catch{return}};function Sqe({filter:e}){let[t,n]=(0,C.useState)(!1),[r,i]=(0,C.useState)(null),[a,o]=(0,C.useState)(null),[s,c]=(0,C.useState)(!1),l=(0,C.useRef)(null),u=(0,C.useRef)(``),d=(0,C.useCallback)(async()=>{n(!0),o(null);try{let t=await fetch(`api/matter/filter-preview`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),n=await t.text(),r=f4(n);if(!t.ok){let e=typeof r==`object`&&r&&`error`in r?String(r.error):n||`Failed to fetch preview`;throw Error(e)}i(r??f4(n)),c(!0)}catch(e){o(e instanceof Error?e.message:`Unknown error`)}finally{n(!1)}},[e]);(0,C.useEffect)(()=>{if(!(e.include.length>0&&e.include.some(e=>e.type&&e.value))){i(null),c(!1);return}let t=JSON.stringify(e);if(t!==u.current)return u.current=t,l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{d()},800),()=>{l.current&&clearTimeout(l.current)}},[e,d]);let f=r?r.entities.reduce((e,t)=>(e[t.domain]=(e[t.domain]||0)+1,e),{}):{},p=[];if(r){r.entities.some(e=>e.domain===`vacuum`)&&p.push(`This filter includes a vacuum. Consider using Server Mode (standalone device node) for Apple Home/Alexa compatibility.`),r.total>50&&p.push(`${r.total} entities is a large number. Consider splitting across multiple bridges for better stability.`);let e=Object.keys(f).filter(e=>!d4[e]);e.length>0&&p.push(`Unsupported domains will be skipped: ${e.join(`, `)}`)}return(0,W.jsxs)(Z,{sx:{mt:2},children:[(0,W.jsx)(_v,{variant:`outlined`,startIcon:t?(0,W.jsx)(Vh,{size:16}):(0,W.jsx)(Ghe,{}),onClick:d,disabled:t,size:`small`,children:t?`Loading...`:`Preview Matching Entities`}),a&&(0,W.jsx)(Kh,{severity:`error`,sx:{mt:1},children:a}),(0,W.jsx)(ey,{in:s&&r!==null,children:r&&(0,W.jsxs)(Z,{sx:{mt:2},children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,mb:1,children:[(0,W.jsxs)(Q,{variant:`subtitle1`,fontWeight:`bold`,children:[r.total,` entities match`]}),r.truncated&&(0,W.jsx)(kv,{label:`Showing first 100`,size:`small`,color:`warning`,variant:`outlined`})]}),p.length>0&&(0,W.jsx)(Gv,{spacing:.5,sx:{mb:1.5},children:p.map(e=>(0,W.jsx)(Kh,{severity:`warning`,variant:`outlined`,icon:e.includes(`vacuum`)?(0,W.jsx)(pv,{fontSize:`small`}):(0,W.jsx)(Tb,{fontSize:`small`}),sx:{py:0},children:(0,W.jsx)(Q,{variant:`caption`,children:e})},e))}),(0,W.jsx)(Z,{display:`flex`,gap:.5,flexWrap:`wrap`,mb:2,children:Object.entries(f).sort((e,t)=>t[1]-e[1]).map(([e,t])=>(0,W.jsx)(kv,{label:`${e}: ${t}${d4[e]?` → ${d4[e]}`:``}`,size:`small`,variant:`outlined`,color:d4[e]?`default`:`warning`},e))}),(0,W.jsx)(ny,{dense:!0,sx:{maxHeight:200,overflow:`auto`,bgcolor:`background.paper`,borderRadius:1,border:1,borderColor:`divider`},children:r.entities.map(e=>(0,W.jsx)(ay,{divider:!0,children:(0,W.jsx)(ly,{primary:e.friendly_name||e.entity_id,secondary:`${e.entity_id}${d4[e.domain]?` → ${d4[e.domain]}`:``}`,primaryTypographyProps:{variant:`body2`},secondaryTypographyProps:{variant:`caption`,fontFamily:`monospace`}})},e.entity_id))}),(0,W.jsx)(_v,{size:`small`,onClick:()=>c(!1),sx:{mt:1},children:`Hide Preview`})]})})]})}var Cqe=vF().ObjectFieldTemplate;function wqe(e){return(e.fieldPathId?.$id??``)===`root_filter`?(0,W.jsx)(Tqe,{...e}):(0,W.jsx)(Cqe,{...e})}function Tqe(e){let t=(e.formData?.include?.length??0)+(e.formData?.exclude?.length??0),[n,r]=(0,C.useState)(t>0);return(0,W.jsxs)(sC,{expanded:n,onChange:(e,t)=>r(t),variant:`outlined`,disableGutters:!0,sx:{borderRadius:2,"&::before":{display:`none`},overflow:`hidden`},children:[(0,W.jsxs)(uC,{expandIcon:(0,W.jsx)(nC,{}),sx:{px:2,"& .MuiAccordionSummary-content":{alignItems:`center`,gap:1.5}},children:[(0,W.jsx)(bb,{fontSize:`small`,color:`action`}),(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:600,children:`Entity Filters`}),(0,W.jsx)(zx,{badgeContent:t,color:`primary`,sx:{ml:1},max:99,children:(0,W.jsx)(Z,{})}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,sx:{ml:1},children:n?`Click to collapse`:`${t} rule${t===1?``:`s`} configured`})]}),(0,W.jsx)(cC,{sx:{px:2,pb:2},children:e.properties.map(e=>(0,W.jsx)(`div`,{children:e.content},e.name))})]})}function Eqe(e){let t=(0,C.useRef)(e),n=t.current;return t.current=e,n}function p4(e){let{items:t,canAdd:n,onAddClick:r,title:i,formData:a}=e,o=a??[],[s,c]=(0,C.useState)(()=>new Set),[l,u]=(0,C.useState)(``),d=Eqe(o.length);(0,C.useEffect)(()=>{if(o.length>d){let e=o.length-1,t=o[e];!t?.type&&!t?.value&&c(t=>new Set([...t,e]))}},[o,d]);let f=(0,C.useCallback)(e=>{c(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),p=(0,C.useMemo)(()=>{if(!l.trim())return null;let e=l.toLowerCase(),t=[];for(let n=0;n<o.length;n++){let r=o[n],i=r?.type??``,a=r?.value??``;(i.toLowerCase().includes(e)||a.toLowerCase().includes(e))&&t.push(n)}return new Set(t)},[l,o]),m=(0,C.useMemo)(()=>{let e=Array.from({length:t.length},(e,t)=>t);return p?e.filter(e=>p.has(e)):e},[t.length,p]);return(0,W.jsxs)(Z,{children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:1,children:[(0,W.jsx)(Q,{variant:`subtitle2`,fontWeight:600,children:i}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsx)(kv,{label:t.length,size:`small`,color:`default`,sx:{height:22,fontSize:`0.75rem`}}),n&&(0,W.jsx)(_v,{size:`small`,startIcon:(0,W.jsx)(hb,{}),onClick:r,children:`Add`})]})]}),t.length>3&&(0,W.jsx)(OS,{size:`small`,fullWidth:!0,placeholder:`Search rules...`,value:l,onChange:e=>u(e.target.value),slotProps:{input:{startAdornment:(0,W.jsx)(hF,{position:`start`,children:(0,W.jsx)(vE,{fontSize:`small`,color:`action`})})}},sx:{mb:1}}),p&&m.length===0&&(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,textAlign:`center`,py:2,children:`No matching rules`}),(0,W.jsx)(Gv,{spacing:.5,children:m.map(e=>{let n=o[e],r=n?.type??``,i=n?.value??``,a=s.has(e);return(0,W.jsxs)(Z,{sx:{border:1,borderColor:`divider`,borderRadius:1,overflow:`hidden`},children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,sx:{px:1.5,py:.75,cursor:`pointer`,"&:hover":{bgcolor:`action.hover`},bgcolor:a?`action.selected`:`transparent`},onClick:()=>f(e),children:[a?(0,W.jsx)(fhe,{fontSize:`small`,color:`action`}):(0,W.jsx)(mhe,{fontSize:`small`,color:`action`}),r||i?(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,ml:.5,flex:1,minWidth:0,children:[(0,W.jsx)(kv,{label:r,size:`small`,variant:`outlined`,sx:{height:22,fontSize:`0.75rem`,flexShrink:0}}),(0,W.jsx)(Q,{variant:`body2`,noWrap:!0,sx:{flex:1,minWidth:0},children:i})]}):(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,ml:.5,fontStyle:`italic`,children:`New rule (click to configure)`})]}),(0,W.jsx)(ey,{in:a,children:(0,W.jsx)(Z,{sx:{px:2,pb:1.5,pt:.5},children:t[e]})})]},e)})})]})}var Dqe=new Set([``,`pattern`,`regex`]);function Oqe(e){let{schema:t,formData:n,onChange:r,disabled:i,readonly:a,fieldPathId:o}=e,s=n??{},c=s.type??``,l=s.value??``,u=i||a,d=t.properties??{},f=(d.type?.oneOf??[]).filter(e=>typeof e.const==`string`),p=d.value?.title??`Value`,m=f.find(e=>e.const===c),h=(0,C.useCallback)(e=>r({...s,type:e},o.path),[s,r,o]),g=(0,C.useCallback)(e=>r({...s,value:e},o.path),[s,r,o]),_=Dqe.has(c)&&!u;return(0,W.jsxs)(Gv,{spacing:2,sx:{pt:1},children:[(0,W.jsxs)(Mv,{fullWidth:!0,size:`small`,disabled:u,children:[(0,W.jsx)(Hx,{id:`${o.path}-type`,children:`Type`}),(0,W.jsx)(wS,{labelId:`${o.path}-type`,label:`Type`,value:c,onChange:e=>h(e.target.value),children:f.map(e=>(0,W.jsx)(TS,{value:e.const,children:e.title??e.const},e.const))})]}),m?.description&&(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:m.description}),_?(0,W.jsx)($S,{value:l,onChange:g,label:p,placeholder:`sensor.living_room_*`,helperText:`Search or type an entity ID. Wildcards and regex still work.`,margin:`none`}):(0,W.jsx)(OS,{fullWidth:!0,size:`small`,label:p,value:l,disabled:u,onChange:e=>g(e.target.value),helperText:d.value?.description})]})}function kqe(e){let{schema:t,formData:n={},onChange:r,disabled:i,readonly:a,fieldPathId:o}=e,s=t.properties??{},c=(0,C.useCallback)((e,t)=>{r({...n,[e]:t},o.path)},[n,r,o]);return(0,W.jsxs)(Z,{children:[(0,W.jsx)(Q,{variant:`h6`,sx:{mb:2},children:`Feature Flags`}),(0,W.jsx)(Rv,{container:!0,spacing:2,children:Object.entries(s).map(([e,t])=>{let r=n[e]??t.default??!1;return(0,W.jsx)(Rv,{size:{xs:12,sm:6,lg:4},children:(0,W.jsx)(vv,{variant:`outlined`,sx:{height:`100%`,opacity:t.title?.toLowerCase().includes(`deprecated`)??!1?.6:1,transition:`border-color 0.2s, box-shadow 0.2s`,borderColor:r?`primary.main`:`divider`,"&:hover":{transform:`none`,boxShadow:`none`}},children:(0,W.jsx)(bv,{onClick:()=>{!i&&!a&&c(e,!r)},disabled:i||a,sx:{height:`100%`},children:(0,W.jsxs)(xv,{sx:{display:`flex`,flexDirection:`column`,height:`100%`,p:2,"&:last-child":{pb:2}},children:[(0,W.jsxs)(Z,{display:`flex`,justifyContent:`space-between`,alignItems:`flex-start`,gap:1,children:[(0,W.jsxs)(Z,{sx:{flex:1,minWidth:0},children:[(0,W.jsx)(Q,{variant:`subtitle2`,fontWeight:600,sx:{lineHeight:1.3},children:t.title??e}),r&&(0,W.jsx)(kv,{label:`Active`,size:`small`,color:`primary`,variant:`outlined`,sx:{mt:.5,height:20,fontSize:`0.7rem`}})]}),(0,W.jsx)(YS,{checked:r,size:`small`,disabled:i||a,tabIndex:-1,onClick:e=>e.stopPropagation(),onChange:t=>c(e,t.target.checked)})]}),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,sx:{mt:1,lineHeight:1.4,flex:1},children:t.description})]})})})},e)})})]})}var m4=function(e){return e.JSON_EDITOR=`JSON_EDITOR`,e.FIELDS_EDITOR=`FIELDS_EDITOR`,e}(m4||{}),h4=e=>{let{t}=hs(),[n,r]=(0,C.useState)(m4.FIELDS_EDITOR),i=()=>{r(n===m4.FIELDS_EDITOR?m4.JSON_EDITOR:m4.FIELDS_EDITOR)},[a,o]=(0,C.useState)(e.bridge),[s,c]=(0,C.useState)(!0),l=(0,C.useCallback)(t=>{let n=t;if(!n?.port)return[];let r=e.usedPorts[n.port];return r!==void 0&&r!==e.bridgeId?[{instancePath:`/port`,message:`Port is already used by bridge with id ${r}`}]:[]},[e.bridgeId,e.usedPorts]),u=(e,t)=>{let n=e=>e?.icon;o(t=>{let r=n(t);return r==null?{...e}:{...e,icon:r}}),c(t)},d=(0,C.useCallback)(e=>{o(t=>{if(e!=null)return{...t,icon:e};let{icon:n,...r}=t??{};return r})},[]),f=(0,C.useMemo)(()=>{let e=a?.featureFlags,t=[];return e?.serverMode&&t.push({severity:`warning`,message:`Server Mode is enabled. The node carries up to 10 devices; the first entity is the primary and drives the node name and type. More than one device is experimental.`}),e?.serverMode&&e?.vacuumOnOff===!1&&t.push({severity:`warning`,message:`Server Mode with Vacuum OnOff disabled: Alexa REQUIRES the OnOff cluster (PowerController) for robotic vacuums. Without it, the vacuum commissions but never appears in Alexa. Only disable this for Apple Home.`}),!e?.serverMode&&e?.vacuumOnOff&&t.push({severity:`warning`,message:`Vacuum OnOff is enabled in bridge mode. This adds a non-standard cluster to the RVC device type which may cause issues with Apple Home and Google Home.`}),e?.autoForceSync&&e?.autoComposedDevices&&t.push({severity:`warning`,message:`Auto Force Sync with Auto Composed Devices increases network traffic. Composed devices have more clusters, so each sync cycle sends more data.`}),t},[a]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Kh,{severity:`warning`,variant:`outlined`,children:[`Please consult`,` `,(0,W.jsx)(Jv,{href:Y9.faq.bridgeConfig,target:`_blank`,children:`the documentation`}),` `,`for proper bridge configurations.`,` `,(0,W.jsx)(`strong`,{children:`Especially if you are using labels, see the "Labels" section.`})]}),(0,W.jsxs)(Kh,{severity:`info`,variant:`outlined`,children:[(0,W.jsx)(`strong`,{children:`Community tip:`}),` Users have reported that bridges with a large number of devices can become unstable depending on the controller. If you experience connectivity issues, consider splitting your devices across multiple bridges.`]}),f.map(e=>(0,W.jsx)(Kh,{severity:e.severity,variant:`outlined`,children:e.message},e.message)),(0,W.jsxs)(Gv,{spacing:2,children:[(0,W.jsx)(Z,{display:`flex`,justifyContent:`flex-end`,children:(0,W.jsx)(_v,{onClick:()=>i(),title:n===m4.FIELDS_EDITOR?t(`bridge.jsonEditor`):t(`bridge.formEditor`),children:n===m4.FIELDS_EDITOR?(0,W.jsx)(Xhe,{}):(0,W.jsx)(Rhe,{})})}),n===m4.FIELDS_EDITOR&&(0,W.jsx)(Oke,{value:a??{},onChange:u,schema:uv,uiSchema:{icon:{"ui:widget":`hidden`},featureFlags:{"ui:field":`featureFlags`},filter:{include:{"ui:options":{ArrayFieldTemplate:p4},items:{"ui:field":`entityFilterRule`}},exclude:{"ui:options":{ArrayFieldTemplate:p4},items:{"ui:field":`entityFilterRule`}}}},customValidate:l,templates:{ObjectFieldTemplate:wqe},fields:{featureFlags:kqe,entityFilterRule:Oqe}}),n===m4.JSON_EDITOR&&(0,W.jsx)(vqe,{value:a??{},onChange:u,schema:uv,customValidate:l}),a?.filter&&(0,W.jsx)(Sqe,{filter:a.filter}),(0,W.jsx)(vv,{variant:`outlined`,children:(0,W.jsxs)(xv,{children:[(0,W.jsx)(Q,{variant:`subtitle1`,gutterBottom:!0,fontWeight:600,children:t(`bridge.iconLabel`)}),(0,W.jsx)(xqe,{bridgeId:e.bridgeId,selectedIcon:a?.icon,onIconChange:d})]})}),(0,W.jsxs)(Rv,{container:!0,children:[(0,W.jsx)(Rv,{size:{xs:6,sm:4,md:3},children:(0,W.jsx)(_v,{fullWidth:!0,variant:`outlined`,color:`error`,onClick:e.onCancel,children:t(`common.cancel`)})}),(0,W.jsx)(Rv,{size:{xs:0,sm:4,md:6},sx:{display:{xs:`none`,sm:`block`}}}),(0,W.jsx)(Rv,{size:{xs:6,sm:4,md:3},children:(0,W.jsx)(_v,{fullWidth:!0,variant:`outlined`,disabled:!s,onClick:async()=>{s&&await e.onSave(a)},children:t(`common.save`)})})]})]})]})},Aqe={name:``,featureFlags:{},filter:{include:[],exclude:[]}};function jqe(e){let t=5540;for(;e[t];)t++;return t}var Mqe=()=>{let{t:e}=hs(),t=Xv(),n=Cr(),[r,i]=(0,C.useState)(),a=!!VT().content?.length,o=HT(),s=(0,C.useCallback)(e=>{i(e?.id)},[]),c=(0,C.useMemo)(()=>{if(!o)return;let e=jqe(o);if(r){let t=rv.find(e=>e.id===r);if(t)return{name:t.name,port:e,filter:{...t.filter},featureFlags:{...t.featureFlags},icon:t.icon}}return{...Aqe,port:e}},[o,r]),l=WT(),u=()=>{n(-1)};return!c||!o?e(`common.loading`):(0,W.jsxs)(Gv,{spacing:4,children:[(0,W.jsx)(Yv,{items:[{name:e(`nav.bridges`),to:Y9.bridges},{name:e(`common.create`),to:Y9.createBridge}]}),a&&(0,W.jsx)(Kh,{severity:`info`,variant:`outlined`,children:(0,W.jsxs)(Q,{children:[`Did you know that you can connect the same bridge with multiple assistants?`,` `,(0,W.jsx)(Jv,{href:Y9.faq.multiFabric,target:`_blank`,children:`Learn more.`})]})}),(0,W.jsx)(HE,{selectedTemplate:r,onSelect:s}),(0,W.jsx)(h4,{bridge:c,usedPorts:o,onSave:async n=>{await l({...n}).then(()=>t.show({message:e(`bridge.saveSuccess`),severity:`success`})).then(()=>u()).catch(e=>t.show({message:e.message,severity:`error`}))},onCancel:u},r??`custom`)]})},Nqe=()=>{let{t:e}=hs(),t=Xv(),n=Cr(),{bridgeId:r}=Dr(),{content:i,isLoading:a}=UT(r),o=HT(),s=Wme(),c=(0,C.useMemo)(()=>{if(!(a||!i))return{name:i.name,port:i.port,filter:i.filter,...i.countryCode!=null&&{countryCode:i.countryCode},...i.featureFlags!=null&&{featureFlags:i.featureFlags},...i.icon!=null&&{icon:i.icon},...i.priority!=null&&{priority:i.priority},...i.serialNumberSuffix!=null&&{serialNumberSuffix:i.serialNumberSuffix}}},[a,i]),l=()=>{n(-1)};return a||!o?e(`common.loading`):!i||!c?e(`notFound.title`):(0,W.jsxs)(Gv,{spacing:4,children:[(0,W.jsx)(Yv,{items:[{name:e(`nav.bridges`),to:Y9.bridges},{name:i.name,to:Y9.bridge(r)},{name:e(`common.edit`),to:Y9.editBridge(r)}]}),(0,W.jsx)(h4,{bridgeId:r,bridge:c,usedPorts:o,onSave:async n=>{await s({...n,id:r}).then(()=>t.show({message:e(`bridge.updateSuccess`),severity:`success`})).then(()=>l()).catch(e=>t.show({message:e.message,severity:`error`}))},onCancel:l})]})};async function Pqe(){let e=await fetch(`api/backup/snapshots`);return await F_(e,`Failed to fetch backups`),P_(e)}async function Fqe(){let e=await fetch(`api/backup/snapshots/create`,{method:`POST`});return await F_(e,`Failed to create backup`),P_(e)}async function Iqe(e){let t=await fetch(`api/backup/snapshots/${encodeURIComponent(e)}/download`);if(!t.ok)throw Error(`Failed to download backup`);let n=await t.blob(),r=window.URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=e,document.body.appendChild(i),i.click(),window.URL.revokeObjectURL(r),document.body.removeChild(i)}async function Lqe(e,t){let n=await fetch(`api/backup/snapshots/${encodeURIComponent(e)}/restore`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({overwriteExisting:!0,includeMappings:!0,restoreIdentity:!0,...t})});return await F_(n,`Failed to restore backup`),P_(n)}async function Rqe(e){await F_(await fetch(`api/backup/snapshots/${encodeURIComponent(e)}`,{method:`DELETE`}),`Failed to delete backup`)}async function zqe(){let e=await fetch(`api/backup/settings`);return await F_(e,`Failed to fetch backup settings`),P_(e)}async function Bqe(e){let t=await fetch(`api/backup/settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});return await F_(t,`Failed to update backup settings`),P_(t)}function Vqe(e){return e<1024?`${e} B`:e<1024*1024?`${Math.round(e/1024)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function g4(){let{t:e}=hs(),[t,n]=(0,C.useState)(!1),[r,i]=(0,C.useState)(null),[a,o]=(0,C.useState)(null),[s,c]=(0,C.useState)(null),[l,u]=(0,C.useState)(new Set),[d,f]=(0,C.useState)(!1),[p,m]=(0,C.useState)(!0),[h,g]=(0,C.useState)(!0),[_,v]=(0,C.useState)(!1),[y,b]=(0,C.useState)(!1),[x,S]=(0,C.useState)(null),w=(0,C.useRef)(null),[T,E]=(0,C.useState)([]),[D,O]=(0,C.useState)(!0),[k,A]=(0,C.useState)(null),[j,M]=(0,C.useState)(null),[N,P]=(0,C.useState)(null),[F,I]=(0,C.useState)(!1),L=(0,C.useCallback)(async()=>{try{O(!0);let[e,t]=await Promise.all([Pqe(),zqe()]);E(e),A(t)}catch(e){i(e instanceof Error?e.message:`Failed to load backups`)}finally{O(!1)}},[]);(0,C.useEffect)(()=>{L()},[L]);let R=async()=>{I(!0),i(null);try{await Fqe(),o(e(`backup.snapshotCreated`)),await L()}catch(e){i(e instanceof Error?e.message:`Failed to create backup`)}finally{I(!1)}},ee=async e=>{try{await Iqe(e)}catch(e){i(e instanceof Error?e.message:`Failed to download backup`)}},z=async t=>{n(!0),i(null);try{let n=await Lqe(t);n.errors.length>0?i(`Restored ${n.bridgesRestored} bridges with ${n.errors.length} errors`):o(e(`backup.snapshotRestored`,{bridges:n.bridgesRestored,mappings:n.mappingsRestored,identities:n.identitiesRestored})),M(null),n.restartRequired&&b(!0)}catch(e){i(e instanceof Error?e.message:`Failed to restore backup`)}finally{n(!1)}},te=async e=>{try{await Rqe(e),P(null),await L()}catch(e){i(e instanceof Error?e.message:`Failed to delete backup`)}},B=async e=>{try{A(await Bqe(e))}catch(e){i(e instanceof Error?e.message:`Failed to update settings`)}},V=async(t=!1)=>{n(!0),i(null);try{let n=await fetch(t?`api/backup/download?includeIdentity=true`:`api/backup/download`);if(!n.ok)throw Error(`Failed to create backup`);let r=await n.blob(),i=window.URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=n.headers.get(`Content-Disposition`)?.match(/filename="(.+)"/)?.[1]||`hamh-backup.zip`,document.body.appendChild(a),a.click(),window.URL.revokeObjectURL(i),document.body.removeChild(a),o(e(`backup.downloadSuccess`))}catch(e){i(e instanceof Error?e.message:`Unknown error`)}finally{n(!1)}},ne=async e=>{let t=e.target.files?.[0];if(t){S(t),n(!0),i(null);try{let e=new FormData;e.append(`file`,t);let n=await fetch(`api/backup/restore/preview`,{method:`POST`,body:e});if(!n.ok){let e=await n.text(),t=`Failed to parse backup`;try{let n=JSON.parse(e);n.error&&(t=n.error)}catch{e&&(t=`${t} (HTTP ${n.status}: ${e.slice(0,120)})`)}throw Error(t)}let r=await n.json();c(r),u(new Set(r.bridges.map(e=>e.id))),v(!0)}catch(e){i(e instanceof Error?e.message:`Unknown error`)}finally{n(!1),w.current&&(w.current.value=``)}}},re=async()=>{if(x){n(!0),i(null);try{let e=new FormData;e.append(`file`,x),e.append(`options`,JSON.stringify({bridgeIds:Array.from(l),overwriteExisting:d,includeMappings:p,restoreIdentity:h&&s?.includesIdentity}));let t=await fetch(`api/backup/restore`,{method:`POST`,body:e});if(!t.ok){let e=await t.text(),n=`Failed to restore backup`;try{let t=JSON.parse(e);t.error&&(n=t.error)}catch{e&&(n=`${n} (HTTP ${t.status}: ${e.slice(0,120)})`)}throw Error(n)}let n=await t.json();if(n.errors.length>0)i(`Restored ${n.bridgesRestored} bridges with ${n.errors.length} errors`);else{let e=[`Restored ${n.bridgesRestored} bridges`];n.mappingsRestored>0&&e.push(`${n.mappingsRestored} entity mappings`),n.identitiesRestored>0&&e.push(`${n.identitiesRestored} identities`),o(`${e.join(`, `)}!`)}v(!1),c(null),S(null),n.restartRequired&&b(!0)}catch(e){i(e instanceof Error?e.message:`Unknown error`)}finally{n(!1)}}},ie=e=>{let t=new Set(l);t.has(e)?t.delete(e):t.add(e),u(t)};return(0,W.jsxs)(vv,{children:[(0,W.jsxs)(xv,{children:[(0,W.jsxs)(Q,{variant:`h6`,gutterBottom:!0,children:[(0,W.jsx)(QT,{sx:{mr:1,verticalAlign:`middle`}}),e(`backup.title`)]}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mb:2},children:e(`backup.description`)}),r&&(0,W.jsx)(Kh,{severity:`error`,sx:{mb:2},onClose:()=>i(null),children:r}),a&&(0,W.jsx)(Kh,{severity:`success`,sx:{mb:2},onClose:()=>o(null),children:a}),(0,W.jsxs)(Rv,{container:!0,spacing:2,children:[(0,W.jsx)(Rv,{size:{xs:12,md:4},children:(0,W.jsxs)(qm,{sx:{p:2,height:`100%`,display:`flex`,flexDirection:`column`},children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,mb:1,children:[(0,W.jsx)(QT,{color:`primary`}),(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:`bold`,children:e(`backup.configBackup`)})]}),(0,W.jsxs)(Z,{sx:{flexGrow:1},children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`backup.configBackupDesc`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`backup.configBackupNote`)})]}),(0,W.jsx)(_v,{variant:`contained`,startIcon:t?(0,W.jsx)(Vh,{size:20,color:`inherit`}):(0,W.jsx)(QT,{}),onClick:()=>V(!1),disabled:t,fullWidth:!0,sx:{mt:2},children:e(`backup.configBackup`)})]})}),(0,W.jsx)(Rv,{size:{xs:12,md:4},children:(0,W.jsxs)(qm,{sx:{p:2,height:`100%`,display:`flex`,flexDirection:`column`},children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,mb:1,children:[(0,W.jsx)(yE,{color:`warning`}),(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:`bold`,children:e(`backup.fullBackup`)})]}),(0,W.jsxs)(Z,{sx:{flexGrow:1},children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`backup.fullBackupDesc`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`backup.fullBackupWarning`)})]}),(0,W.jsx)(_v,{variant:`contained`,color:`warning`,startIcon:t?(0,W.jsx)(Vh,{size:20,color:`inherit`}):(0,W.jsx)(QT,{}),onClick:()=>V(!0),disabled:t,fullWidth:!0,sx:{mt:2},children:e(`backup.fullBackup`)})]})}),(0,W.jsx)(Rv,{size:{xs:12,md:4},children:(0,W.jsxs)(qm,{sx:{p:2,height:`100%`,display:`flex`,flexDirection:`column`},children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,mb:1,children:[(0,W.jsx)(gE,{color:`info`}),(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:`bold`,children:e(`backup.restoreFromBackup`)})]}),(0,W.jsx)(Z,{sx:{flexGrow:1},children:(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`backup.restoreDesc`)})}),(0,W.jsxs)(_v,{variant:`outlined`,color:`info`,startIcon:(0,W.jsx)(gE,{}),component:`label`,disabled:t,fullWidth:!0,sx:{mt:2},children:[e(`backup.restoreFromBackup`),(0,W.jsx)(`input`,{ref:w,type:`file`,accept:`.zip`,hidden:!0,onChange:ne})]})]})})]}),(0,W.jsx)(Kb,{sx:{my:3}}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:2,children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsx)(QT,{color:`primary`}),(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:`bold`,children:e(`backup.storedBackups`)}),T.length>0&&(0,W.jsx)(kv,{label:T.length,size:`small`,color:`primary`,variant:`outlined`})]}),(0,W.jsx)(_v,{variant:`outlined`,size:`small`,startIcon:F?(0,W.jsx)(Vh,{size:16,color:`inherit`}):(0,W.jsx)(hb,{}),onClick:R,disabled:F,children:e(`backup.createSnapshot`)})]}),D?(0,W.jsx)(Z,{display:`flex`,justifyContent:`center`,p:2,children:(0,W.jsx)(Vh,{size:24})}):T.length===0?(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{textAlign:`center`,py:2},children:e(`backup.noSnapshots`)}):(0,W.jsx)(ny,{dense:!0,children:T.map(t=>(0,W.jsxs)(ay,{secondaryAction:(0,W.jsxs)(Z,{display:`flex`,gap:.5,children:[(0,W.jsx)(mb,{title:e(`backup.downloadSnapshot`),children:(0,W.jsx)(Uh,{size:`small`,onClick:()=>ee(t.filename),children:(0,W.jsx)(LT,{fontSize:`small`})})}),(0,W.jsx)(mb,{title:e(`backup.restoreSnapshot`),children:(0,W.jsx)(Uh,{size:`small`,color:`warning`,onClick:()=>M(t.filename),children:(0,W.jsx)(gE,{fontSize:`small`})})}),(0,W.jsx)(mb,{title:e(`common.delete`),children:(0,W.jsx)(Uh,{size:`small`,color:`error`,onClick:()=>P(t.filename),children:(0,W.jsx)(zS,{fontSize:`small`})})})]}),children:[(0,W.jsx)(sy,{sx:{minWidth:36},children:(0,W.jsx)(QT,{fontSize:`small`,color:t.auto?`action`:`primary`})}),(0,W.jsx)(ly,{primary:(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsxs)(Q,{variant:`body2`,children:[`v`,t.version]}),(0,W.jsx)(kv,{label:t.auto?e(`backup.auto`):e(`backup.manual`),size:`small`,variant:`outlined`,color:t.auto?`default`:`primary`}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:Vqe(t.sizeBytes)})]}),secondary:new Date(t.createdAt).toLocaleString()})]},t.filename))}),(0,W.jsx)(Kb,{sx:{my:3}}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,mb:2,children:[(0,W.jsx)(RT,{color:`action`}),(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:`bold`,children:e(`backup.settings`)})]}),k&&(0,W.jsxs)(Z,{sx:{display:`flex`,flexDirection:`column`,gap:2,maxWidth:400},children:[(0,W.jsx)(Lv,{control:(0,W.jsx)(YS,{checked:k.autoBackup,onChange:e=>B({autoBackup:e.target.checked})}),label:e(`backup.autoBackupLabel`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mt:-1},children:e(`backup.autoBackupDesc`)}),(0,W.jsx)(OS,{label:e(`backup.retentionCount`),type:`number`,size:`small`,value:k.backupRetentionCount,onChange:e=>{let t=parseInt(e.target.value,10);t>=1&&t<=100&&B({backupRetentionCount:t})},inputProps:{min:1,max:100},helperText:e(`backup.retentionCountDesc`),sx:{maxWidth:200}})]})]}),(0,W.jsxs)(Vb,{open:_,onClose:()=>v(!1),maxWidth:`sm`,fullWidth:!0,children:[(0,W.jsx)(Wb,{children:e(`backup.restoreTitle`)}),(0,W.jsx)(Ub,{children:s&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Q,{variant:`body2`,color:`text.secondary`,gutterBottom:!0,children:[`Backup created: `,new Date(s.createdAt).toLocaleString()]}),s.includesIdentity&&(0,W.jsx)(Kh,{severity:`info`,sx:{mt:1},children:`This backup includes Matter identity data (keypairs, fabric credentials). Restoring identities allows bridges to reconnect without re-commissioning.`}),(0,W.jsxs)(Q,{variant:`subtitle2`,sx:{mt:2,mb:1},children:[e(`backup.selectBridges`),`:`]}),(0,W.jsx)(ny,{dense:!0,children:s.bridges.map(e=>(0,W.jsxs)(ay,{onClick:()=>ie(e.id),sx:{cursor:`pointer`},children:[(0,W.jsx)(sy,{children:(0,W.jsx)(Ev,{edge:`start`,checked:l.has(e.id),tabIndex:-1,disableRipple:!0})}),(0,W.jsx)(ly,{primary:e.name,secondary:(0,W.jsxs)(W.Fragment,{children:[`Port: `,e.port,e.hasMappings&&` • ${e.mappingCount} entity mappings`,e.exists&&(0,W.jsx)(Q,{component:`span`,color:`warning.main`,sx:{ml:1},children:`(exists)`})]})})]},e.id))}),(0,W.jsxs)(Z,{sx:{mt:2},children:[(0,W.jsx)(Lv,{control:(0,W.jsx)(Ev,{checked:d,onChange:e=>f(e.target.checked)}),label:e(`backup.overwriteExisting`)}),(0,W.jsx)(Lv,{control:(0,W.jsx)(Ev,{checked:p,onChange:e=>m(e.target.checked)}),label:e(`backup.includeMappings`)}),s?.includesIdentity&&(0,W.jsx)(Lv,{control:(0,W.jsx)(Ev,{checked:h,onChange:e=>g(e.target.checked)}),label:e(`backup.restoreIdentities`)})]})]})}),(0,W.jsxs)(Hb,{children:[(0,W.jsx)(_v,{onClick:()=>v(!1),children:e(`common.cancel`)}),(0,W.jsx)(_v,{variant:`contained`,onClick:re,disabled:t||l.size===0,startIcon:t?(0,W.jsx)(Vh,{size:20,color:`inherit`}):null,children:e(`backup.restore`)})]})]}),(0,W.jsxs)(Vb,{open:y,onClose:()=>b(!1),children:[(0,W.jsxs)(Wb,{children:[(0,W.jsx)(hE,{sx:{mr:1,verticalAlign:`middle`}}),e(`backup.restartRequired`)]}),(0,W.jsxs)(Ub,{children:[(0,W.jsx)(Q,{children:e(`backup.restartMessage`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mt:1},children:e(`backup.restartNote`)})]}),(0,W.jsxs)(Hb,{children:[(0,W.jsx)(_v,{onClick:()=>b(!1),children:e(`common.later`)}),(0,W.jsx)(_v,{variant:`contained`,color:`warning`,onClick:async()=>{n(!0);try{await fetch(`api/backup/restart`,{method:`POST`}),o(`Application is restarting...`)}catch(e){i(e instanceof Error?e.message:`Failed to restart`)}finally{n(!1),b(!1)}},disabled:t,startIcon:t?(0,W.jsx)(Vh,{size:20,color:`inherit`}):(0,W.jsx)(hE,{}),children:e(`backup.restartNow`)})]})]}),(0,W.jsxs)(Vb,{open:j!==null,onClose:()=>M(null),children:[(0,W.jsxs)(Wb,{children:[(0,W.jsx)(gE,{sx:{mr:1,verticalAlign:`middle`}}),e(`backup.confirmRestore`)]}),(0,W.jsxs)(Ub,{children:[(0,W.jsx)(Q,{children:e(`backup.confirmRestoreMessage`,{filename:j})}),(0,W.jsx)(Kh,{severity:`warning`,sx:{mt:2},children:e(`backup.restoreWarning`)})]}),(0,W.jsxs)(Hb,{children:[(0,W.jsx)(_v,{onClick:()=>M(null),children:e(`common.cancel`)}),(0,W.jsx)(_v,{variant:`contained`,color:`warning`,onClick:()=>j&&z(j),disabled:t,startIcon:t?(0,W.jsx)(Vh,{size:20,color:`inherit`}):null,children:e(`backup.restore`)})]})]}),(0,W.jsxs)(Vb,{open:N!==null,onClose:()=>P(null),children:[(0,W.jsxs)(Wb,{children:[(0,W.jsx)(zS,{sx:{mr:1,verticalAlign:`middle`}}),e(`backup.confirmDelete`)]}),(0,W.jsx)(Ub,{children:(0,W.jsx)(Q,{children:e(`backup.confirmDeleteMessage`,{filename:N})})}),(0,W.jsxs)(Hb,{children:[(0,W.jsx)(_v,{onClick:()=>P(null),children:e(`common.cancel`)}),(0,W.jsx)(_v,{variant:`contained`,color:`error`,onClick:()=>N&&te(N),children:e(`common.delete`)})]})]})]})}var Hqe=e=>{let t=Math.floor(e/86400),n=Math.floor(e%86400/3600),r=Math.floor(e%3600/60);return t>0?`${t}d ${n}h ${r}m`:n>0?`${n}h ${r}m`:`${r}m`};function Uqe(e={}){let{t}=hs(),[n,r]=(0,C.useState)(null),[i,a]=(0,C.useState)(!0),[o,s]=(0,C.useState)(null),[c,l]=(0,C.useState)(`name`),[u,d]=(0,C.useState)(`asc`),f=e.sortField??c,p=e.sortDirection??u,m=e.onSortFieldChange??l,h=e.onSortDirectionChange??d,g=(0,C.useCallback)(async()=>{try{let e=await fetch(`api/health/detailed`);e.ok?(r(await e.json()),s(null)):s(t(`health.fetchFailed`))}catch{s(t(`health.connectionError`))}finally{a(!1)}},[t]);(0,C.useEffect)(()=>{g();let e=setInterval(g,1e4);return()=>clearInterval(e)},[g]);let _=(0,C.useCallback)(async()=>{try{let e=await fetch(`api/diagnostic/export`);if(e.ok){let t=await e.blob(),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=e.headers.get(`Content-Disposition`)?.match(/filename="(.+)"/)?.[1]??`hamh-diagnostic-${new Date().toISOString().replace(/[:.]/g,`-`)}.json`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}}catch{s(t(`health.exportFailed`))}},[t]),v=async e=>{try{await fetch(`api/matter/bridges/${e}/actions/restart`,{method:`POST`}),g()}catch{s(t(`health.restartFailed`))}};return i?(0,W.jsx)(Z,{display:`flex`,justifyContent:`center`,p:4,children:(0,W.jsx)(Vh,{})}):o||!n?(0,W.jsx)(Kh,{severity:`error`,sx:{m:2},children:o??t(`health.unableToLoad`)}):(0,W.jsxs)(Z,{sx:{p:2},children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:2,children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[n.status===`healthy`?(0,W.jsx)(fv,{color:`success`}):n.status===`degraded`?(0,W.jsx)(Qv,{color:`warning`}):(0,W.jsx)(Tx,{color:`error`}),(0,W.jsx)(Q,{variant:`h5`,children:t(`health.systemHealth`)}),(0,W.jsx)(kv,{label:n.status.toUpperCase(),color:n.status===`healthy`?`success`:n.status===`degraded`?`warning`:`error`,size:`small`})]}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsx)(_v,{variant:`outlined`,size:`small`,startIcon:(0,W.jsx)($T,{}),onClick:_,children:t(`health.exportDiagnostic`)}),(0,W.jsx)(mb,{title:t(`common.refresh`),children:(0,W.jsx)(Uh,{onClick:g,"aria-label":`Refresh health data`,children:(0,W.jsx)(mE,{})})})]})]}),(0,W.jsxs)(Rv,{container:!0,spacing:2,children:[(0,W.jsx)(Rv,{size:{xs:12,md:4},children:(0,W.jsxs)(qm,{sx:{p:2},children:[(0,W.jsx)(Q,{variant:`subtitle2`,color:`text.secondary`,children:t(`health.version`)}),(0,W.jsx)(Q,{variant:`h6`,children:n.version})]})}),(0,W.jsx)(Rv,{size:{xs:12,md:4},children:(0,W.jsxs)(qm,{sx:{p:2},children:[(0,W.jsx)(Q,{variant:`subtitle2`,color:`text.secondary`,children:t(`health.uptime`)}),(0,W.jsx)(Q,{variant:`h6`,children:Hqe(n.uptime)})]})}),(0,W.jsx)(Rv,{size:{xs:12,md:4},children:(0,W.jsxs)(qm,{sx:{p:2},children:[(0,W.jsx)(Q,{variant:`subtitle2`,color:`text.secondary`,children:t(`health.homeAssistant`)}),(0,W.jsx)(kv,{label:n.services.homeAssistant.connected?t(`health.connected`):t(`health.disconnected`),color:n.services.homeAssistant.connected?`success`:`error`,size:`small`})]})})]}),(0,W.jsx)(Kb,{sx:{my:3}}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:2,flexWrap:`wrap`,gap:1,children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsx)(uE,{}),(0,W.jsx)(Q,{variant:`h6`,children:t(`health.bridgeStatus`)}),(0,W.jsx)(kv,{label:`${n.services.bridges.running}/${n.services.bridges.total} ${t(`common.running`)}`,size:`small`,variant:`outlined`})]}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsx)(Px,{fontSize:`small`,color:`action`}),(0,W.jsxs)(Mv,{size:`small`,sx:{minWidth:120},children:[(0,W.jsx)(Hx,{children:t(`health.sortBy`)}),(0,W.jsxs)(wS,{value:f,label:t(`health.sortBy`),onChange:e=>m(e.target.value),children:[(0,W.jsx)(TS,{value:`name`,children:t(`common.name`)}),(0,W.jsx)(TS,{value:`created`,children:t(`health.created`)})]})]}),(0,W.jsx)(mb,{title:t(p===`asc`?`health.ascending`:`health.descending`),children:(0,W.jsx)(Uh,{size:`small`,onClick:()=>h(p===`asc`?`desc`:`asc`),"aria-label":`Sort ${p===`asc`?`descending`:`ascending`}`,children:p===`asc`?(0,W.jsx)(XT,{fontSize:`small`}):(0,W.jsx)(YT,{fontSize:`small`})})})]})]}),(0,W.jsx)(Rv,{container:!0,spacing:2,alignItems:`stretch`,children:[...n.bridgeDetails].sort((e,t)=>{let n=0;return n=f===`name`?e.name.localeCompare(t.name):e.id.localeCompare(t.id),p===`asc`?n:-n}).map(e=>(0,W.jsx)(Rv,{size:{xs:12,sm:6,md:6,lg:4,xl:3},sx:{display:`flex`},children:(0,W.jsx)(vv,{variant:`outlined`,sx:{width:`100%`,height:`100%`,minWidth:280,maxWidth:480,display:`flex`,flexDirection:`column`,borderColor:e.status===`running`?`success.main`:e.status===`failed`?`error.main`:`warning.main`},children:(0,W.jsxs)(xv,{sx:{flex:1,display:`flex`,flexDirection:`column`,p:2,"&:last-child":{pb:2}},children:[(0,W.jsxs)(Z,{display:`flex`,justifyContent:`space-between`,alignItems:`flex-start`,flexShrink:0,children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,minWidth:0,children:[(0,W.jsx)(_b,{}),(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:`bold`,noWrap:!0,sx:{maxWidth:140},children:e.name})]}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:.5,flexShrink:0,children:[(0,W.jsx)(kv,{label:e.status.toUpperCase(),color:e.status===`running`?`success`:e.status===`failed`?`error`:`warning`,size:`small`}),e.status===`failed`&&(0,W.jsx)(mb,{title:t(`bridge.restart`),children:(0,W.jsx)(Uh,{size:`small`,onClick:()=>v(e.id),children:(0,W.jsx)(hhe,{})})})]})]}),e.statusReason&&(0,W.jsx)(Q,{variant:`body2`,color:`error`,sx:{mt:1,flexShrink:0},children:e.statusReason}),(0,W.jsx)(Z,{sx:{mt:`auto`,pt:1,flexShrink:0},children:(0,W.jsxs)(Z,{display:`flex`,flexWrap:`wrap`,gap:.5,alignItems:`center`,children:[(0,W.jsx)(kv,{label:`${t(`common.port`)} ${e.port}`,size:`small`,variant:`outlined`,color:`default`}),(0,W.jsx)(kv,{label:`${e.deviceCount} ${t(`common.devices`)}`,size:`small`,variant:`outlined`,color:`default`}),(0,W.jsx)(kv,{label:`${e.fabricCount} ${t(`common.fabrics`)}`,size:`small`,variant:`outlined`,color:`default`}),e.failedEntityCount>0&&(0,W.jsx)(kv,{label:`${e.failedEntityCount} failed`,color:`error`,size:`small`})]})}),e.connectivity&&e.status===`running`&&(0,W.jsx)(Z,{sx:{mt:1,flexShrink:0},children:(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,children:[t(`health.sessions`),`:`,` `,e.connectivity.totalSessions,` |`,` `,t(`health.subscriptions`),`:`,` `,e.connectivity.totalSubscriptions,e.connectivity.fabricSummary&&e.connectivity.fabricSummary.length>1&&` (${e.connectivity.fabricSummary.length} ${t(`health.fabrics`)})`]})}),e.fabrics.length>0&&(0,W.jsxs)(Z,{sx:{mt:1,flexShrink:0},children:[(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,children:[t(`health.connectedTo`),`:`]}),(0,W.jsx)(Z,{display:`flex`,gap:.5,flexWrap:`wrap`,mt:.5,children:e.fabrics.map(e=>(0,W.jsx)(mb,{title:(0,W.jsxs)(Z,{sx:{fontSize:`0.75rem`},children:[(0,W.jsxs)(`div`,{children:[`Fabric #`,e.fabricIndex]}),(0,W.jsxs)(`div`,{children:[`Vendor: `,Cx(e.rootVendorId),` `,`(0x`,e.rootVendorId.toString(16).toUpperCase().padStart(4,`0`),`)`]}),(0,W.jsxs)(`div`,{children:[`Fabric ID: `,e.fabricId]}),(0,W.jsxs)(`div`,{children:[`Node ID: `,e.nodeId]}),(0,W.jsxs)(`div`,{children:[`Root Node ID: `,e.rootNodeId]})]}),children:(0,W.jsx)(kv,{icon:(0,W.jsx)(wx,{fabric:e}),label:e.label||Cx(e.rootVendorId),size:`small`,variant:`outlined`})},e.fabricIndex))})]}),e.controllerWarnings&&e.controllerWarnings.length>0&&(0,W.jsxs)(Kh,{severity:`warning`,sx:{mt:1,flexShrink:0,py:0},children:[(0,W.jsx)(Q,{variant:`caption`,component:`div`,children:t(`health.controllerWarningsTitle`,`Some devices may not show up in a connected controller:`)}),e.controllerWarnings.map(e=>(0,W.jsxs)(Q,{variant:`caption`,component:`div`,color:`text.secondary`,children:[e.entityId,` on `,e.controllerLabel,e.note?` (${e.note})`:``]},`${e.entityId}:${e.deviceTypeId}:${e.controller}`))]})]})})},e.id))}),n.recovery.enabled&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Kb,{sx:{my:3}}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,mb:1,children:[(0,W.jsx)(hhe,{}),(0,W.jsx)(Q,{variant:`h6`,children:t(`health.autoRecovery`)}),(0,W.jsx)(kv,{label:t(`common.enabled`),color:`success`,size:`small`})]}),(0,W.jsxs)(Q,{variant:`body2`,color:`text.secondary`,children:[t(`health.recoveryAttempts`),`: `,n.recovery.recoveryCount,n.recovery.lastRecoveryAttempt&&` | Last attempt: ${new Date(n.recovery.lastRecoveryAttempt).toLocaleString()}`]})]}),(0,W.jsx)(Kb,{sx:{my:3}}),(0,W.jsx)(g4,{})]})}var _4=e=>e===`pass`?`success`:e===`warn`?`warning`:`error`;function Wqe(){let{t:e}=hs(),[t,n]=(0,C.useState)(null),[r,i]=(0,C.useState)(!1),[a,o]=(0,C.useState)(null),[s,c]=(0,C.useState)(!1),l=(0,C.useCallback)(async()=>{i(!0),o(null);try{let t=await fetch(`api/network`);t.ok?n(await t.json()):o(e(`health.fetchFailed`))}catch{o(e(`health.connectionError`))}finally{i(!1)}},[e]);(0,C.useEffect)(()=>{l()},[l]);let u=t?.checks.filter(e=>e.status===`pass`).length??0,d=t?.checks.filter(e=>e.status===`warn`).length??0,f=t?.checks.filter(e=>e.status===`fail`).length??0;return(0,W.jsxs)(qm,{variant:`outlined`,sx:{p:2},children:[(0,W.jsxs)(Z,{display:`flex`,justifyContent:`space-between`,alignItems:`center`,mb:1,children:[(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:`bold`,children:e(`health.networkDiagnostics`)}),(0,W.jsx)(_v,{size:`small`,onClick:l,disabled:r,children:r?(0,W.jsx)(Vh,{size:16}):e(`health.refresh`)})]}),a&&(0,W.jsx)(Kh,{severity:`error`,sx:{mb:1},children:a}),t&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Z,{display:`flex`,gap:1,mb:1.5,flexWrap:`wrap`,children:[u>0&&(0,W.jsx)(kv,{label:`${u} ${e(`health.checksPassed`)}`,color:`success`,size:`small`,variant:`outlined`}),d>0&&(0,W.jsx)(kv,{label:`${d} ${e(`health.checksWarning`)}`,color:`warning`,size:`small`,variant:`outlined`}),f>0&&(0,W.jsx)(kv,{label:`${f} ${e(`health.checksFailed`)}`,color:`error`,size:`small`,variant:`outlined`}),(0,W.jsx)(kv,{label:t.matterConfig.boundInterface?`mDNS: ${t.matterConfig.boundInterface}`:`mDNS: all interfaces`,size:`small`,variant:`outlined`}),(0,W.jsx)(kv,{label:`IPv4: ${t.matterConfig.ipv4Enabled?`on`:`off`}`,size:`small`,variant:`outlined`})]}),t.checks.filter(e=>e.status!==`pass`).map(e=>(0,W.jsxs)(Kh,{severity:_4(e.status),sx:{mb:1},children:[(0,W.jsx)(`strong`,{children:e.message}),e.detail&&(0,W.jsx)(Q,{variant:`body2`,sx:{mt:.5},children:e.detail})]},e.name)),(0,W.jsx)(_v,{size:`small`,onClick:()=>c(!s),sx:{mt:.5},children:e(s?`health.hideDetails`:`health.showDetails`)}),(0,W.jsxs)(ey,{in:s,children:[(0,W.jsx)(Q,{variant:`subtitle2`,sx:{mt:1,mb:.5},children:e(`health.allChecks`)}),(0,W.jsxs)(pC,{size:`small`,children:[(0,W.jsx)(bC,{children:(0,W.jsxs)(CC,{children:[(0,W.jsx)(_C,{children:e(`health.check`)}),(0,W.jsx)(_C,{children:e(`health.statusLabel`)}),(0,W.jsx)(_C,{children:e(`health.message`)})]})}),(0,W.jsx)(gC,{children:t.checks.map(e=>(0,W.jsxs)(CC,{children:[(0,W.jsx)(_C,{children:(0,W.jsx)(Q,{variant:`body2`,children:e.name})}),(0,W.jsx)(_C,{children:(0,W.jsx)(kv,{label:e.status,color:_4(e.status),size:`small`})}),(0,W.jsxs)(_C,{children:[(0,W.jsx)(Q,{variant:`body2`,children:e.message}),e.detail&&(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,display:`block`,children:e.detail})]})]},e.name))})]}),(0,W.jsx)(Q,{variant:`subtitle2`,sx:{mt:2,mb:.5},children:e(`health.networkInterfaces`)}),(0,W.jsxs)(pC,{size:`small`,children:[(0,W.jsx)(bC,{children:(0,W.jsxs)(CC,{children:[(0,W.jsx)(_C,{children:e(`health.interfaceName`)}),(0,W.jsx)(_C,{children:`IPv4`}),(0,W.jsx)(_C,{children:`IPv6`}),(0,W.jsx)(_C,{children:`MAC`})]})}),(0,W.jsx)(gC,{children:t.interfaces.filter(e=>!e.internal).map(e=>(0,W.jsxs)(CC,{children:[(0,W.jsx)(_C,{children:e.name}),(0,W.jsx)(_C,{children:e.ipv4.join(`, `)||`-`}),(0,W.jsx)(_C,{children:(0,W.jsx)(Q,{variant:`body2`,sx:{wordBreak:`break-all`,maxWidth:240},children:e.ipv6.join(`, `)||`-`})}),(0,W.jsx)(_C,{children:e.mac})]},e.name))})]})]})]})]})}var v4=`hamh-translation-overrides`;function y4(e,t=``){let n={};for(let[r,i]of Object.entries(e)){let e=t?`${t}.${r}`:r;typeof i==`object`&&i&&!Array.isArray(i)?Object.assign(n,y4(i,e)):n[e]=String(i??``)}return n}function b4(e){let t={};for(let[n,r]of Object.entries(e)){let e=n.split(`.`),i=t;for(let t=0;t<e.length-1;t++)e[t]in i||(i[e[t]]={}),i=i[e[t]];i[e[e.length-1]]=r}return t}function x4(e){try{let t=localStorage.getItem(v4);return t?JSON.parse(t)[e]??{}:{}}catch{return{}}}function S4(e,t){try{let n=localStorage.getItem(v4),r=n?JSON.parse(n):{};Object.keys(t).length===0?delete r[e]:r[e]=t,localStorage.setItem(v4,JSON.stringify(r))}catch{}}var C4=`hamh-custom-languages`;function Gqe(){try{let e=localStorage.getItem(C4);return e?JSON.parse(e):[]}catch{return[]}}function w4(e){localStorage.setItem(C4,JSON.stringify(e))}var T4=[{code:`de`,name:`Deutsch`},{code:`fr`,name:`Français`},{code:`es`,name:`Español`},{code:`it`,name:`Italiano`},{code:`zh`,name:`中文`},{code:`zh-TW`,name:`繁體中文`},{code:`ja`,name:`日本語`},{code:`th`,name:`ไทย`},{code:`sv`,name:`Svenska`},{code:`tr`,name:`Türkçe`},{code:`ru`,name:`Русский`}];function Kqe(){let{t:e,i18n:t}=hs(),n=t.language??`en`,r=T4.some(e=>e.code===n)?n:n.split(`-`)[0]??`en`,[i,a]=(0,C.useState)(()=>r===`en`?`de`:r),[o,s]=(0,C.useState)(``),[c,l]=(0,C.useState)(()=>x4(i)),[u,d]=(0,C.useState)(!1),[f,p]=(0,C.useState)(`all`),[m,h]=(0,C.useState)(Gqe),[g,_]=(0,C.useState)(!1),[v,y]=(0,C.useState)(``),[b,x]=(0,C.useState)(``),[S,w]=(0,C.useState)(``),[T,E]=(0,C.useState)(``),D=(0,C.useMemo)(()=>[...T4,...m],[m]),O=(0,C.useCallback)(e=>m.some(t=>t.code===e),[m]),k=(0,C.useMemo)(()=>y4(_s),[]),A=(0,C.useMemo)(()=>{let e=t.getResourceBundle(i,`translation`);return e?y4(e):{}},[i,t]),j=(0,C.useMemo)(()=>Object.keys(k).map(e=>({key:e,section:e.split(`.`)[0],enValue:k[e],currentValue:c[e]??A[e]??``,isOverridden:e in c})),[k,A,c]),M=(0,C.useMemo)(()=>{let e=j;if(o){let t=o.toLowerCase();e=e.filter(e=>e.key.toLowerCase().includes(t)||e.enValue.toLowerCase().includes(t)||e.currentValue.toLowerCase().includes(t))}return f===`missing`?e=e.filter(e=>!e.currentValue):f===`edited`&&(e=e.filter(e=>e.isOverridden)),e},[j,o,f]),N=(0,C.useMemo)(()=>[...new Set(M.map(e=>e.section))],[M]),P=Object.keys(k).length,F=j.filter(e=>e.currentValue).length,I=Object.keys(c).length,L=P>0?F/P*100:0;(0,C.useEffect)(()=>{l(x4(i))},[i]);let R=(0,C.useCallback)(e=>{l(e),S4(i,e);let n=t.getResourceBundle(i,`translation`),r=n?y4(n):{},a={};for(let[t,n]of Object.entries(e))n&&n!==r[t]&&(a[t]=n);if(Object.keys(a).length>0){let e=b4({...r,...a});t.addResourceBundle(i,`translation`,e,!0,!0)}},[i,t]),ee=(0,C.useCallback)((e,t)=>{let n={...c,[e]:t};t||delete n[e],R(n)},[c,R]),z=(0,C.useCallback)(e=>{let t={...c};delete t[e],R(t)},[c,R]),te=(0,C.useCallback)(()=>{R({})},[R]),B=(0,C.useCallback)(()=>{let e={};for(let t of Object.keys(k))e[t]=c[t]??A[t]??``;let t=b4(e),n=JSON.stringify(t,null,2),r=new Blob([n],{type:`application/json`}),a=URL.createObjectURL(r),o=document.createElement(`a`);o.href=a,o.download=`${i}.json`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(a)},[k,A,c,i]),V=(0,C.useCallback)(()=>{let e={};for(let t of Object.keys(k))e[t]=c[t]??A[t]??``;let t=b4(e);navigator.clipboard.writeText(JSON.stringify(t,null,2)),d(!0),setTimeout(()=>d(!1),2e3)},[k,A,c]),ne=(0,C.useCallback)(()=>{let n=v.trim().toLowerCase(),r=b.trim();if(!n){w(e(`translationEditor.codeRequired`));return}if(!r){w(e(`translationEditor.nameRequired`));return}if(T4.some(e=>e.code===n)||m.some(e=>e.code===n)||n===`en`){w(e(`translationEditor.languageExists`));return}let i=[...m,{code:n,name:r}];h(i),w4(i),t.addResourceBundle(n,`translation`,{},!0,!0),a(n),_(!1),y(``),x(``),w(``)},[v,b,m,t,e]),re=(0,C.useCallback)(()=>{if(!O(i))return;let e=m.filter(e=>e.code!==i);h(e),w4(e),S4(i,{}),a(T4[0].code)},[i,m,O]),ie=(0,C.useCallback)(()=>{let t=document.createElement(`input`);t.type=`file`,t.accept=`.json`,t.onchange=()=>{let n=t.files?.[0];if(!n)return;let r=new FileReader;r.onload=()=>{try{let t=JSON.parse(r.result);if(typeof t!=`object`||!t)throw Error();let n=y4(t),i=new Set(Object.keys(k)),a={},o=0;for(let[e,t]of Object.entries(n))i.has(e)&&t&&(a[e]=t,o++);R({...c,...a}),E(e(`translationEditor.importSuccess`,{count:o}))}catch{E(e(`translationEditor.importFailed`))}},r.readAsText(n)},t.click()},[k,c,R,e]);return(0,W.jsxs)(Z,{sx:{p:2},children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:2,flexWrap:`wrap`,gap:1,children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsx)(Qhe,{}),(0,W.jsx)(Q,{variant:`h5`,children:e(`translationEditor.title`)})]}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsxs)(Mv,{size:`small`,sx:{minWidth:140},children:[(0,W.jsx)(Hx,{children:e(`translationEditor.editLanguage`)}),(0,W.jsx)(wS,{value:i,label:e(`translationEditor.editLanguage`),onChange:e=>a(e.target.value),children:D.map(e=>(0,W.jsxs)(TS,{value:e.code,children:[(0,W.jsx)(ly,{primary:e.name}),O(e.code)&&(0,W.jsx)(sy,{sx:{minWidth:`auto`,ml:1},children:(0,W.jsx)(nE,{fontSize:`small`,color:`disabled`})})]},e.code))})]}),(0,W.jsx)(mb,{title:e(`translationEditor.addLanguage`),children:(0,W.jsx)(Uh,{size:`small`,onClick:()=>_(e=>!e),children:(0,W.jsx)(hb,{fontSize:`small`})})}),O(i)&&(0,W.jsx)(mb,{title:e(`translationEditor.removeLanguage`),children:(0,W.jsx)(Uh,{size:`small`,color:`error`,onClick:re,children:(0,W.jsx)(nE,{fontSize:`small`})})})]})]}),(0,W.jsx)(ey,{in:g,children:(0,W.jsxs)(Z,{display:`flex`,gap:1,mb:2,alignItems:`flex-start`,flexWrap:`wrap`,children:[(0,W.jsx)(OS,{size:`small`,label:e(`translationEditor.newLanguageCode`),value:v,onChange:e=>y(e.target.value),error:!!S,sx:{width:180}}),(0,W.jsx)(OS,{size:`small`,label:e(`translationEditor.newLanguageName`),value:b,onChange:e=>x(e.target.value),sx:{width:220}}),(0,W.jsx)(_v,{variant:`contained`,size:`small`,onClick:ne,children:e(`translationEditor.addLanguageButton`)}),S&&(0,W.jsx)(Q,{variant:`caption`,color:`error`,sx:{mt:.5},children:S})]})}),(0,W.jsx)(Kh,{severity:`info`,sx:{mb:2},children:e(`translationEditor.info`)}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:2,mb:2,flexWrap:`wrap`,children:[(0,W.jsxs)(Z,{sx:{flexGrow:1,minWidth:200},children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:.5,children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`translationEditor.progress`,{translated:F,total:P})}),(0,W.jsxs)(Q,{variant:`body2`,fontWeight:600,children:[Math.round(L),`%`]})]}),(0,W.jsx)(Wv,{variant:`determinate`,value:L,sx:{height:8,borderRadius:4}})]}),I>0&&(0,W.jsx)(kv,{label:e(`translationEditor.localEdits`,{count:I}),color:`primary`,size:`small`})]}),(0,W.jsxs)(Z,{display:`flex`,gap:1,mb:2,flexWrap:`wrap`,children:[(0,W.jsx)(OS,{size:`small`,placeholder:e(`translationEditor.searchPlaceholder`),value:o,onChange:e=>s(e.target.value),sx:{flexGrow:1,minWidth:200},slotProps:{input:{startAdornment:(0,W.jsx)(hF,{position:`start`,children:(0,W.jsx)(vE,{fontSize:`small`})})}}}),(0,W.jsx)(Mv,{size:`small`,sx:{minWidth:130},children:(0,W.jsxs)(wS,{value:f,onChange:e=>p(e.target.value),children:[(0,W.jsx)(TS,{value:`all`,children:e(`translationEditor.filterAll`)}),(0,W.jsx)(TS,{value:`missing`,children:e(`translationEditor.filterMissing`)}),(0,W.jsx)(TS,{value:`edited`,children:e(`translationEditor.filterEdited`)})]})})]}),(0,W.jsxs)(Z,{display:`flex`,gap:1,mb:3,flexWrap:`wrap`,children:[(0,W.jsx)(_v,{variant:`outlined`,size:`small`,startIcon:(0,W.jsx)(TE,{}),onClick:B,children:e(`translationEditor.exportJson`)}),(0,W.jsx)(_v,{variant:`outlined`,size:`small`,startIcon:(0,W.jsx)(LT,{}),onClick:ie,children:e(`translationEditor.importJson`)}),(0,W.jsx)(mb,{title:u?e(`translationEditor.copied`):``,children:(0,W.jsx)(_v,{variant:`outlined`,size:`small`,startIcon:(0,W.jsx)(gb,{}),onClick:V,children:e(`translationEditor.copyJson`)})}),I>0&&(0,W.jsx)(_v,{variant:`outlined`,size:`small`,color:`warning`,startIcon:(0,W.jsx)(gE,{}),onClick:te,children:e(`translationEditor.resetAll`)})]}),N.map(t=>(0,W.jsxs)(Z,{sx:{mb:3},children:[(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:600,sx:{mb:1,textTransform:`capitalize`},children:t}),(0,W.jsx)(Kb,{sx:{mb:1.5}}),M.filter(e=>e.section===t).map(t=>(0,W.jsxs)(Z,{sx:{display:`grid`,gridTemplateColumns:{xs:`1fr`,md:`1fr 1fr auto`},gap:1,mb:1.5,alignItems:`start`},children:[(0,W.jsxs)(Z,{children:[(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,sx:{fontFamily:`monospace`},children:t.key}),(0,W.jsx)(Q,{variant:`body2`,sx:{mt:.25},children:t.enValue})]}),(0,W.jsx)(OS,{size:`small`,fullWidth:!0,multiline:t.enValue.length>60,minRows:1,maxRows:4,value:t.currentValue,onChange:e=>ee(t.key,e.target.value),placeholder:t.enValue,sx:{"& .MuiOutlinedInput-root":t.isOverridden?{borderColor:`primary.main`,"& fieldset":{borderColor:`primary.main`,borderWidth:2}}:{}}}),t.isOverridden&&(0,W.jsx)(mb,{title:e(`translationEditor.resetKey`),children:(0,W.jsx)(Uh,{size:`small`,onClick:()=>z(t.key),children:(0,W.jsx)(gE,{fontSize:`small`})})})]},t.key))]},t)),M.length===0&&(0,W.jsx)(Q,{color:`text.secondary`,sx:{textAlign:`center`,py:4},children:e(`translationEditor.noResults`)}),(0,W.jsx)(ng,{open:!!T,autoHideDuration:3e3,onClose:()=>E(``),message:T})]})}var E4=e=>{let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n.toFixed(1)} ${t[r]}`},D4=e=>{let t=Math.floor(e/86400),n=Math.floor(e%86400/3600),r=Math.floor(e%3600/60);return t>0?`${t}d ${n}h ${r}m`:n>0?`${n}h ${r}m`:`${r}m`},qqe=()=>{let[e,t]=(0,C.useState)(null),[n,r]=(0,C.useState)(!0),[i,a]=(0,C.useState)(!0);if((0,C.useEffect)(()=>{let e=null,n=async()=>{try{let n=await fetch(`api/system/info`);n.ok?(t(await n.json()),a(!0)):n.status===404&&(a(!1),e&&=(clearInterval(e),null))}catch{}finally{r(!1)}};return n(),e=setInterval(n,3e4),()=>{e&&clearInterval(e)}},[]),!i)return null;if(n)return(0,W.jsx)(vv,{children:(0,W.jsx)(xv,{children:(0,W.jsx)(Q,{children:`Loading system information...`})})});if(!e)return(0,W.jsx)(vv,{children:(0,W.jsx)(xv,{children:(0,W.jsx)(Q,{color:`error`,children:`Failed to load system information`})})});let o=e.memory.used/e.memory.total*100,s=e.storage.used/e.storage.total*100;return(0,W.jsx)(vv,{children:(0,W.jsxs)(xv,{children:[(0,W.jsxs)(Q,{variant:`h6`,gutterBottom:!0,sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)(The,{}),`System Information`]}),(0,W.jsxs)(Rv,{container:!0,spacing:3,children:[(0,W.jsx)(Rv,{size:{xs:12,md:6},children:(0,W.jsxs)(Gv,{spacing:2,children:[(0,W.jsxs)(Z,{children:[(0,W.jsx)(Q,{variant:`subtitle2`,color:`text.secondary`,children:`Application`}),(0,W.jsxs)(Gv,{spacing:1,sx:{mt:1},children:[(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,W.jsx)(Q,{variant:`body2`,children:`Version:`}),(0,W.jsx)(kv,{label:e.version,size:`small`,color:`primary`})]}),(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,W.jsx)(Q,{variant:`body2`,children:`Environment:`}),(0,W.jsx)(kv,{label:e.environment,size:`small`,variant:`outlined`,color:e.environment===`Home Assistant Add-on`?`success`:`default`})]}),(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,W.jsx)(Q,{variant:`body2`,children:`Node.js:`}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e.nodeVersion})]}),(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,W.jsx)(Q,{variant:`body2`,children:`Process Uptime:`}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:D4(e.process.uptime)})]})]})]}),(0,W.jsxs)(Z,{children:[(0,W.jsx)(Q,{variant:`subtitle2`,color:`text.secondary`,children:`System`}),(0,W.jsxs)(Gv,{spacing:1,sx:{mt:1},children:[(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,W.jsx)(Q,{variant:`body2`,children:`Hostname:`}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e.hostname})]}),(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,W.jsx)(Q,{variant:`body2`,children:`Platform:`}),(0,W.jsxs)(Q,{variant:`body2`,color:`text.secondary`,children:[e.platform,` (`,e.arch,`)`]})]}),(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,W.jsx)(Q,{variant:`body2`,children:`CPU:`}),(0,W.jsxs)(Q,{variant:`body2`,color:`text.secondary`,sx:{maxWidth:200,textAlign:`right`},noWrap:!0,title:e.cpuModel,children:[e.cpuCount,`x`,` `,e.cpuModel.split(`@`)[0].trim()]})]}),(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`},children:[(0,W.jsx)(Q,{variant:`body2`,children:`System Uptime:`}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:D4(e.uptime)})]})]})]})]})}),(0,W.jsx)(Rv,{size:{xs:12,md:6},children:(0,W.jsxs)(Gv,{spacing:2,children:[(0,W.jsxs)(Z,{children:[(0,W.jsxs)(Q,{variant:`subtitle2`,color:`text.secondary`,sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)(uE,{}),`Memory Usage`]}),(0,W.jsxs)(Z,{sx:{mt:1},children:[(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`,mb:1},children:[(0,W.jsxs)(Q,{variant:`body2`,children:[E4(e.memory.used),` /`,` `,E4(e.memory.total)]}),(0,W.jsxs)(Q,{variant:`body2`,color:`text.secondary`,children:[o.toFixed(1),`%`]})]}),(0,W.jsx)(Z,{sx:{height:8,backgroundColor:`action.hover`,borderRadius:4,overflow:`hidden`},children:(0,W.jsx)(Z,{sx:{height:`100%`,width:`${o}%`,backgroundColor:o>80?`error.main`:o>60?`warning.main`:`success.main`,transition:`width 0.3s ease`}})})]})]}),(0,W.jsxs)(Z,{children:[(0,W.jsxs)(Q,{variant:`subtitle2`,color:`text.secondary`,sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)(uE,{}),`HAMH Process Memory`]}),(0,W.jsxs)(Z,{sx:{mt:1},children:[(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`,mb:.5},children:[(0,W.jsxs)(Q,{variant:`body2`,children:[`RSS: `,E4(e.process.rss)]}),(0,W.jsxs)(Q,{variant:`body2`,color:`text.secondary`,children:[`Heap: `,E4(e.process.heapUsed),` /`,` `,E4(e.process.heapSizeLimit)]})]}),(0,W.jsx)(Z,{sx:{height:8,backgroundColor:`action.hover`,borderRadius:4,overflow:`hidden`},children:(0,W.jsx)(Z,{sx:{height:`100%`,width:`${Math.min(e.process.heapUsed/e.process.heapSizeLimit*100,100)}%`,backgroundColor:e.process.heapUsed/e.process.heapSizeLimit>.85?`error.main`:e.process.heapUsed/e.process.heapSizeLimit>.6?`warning.main`:`success.main`,transition:`width 0.3s ease`}})})]})]}),(0,W.jsxs)(Z,{children:[(0,W.jsxs)(Q,{variant:`subtitle2`,color:`text.secondary`,sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)(Yhe,{}),`Storage Usage`]}),(0,W.jsxs)(Z,{sx:{mt:1},children:[(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`,mb:1},children:[(0,W.jsxs)(Q,{variant:`body2`,children:[E4(e.storage.used),` /`,` `,E4(e.storage.total)]}),(0,W.jsxs)(Q,{variant:`body2`,color:`text.secondary`,children:[s.toFixed(1),`%`]})]}),(0,W.jsx)(Z,{sx:{height:8,backgroundColor:`action.hover`,borderRadius:4,overflow:`hidden`},children:(0,W.jsx)(Z,{sx:{height:`100%`,width:`${s}%`,backgroundColor:s>80?`error.main`:s>60?`warning.main`:`success.main`,transition:`width 0.3s ease`}})})]})]})]})}),(0,W.jsxs)(Rv,{size:{xs:12},children:[(0,W.jsxs)(Q,{variant:`subtitle2`,color:`text.secondary`,sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)(Vhe,{}),`Network Interfaces`]}),(0,W.jsx)(Gv,{spacing:1,sx:{mt:1},children:e.network.interfaces.map(e=>(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,W.jsx)(Q,{variant:`body2`,children:e.name}),(0,W.jsx)(kv,{label:`${e.address} (${e.family})`,size:`small`,variant:`outlined`})]},`${e.name}-${e.address}`))})]})]})]})})},O4=200;function Jqe(){let[e,t]=(0,C.useState)([]),[n,r]=(0,C.useState)(null),[i,a]=(0,C.useState)(!1),o=(0,C.useRef)(null),s=(0,C.useRef)(void 0),c=(0,C.useCallback)(()=>{if(o.current?.readyState===WebSocket.OPEN)return;let e=window.location.protocol===`https:`?`wss:`:`ws:`,n=document.querySelector(`base`)?.href||window.location.origin,i=new URL(n),l=`${e}//${i.host}${i.pathname}api/ws`.replace(/\/+/g,`/`).replace(`:/`,`://`),u=new WebSocket(l);o.current=u,u.onopen=()=>{a(!0),u.send(JSON.stringify({type:`subscribe_diagnostics`}))},u.onmessage=e=>{try{let n=JSON.parse(e.data);if(n.type===`diagnostic_event`){let e=n.data;t(t=>{let n=[...t,e];return n.length>O4?n.slice(-O4):n})}else if(n.type===`diagnostic_snapshot`){let e=n.data;r(e),t(e.recentEvents??[])}}catch{}},u.onclose=()=>{a(!1),o.current=null,s.current=setTimeout(c,3e3)},u.onerror=()=>u.close()},[]);return(0,C.useEffect)(()=>(c(),()=>{clearTimeout(s.current),o.current&&(o.current.send(JSON.stringify({type:`unsubscribe_diagnostics`})),o.current.close())}),[c]),{events:e,snapshot:n,connected:i,clearEvents:(0,C.useCallback)(()=>t([]),[])}}function k4(e){let t=e.replace(`#`,``),n=Number.parseInt(t.substring(0,2),16)/255,r=Number.parseInt(t.substring(2,4),16)/255,i=Number.parseInt(t.substring(4,6),16)/255;return .2126*(n<=.03928?n/12.92:((n+.055)/1.055)**2.4)+.7152*(r<=.03928?r/12.92:((r+.055)/1.055)**2.4)+.0722*(i<=.03928?i/12.92:((i+.055)/1.055)**2.4)>.179?`#000`:`#fff`}var A4={state_update:`#4caf50`,command_received:`#2196f3`,entity_error:`#f44336`,session_opened:`#ff9800`,session_closed:`#9e9e9e`,subscription_changed:`#9c27b0`,bridge_started:`#00bcd4`,bridge_stopped:`#795548`,entity_warning:`#ff9800`},j4={state_update:`diagnostics.stateUpdate`,command_received:`diagnostics.command`,entity_error:`diagnostics.entityError`,session_opened:`diagnostics.sessionOpen`,session_closed:`diagnostics.sessionClose`,subscription_changed:`diagnostics.subscription`,bridge_started:`diagnostics.bridgeStart`,bridge_stopped:`diagnostics.bridgeStop`,entity_warning:`diagnostics.entityWarning`};function Yqe(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}.${String(t.getMilliseconds()).padStart(3,`0`)}`}var M4=Object.keys(A4);function Xqe({sortField:e,sortDirection:t}={}){let{t:n}=hs(),r=Em(),{events:i,snapshot:a,connected:o,clearEvents:s}=Jqe(),[c,l]=(0,C.useState)(new Set(M4)),[u,d]=(0,C.useState)(!1),f=e=>{l(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},p=i.filter(e=>c.has(e.type)),m=(0,C.useMemo)(()=>{let n=a?.bridges??[];return e?[...n].sort((n,r)=>{let i=0;return i=e===`name`?n.bridgeName.localeCompare(r.bridgeName):n.bridgeId.localeCompare(r.bridgeId),t===`desc`?-i:i}):n},[a?.bridges,e,t]),h={};for(let e of i)h[e.type]=(h[e.type]??0)+1;return(0,W.jsx)(vv,{children:(0,W.jsxs)(xv,{children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:2,children:[(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:1,children:[(0,W.jsx)(Zhe,{}),(0,W.jsx)(Q,{variant:`h6`,children:n(`diagnostics.title`)}),(0,W.jsx)(kv,{icon:(0,W.jsx)(jhe,{sx:{fontSize:10,color:o?r.palette.success.main:r.palette.error.main}}),label:n(o?`common.live`:`common.offline`),size:`small`,variant:`outlined`})]}),(0,W.jsxs)(Gv,{direction:`row`,spacing:.5,alignItems:`center`,children:[(0,W.jsx)(mb,{title:n(`diagnostics.filterEvents`),children:(0,W.jsx)(Uh,{size:`small`,onClick:()=>d(e=>!e),color:u?`primary`:`default`,children:(0,W.jsx)(bb,{})})}),(0,W.jsx)(mb,{title:n(`diagnostics.clearEvents`),children:(0,W.jsx)(Uh,{size:`small`,onClick:s,children:(0,W.jsx)(Che,{})})})]})]}),(0,W.jsxs)(Gv,{direction:`row`,spacing:.5,flexWrap:`wrap`,sx:{mb:2,gap:.5},children:[M4.map(e=>{let t=h[e]??0;if(t===0&&!u)return null;let r=A4[e];return(0,W.jsx)(kv,{label:`${n(j4[e])}: ${t}`,size:`small`,sx:{bgcolor:c.has(e)?r:`action.disabledBackground`,color:c.has(e)?k4(r):`text.disabled`,fontSize:`0.7rem`,height:22,cursor:`pointer`,opacity:c.has(e)?1:.5},onClick:()=>f(e)},e)}),a?.system&&(0,W.jsx)(kv,{label:`Total: ${a.system.eventCount}`,size:`small`,variant:`outlined`,sx:{fontSize:`0.7rem`,height:22}})]}),(0,W.jsx)(ey,{in:u,children:(0,W.jsx)(qm,{variant:`outlined`,sx:{p:1.5,mb:2},children:(0,W.jsx)(Rv,{container:!0,spacing:0,children:M4.map(e=>{let t=A4[e];return(0,W.jsx)(Rv,{size:{xs:6,sm:4,md:3},children:(0,W.jsx)(Lv,{control:(0,W.jsx)(Ev,{size:`small`,checked:c.has(e),onChange:()=>f(e),sx:{color:t,"&.Mui-checked":{color:t}}}),label:(0,W.jsx)(Q,{variant:`caption`,children:n(j4[e])})})},e)})})})}),m.length>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Rv,{container:!0,spacing:1,sx:{mb:2},children:m.map(e=>(0,W.jsx)(Zqe,{bridge:e},e.bridgeId))}),(0,W.jsx)(Kb,{sx:{mb:2}})]}),(0,W.jsx)(Z,{sx:{maxHeight:400,overflow:`auto`,bgcolor:`background.default`,borderRadius:1,p:1},children:p.length===0?(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{textAlign:`center`,py:4},children:i.length===0?`Waiting for diagnostic events…`:n(`diagnostics.noEvents`)}):p.map(e=>{let t=A4[e.type];return(0,W.jsxs)(Z,{sx:{display:`flex`,alignItems:`flex-start`,gap:1,py:.4,px:.5,minWidth:0,borderBottom:`1px solid`,borderColor:`divider`,"&:hover":{bgcolor:`action.hover`},"&:last-child":{borderBottom:`none`}},children:[(0,W.jsx)(Q,{variant:`caption`,sx:{color:`text.secondary`,whiteSpace:`nowrap`,fontFamily:`monospace`,fontSize:`0.72rem`,minWidth:85,pt:.1},children:Yqe(e.timestamp)}),(0,W.jsx)(kv,{label:j4[e.type]?n(j4[e.type]):e.type,size:`small`,sx:{bgcolor:t??`#757575`,color:k4(t??`#757575`),fontSize:`0.62rem`,fontWeight:600,height:18,minWidth:90}}),e.bridgeName&&(0,W.jsxs)(Q,{variant:`caption`,sx:{color:`primary.main`,fontWeight:600,whiteSpace:`nowrap`,overflow:`hidden`,textOverflow:`ellipsis`,fontSize:`0.72rem`,maxWidth:140,flexShrink:0},children:[`[`,e.bridgeName,`]`]}),e.entityId&&(0,W.jsx)(Q,{variant:`caption`,sx:{color:`warning.main`,fontFamily:`monospace`,whiteSpace:`nowrap`,overflow:`hidden`,textOverflow:`ellipsis`,fontSize:`0.72rem`,maxWidth:220,flexShrink:1},children:e.entityId}),(0,W.jsx)(Q,{variant:`caption`,sx:{color:`text.primary`,flex:1,wordBreak:`break-word`,fontSize:`0.72rem`},children:e.message})]},e.id)})})]})})}function Zqe({bridge:e}){let[t,n]=(0,C.useState)(!1);return(0,W.jsx)(Rv,{size:{xs:12,sm:6},children:(0,W.jsxs)(qm,{variant:`outlined`,sx:{p:1.5,overflow:`hidden`,minWidth:0},children:[(0,W.jsxs)(Z,{display:`flex`,justifyContent:`space-between`,alignItems:`center`,sx:{cursor:`pointer`},onClick:()=>n(e=>!e),children:[(0,W.jsxs)(Z,{sx:{minWidth:0,overflow:`hidden`},children:[(0,W.jsx)(Q,{variant:`body2`,fontWeight:500,noWrap:!0,children:e.bridgeName}),(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,noWrap:!0,children:[e.entityCount,` devices · `,e.sessionCount,` sessions`]})]}),(0,W.jsxs)(Gv,{direction:`row`,spacing:.5,alignItems:`center`,flexWrap:`wrap`,justifyContent:`flex-end`,sx:{flexShrink:0,ml:1},children:[Object.entries(e.featureFlags).filter(([,e])=>e).map(([e])=>(0,W.jsx)(kv,{label:e.replace(/^auto/,``).replace(/([A-Z])/g,` $1`).trim(),size:`small`,variant:`outlined`,sx:{fontSize:`0.6rem`,height:18}},e)),(0,W.jsx)(kv,{label:e.status,size:`small`,color:e.status===`running`?`success`:e.status===`failed`?`error`:`default`,sx:{height:20}}),(0,W.jsx)(nC,{sx:{transform:t?`rotate(180deg)`:`rotate(0deg)`,transition:`transform 0.2s`,fontSize:18,color:`text.secondary`}})]})]}),(0,W.jsx)(ey,{in:t,children:(0,W.jsx)(Z,{sx:{mt:1,maxHeight:200,overflow:`auto`},children:e.entities.map(e=>(0,W.jsxs)(Z,{sx:{display:`flex`,alignItems:`baseline`,gap:.5,py:.3,borderBottom:`1px solid`,borderColor:`divider`},children:[(0,W.jsx)(Q,{variant:`caption`,sx:{fontFamily:`monospace`,fontSize:`0.68rem`,minWidth:180,flexShrink:0,color:e.available?`text.primary`:`error.main`},noWrap:!0,children:e.entityId}),(0,W.jsx)(Z,{display:`flex`,gap:.3,flexWrap:`wrap`,children:e.matterClusters.map(e=>(0,W.jsx)(kv,{label:e,size:`small`,variant:`outlined`,sx:{fontSize:`0.58rem`,height:16,"& .MuiChip-label":{px:.5}}},e))})]},e.entityId))})})]})})}var Qqe=()=>{let[e,t]=(0,C.useState)(`name`),[n,r]=(0,C.useState)(`asc`);return(0,W.jsxs)(Z,{sx:{display:`flex`,flexDirection:`column`,gap:3},children:[(0,W.jsx)(Uqe,{sortField:e,sortDirection:n,onSortFieldChange:t,onSortDirectionChange:r}),(0,W.jsx)(Z,{sx:{px:2},children:(0,W.jsx)(Xqe,{sortField:e,sortDirection:n})}),(0,W.jsx)(Z,{sx:{px:2},children:(0,W.jsx)(Wqe,{})}),(0,W.jsx)(Z,{sx:{px:2,pb:2},children:(0,W.jsx)(qqe,{})}),(0,W.jsx)(Kb,{}),(0,W.jsx)(Kqe,{})]})};async function $qe(){let e=await fetch(`api/matter/labels?_s=${Date.now()}`);return await F_(e,`Failed to fetch labels`),P_(e)}async function eJe(){let e=await fetch(`api/matter/areas?_s=${Date.now()}`);return await F_(e,`Failed to fetch areas`),P_(e)}async function tJe(){let e=await fetch(`api/matter/filter-values?_s=${Date.now()}`);return await F_(e,`Failed to fetch filter values`),P_(e)}var N4=({values:e,copiedId:t,onCopy:n,searchable:r})=>{let[i,a]=(0,C.useState)(``),o=(0,C.useMemo)(()=>{if(!i)return e;let t=i.toLowerCase();return e.filter(e=>e.toLowerCase().includes(t))},[e,i]);return e.length===0?(0,W.jsx)(Z,{sx:{p:2,textAlign:`center`},children:(0,W.jsx)(Q,{color:`text.secondary`,variant:`body2`,children:`No values found.`})}):(0,W.jsxs)(Z,{children:[r&&e.length>10&&(0,W.jsx)(Z,{sx:{px:2,pt:1,pb:.5},children:(0,W.jsx)(OS,{size:`small`,fullWidth:!0,placeholder:`Search...`,value:i,onChange:e=>a(e.target.value),slotProps:{input:{startAdornment:(0,W.jsx)(hF,{position:`start`,children:(0,W.jsx)(vE,{fontSize:`small`})})}}})}),(0,W.jsxs)(Z,{sx:{p:1.5,display:`flex`,flexWrap:`wrap`,gap:.75},children:[o.map(e=>(0,W.jsx)(kv,{label:e,size:`small`,variant:t===e?`filled`:`outlined`,color:t===e?`success`:`default`,onClick:()=>n(e),sx:{fontFamily:`monospace`,fontSize:`0.8rem`}},e)),i&&o.length===0&&(0,W.jsxs)(Q,{color:`text.secondary`,variant:`body2`,sx:{p:1},children:[`No matches for "`,i,`"`]})]})]})},nJe=()=>{let{t:e}=hs(),[t,n]=(0,C.useState)([]),[r,i]=(0,C.useState)([]),[a,o]=(0,C.useState)(null),[s,c]=(0,C.useState)(!0),[l,u]=(0,C.useState)(null),[d,f]=(0,C.useState)(null),p=(0,C.useCallback)(async()=>{c(!0);try{let[e,t,r]=await Promise.all([$qe(),eJe(),tJe()]);n(e),i(t),o(r),u(null)}catch(t){u(t instanceof Error?t.message:e(`labels.loadFailed`))}finally{c(!1)}},[e]);(0,C.useEffect)(()=>{p()},[p]);let m=e=>{navigator.clipboard.writeText(e),f(e),setTimeout(()=>f(null),2e3)};return s?(0,W.jsx)(Z,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,W.jsx)(Vh,{})}):(0,W.jsxs)(Z,{sx:{p:2},children:[(0,W.jsxs)(Q,{variant:`h5`,component:`h1`,sx:{mb:3},children:[(0,W.jsx)(bb,{sx:{mr:1,verticalAlign:`middle`}}),e(`labels.title`)]}),(0,W.jsx)(Kh,{severity:`info`,sx:{mb:3},children:e(`labels.info`)}),l&&(0,W.jsx)(Kh,{severity:`error`,sx:{mb:2},children:l}),(0,W.jsxs)(Q,{variant:`h6`,sx:{mb:1},children:[(0,W.jsx)(cE,{sx:{mr:.5,fontSize:20,verticalAlign:`middle`}}),e(`labels.labelsSection`),` (`,t.length,`)`]}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mb:2},children:e(`labels.labelsHint`)}),(0,W.jsx)(vv,{sx:{mb:4},children:t.length===0?(0,W.jsx)(Z,{sx:{p:3,textAlign:`center`},children:(0,W.jsx)(Q,{color:`text.secondary`,children:e(`labels.noLabels`)})}):(0,W.jsx)(vC,{children:(0,W.jsxs)(pC,{size:`small`,children:[(0,W.jsx)(bC,{children:(0,W.jsxs)(CC,{children:[(0,W.jsx)(_C,{sx:{fontWeight:`bold`},children:e(`labels.displayName`)}),(0,W.jsx)(_C,{sx:{fontWeight:`bold`},children:e(`labels.labelId`)}),(0,W.jsx)(_C,{width:48})]})}),(0,W.jsx)(gC,{children:t.map(t=>(0,W.jsxs)(CC,{hover:!0,children:[(0,W.jsxs)(_C,{children:[t.color&&(0,W.jsx)(Z,{component:`span`,sx:{display:`inline-block`,width:12,height:12,borderRadius:`50%`,backgroundColor:t.color,mr:1,verticalAlign:`middle`}}),t.name]}),(0,W.jsx)(_C,{children:(0,W.jsx)(`code`,{children:t.label_id})}),(0,W.jsx)(_C,{children:(0,W.jsx)(mb,{title:d===t.label_id?e(`common.copied`):e(`common.copyId`),children:(0,W.jsx)(Uh,{size:`small`,onClick:()=>m(t.label_id),children:(0,W.jsx)(gb,{fontSize:`small`})})})})]},t.label_id))})]})})}),(0,W.jsxs)(Q,{variant:`h6`,sx:{mb:1},children:[(0,W.jsx)(AT,{sx:{mr:.5,fontSize:20,verticalAlign:`middle`}}),e(`labels.areasSection`),` (`,r.length,`)`]}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mb:2},children:e(`labels.areasHint`)}),(0,W.jsx)(vv,{sx:{mb:4},children:r.length===0?(0,W.jsx)(Z,{sx:{p:3,textAlign:`center`},children:(0,W.jsx)(Q,{color:`text.secondary`,children:e(`labels.noAreas`)})}):(0,W.jsx)(vC,{children:(0,W.jsxs)(pC,{size:`small`,children:[(0,W.jsx)(bC,{children:(0,W.jsxs)(CC,{children:[(0,W.jsx)(_C,{sx:{fontWeight:`bold`},children:e(`labels.displayName`)}),(0,W.jsx)(_C,{sx:{fontWeight:`bold`},children:e(`labels.areaId`)}),(0,W.jsx)(_C,{width:48})]})}),(0,W.jsx)(gC,{children:r.map(t=>(0,W.jsxs)(CC,{hover:!0,children:[(0,W.jsx)(_C,{children:t.name}),(0,W.jsx)(_C,{children:(0,W.jsx)(`code`,{children:t.area_id})}),(0,W.jsx)(_C,{children:(0,W.jsx)(mb,{title:d===t.area_id?e(`common.copied`):e(`common.copyId`),children:(0,W.jsx)(Uh,{size:`small`,onClick:()=>m(t.area_id),children:(0,W.jsx)(gb,{fontSize:`small`})})})})]},t.area_id))})]})})}),a&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Q,{variant:`h6`,sx:{mb:2},children:e(`labels.otherFilterValues`)}),(0,W.jsxs)(sC,{defaultExpanded:!0,children:[(0,W.jsxs)(uC,{expandIcon:(0,W.jsx)(nC,{}),children:[(0,W.jsx)(tge,{sx:{mr:1}}),(0,W.jsxs)(Q,{children:[e(`labels.domains`),` (`,a.domains.length,`)`]})]}),(0,W.jsxs)(cC,{sx:{p:0},children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{px:2,pb:1},children:e(`labels.domainsHint`)}),(0,W.jsx)(N4,{values:a.domains,copiedId:d,onCopy:m})]})]}),(0,W.jsxs)(sC,{children:[(0,W.jsxs)(uC,{expandIcon:(0,W.jsx)(nC,{}),children:[(0,W.jsx)(iE,{sx:{mr:1}}),(0,W.jsxs)(Q,{children:[e(`labels.platforms`),` (`,a.platforms.length,`)`]})]}),(0,W.jsxs)(cC,{sx:{p:0},children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{px:2,pb:1},children:e(`labels.platformsHint`)}),(0,W.jsx)(N4,{values:a.platforms,copiedId:d,onCopy:m})]})]}),(0,W.jsxs)(sC,{children:[(0,W.jsxs)(uC,{expandIcon:(0,W.jsx)(nC,{}),children:[(0,W.jsx)(bhe,{sx:{mr:1}}),(0,W.jsxs)(Q,{children:[e(`labels.entityCategories`),` (`,a.entityCategories.length,`)`]})]}),(0,W.jsxs)(cC,{sx:{p:0},children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{px:2,pb:1},children:e(`labels.entityCategoriesHint`)}),(0,W.jsx)(N4,{values:a.entityCategories,copiedId:d,onCopy:m})]})]}),(0,W.jsxs)(sC,{children:[(0,W.jsxs)(uC,{expandIcon:(0,W.jsx)(nC,{}),children:[(0,W.jsx)(bhe,{sx:{mr:1}}),(0,W.jsxs)(Q,{children:[e(`labels.deviceClasses`),` (`,a.deviceClasses.length,`)`]})]}),(0,W.jsxs)(cC,{sx:{p:0},children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{px:2,pb:1},children:e(`labels.deviceClassesHint`)}),(0,W.jsx)(N4,{values:a.deviceClasses,copiedId:d,onCopy:m,searchable:!0})]})]}),(0,W.jsxs)(sC,{children:[(0,W.jsxs)(uC,{expandIcon:(0,W.jsx)(nC,{}),children:[(0,W.jsx)(_b,{sx:{mr:1}}),(0,W.jsxs)(Q,{children:[e(`labels.deviceNames`),` (`,a.deviceNames.length,`)`]})]}),(0,W.jsxs)(cC,{sx:{p:0},children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{px:2,pb:1},children:e(`labels.deviceNamesHint`)}),(0,W.jsx)(N4,{values:a.deviceNames,copiedId:d,onCopy:m,searchable:!0})]})]}),(0,W.jsxs)(sC,{children:[(0,W.jsxs)(uC,{expandIcon:(0,W.jsx)(nC,{}),children:[(0,W.jsx)(_b,{sx:{mr:1}}),(0,W.jsxs)(Q,{children:[e(`labels.productNames`),` (`,a.productNames.length,`)`]})]}),(0,W.jsxs)(cC,{sx:{p:0},children:[(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{px:2,pb:1},children:e(`labels.productNamesHint`)}),(0,W.jsx)(N4,{values:a.productNames,copiedId:d,onCopy:m,searchable:!0})]})]})]})]})};async function rJe(){let e=await fetch(`api/lock-credentials`);return await F_(e,`Failed to fetch lock credentials`),P_(e)}async function iJe(e,t){let n=await fetch(`api/lock-credentials/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});return await F_(n,`Failed to update lock credential`),P_(n)}async function aJe(e,t){let n=await fetch(`api/lock-credentials/${encodeURIComponent(e)}/enabled`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({enabled:t})});return await F_(n,`Failed to toggle credential`),P_(n)}async function oJe(e){await F_(await fetch(`api/lock-credentials/${encodeURIComponent(e)}`,{method:`DELETE`}),`Failed to delete lock credential`)}var sJe=({open:e,onClose:t,onSave:n,initialEntityId:r=``,initialName:i=``,isEdit:a=!1})=>{let{t:o}=hs(),[s,c]=(0,C.useState)(r),[l,u]=(0,C.useState)(``),[d,f]=(0,C.useState)(i),[p,m]=(0,C.useState)(``),[h,g]=(0,C.useState)(!1);return(0,C.useEffect)(()=>{e&&(c(r),f(i),u(``),m(``))},[e,r,i]),(0,W.jsxs)(Vb,{open:e,onClose:t,maxWidth:`sm`,fullWidth:!0,children:[(0,W.jsx)(Wb,{children:o(a?`lockCredentials.editCredential`:`lockCredentials.addCredential`)}),(0,W.jsx)(Ub,{children:(0,W.jsxs)(Z,{sx:{display:`flex`,flexDirection:`column`,gap:2,mt:1},children:[p&&(0,W.jsx)(Kh,{severity:`error`,children:p}),(0,W.jsx)(OS,{label:o(`lockCredentials.lockEntityId`),placeholder:`lock.front_door`,value:s,onChange:e=>c(e.target.value),disabled:a,fullWidth:!0,helperText:o(`lockCredentials.lockEntityHelperText`)}),(0,W.jsx)(OS,{label:o(`lockCredentials.pinCode`),type:`password`,placeholder:`1234`,value:l,onChange:e=>u(e.target.value.replace(/\D/g,``).slice(0,8)),fullWidth:!0,helperText:`4-8 digit PIN code for this lock`,inputProps:{inputMode:`numeric`,pattern:`[0-9]*`}}),(0,W.jsx)(OS,{label:o(`lockCredentials.nameOptional`),placeholder:o(`lockCredentials.namePlaceholder`),value:d,onChange:e=>f(e.target.value),fullWidth:!0,helperText:o(`lockCredentials.nameHelperText`)})]})}),(0,W.jsxs)(Hb,{children:[(0,W.jsx)(_v,{onClick:t,disabled:h,children:o(`common.cancel`)}),(0,W.jsx)(_v,{onClick:async()=>{if(!s.trim()){m(o(`lockCredentials.entityRequired`));return}if(!l||l.length<4||l.length>8){m(o(`lockCredentials.pinLength`));return}if(!/^\d+$/.test(l)){m(o(`lockCredentials.pinDigitsOnly`));return}g(!0);try{await n(s.trim(),l,d.trim()),t()}catch(e){m(e instanceof Error?e.message:o(`lockCredentials.saveFailed`))}finally{g(!1)}},variant:`contained`,disabled:h,startIcon:h?(0,W.jsx)(Vh,{size:16}):(0,W.jsx)(_E,{}),children:o(`common.save`)})]})]})},cJe=()=>{let{t:e}=hs(),[t,n]=(0,C.useState)([]),[r,i]=(0,C.useState)(!0),[a,o]=(0,C.useState)(null),[s,c]=(0,C.useState)(!1),[l,u]=(0,C.useState)(null),d=(0,C.useCallback)(async()=>{i(!0);try{n((await rJe()).credentials),o(null)}catch(t){o(t instanceof Error?t.message:e(`lockCredentials.loadFailed`))}finally{i(!1)}},[e]);(0,C.useEffect)(()=>{d()},[d]);let f=async(e,t,n)=>{await iJe(e,{entityId:e,pinCode:t,name:n||void 0,enabled:!0}),await d()},[p,m]=(0,C.useState)(null),h=async t=>{m(null);try{await oJe(t),await d()}catch(t){o(t instanceof Error?t.message:e(`lockCredentials.deleteFailed`))}},g=async t=>{try{await aJe(t.entityId,!t.enabled),await d()}catch(t){o(t instanceof Error?t.message:e(`lockCredentials.updateFailed`))}},_=e=>{u(e),c(!0)},v=()=>{u(null),c(!0)};return(0,W.jsxs)(Z,{sx:{p:2},children:[(0,W.jsxs)(Z,{sx:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,mb:3},children:[(0,W.jsxs)(Q,{variant:`h5`,component:`h1`,children:[(0,W.jsx)(kT,{sx:{mr:1,verticalAlign:`middle`}}),e(`lockCredentials.title`)]}),(0,W.jsx)(_v,{variant:`contained`,startIcon:(0,W.jsx)(hb,{}),onClick:v,children:e(`lockCredentials.addCredential`)})]}),(0,W.jsx)(Kh,{severity:`info`,sx:{mb:3},children:`Configure PIN codes for locks that require authentication for remote lock/unlock operations. The PIN will be sent with lock/unlock commands to Matter locks.`}),a&&(0,W.jsx)(Kh,{severity:`error`,sx:{mb:2},children:a}),r?(0,W.jsx)(Z,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,W.jsx)(Vh,{})}):t.length===0?(0,W.jsx)(vv,{children:(0,W.jsxs)(xv,{sx:{textAlign:`center`,py:4},children:[(0,W.jsx)(kT,{sx:{fontSize:48,color:`text.secondary`,mb:2}}),(0,W.jsx)(Q,{variant:`h6`,color:`text.secondary`,children:`No lock credentials configured`}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,sx:{mb:2},children:`Add a PIN code for your Matter locks to enable remote lock/unlock`}),(0,W.jsx)(_v,{variant:`outlined`,startIcon:(0,W.jsx)(hb,{}),onClick:v,children:`Add Your First Credential`})]})}):(0,W.jsx)(vv,{children:(0,W.jsx)(ny,{children:t.map((n,r)=>(0,W.jsxs)(ay,{divider:r<t.length-1,onClick:()=>_(n),sx:{cursor:`pointer`,"&:hover":{bgcolor:`action.hover`}},children:[(0,W.jsx)(sy,{children:(0,W.jsx)(kT,{color:n.enabled?`primary`:`disabled`})}),(0,W.jsx)(ly,{primary:n.name||n.entityId,secondary:(0,W.jsxs)(W.Fragment,{children:[n.name&&(0,W.jsx)(Q,{component:`span`,variant:`body2`,color:`text.secondary`,children:n.entityId}),(0,W.jsx)(Q,{component:`span`,variant:`body2`,color:`text.secondary`,sx:{ml:n.name?2:0},children:`PIN: ****`})]})}),(0,W.jsxs)(iy,{children:[(0,W.jsx)(mb,{title:n.enabled?e(`lockCredentials.disable`):e(`lockCredentials.enable`),children:(0,W.jsx)(YS,{edge:`end`,checked:n.enabled,onChange:e=>{e.stopPropagation(),g(n)}})}),(0,W.jsx)(mb,{title:e(`common.delete`),children:(0,W.jsx)(Uh,{edge:`end`,onClick:e=>{e.stopPropagation(),m(n.entityId)},sx:{ml:1},children:(0,W.jsx)(zS,{})})})]})]},n.entityId))})}),(0,W.jsx)(sJe,{open:s,onClose:()=>c(!1),onSave:f,initialEntityId:l?.entityId,initialName:l?.name,isEdit:!!l}),(0,W.jsx)(qT,{open:p!==null,title:e(`lockCredentials.confirmDeleteTitle`),message:e(`lockCredentials.confirmDeleteMessage`,{entity:p??``}),confirmLabel:e(`common.delete`),confirmColor:`error`,onConfirm:()=>{p&&h(p)},onCancel:()=>m(null)})]})},lJe=()=>{let e=Cr(),{t}=hs();return(0,W.jsxs)(Z,{display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,minHeight:`60vh`,gap:2,p:4,children:[(0,W.jsx)(qhe,{color:`disabled`,sx:{fontSize:64}}),(0,W.jsx)(Q,{variant:`h5`,fontWeight:600,children:t(`notFound.title`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:t(`notFound.description`)}),(0,W.jsx)(_v,{variant:`contained`,startIcon:(0,W.jsx)(oE,{}),onClick:()=>e(Y9.dashboard),children:t(`notFound.backToDashboard`)})]})};function P4(e){if(typeof e==`string`||typeof e==`number`)return``+e;let t=``;if(Array.isArray(e))for(let n=0,r;n<e.length;n++)(r=P4(e[n]))!==``&&(t+=(t&&` `)+r);else for(let n in e)e[n]&&(t+=(t&&` `)+n);return t}var uJe={value:()=>{}};function F4(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+``)||r in n||/[\s.]/.test(r))throw Error(`illegal type: `+r);n[r]=[]}return new I4(n)}function I4(e){this._=e}function dJe(e,t){return e.trim().split(/^|\s+/).map(function(e){var n=``,r=e.indexOf(`.`);if(r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw Error(`unknown type: `+e);return{type:e,name:n}})}I4.prototype=F4.prototype={constructor:I4,on:function(e,t){var n=this._,r=dJe(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(e=r[a]).type)&&(i=fJe(n[i],e.name)))return i;return}if(t!=null&&typeof t!=`function`)throw Error(`invalid callback: `+t);for(;++a<o;)if(i=(e=r[a]).type)n[i]=L4(n[i],e.name,t);else if(t==null)for(i in n)n[i]=L4(n[i],e.name,null);return this},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new I4(e)},call:function(e,t){if((i=arguments.length-2)>0)for(var n=Array(i),r=0,i,a;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(a=this._[e],r=0,i=a.length;r<i;++r)a[r].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(var r=this._[e],i=0,a=r.length;i<a;++i)r[i].value.apply(t,n)}};function fJe(e,t){for(var n=0,r=e.length,i;n<r;++n)if((i=e[n]).name===t)return i.value}function L4(e,t,n){for(var r=0,i=e.length;r<i;++r)if(e[r].name===t){e[r]=uJe,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var R4={svg:`http://www.w3.org/2000/svg`,xhtml:`http://www.w3.org/1999/xhtml`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`};function z4(e){var t=e+=``,n=t.indexOf(`:`);return n>=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),R4.hasOwnProperty(t)?{space:R4[t],local:e}:e}function pJe(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===`http://www.w3.org/1999/xhtml`&&t.documentElement.namespaceURI===`http://www.w3.org/1999/xhtml`?t.createElement(e):t.createElementNS(n,e)}}function mJe(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function B4(e){var t=z4(e);return(t.local?mJe:pJe)(t)}function hJe(){}function V4(e){return e==null?hJe:function(){return this.querySelector(e)}}function gJe(e){typeof e!=`function`&&(e=V4(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=Array(o),c,l,u=0;u<o;++u)(c=a[u])&&(l=e.call(c,c.__data__,u,a))&&(`__data__`in c&&(l.__data__=c.__data__),s[u]=l);return new n3(r,this._parents)}function _Je(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function vJe(){return[]}function H4(e){return e==null?vJe:function(){return this.querySelectorAll(e)}}function yJe(e){return function(){return _Je(e.apply(this,arguments))}}function bJe(e){e=typeof e==`function`?yJe(e):H4(e);for(var t=this._groups,n=t.length,r=[],i=[],a=0;a<n;++a)for(var o=t[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&(r.push(e.call(c,c.__data__,l,o)),i.push(c));return new n3(r,i)}function U4(e){return function(){return this.matches(e)}}function W4(e){return function(t){return t.matches(e)}}var xJe=Array.prototype.find;function SJe(e){return function(){return xJe.call(this.children,e)}}function CJe(){return this.firstElementChild}function wJe(e){return this.select(e==null?CJe:SJe(typeof e==`function`?e:W4(e)))}var TJe=Array.prototype.filter;function EJe(){return Array.from(this.children)}function DJe(e){return function(){return TJe.call(this.children,e)}}function OJe(e){return this.selectAll(e==null?EJe:DJe(typeof e==`function`?e:W4(e)))}function kJe(e){typeof e!=`function`&&(e=U4(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new n3(r,this._parents)}function G4(e){return Array(e.length)}function AJe(){return new n3(this._enter||this._groups.map(G4),this._parents)}function K4(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}K4.prototype={constructor:K4,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function jJe(e){return function(){return e}}function MJe(e,t,n,r,i,a){for(var o=0,s,c=t.length,l=a.length;o<l;++o)(s=t[o])?(s.__data__=a[o],r[o]=s):n[o]=new K4(e,a[o]);for(;o<c;++o)(s=t[o])&&(i[o]=s)}function NJe(e,t,n,r,i,a,o){var s,c,l=new Map,u=t.length,d=a.length,f=Array(u),p;for(s=0;s<u;++s)(c=t[s])&&(f[s]=p=o.call(c,c.__data__,s,t)+``,l.has(p)?i[s]=c:l.set(p,c));for(s=0;s<d;++s)p=o.call(e,a[s],s,a)+``,(c=l.get(p))?(r[s]=c,c.__data__=a[s],l.delete(p)):n[s]=new K4(e,a[s]);for(s=0;s<u;++s)(c=t[s])&&l.get(f[s])===c&&(i[s]=c)}function PJe(e){return e.__data__}function FJe(e,t){if(!arguments.length)return Array.from(this,PJe);var n=t?NJe:MJe,r=this._parents,i=this._groups;typeof e!=`function`&&(e=jJe(e));for(var a=i.length,o=Array(a),s=Array(a),c=Array(a),l=0;l<a;++l){var u=r[l],d=i[l],f=d.length,p=IJe(e.call(u,u&&u.__data__,l,r)),m=p.length,h=s[l]=Array(m),g=o[l]=Array(m);n(u,d,h,g,c[l]=Array(f),p,t);for(var _=0,v=0,y,b;_<m;++_)if(y=h[_]){for(_>=v&&(v=_+1);!(b=g[v])&&++v<m;);y._next=b||null}}return o=new n3(o,r),o._enter=s,o._exit=c,o}function IJe(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function LJe(){return new n3(this._exit||this._groups.map(G4),this._parents)}function RJe(e,t,n){var r=this.enter(),i=this,a=this.exit();return typeof e==`function`?(r=e(r),r&&=r.selection()):r=r.append(e+``),t!=null&&(i=t(i),i&&=i.selection()),n==null?a.remove():n(a),r&&i?r.merge(i).order():i}function zJe(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,i=n.length,a=r.length,o=Math.min(i,a),s=Array(i),c=0;c<o;++c)for(var l=n[c],u=r[c],d=l.length,f=s[c]=Array(d),p,m=0;m<d;++m)(p=l[m]||u[m])&&(f[m]=p);for(;c<i;++c)s[c]=n[c];return new n3(s,this._parents)}function BJe(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r=e[t],i=r.length-1,a=r[i],o;--i>=0;)(o=r[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function VJe(e){e||=HJe;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;a<r;++a){for(var o=n[a],s=o.length,c=i[a]=Array(s),l,u=0;u<s;++u)(l=o[u])&&(c[u]=l);c.sort(t)}return new n3(i,this._parents).order()}function HJe(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function UJe(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function WJe(){return Array.from(this)}function GJe(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null}function KJe(){let e=0;for(let t of this)++e;return e}function qJe(){return!this.node()}function JJe(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var i=t[n],a=0,o=i.length,s;a<o;++a)(s=i[a])&&e.call(s,s.__data__,a,i);return this}function YJe(e){return function(){this.removeAttribute(e)}}function XJe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function ZJe(e,t){return function(){this.setAttribute(e,t)}}function QJe(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function $Je(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function eYe(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function tYe(e,t){var n=z4(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((t==null?n.local?XJe:YJe:typeof t==`function`?n.local?eYe:$Je:n.local?QJe:ZJe)(n,t))}function q4(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function nYe(e){return function(){this.style.removeProperty(e)}}function rYe(e,t,n){return function(){this.style.setProperty(e,t,n)}}function iYe(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function aYe(e,t,n){return arguments.length>1?this.each((t==null?nYe:typeof t==`function`?iYe:rYe)(e,t,n??``)):J4(this.node(),e)}function J4(e,t){return e.style.getPropertyValue(t)||q4(e).getComputedStyle(e,null).getPropertyValue(t)}function oYe(e){return function(){delete this[e]}}function sYe(e,t){return function(){this[e]=t}}function cYe(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function lYe(e,t){return arguments.length>1?this.each((t==null?oYe:typeof t==`function`?cYe:sYe)(e,t)):this.node()[e]}function Y4(e){return e.trim().split(/^|\s+/)}function X4(e){return e.classList||new Z4(e)}function Z4(e){this._node=e,this._names=Y4(e.getAttribute(`class`)||``)}Z4.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(`class`,this._names.join(` `)))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(`class`,this._names.join(` `)))},contains:function(e){return this._names.indexOf(e)>=0}};function Q4(e,t){for(var n=X4(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function $4(e,t){for(var n=X4(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function uYe(e){return function(){Q4(this,e)}}function dYe(e){return function(){$4(this,e)}}function fYe(e,t){return function(){(t.apply(this,arguments)?Q4:$4)(this,e)}}function pYe(e,t){var n=Y4(e+``);if(arguments.length<2){for(var r=X4(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof t==`function`?fYe:t?uYe:dYe)(n,t))}function mYe(){this.textContent=``}function hYe(e){return function(){this.textContent=e}}function gYe(e){return function(){this.textContent=e.apply(this,arguments)??``}}function _Ye(e){return arguments.length?this.each(e==null?mYe:(typeof e==`function`?gYe:hYe)(e)):this.node().textContent}function vYe(){this.innerHTML=``}function yYe(e){return function(){this.innerHTML=e}}function bYe(e){return function(){this.innerHTML=e.apply(this,arguments)??``}}function xYe(e){return arguments.length?this.each(e==null?vYe:(typeof e==`function`?bYe:yYe)(e)):this.node().innerHTML}function SYe(){this.nextSibling&&this.parentNode.appendChild(this)}function CYe(){return this.each(SYe)}function wYe(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function TYe(){return this.each(wYe)}function EYe(e){var t=typeof e==`function`?e:B4(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function DYe(){return null}function OYe(e,t){var n=typeof e==`function`?e:B4(e),r=t==null?DYe:typeof t==`function`?t:V4(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function kYe(){var e=this.parentNode;e&&e.removeChild(this)}function AYe(){return this.each(kYe)}function jYe(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function MYe(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function NYe(e){return this.select(e?MYe:jYe)}function PYe(e){return arguments.length?this.property(`__data__`,e):this.node().__data__}function FYe(e){return function(t){e.call(this,t,this.__data__)}}function IYe(e){return e.trim().split(/^|\s+/).map(function(e){var t=``,n=e.indexOf(`.`);return n>=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function LYe(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n<i;++n)a=t[n],(!e.type||a.type===e.type)&&a.name===e.name?this.removeEventListener(a.type,a.listener,a.options):t[++r]=a;++r?t.length=r:delete this.__on}}}function RYe(e,t,n){return function(){var r=this.__on,i,a=FYe(t);if(r){for(var o=0,s=r.length;o<s;++o)if((i=r[o]).type===e.type&&i.name===e.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=a,i.options=n),i.value=t;return}}this.addEventListener(e.type,a,n),i={type:e.type,name:e.name,value:t,listener:a,options:n},r?r.push(i):this.__on=[i]}}function zYe(e,t,n){var r=IYe(e+``),i,a=r.length,o;if(arguments.length<2){var s=this.node().__on;if(s){for(var c=0,l=s.length,u;c<l;++c)for(i=0,u=s[c];i<a;++i)if((o=r[i]).type===u.type&&o.name===u.name)return u.value}return}for(s=t?RYe:LYe,i=0;i<a;++i)this.each(s(r[i],t,n));return this}function e3(e,t,n){var r=q4(e),i=r.CustomEvent;typeof i==`function`?i=new i(t,n):(i=r.document.createEvent(`Event`),n?(i.initEvent(t,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function BYe(e,t){return function(){return e3(this,e,t)}}function VYe(e,t){return function(){return e3(this,e,t.apply(this,arguments))}}function HYe(e,t){return this.each((typeof t==`function`?VYe:BYe)(e,t))}function*UYe(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length,o;i<a;++i)(o=r[i])&&(yield o)}var t3=[null];function n3(e,t){this._groups=e,this._parents=t}function r3(){return new n3([[document.documentElement]],t3)}function WYe(){return this}n3.prototype=r3.prototype={constructor:n3,select:gJe,selectAll:bJe,selectChild:wJe,selectChildren:OJe,filter:kJe,data:FJe,enter:AJe,exit:LJe,join:RJe,merge:zJe,selection:WYe,order:BJe,sort:VJe,call:UJe,nodes:WJe,node:GJe,size:KJe,empty:qJe,each:JJe,attr:tYe,style:aYe,property:lYe,classed:pYe,text:_Ye,html:xYe,raise:CYe,lower:TYe,append:EYe,insert:OYe,remove:AYe,clone:NYe,datum:PYe,on:zYe,dispatch:HYe,[Symbol.iterator]:UYe};function i3(e){return typeof e==`string`?new n3([[document.querySelector(e)]],[document.documentElement]):new n3([[e]],t3)}function GYe(e){let t;for(;t=e.sourceEvent;)e=t;return e}function a3(e,t){if(e=GYe(e),t===void 0&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}if(t.getBoundingClientRect){var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}}return[e.pageX,e.pageY]}var KYe={passive:!1},o3={capture:!0,passive:!1};function s3(e){e.stopImmediatePropagation()}function c3(e){e.preventDefault(),e.stopImmediatePropagation()}function l3(e){var t=e.document.documentElement,n=i3(e).on(`dragstart.drag`,c3,o3);`onselectstart`in t?n.on(`selectstart.drag`,c3,o3):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect=`none`)}function u3(e,t){var n=e.document.documentElement,r=i3(e).on(`dragstart.drag`,null);t&&(r.on(`click.drag`,c3,o3),setTimeout(function(){r.on(`click.drag`,null)},0)),`onselectstart`in n?r.on(`selectstart.drag`,null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}var d3=e=>()=>e;function f3(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:a,x:o,y:s,dx:c,dy:l,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:u}})}f3.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function qYe(e){return!e.ctrlKey&&!e.button}function JYe(){return this.parentNode}function YYe(e,t){return t??{x:e.x,y:e.y}}function XYe(){return navigator.maxTouchPoints||`ontouchstart`in this}function p3(){var e=qYe,t=JYe,n=YYe,r=XYe,i={},a=F4(`start`,`drag`,`end`),o=0,s,c,l,u,d=0;function f(e){e.on(`mousedown.drag`,p).filter(r).on(`touchstart.drag`,g).on(`touchmove.drag`,_,KYe).on(`touchend.drag touchcancel.drag`,v).style(`touch-action`,`none`).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}function p(n,r){if(!(u||!e.call(this,n,r))){var i=y(this,t.call(this,n,r),n,r,`mouse`);i&&(i3(n.view).on(`mousemove.drag`,m,o3).on(`mouseup.drag`,h,o3),l3(n.view),s3(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(c3(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){i3(e.view).on(`mousemove.drag mouseup.drag`,null),u3(e.view,l),c3(e),i.mouse(`end`,e)}function g(n,r){if(e.call(this,n,r)){var i=n.changedTouches,a=t.call(this,n,r),o=i.length,s,c;for(s=0;s<o;++s)(c=y(this,a,n,r,i[s].identifier,i[s]))&&(s3(n),c(`start`,n,i[s]))}}function _(e){var t=e.changedTouches,n=t.length,r,a;for(r=0;r<n;++r)(a=i[t[r].identifier])&&(c3(e),a(`drag`,e,t[r]))}function v(e){var t=e.changedTouches,n=t.length,r,a;for(u&&clearTimeout(u),u=setTimeout(function(){u=null},500),r=0;r<n;++r)(a=i[t[r].identifier])&&(s3(e),a(`end`,e,t[r]))}function y(e,t,r,s,c,l){var u=a.copy(),d=a3(l||r,t),p,m,h;if((h=n.call(e,new f3(`beforestart`,{sourceEvent:r,target:f,identifier:c,active:o,x:d[0],y:d[1],dx:0,dy:0,dispatch:u}),s))!=null)return p=h.x-d[0]||0,m=h.y-d[1]||0,function n(r,a,l){var g=d,_;switch(r){case`start`:i[c]=n,_=o++;break;case`end`:delete i[c],--o;case`drag`:d=a3(l||a,t),_=o;break}u.call(r,e,new f3(r,{sourceEvent:a,subject:h,target:f,identifier:c,active:_,x:d[0]+p,y:d[1]+m,dx:d[0]-g[0],dy:d[1]-g[1],dispatch:u}),s)}}return f.filter=function(t){return arguments.length?(e=typeof t==`function`?t:d3(!!t),f):e},f.container=function(e){return arguments.length?(t=typeof e==`function`?e:d3(e),f):t},f.subject=function(e){return arguments.length?(n=typeof e==`function`?e:d3(e),f):n},f.touchable=function(e){return arguments.length?(r=typeof e==`function`?e:d3(!!e),f):r},f.on=function(){var e=a.on.apply(a,arguments);return e===a?f:e},f.clickDistance=function(e){return arguments.length?(d=(e=+e)*e,f):Math.sqrt(d)},f}function m3(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function h3(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function g3(){}var _3=.7,v3=1/_3,y3=`\\s*([+-]?\\d+)\\s*`,b3=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,x3=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,ZYe=/^#([0-9a-f]{3,8})$/,QYe=RegExp(`^rgb\\(${y3},${y3},${y3}\\)$`),$Ye=RegExp(`^rgb\\(${x3},${x3},${x3}\\)$`),eXe=RegExp(`^rgba\\(${y3},${y3},${y3},${b3}\\)$`),tXe=RegExp(`^rgba\\(${x3},${x3},${x3},${b3}\\)$`),nXe=RegExp(`^hsl\\(${b3},${x3},${x3}\\)$`),rXe=RegExp(`^hsla\\(${b3},${x3},${x3},${b3}\\)$`),S3={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};m3(g3,T3,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:C3,formatHex:C3,formatHex8:iXe,formatHsl:aXe,formatRgb:w3,toString:w3});function C3(){return this.rgb().formatHex()}function iXe(){return this.rgb().formatHex8()}function aXe(){return I3(this).formatHsl()}function w3(){return this.rgb().formatRgb()}function T3(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=ZYe.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?E3(t):n===3?new k3(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?D3(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?D3(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=QYe.exec(e))?new k3(t[1],t[2],t[3],1):(t=$Ye.exec(e))?new k3(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=eXe.exec(e))?D3(t[1],t[2],t[3],t[4]):(t=tXe.exec(e))?D3(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=nXe.exec(e))?F3(t[1],t[2]/100,t[3]/100,1):(t=rXe.exec(e))?F3(t[1],t[2]/100,t[3]/100,t[4]):S3.hasOwnProperty(e)?E3(S3[e]):e===`transparent`?new k3(NaN,NaN,NaN,0):null}function E3(e){return new k3(e>>16&255,e>>8&255,e&255,1)}function D3(e,t,n,r){return r<=0&&(e=t=n=NaN),new k3(e,t,n,r)}function oXe(e){return e instanceof g3||(e=T3(e)),e?(e=e.rgb(),new k3(e.r,e.g,e.b,e.opacity)):new k3}function O3(e,t,n,r){return arguments.length===1?oXe(e):new k3(e,t,n,r??1)}function k3(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}m3(k3,O3,h3(g3,{brighter(e){return e=e==null?v3:v3**+e,new k3(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?_3:_3**+e,new k3(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new k3(N3(this.r),N3(this.g),N3(this.b),M3(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:A3,formatHex:A3,formatHex8:sXe,formatRgb:j3,toString:j3}));function A3(){return`#${P3(this.r)}${P3(this.g)}${P3(this.b)}`}function sXe(){return`#${P3(this.r)}${P3(this.g)}${P3(this.b)}${P3((isNaN(this.opacity)?1:this.opacity)*255)}`}function j3(){let e=M3(this.opacity);return`${e===1?`rgb(`:`rgba(`}${N3(this.r)}, ${N3(this.g)}, ${N3(this.b)}${e===1?`)`:`, ${e})`}`}function M3(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function N3(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function P3(e){return e=N3(e),(e<16?`0`:``)+e.toString(16)}function F3(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new L3(e,t,n,r)}function I3(e){if(e instanceof L3)return new L3(e.h,e.s,e.l,e.opacity);if(e instanceof g3||(e=T3(e)),!e)return new L3;if(e instanceof L3)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new L3(o,s,c,e.opacity)}function cXe(e,t,n,r){return arguments.length===1?I3(e):new L3(e,t,n,r??1)}function L3(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}m3(L3,cXe,h3(g3,{brighter(e){return e=e==null?v3:v3**+e,new L3(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?_3:_3**+e,new L3(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new k3(B3(e>=240?e-240:e+120,i,r),B3(e,i,r),B3(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new L3(R3(this.h),z3(this.s),z3(this.l),M3(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=M3(this.opacity);return`${e===1?`hsl(`:`hsla(`}${R3(this.h)}, ${z3(this.s)*100}%, ${z3(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function R3(e){return e=(e||0)%360,e<0?e+360:e}function z3(e){return Math.max(0,Math.min(1,e||0))}function B3(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var V3=e=>()=>e;function lXe(e,t){return function(n){return e+n*t}}function uXe(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function dXe(e){return(e=+e)==1?H3:function(t,n){return n-t?uXe(t,n,e):V3(isNaN(t)?n:t)}}function H3(e,t){var n=t-e;return n?lXe(e,n):V3(isNaN(e)?t:e)}var U3=(function e(t){var n=dXe(t);function r(e,t){var r=n((e=O3(e)).r,(t=O3(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=H3(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function fXe(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function pXe(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function mXe(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o;for(o=0;o<r;++o)i[o]=J3(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function hXe(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function W3(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function gXe(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=J3(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var G3=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,K3=new RegExp(G3.source,`g`);function _Xe(e){return function(){return e}}function vXe(e){return function(t){return e(t)+``}}function q3(e,t){var n=G3.lastIndex=K3.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=G3.exec(e))&&(i=K3.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:W3(r,i)})),n=K3.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?vXe(c[0].x):_Xe(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}function J3(e,t){var n=typeof t,r;return t==null||n===`boolean`?V3(t):(n===`number`?W3:n===`string`?(r=T3(t))?(t=r,U3):q3:t instanceof T3?U3:t instanceof Date?hXe:pXe(t)?fXe:Array.isArray(t)?mXe:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?gXe:W3)(e,t)}var Y3=180/Math.PI,X3={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Z3(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*Y3,skewX:Math.atan(c)*Y3,scaleX:o,scaleY:s}}var Q3;function yXe(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?X3:Z3(t.a,t.b,t.c,t.d,t.e,t.f)}function bXe(e){return e==null||(Q3||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),Q3.setAttribute(`transform`,e),!(e=Q3.transform.baseVal.consolidate()))?X3:(e=e.matrix,Z3(e.a,e.b,e.c,e.d,e.e,e.f))}function $3(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:W3(e,i)},{i:c-2,x:W3(r,a)})}else (i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:W3(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:W3(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:W3(e,n)},{i:s-2,x:W3(t,r)})}else (n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var xXe=$3(yXe,`px, `,`px)`,`deg)`),SXe=$3(bXe,`, `,`)`,`)`),CXe=1e-12;function e6(e){return((e=Math.exp(e))+1/e)/2}function wXe(e){return((e=Math.exp(e))-1/e)/2}function TXe(e){return((e=Math.exp(2*e))-1)/(e+1)}var t6=(function e(t,n,r){function i(e,i){var a=e[0],o=e[1],s=e[2],c=i[0],l=i[1],u=i[2],d=c-a,f=l-o,p=d*d+f*f,m,h;if(p<CXe)h=Math.log(u/s)/t,m=function(e){return[a+e*d,o+e*f,s*Math.exp(t*e*h)]};else{var g=Math.sqrt(p),_=(u*u-s*s+r*p)/(2*s*n*g),v=(u*u-s*s-r*p)/(2*u*n*g),y=Math.log(Math.sqrt(_*_+1)-_);h=(Math.log(Math.sqrt(v*v+1)-v)-y)/t,m=function(e){var r=e*h,i=e6(y),c=s/(n*g)*(i*TXe(t*r+y)-wXe(y));return[a+c*d,o+c*f,s*i/e6(t*r+y)]}}return m.duration=h*1e3*t/Math.SQRT2,m}return i.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},i})(Math.SQRT2,2,4),n6=0,r6=0,i6=0,a6=1e3,o6,s6,c6=0,l6=0,u6=0,d6=typeof performance==`object`&&performance.now?performance:Date,f6=typeof window==`object`&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function p6(){return l6||=(f6(EXe),d6.now()+u6)}function EXe(){l6=0}function m6(){this._call=this._time=this._next=null}m6.prototype=h6.prototype={constructor:m6,restart:function(e,t,n){if(typeof e!=`function`)throw TypeError(`callback is not a function`);n=(n==null?p6():+n)+(t==null?0:+t),!this._next&&s6!==this&&(s6?s6._next=this:o6=this,s6=this),this._call=e,this._time=n,_6()},stop:function(){this._call&&(this._call=null,this._time=1/0,_6())}};function h6(e,t,n){var r=new m6;return r.restart(e,t,n),r}function DXe(){p6(),++n6;for(var e=o6,t;e;)(t=l6-e._time)>=0&&e._call.call(void 0,t),e=e._next;--n6}function g6(){l6=(c6=d6.now())+u6,n6=r6=0;try{DXe()}finally{n6=0,kXe(),l6=0}}function OXe(){var e=d6.now(),t=e-c6;t>a6&&(u6-=t,c6=e)}function kXe(){for(var e,t=o6,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:o6=n);s6=e,_6(r)}function _6(e){n6||(r6&&=clearTimeout(r6),e-l6>24?(e<1/0&&(r6=setTimeout(g6,e-d6.now()-u6)),i6&&=clearInterval(i6)):(i6||=(c6=d6.now(),setInterval(OXe,a6)),n6=1,f6(g6)))}function v6(e,t,n){var r=new m6;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var AXe=F4(`start`,`end`,`cancel`,`interrupt`),jXe=[];function y6(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;MXe(e,n,{name:t,index:r,group:i,on:AXe,tween:jXe,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function b6(e,t){var n=S6(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function x6(e,t){var n=S6(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function S6(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function MXe(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=h6(a,0,n.time);function a(e){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=e&&o(e-n.delay)}function o(a){var l,u,d,f;if(n.state!==1)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===3)return v6(o);f.state===4?(f.state=6,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l<t&&(f.state=6,f.timer.stop(),f.on.call(`cancel`,e,e.__data__,f.index,f.group),delete r[l])}if(v6(function(){n.state===3&&(n.state=4,n.timer.restart(s,n.delay,n.time),s(a))}),n.state=2,n.on.call(`start`,e,e.__data__,n.index,n.group),n.state===2){for(n.state=3,i=Array(d=n.tween.length),l=0,u=-1;l<d;++l)(f=n.tween[l].value.call(e,e.__data__,n.index,n.group))&&(i[++u]=f);i.length=u+1}}function s(t){for(var r=t<n.duration?n.ease.call(null,t/n.duration):(n.timer.restart(c),n.state=5,1),a=-1,o=i.length;++a<o;)i[a].call(e,r);n.state===5&&(n.on.call(`end`,e,e.__data__,n.index,n.group),c())}function c(){for(var i in n.state=6,n.timer.stop(),delete r[t],r)return;delete e.__transition}}function C6(e,t){var n=e.__transition,r,i,a=!0,o;if(n){for(o in t=t==null?null:t+``,n){if((r=n[o]).name!==t){a=!1;continue}i=r.state>2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]}a&&delete e.__transition}}function NXe(e){return this.each(function(){C6(this,e)})}function PXe(e,t){var n,r;return function(){var i=x6(this,e),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o<s;++o)if(r[o].name===t){r=r.slice(),r.splice(o,1);break}}i.tween=r}}function FXe(e,t,n){var r,i;if(typeof n!=`function`)throw Error();return function(){var a=x6(this,e),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:t,value:n},c=0,l=i.length;c<l;++c)if(i[c].name===t){i[c]=s;break}c===l&&i.push(s)}a.tween=i}}function IXe(e,t){var n=this._id;if(e+=``,arguments.length<2){for(var r=S6(this.node(),n).tween,i=0,a=r.length,o;i<a;++i)if((o=r[i]).name===e)return o.value;return null}return this.each((t==null?PXe:FXe)(n,e,t))}function w6(e,t,n){var r=e._id;return e.each(function(){var e=x6(this,r);(e.value||={})[t]=n.apply(this,arguments)}),function(e){return S6(e,r).value[t]}}function T6(e,t){var n;return(typeof t==`number`?W3:t instanceof T3?U3:(n=T3(t))?(t=n,U3):q3)(e,t)}function LXe(e){return function(){this.removeAttribute(e)}}function RXe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function zXe(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttribute(e);return o===i?null:o===r?a:a=t(r=o,n)}}function BXe(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttributeNS(e.space,e.local);return o===i?null:o===r?a:a=t(r=o,n)}}function VXe(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttribute(e):(o=this.getAttribute(e),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function HXe(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttributeNS(e.space,e.local):(o=this.getAttributeNS(e.space,e.local),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function UXe(e,t){var n=z4(e),r=n===`transform`?SXe:T6;return this.attrTween(e,typeof t==`function`?(n.local?HXe:VXe)(n,r,w6(this,`attr.`+e,t)):t==null?(n.local?RXe:LXe)(n):(n.local?BXe:zXe)(n,r,t))}function WXe(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function GXe(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function KXe(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&GXe(e,i)),n}return i._value=t,i}function qXe(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&WXe(e,i)),n}return i._value=t,i}function JXe(e,t){var n=`attr.`+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!=`function`)throw Error();var r=z4(e);return this.tween(n,(r.local?KXe:qXe)(r,t))}function YXe(e,t){return function(){b6(this,e).delay=+t.apply(this,arguments)}}function XXe(e,t){return t=+t,function(){b6(this,e).delay=t}}function ZXe(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?YXe:XXe)(t,e)):S6(this.node(),t).delay}function QXe(e,t){return function(){x6(this,e).duration=+t.apply(this,arguments)}}function $Xe(e,t){return t=+t,function(){x6(this,e).duration=t}}function eZe(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?QXe:$Xe)(t,e)):S6(this.node(),t).duration}function tZe(e,t){if(typeof t!=`function`)throw Error();return function(){x6(this,e).ease=t}}function nZe(e){var t=this._id;return arguments.length?this.each(tZe(t,e)):S6(this.node(),t).ease}function rZe(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=`function`)throw Error();x6(this,e).ease=n}}function iZe(e){if(typeof e!=`function`)throw Error();return this.each(rZe(this._id,e))}function aZe(e){typeof e!=`function`&&(e=U4(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new D6(r,this._parents,this._name,this._id)}function oZe(e){if(e._id!==this._id)throw Error();for(var t=this._groups,n=e._groups,r=t.length,i=n.length,a=Math.min(r,i),o=Array(r),s=0;s<a;++s)for(var c=t[s],l=n[s],u=c.length,d=o[s]=Array(u),f,p=0;p<u;++p)(f=c[p]||l[p])&&(d[p]=f);for(;s<r;++s)o[s]=t[s];return new D6(o,this._parents,this._name,this._id)}function sZe(e){return(e+``).trim().split(/^|\s+/).every(function(e){var t=e.indexOf(`.`);return t>=0&&(e=e.slice(0,t)),!e||e===`start`})}function cZe(e,t,n){var r,i,a=sZe(t)?b6:x6;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function lZe(e,t){var n=this._id;return arguments.length<2?S6(this.node(),n).on.on(e):this.each(cZe(n,e,t))}function uZe(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function dZe(){return this.on(`end.remove`,uZe(this._id))}function fZe(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=V4(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o<i;++o)for(var s=r[o],c=s.length,l=a[o]=Array(c),u,d,f=0;f<c;++f)(u=s[f])&&(d=e.call(u,u.__data__,f,s))&&(`__data__`in u&&(d.__data__=u.__data__),l[f]=d,y6(l[f],t,n,f,l,S6(u,n)));return new D6(a,this._parents,t,n)}function pZe(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=H4(e));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var c=r[s],l=c.length,u,d=0;d<l;++d)if(u=c[d]){for(var f=e.call(u,u.__data__,d,c),p,m=S6(u,n),h=0,g=f.length;h<g;++h)(p=f[h])&&y6(p,t,n,h,f,m);a.push(f),o.push(u)}return new D6(a,o,t,n)}var mZe=r3.prototype.constructor;function hZe(){return new mZe(this._groups,this._parents)}function gZe(e,t){var n,r,i;return function(){var a=J4(this,e),o=(this.style.removeProperty(e),J4(this,e));return a===o?null:a===n&&o===r?i:i=t(n=a,r=o)}}function E6(e){return function(){this.style.removeProperty(e)}}function _Ze(e,t,n){var r,i=n+``,a;return function(){var o=J4(this,e);return o===i?null:o===r?a:a=t(r=o,n)}}function vZe(e,t,n){var r,i,a;return function(){var o=J4(this,e),s=n(this),c=s+``;return s??(c=s=(this.style.removeProperty(e),J4(this,e))),o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s))}}function yZe(e,t){var n,r,i,a=`style.`+t,o=`end.`+a,s;return function(){var c=x6(this,e),l=c.on,u=c.value[a]==null?s||=E6(t):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(o,i=u),c.on=r}}function bZe(e,t,n){var r=(e+=``)==`transform`?xXe:T6;return t==null?this.styleTween(e,gZe(e,r)).on(`end.style.`+e,E6(e)):typeof t==`function`?this.styleTween(e,vZe(e,r,w6(this,`style.`+e,t))).each(yZe(this._id,e)):this.styleTween(e,_Ze(e,r,t),n).on(`end.style.`+e,null)}function xZe(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function SZe(e,t,n){var r,i;function a(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&xZe(e,a,n)),r}return a._value=t,a}function CZe(e,t,n){var r=`style.`+(e+=``);if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!=`function`)throw Error();return this.tween(r,SZe(e,t,n??``))}function wZe(e){return function(){this.textContent=e}}function TZe(e){return function(){this.textContent=e(this)??``}}function EZe(e){return this.tween(`text`,typeof e==`function`?TZe(w6(this,`text`,e)):wZe(e==null?``:e+``))}function DZe(e){return function(t){this.textContent=e.call(this,t)}}function OZe(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&DZe(r)),t}return r._value=e,r}function kZe(e){var t=`text`;if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!=`function`)throw Error();return this.tween(t,OZe(e))}function AZe(){for(var e=this._name,t=this._id,n=O6(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)if(c=o[l]){var u=S6(c,t);y6(c,e,n,l,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new D6(r,this._parents,e,n)}function jZe(){var e,t,n=this,r=n._id,i=n.size();return new Promise(function(a,o){var s={value:o},c={value:function(){--i===0&&a()}};n.each(function(){var n=x6(this,r),i=n.on;i!==e&&(t=(e=i).copy(),t._.cancel.push(s),t._.interrupt.push(s),t._.end.push(c)),n.on=t}),i===0&&a()})}var MZe=0;function D6(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function NZe(e){return r3().transition(e)}function O6(){return++MZe}var k6=r3.prototype;D6.prototype=NZe.prototype={constructor:D6,select:fZe,selectAll:pZe,selectChild:k6.selectChild,selectChildren:k6.selectChildren,filter:aZe,merge:oZe,selection:hZe,transition:AZe,call:k6.call,nodes:k6.nodes,node:k6.node,size:k6.size,empty:k6.empty,each:k6.each,on:lZe,attr:UXe,attrTween:JXe,style:bZe,styleTween:CZe,text:EZe,textTween:kZe,remove:dZe,tween:IXe,delay:ZXe,duration:eZe,ease:nZe,easeVarying:iZe,end:jZe,[Symbol.iterator]:k6[Symbol.iterator]};function PZe(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var FZe={time:null,delay:0,duration:250,ease:PZe};function IZe(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw Error(`transition ${t} not found`);return n}function LZe(e){var t,n;e instanceof D6?(t=e._id,e=e._name):(t=O6(),(n=FZe).time=p6(),e=e==null?null:e+``);for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&y6(c,e,t,l,o,n||IZe(c,t));return new D6(r,this._parents,e,t)}r3.prototype.interrupt=NXe,r3.prototype.transition=LZe;var A6=e=>()=>e;function RZe(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function j6(e,t,n){this.k=e,this.x=t,this.y=n}j6.prototype={constructor:j6,scale:function(e){return e===1?this:new j6(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new j6(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return`translate(`+this.x+`,`+this.y+`) scale(`+this.k+`)`}};var M6=new j6(1,0,0);N6.prototype=j6.prototype;function N6(e){for(;!e.__zoom;)if(!(e=e.parentNode))return M6;return e.__zoom}function P6(e){e.stopImmediatePropagation()}function F6(e){e.preventDefault(),e.stopImmediatePropagation()}function zZe(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function BZe(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute(`viewBox`)?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function I6(){return this.__zoom||M6}function VZe(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function HZe(){return navigator.maxTouchPoints||`ontouchstart`in this}function UZe(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],a=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function L6(){var e=zZe,t=BZe,n=UZe,r=VZe,i=HZe,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=t6,l=F4(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,I6).on(`wheel.zoom`,w,{passive:!1}).on(`mousedown.zoom`,T).on(`dblclick.zoom`,E).filter(i).on(`touchstart.zoom`,D).on(`touchmove.zoom`,O).on(`touchend.zoom touchcancel.zoom`,k).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}_.transform=function(e,t,n,r){var i=e.selection?e.selection():e;i.property(`__zoom`,I6),e===i?i.interrupt().each(function(){S(this,arguments).event(r).start().zoom(null,typeof t==`function`?t.apply(this,arguments):t).end()}):x(e,t,n,r)},_.scaleBy=function(e,t,n,r){_.scaleTo(e,function(){return this.__zoom.k*(typeof t==`function`?t.apply(this,arguments):t)},n,r)},_.scaleTo=function(e,r,i,a){_.transform(e,function(){var e=t.apply(this,arguments),a=this.__zoom,s=i==null?b(e):typeof i==`function`?i.apply(this,arguments):i,c=a.invert(s),l=typeof r==`function`?r.apply(this,arguments):r;return n(y(v(a,l),s,c),e,o)},i,a)},_.translateBy=function(e,r,i,a){_.transform(e,function(){return n(this.__zoom.translate(typeof r==`function`?r.apply(this,arguments):r,typeof i==`function`?i.apply(this,arguments):i),t.apply(this,arguments),o)},null,a)},_.translateTo=function(e,r,i,a,s){_.transform(e,function(){var e=t.apply(this,arguments),s=this.__zoom,c=a==null?b(e):typeof a==`function`?a.apply(this,arguments):a;return n(M6.translate(c[0],c[1]).scale(s.k).translate(typeof r==`function`?-r.apply(this,arguments):-r,typeof i==`function`?-i.apply(this,arguments):-i),e,o)},a,s)};function v(e,t){return t=Math.max(a[0],Math.min(a[1],t)),t===e.k?e:new j6(t,e.x,e.y)}function y(e,t,n){var r=t[0]-n[0]*e.k,i=t[1]-n[1]*e.k;return r===e.x&&i===e.y?e:new j6(e.k,r,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function x(e,n,r,i){e.on(`start.zoom`,function(){S(this,arguments).event(i).start()}).on(`interrupt.zoom end.zoom`,function(){S(this,arguments).event(i).end()}).tween(`zoom`,function(){var e=this,a=arguments,o=S(e,a).event(i),s=t.apply(e,a),l=r==null?b(s):typeof r==`function`?r.apply(e,a):r,u=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),d=e.__zoom,f=typeof n==`function`?n.apply(e,a):n,p=c(d.invert(l).concat(u/d.k),f.invert(l).concat(u/f.k));return function(e){if(e===1)e=f;else{var t=p(e),n=u/t[2];e=new j6(n,l[0]-t[0]*n,l[1]-t[1]*n)}o.zoom(null,e)}})}function S(e,t,n){return!n&&e.__zooming||new C(e,t)}function C(e,n){this.that=e,this.args=n,this.active=0,this.sourceEvent=null,this.extent=t.apply(e,n),this.taps=0}C.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit(`start`)),this},zoom:function(e,t){return this.mouse&&e!==`mouse`&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&e!==`touch`&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&e!==`touch`&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit(`zoom`),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit(`end`)),this},emit:function(e){var t=i3(this.that).datum();l.call(e,this.that,new RZe(e,{sourceEvent:this.sourceEvent,target:_,type:e,transform:this.that.__zoom,dispatch:l}),t)}};function w(t,...i){if(!e.apply(this,arguments))return;var s=S(this,i).event(t),c=this.__zoom,l=Math.max(a[0],Math.min(a[1],c.k*2**r.apply(this,arguments))),u=a3(t);if(s.wheel)(s.mouse[0][0]!==u[0]||s.mouse[0][1]!==u[1])&&(s.mouse[1]=c.invert(s.mouse[0]=u)),clearTimeout(s.wheel);else if(c.k===l)return;else s.mouse=[u,c.invert(u)],C6(this),s.start();F6(t),s.wheel=setTimeout(d,m),s.zoom(`mouse`,n(y(v(c,l),s.mouse[0],s.mouse[1]),s.extent,o));function d(){s.wheel=null,s.end()}}function T(t,...r){if(f||!e.apply(this,arguments))return;var i=t.currentTarget,a=S(this,r,!0).event(t),s=i3(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=a3(t,i),l=t.clientX,u=t.clientY;l3(t.view),P6(t),a.mouse=[c,this.__zoom.invert(c)],C6(this),a.start();function d(e){if(F6(e),!a.moved){var t=e.clientX-l,r=e.clientY-u;a.moved=t*t+r*r>h}a.event(e).zoom(`mouse`,n(y(a.that.__zoom,a.mouse[0]=a3(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),u3(e.view,a.moved),F6(e),a.event(e).end()}}function E(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=a3(r.changedTouches?r.changedTouches[0]:r,this),l=a.invert(c),u=a.k*(r.shiftKey?.5:2),d=n(y(v(a,u),c,l),t.apply(this,i),o);F6(r),s>0?i3(this).transition().duration(s).call(x,d,c,r):i3(this).call(_.transform,d,c,r)}}function D(t,...n){if(e.apply(this,arguments)){var r=t.touches,i=r.length,a=S(this,n,t.changedTouches.length===i).event(t),o,s,c,l;for(P6(t),s=0;s<i;++s)c=r[s],l=a3(c,this),l=[l,this.__zoom.invert(l),c.identifier],a.touch0?!a.touch1&&a.touch0[2]!==l[2]&&(a.touch1=l,a.taps=0):(a.touch0=l,o=!0,a.taps=1+!!u);u&&=clearTimeout(u),o&&(a.taps<2&&(d=l[0],u=setTimeout(function(){u=null},p)),C6(this),a.start())}}function O(e,...t){if(this.__zooming){var r=S(this,t).event(e),i=e.changedTouches,a=i.length,s,c,l,u;for(F6(e),s=0;s<a;++s)c=i[s],l=a3(c,this),r.touch0&&r.touch0[2]===c.identifier?r.touch0[0]=l:r.touch1&&r.touch1[2]===c.identifier&&(r.touch1[0]=l);if(c=r.that.__zoom,r.touch1){var d=r.touch0[0],f=r.touch0[1],p=r.touch1[0],m=r.touch1[1],h=(h=p[0]-d[0])*h+(h=p[1]-d[1])*h,g=(g=m[0]-f[0])*g+(g=m[1]-f[1])*g;c=v(c,Math.sqrt(h/g)),l=[(d[0]+p[0])/2,(d[1]+p[1])/2],u=[(f[0]+m[0])/2,(f[1]+m[1])/2]}else if(r.touch0)l=r.touch0[0],u=r.touch0[1];else return;r.zoom(`touch`,n(y(c,l,u),r.extent,o))}}function k(e,...t){if(this.__zooming){var n=S(this,t).event(e),r=e.changedTouches,i=r.length,a,o;for(P6(e),f&&clearTimeout(f),f=setTimeout(function(){f=null},p),a=0;a<i;++a)o=r[a],n.touch0&&n.touch0[2]===o.identifier?delete n.touch0:n.touch1&&n.touch1[2]===o.identifier&&delete n.touch1;if(n.touch1&&!n.touch0&&(n.touch0=n.touch1,delete n.touch1),n.touch0)n.touch0[1]=this.__zoom.invert(n.touch0[0]);else if(n.end(),n.taps===2&&(o=a3(o,this),Math.hypot(d[0]-o[0],d[1]-o[1])<g)){var s=i3(this).on(`dblclick.zoom`);s&&s.apply(this,arguments)}}}return _.wheelDelta=function(e){return arguments.length?(r=typeof e==`function`?e:A6(+e),_):r},_.filter=function(t){return arguments.length?(e=typeof t==`function`?t:A6(!!t),_):e},_.touchable=function(e){return arguments.length?(i=typeof e==`function`?e:A6(!!e),_):i},_.extent=function(e){return arguments.length?(t=typeof e==`function`?e:A6([[+e[0][0],+e[0][1]],[+e[1][0],+e[1][1]]]),_):t},_.scaleExtent=function(e){return arguments.length?(a[0]=+e[0],a[1]=+e[1],_):[a[0],a[1]]},_.translateExtent=function(e){return arguments.length?(o[0][0]=+e[0][0],o[1][0]=+e[1][0],o[0][1]=+e[0][1],o[1][1]=+e[1][1],_):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},_.constrain=function(e){return arguments.length?(n=e,_):n},_.duration=function(e){return arguments.length?(s=+e,_):s},_.interpolate=function(e){return arguments.length?(c=e,_):c},_.on=function(){var e=l.on.apply(l,arguments);return e===l?_:e},_.clickDistance=function(e){return arguments.length?(h=(e=+e)*e,_):Math.sqrt(h)},_.tapDistance=function(e){return arguments.length?(g=+e,_):g},_}var R6={error001:()=>`[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001`,error002:()=>`It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.`,error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>`The React Flow parent container needs a width and a height to render the graph.`,error005:()=>`Only child nodes can use a parent extent.`,error006:()=>`Can't create edge. An edge needs a source and a target.`,error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:t,sourceHandle:n,targetHandle:r})=>`Couldn't create edge for ${e} handle id: "${e===`source`?n:r}", edge id: ${t}.`,error010:()=>`Handle: No node id found. Make sure to only use a Handle inside a custom Node.`,error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e=`react`)=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>`useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.`,error015:()=>`It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.`},z6=[[-1/0,-1/0],[1/0,1/0]],B6=[`Enter`,` `,`Escape`],V6={"node.a11yDescription.default":`Press enter or space to select a node. Press delete to remove it and escape to cancel.`,"node.a11yDescription.keyboardDisabled":`Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.`,"node.a11yDescription.ariaLiveMessage":({direction:e,x:t,y:n})=>`Moved selected node ${e}. New position, x: ${t}, y: ${n}`,"edge.a11yDescription.default":`Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.`,"controls.ariaLabel":`Control Panel`,"controls.zoomIn.ariaLabel":`Zoom In`,"controls.zoomOut.ariaLabel":`Zoom Out`,"controls.fitView.ariaLabel":`Fit View`,"controls.interactive.ariaLabel":`Toggle Interactivity`,"minimap.ariaLabel":`Mini Map`,"handle.ariaLabel":`Handle`},H6;(function(e){e.Strict=`strict`,e.Loose=`loose`})(H6||={});var U6;(function(e){e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`})(U6||={});var W6;(function(e){e.Partial=`partial`,e.Full=`full`})(W6||={});var G6={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null},K6;(function(e){e.Bezier=`default`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e.SimpleBezier=`simplebezier`})(K6||={});var q6;(function(e){e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`})(q6||={});var J6;(function(e){e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`})(J6||={});var Y6={[J6.Left]:J6.Right,[J6.Right]:J6.Left,[J6.Top]:J6.Bottom,[J6.Bottom]:J6.Top};function X6(e){return e===null?null:e?`valid`:`invalid`}var Z6=e=>`id`in e&&`source`in e&&`target`in e,WZe=e=>`id`in e&&`position`in e&&!(`source`in e)&&!(`target`in e),Q6=e=>`id`in e&&`internals`in e&&!(`source`in e)&&!(`target`in e),$6=(e,t=[0,0])=>{let{width:n,height:r}=w8(e),i=e.origin??t,a=n*i[0],o=r*i[1];return{x:e.position.x-a,y:e.position.y-o}},GZe=(e,t={nodeOrigin:[0,0]})=>e.length===0?{x:0,y:0,width:0,height:0}:u8(e.reduce((e,n)=>{let r=typeof n==`string`,i=!t.nodeLookup&&!r?n:void 0;return t.nodeLookup&&(i=r?t.nodeLookup.get(n):Q6(n)?n:t.nodeLookup.get(n.id)),c8(e,i?f8(i,t.nodeOrigin):{x:0,y:0,x2:0,y2:0})},{x:1/0,y:1/0,x2:-1/0,y2:-1/0})),e8=(e,t={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},r=!1;return e.forEach(e=>{(t.filter===void 0||t.filter(e))&&(n=c8(n,f8(e)),r=!0)}),r?u8(n):{x:0,y:0,width:0,height:0}},t8=(e,t,[n,r,i]=[0,0,1],a=!1,o=!1)=>{let s={...v8(t,[n,r,i]),width:t.width/i,height:t.height/i},c=[];for(let t of e.values()){let{measured:e,selectable:n=!0,hidden:r=!1}=t;if(o&&!n||r)continue;let i=e.width??t.width??t.initialWidth??null,l=e.height??t.height??t.initialHeight??null,u=m8(s,d8(t)),d=(i??0)*(l??0),f=a&&u>0;(!t.internals.handleBounds||f||u>=d||t.dragging)&&c.push(t)}return c},KZe=(e,t)=>{let n=new Set;return e.forEach(e=>{n.add(e.id)}),t.filter(e=>n.has(e.source)||n.has(e.target))};function qZe(e,t){let n=new Map,r=t?.nodes?new Set(t.nodes.map(e=>e.id)):null;return e.forEach(e=>{e.measured.width&&e.measured.height&&(t?.includeHiddenNodes||!e.hidden)&&(!r||r.has(e.id))&&n.set(e.id,e)}),n}async function JZe({nodes:e,width:t,height:n,panZoom:r,minZoom:i,maxZoom:a},o){if(e.size===0)return Promise.resolve(!0);let s=x8(e8(qZe(e,o)),t,n,o?.minZoom??i,o?.maxZoom??a,o?.padding??.1);return await r.setViewport(s,{duration:o?.duration,ease:o?.ease,interpolate:o?.interpolate}),Promise.resolve(!0)}function n8({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:r=[0,0],nodeExtent:i,onError:a}){let o=n.get(e),s=o.parentId?n.get(o.parentId):void 0,{x:c,y:l}=s?s.internals.positionAbsolute:{x:0,y:0},u=o.origin??r,d=o.extent||i;if(o.extent===`parent`&&!o.expandParent)if(!s)a?.(`005`,R6.error005());else{let e=s.measured.width,t=s.measured.height;e&&t&&(d=[[c,l],[c+e,l+t]])}else s&&C8(o.extent)&&(d=[[o.extent[0][0]+c,o.extent[0][1]+l],[o.extent[1][0]+c,o.extent[1][1]+l]]);let f=C8(d)?i8(t,d,o.measured):t;return(o.measured.width===void 0||o.measured.height===void 0)&&a?.(`015`,R6.error015()),{position:{x:f.x-c+(o.measured.width??0)*u[0],y:f.y-l+(o.measured.height??0)*u[1]},positionAbsolute:f}}async function YZe({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:r,onBeforeDelete:i}){let a=new Set(e.map(e=>e.id)),o=[];for(let e of n){if(e.deletable===!1)continue;let t=a.has(e.id),n=!t&&e.parentId&&o.find(t=>t.id===e.parentId);(t||n)&&o.push(e)}let s=new Set(t.map(e=>e.id)),c=r.filter(e=>e.deletable!==!1),l=KZe(o,c);for(let e of c)s.has(e.id)&&!l.find(t=>t.id===e.id)&&l.push(e);if(!i)return{edges:l,nodes:o};let u=await i({nodes:o,edges:l});return typeof u==`boolean`?u?{edges:l,nodes:o}:{edges:[],nodes:[]}:u}var r8=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),i8=(e={x:0,y:0},t,n)=>({x:r8(e.x,t[0][0],t[1][0]-(n?.width??0)),y:r8(e.y,t[0][1],t[1][1]-(n?.height??0))});function a8(e,t,n){let{width:r,height:i}=w8(n),{x:a,y:o}=n.internals.positionAbsolute;return i8(e,[[a,o],[a+r,o+i]],t)}var o8=(e,t,n)=>e<t?r8(Math.abs(e-t),1,t)/t:e>n?-r8(Math.abs(e-n),1,t)/t:0,s8=(e,t,n=15,r=40)=>[o8(e.x,r,t.width-r)*n,o8(e.y,r,t.height-r)*n],c8=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),l8=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),u8=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),d8=(e,t=[0,0])=>{let{x:n,y:r}=Q6(e)?e.internals.positionAbsolute:$6(e,t);return{x:n,y:r,width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}},f8=(e,t=[0,0])=>{let{x:n,y:r}=Q6(e)?e.internals.positionAbsolute:$6(e,t);return{x:n,y:r,x2:n+(e.measured?.width??e.width??e.initialWidth??0),y2:r+(e.measured?.height??e.height??e.initialHeight??0)}},p8=(e,t)=>u8(c8(l8(e),l8(t))),m8=(e,t)=>{let n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),r=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return Math.ceil(n*r)},h8=e=>g8(e.width)&&g8(e.height)&&g8(e.x)&&g8(e.y),g8=e=>!isNaN(e)&&isFinite(e),XZe=(e,t)=>{},_8=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),v8=({x:e,y:t},[n,r,i],a=!1,o=[1,1])=>{let s={x:(e-n)/i,y:(t-r)/i};return a?_8(s,o):s},y8=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r});function b8(e,t){if(typeof e==`number`)return Math.floor((t-t/(1+e))*.5);if(typeof e==`string`&&e.endsWith(`px`)){let t=parseFloat(e);if(!Number.isNaN(t))return Math.floor(t)}if(typeof e==`string`&&e.endsWith(`%`)){let n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(t*n*.01)}return console.error(`[React Flow] The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function ZZe(e,t,n){if(typeof e==`string`||typeof e==`number`){let r=b8(e,n),i=b8(e,t);return{top:r,right:i,bottom:r,left:i,x:i*2,y:r*2}}if(typeof e==`object`){let r=b8(e.top??e.y??0,n),i=b8(e.bottom??e.y??0,n),a=b8(e.left??e.x??0,t),o=b8(e.right??e.x??0,t);return{top:r,right:o,bottom:i,left:a,x:a+o,y:r+i}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function QZe(e,t,n,r,i,a){let{x:o,y:s}=y8(e,[t,n,r]),{x:c,y:l}=y8({x:e.x+e.width,y:e.y+e.height},[t,n,r]),u=i-c,d=a-l;return{left:Math.floor(o),top:Math.floor(s),right:Math.floor(u),bottom:Math.floor(d)}}var x8=(e,t,n,r,i,a)=>{let o=ZZe(a,t,n),s=(t-o.x)/e.width,c=(n-o.y)/e.height,l=r8(Math.min(s,c),r,i),u=e.x+e.width/2,d=e.y+e.height/2,f=t/2-u*l,p=n/2-d*l,m=QZe(e,f,p,l,t,n),h={left:Math.min(m.left-o.left,0),top:Math.min(m.top-o.top,0),right:Math.min(m.right-o.right,0),bottom:Math.min(m.bottom-o.bottom,0)};return{x:f-h.left+h.right,y:p-h.top+h.bottom,zoom:l}},S8=()=>typeof navigator<`u`&&navigator?.userAgent?.indexOf(`Mac`)>=0;function C8(e){return e!=null&&e!==`parent`}function w8(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function T8(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function E8(e,t={width:0,height:0},n,r,i){let a={...e},o=r.get(n);if(o){let e=o.origin||i;a.x+=o.internals.positionAbsolute.x-(t.width??0)*e[0],a.y+=o.internals.positionAbsolute.y-(t.height??0)*e[1]}return a}function D8(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function $Ze(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function eQe(e){return{...V6,...e||{}}}function O8(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:i}){let{x:a,y:o}=N8(e),s=v8({x:a-(i?.left??0),y:o-(i?.top??0)},r),{x:c,y:l}=n?_8(s,t):s;return{xSnapped:c,ySnapped:l,...s}}var k8=e=>({width:e.offsetWidth,height:e.offsetHeight}),A8=e=>e?.getRootNode?.()||window?.document,tQe=[`INPUT`,`SELECT`,`TEXTAREA`];function j8(e){let t=e.composedPath?.()?.[0]||e.target;return t?.nodeType===1?tQe.includes(t.nodeName)||t.hasAttribute(`contenteditable`)||!!t.closest(`.nokey`):!1}var M8=e=>`clientX`in e,N8=(e,t)=>{let n=M8(e),r=n?e.clientX:e.touches?.[0].clientX,i=n?e.clientY:e.touches?.[0].clientY;return{x:r-(t?.left??0),y:i-(t?.top??0)}},P8=(e,t,n,r,i)=>{let a=t.querySelectorAll(`.${e}`);return!a||!a.length?null:Array.from(a).map(t=>{let a=t.getBoundingClientRect();return{id:t.getAttribute(`data-handleid`),type:e,nodeId:i,position:t.getAttribute(`data-handlepos`),x:(a.left-n.left)/r,y:(a.top-n.top)/r,...k8(t)}})};function F8({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:i,sourceControlY:a,targetControlX:o,targetControlY:s}){let c=e*.125+i*.375+o*.375+n*.125,l=t*.125+a*.375+s*.375+r*.125;return[c,l,Math.abs(c-e),Math.abs(l-t)]}function I8(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function L8({pos:e,x1:t,y1:n,x2:r,y2:i,c:a}){switch(e){case J6.Left:return[t-I8(t-r,a),n];case J6.Right:return[t+I8(r-t,a),n];case J6.Top:return[t,n-I8(n-i,a)];case J6.Bottom:return[t,n+I8(i-n,a)]}}function R8({sourceX:e,sourceY:t,sourcePosition:n=J6.Bottom,targetX:r,targetY:i,targetPosition:a=J6.Top,curvature:o=.25}){let[s,c]=L8({pos:n,x1:e,y1:t,x2:r,y2:i,c:o}),[l,u]=L8({pos:a,x1:r,y1:i,x2:e,y2:t,c:o}),[d,f,p,m]=F8({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:s,sourceControlY:c,targetControlX:l,targetControlY:u});return[`M${e},${t} C${s},${c} ${l},${u} ${r},${i}`,d,f,p,m]}function z8({sourceX:e,sourceY:t,targetX:n,targetY:r}){let i=Math.abs(n-e)/2,a=n<e?n+i:n-i,o=Math.abs(r-t)/2;return[a,r<t?r+o:r-o,i,o]}function nQe({sourceNode:e,targetNode:t,selected:n=!1,zIndex:r=0,elevateOnSelect:i=!1,zIndexMode:a=`basic`}){return a===`manual`?r:(i&&n?r+1e3:r)+Math.max(e.parentId||i&&e.selected?e.internals.z:0,t.parentId||i&&t.selected?t.internals.z:0)}function rQe({sourceNode:e,targetNode:t,width:n,height:r,transform:i}){let a=c8(f8(e),f8(t));return a.x===a.x2&&(a.x2+=1),a.y===a.y2&&(a.y2+=1),m8({x:-i[0]/i[2],y:-i[1]/i[2],width:n/i[2],height:r/i[2]},u8(a))>0}var iQe=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||``}-${n}${r||``}`,aQe=(e,t)=>t.some(t=>t.source===e.source&&t.target===e.target&&(t.sourceHandle===e.sourceHandle||!t.sourceHandle&&!e.sourceHandle)&&(t.targetHandle===e.targetHandle||!t.targetHandle&&!e.targetHandle)),oQe=(e,t,n={})=>{if(!e.source||!e.target)return R6.error006(),t;let r=n.getEdgeId||iQe,i;return i=Z6(e)?{...e}:{...e,id:r(e)},aQe(i,t)?t:(i.sourceHandle===null&&delete i.sourceHandle,i.targetHandle===null&&delete i.targetHandle,t.concat(i))};function B8({sourceX:e,sourceY:t,targetX:n,targetY:r}){let[i,a,o,s]=z8({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,a,o,s]}var V8={[J6.Left]:{x:-1,y:0},[J6.Right]:{x:1,y:0},[J6.Top]:{x:0,y:-1},[J6.Bottom]:{x:0,y:1}},sQe=({source:e,sourcePosition:t=J6.Bottom,target:n})=>t===J6.Left||t===J6.Right?e.x<n.x?{x:1,y:0}:{x:-1,y:0}:e.y<n.y?{x:0,y:1}:{x:0,y:-1},H8=(e,t)=>Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2);function cQe({source:e,sourcePosition:t=J6.Bottom,target:n,targetPosition:r=J6.Top,center:i,offset:a,stepPosition:o}){let s=V8[t],c=V8[r],l={x:e.x+s.x*a,y:e.y+s.y*a},u={x:n.x+c.x*a,y:n.y+c.y*a},d=sQe({source:l,sourcePosition:t,target:u}),f=d.x===0?`y`:`x`,p=d[f],m=[],h,g,_={x:0,y:0},v={x:0,y:0},[,,y,b]=z8({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[f]*c[f]===-1){f===`x`?(h=i.x??l.x+(u.x-l.x)*o,g=i.y??(l.y+u.y)/2):(h=i.x??(l.x+u.x)/2,g=i.y??l.y+(u.y-l.y)*o);let e=[{x:h,y:l.y},{x:h,y:u.y}],t=[{x:l.x,y:g},{x:u.x,y:g}];m=s[f]===p?f===`x`?e:t:f===`x`?t:e}else{let i=[{x:l.x,y:u.y}],o=[{x:u.x,y:l.y}];if(m=f===`x`?s.x===p?o:i:s.y===p?i:o,t===r){let t=Math.abs(e[f]-n[f]);if(t<=a){let r=Math.min(a-1,a-t);s[f]===p?_[f]=(l[f]>e[f]?-1:1)*r:v[f]=(u[f]>n[f]?-1:1)*r}}if(t!==r){let e=f===`x`?`y`:`x`,t=s[f]===c[e],n=l[e]>u[e],r=l[e]<u[e];(s[f]===1&&(!t&&n||t&&r)||s[f]!==1&&(!t&&r||t&&n))&&(m=f===`x`?i:o)}let d={x:l.x+_.x,y:l.y+_.y},y={x:u.x+v.x,y:u.y+v.y};Math.max(Math.abs(d.x-m[0].x),Math.abs(y.x-m[0].x))>=Math.max(Math.abs(d.y-m[0].y),Math.abs(y.y-m[0].y))?(h=(d.x+y.x)/2,g=m[0].y):(h=m[0].x,g=(d.y+y.y)/2)}let x={x:l.x+_.x,y:l.y+_.y},S={x:u.x+v.x,y:u.y+v.y};return[[e,...x.x!==m[0].x||x.y!==m[0].y?[x]:[],...m,...S.x!==m[m.length-1].x||S.y!==m[m.length-1].y?[S]:[],n],h,g,y,b]}function lQe(e,t,n,r){let i=Math.min(H8(e,t)/2,H8(t,n)/2,r),{x:a,y:o}=t;if(e.x===a&&a===n.x||e.y===o&&o===n.y)return`L${a} ${o}`;if(e.y===o){let t=e.x<n.x?-1:1,r=e.y<n.y?1:-1;return`L ${a+i*t},${o}Q ${a},${o} ${a},${o+i*r}`}let s=e.x<n.x?1:-1;return`L ${a},${o+i*(e.y<n.y?-1:1)}Q ${a},${o} ${a+i*s},${o}`}function U8({sourceX:e,sourceY:t,sourcePosition:n=J6.Bottom,targetX:r,targetY:i,targetPosition:a=J6.Top,borderRadius:o=5,centerX:s,centerY:c,offset:l=20,stepPosition:u=.5}){let[d,f,p,m,h]=cQe({source:{x:e,y:t},sourcePosition:n,target:{x:r,y:i},targetPosition:a,center:{x:s,y:c},offset:l,stepPosition:u}),g=`M${d[0].x} ${d[0].y}`;for(let e=1;e<d.length-1;e++)g+=lQe(d[e-1],d[e],d[e+1],o);return g+=`L${d[d.length-1].x} ${d[d.length-1].y}`,[g,f,p,m,h]}function W8(e){return e&&!!(e.internals.handleBounds||e.handles?.length)&&!!(e.measured.width||e.width||e.initialWidth)}function uQe(e){let{sourceNode:t,targetNode:n}=e;if(!W8(t)||!W8(n))return null;let r=t.internals.handleBounds||G8(t.handles),i=n.internals.handleBounds||G8(n.handles),a=q8(r?.source??[],e.sourceHandle),o=q8(e.connectionMode===H6.Strict?i?.target??[]:(i?.target??[]).concat(i?.source??[]),e.targetHandle);if(!a||!o)return e.onError?.(`008`,R6.error008(a?`target`:`source`,{id:e.id,sourceHandle:e.sourceHandle,targetHandle:e.targetHandle})),null;let s=a?.position||J6.Bottom,c=o?.position||J6.Top,l=K8(t,a,s),u=K8(n,o,c);return{sourceX:l.x,sourceY:l.y,targetX:u.x,targetY:u.y,sourcePosition:s,targetPosition:c}}function G8(e){if(!e)return null;let t=[],n=[];for(let r of e)r.width=r.width??1,r.height=r.height??1,r.type===`source`?t.push(r):r.type===`target`&&n.push(r);return{source:t,target:n}}function K8(e,t,n=J6.Left,r=!1){let i=(t?.x??0)+e.internals.positionAbsolute.x,a=(t?.y??0)+e.internals.positionAbsolute.y,{width:o,height:s}=t??w8(e);if(r)return{x:i+o/2,y:a+s/2};switch(t?.position??n){case J6.Top:return{x:i+o/2,y:a};case J6.Right:return{x:i+o,y:a+s/2};case J6.Bottom:return{x:i+o/2,y:a+s};case J6.Left:return{x:i,y:a+s/2}}}function q8(e,t){return e&&(t?e.find(e=>e.id===t):e[0])||null}function J8(e,t){return e?typeof e==`string`?e:`${t?`${t}__`:``}${Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(`&`)}`:``}function dQe(e,{id:t,defaultColor:n,defaultMarkerStart:r,defaultMarkerEnd:i}){let a=new Set;return e.reduce((e,o)=>([o.markerStart||r,o.markerEnd||i].forEach(r=>{if(r&&typeof r==`object`){let i=J8(r,t);a.has(i)||(e.push({id:i,color:r.color||n,...r}),a.add(i))}}),e),[]).sort((e,t)=>e.id.localeCompare(t.id))}var Y8=1e3,fQe=10,X8={nodeOrigin:[0,0],nodeExtent:z6,elevateNodesOnSelect:!0,zIndexMode:`basic`,defaults:{}},pQe={...X8,checkEquality:!0};function Z8(e,t){let n={...e};for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return n}function mQe(e,t,n){let r=Z8(X8,n);for(let n of e.values())if(n.parentId)e5(n,e,t,r);else{let e=i8($6(n,r.nodeOrigin),C8(n.extent)?n.extent:r.nodeExtent,w8(n));n.internals.positionAbsolute=e}}function hQe(e,t){if(!e.handles)return e.measured?t?.internals.handleBounds:void 0;let n=[],r=[];for(let t of e.handles){let i={id:t.id,width:t.width??1,height:t.height??1,nodeId:e.id,x:t.x,y:t.y,position:t.position,type:t.type};t.type===`source`?n.push(i):t.type===`target`&&r.push(i)}return{source:n,target:r}}function Q8(e){return e===`manual`}function $8(e,t,n,r={}){let i=Z8(pQe,r),a={i:0},o=new Map(t),s=i?.elevateNodesOnSelect&&!Q8(i.zIndexMode)?Y8:0,c=e.length>0,l=!1;t.clear(),n.clear();for(let u of e){let e=o.get(u.id);if(i.checkEquality&&u===e?.internals.userNode)t.set(u.id,e);else{let n=i8($6(u,i.nodeOrigin),C8(u.extent)?u.extent:i.nodeExtent,w8(u));e={...i.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:n,handleBounds:hQe(u,e),z:t5(u,s,i.zIndexMode),userNode:u}},t.set(u.id,e)}(e.measured===void 0||e.measured.width===void 0||e.measured.height===void 0)&&!e.hidden&&(c=!1),u.parentId&&e5(e,t,n,r,a),l||=u.selected??!1}return{nodesInitialized:c,hasSelectedNodes:l}}function gQe(e,t){if(!e.parentId)return;let n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function e5(e,t,n,r,i){let{elevateNodesOnSelect:a,nodeOrigin:o,nodeExtent:s,zIndexMode:c}=Z8(X8,r),l=e.parentId,u=t.get(l);if(!u){console.warn(`Parent node ${l} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}gQe(e,n),i&&!u.parentId&&u.internals.rootParentIndex===void 0&&c===`auto`&&(u.internals.rootParentIndex=++i.i,u.internals.z=u.internals.z+i.i*fQe),i&&u.internals.rootParentIndex!==void 0&&(i.i=u.internals.rootParentIndex);let{x:d,y:f,z:p}=_Qe(e,u,o,s,a&&!Q8(c)?Y8:0,c),{positionAbsolute:m}=e.internals,h=d!==m.x||f!==m.y;(h||p!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:h?{x:d,y:f}:m,z:p}})}function t5(e,t,n){let r=g8(e.zIndex)?e.zIndex:0;return Q8(n)?r:r+(e.selected?t:0)}function _Qe(e,t,n,r,i,a){let{x:o,y:s}=t.internals.positionAbsolute,c=w8(e),l=$6(e,n),u=C8(e.extent)?i8(l,e.extent,c):l,d=i8({x:o+u.x,y:s+u.y},r,c);e.extent===`parent`&&(d=a8(d,c,t));let f=t5(e,i,a),p=t.internals.z??0;return{x:d.x,y:d.y,z:p>=f?p+1:f}}function n5(e,t,n,r=[0,0]){let i=[],a=new Map;for(let n of e){let e=t.get(n.parentId);if(!e)continue;let r=p8(a.get(n.parentId)?.expandedRect??d8(e),n.rect);a.set(n.parentId,{expandedRect:r,parent:e})}return a.size>0&&a.forEach(({expandedRect:t,parent:a},o)=>{let s=a.internals.positionAbsolute,c=w8(a),l=a.origin??r,u=t.x<s.x?Math.round(Math.abs(s.x-t.x)):0,d=t.y<s.y?Math.round(Math.abs(s.y-t.y)):0,f=Math.max(c.width,Math.round(t.width)),p=Math.max(c.height,Math.round(t.height)),m=(f-c.width)*l[0],h=(p-c.height)*l[1];(u>0||d>0||m||h)&&(i.push({id:o,type:`position`,position:{x:a.position.x-u+m,y:a.position.y-d+h}}),n.get(o)?.forEach(t=>{e.some(e=>e.id===t.id)||i.push({id:t.id,type:`position`,position:{x:t.position.x+u,y:t.position.y+d}})})),(c.width<t.width||c.height<t.height||u||d)&&i.push({id:o,type:`dimensions`,setAttributes:!0,dimensions:{width:f+(u?l[0]*u-m:0),height:p+(d?l[1]*d-h:0)}})}),i}function vQe(e,t,n,r,i,a,o){let s=r?.querySelector(`.xyflow__viewport`),c=!1;if(!s)return{changes:[],updatedInternals:c};let l=[],u=window.getComputedStyle(s),{m22:d}=new window.DOMMatrixReadOnly(u.transform),f=[];for(let r of e.values()){let e=t.get(r.id);if(!e)continue;if(e.hidden){t.set(e.id,{...e,internals:{...e.internals,handleBounds:void 0}}),c=!0;continue}let s=k8(r.nodeElement),u=e.measured.width!==s.width||e.measured.height!==s.height;if(s.width&&s.height&&(u||!e.internals.handleBounds||r.force)){let p=r.nodeElement.getBoundingClientRect(),m=C8(e.extent)?e.extent:a,{positionAbsolute:h}=e.internals;e.parentId&&e.extent===`parent`?h=a8(h,s,t.get(e.parentId)):m&&(h=i8(h,m,s));let g={...e,measured:s,internals:{...e.internals,positionAbsolute:h,handleBounds:{source:P8(`source`,r.nodeElement,p,d,e.id),target:P8(`target`,r.nodeElement,p,d,e.id)}}};t.set(e.id,g),e.parentId&&e5(g,t,n,{nodeOrigin:i,zIndexMode:o}),c=!0,u&&(l.push({id:e.id,type:`dimensions`,dimensions:s}),e.expandParent&&e.parentId&&f.push({id:e.id,parentId:e.parentId,rect:d8(g,i)}))}}if(f.length>0){let e=n5(f,t,n,i);l.push(...e)}return{changes:l,updatedInternals:c}}async function yQe({delta:e,panZoom:t,transform:n,translateExtent:r,width:i,height:a}){if(!t||!e.x&&!e.y)return Promise.resolve(!1);let o=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[i,a]],r),s=!!o&&(o.x!==n[0]||o.y!==n[1]||o.k!==n[2]);return Promise.resolve(s)}function r5(e,t,n,r,i,a){let o=i,s=r.get(o)||new Map;r.set(o,s.set(n,t)),o=`${i}-${e}`;let c=r.get(o)||new Map;if(r.set(o,c.set(n,t)),a){o=`${i}-${e}-${a}`;let s=r.get(o)||new Map;r.set(o,s.set(n,t))}}function i5(e,t,n){e.clear(),t.clear();for(let r of n){let{source:n,target:i,sourceHandle:a=null,targetHandle:o=null}=r,s={edgeId:r.id,source:n,target:i,sourceHandle:a,targetHandle:o},c=`${n}-${a}--${i}-${o}`;r5(`source`,s,`${i}-${o}--${n}-${a}`,e,n,a),r5(`target`,s,c,e,i,o),t.set(r.id,r)}}function a5(e,t){if(!e.parentId)return!1;let n=t.get(e.parentId);return n?n.selected?!0:a5(n,t):!1}function o5(e,t,n){let r=e;do{if(r?.matches?.(t))return!0;if(r===n)return!1;r=r?.parentElement}while(r);return!1}function bQe(e,t,n,r){let i=new Map;for(let[a,o]of e)if((o.selected||o.id===r)&&(!o.parentId||!a5(o,e))&&(o.draggable||t&&o.draggable===void 0)){let t=e.get(a);t&&i.set(a,{id:a,position:t.position||{x:0,y:0},distance:{x:n.x-t.internals.positionAbsolute.x,y:n.y-t.internals.positionAbsolute.y},extent:t.extent,parentId:t.parentId,origin:t.origin,expandParent:t.expandParent,internals:{positionAbsolute:t.internals.positionAbsolute||{x:0,y:0}},measured:{width:t.measured.width??0,height:t.measured.height??0}})}return i}function s5({nodeId:e,dragItems:t,nodeLookup:n,dragging:r=!0}){let i=[];for(let[e,a]of t){let t=n.get(e)?.internals.userNode;t&&i.push({...t,position:a.position,dragging:r})}if(!e)return[i[0],i];let a=n.get(e)?.internals.userNode;return[a?{...a,position:t.get(e)?.position||a.position,dragging:r}:i[0],i]}function xQe({dragItems:e,snapGrid:t,x:n,y:r}){let i=e.values().next().value;if(!i)return null;let a={x:n-i.distance.x,y:r-i.distance.y},o=_8(a,t);return{x:o.x-a.x,y:o.y-a.y}}function SQe({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:r,onDragStop:i}){let a={x:null,y:null},o=0,s=new Map,c=!1,l={x:0,y:0},u=null,d=!1,f=null,p=!1,m=!1,h=null;function g({noDragClassName:g,handleSelector:_,domNode:v,isSelectable:y,nodeId:b,nodeClickDistance:x=0}){f=i3(v);function S({x:e,y:n}){let{nodeLookup:i,nodeExtent:o,snapGrid:c,snapToGrid:l,nodeOrigin:u,onNodeDrag:d,onSelectionDrag:f,onError:p,updateNodePositions:g}=t();a={x:e,y:n};let _=!1,v=s.size>1,y=v&&o?l8(e8(s)):null,x=v&&l?xQe({dragItems:s,snapGrid:c,x:e,y:n}):null;for(let[t,r]of s){if(!i.has(t))continue;let a={x:e-r.distance.x,y:n-r.distance.y};l&&(a=x?{x:Math.round(a.x+x.x),y:Math.round(a.y+x.y)}:_8(a,c));let s=null;if(v&&o&&!r.extent&&y){let{positionAbsolute:e}=r.internals,t=e.x-y.x+o[0][0],n=e.x+r.measured.width-y.x2+o[1][0],i=e.y-y.y+o[0][1],a=e.y+r.measured.height-y.y2+o[1][1];s=[[t,i],[n,a]]}let{position:d,positionAbsolute:f}=n8({nodeId:t,nextPosition:a,nodeLookup:i,nodeExtent:s||o,nodeOrigin:u,onError:p});_=_||r.position.x!==d.x||r.position.y!==d.y,r.position=d,r.internals.positionAbsolute=f}if(m||=_,_&&(g(s,!0),h&&(r||d||!b&&f))){let[e,t]=s5({nodeId:b,dragItems:s,nodeLookup:i});r?.(h,s,e,t),d?.(h,e,t),b||f?.(h,t)}}async function C(){if(!u)return;let{transform:e,panBy:n,autoPanSpeed:r,autoPanOnNodeDrag:i}=t();if(!i){c=!1,cancelAnimationFrame(o);return}let[s,d]=s8(l,u,r);(s!==0||d!==0)&&(a.x=(a.x??0)-s/e[2],a.y=(a.y??0)-d/e[2],await n({x:s,y:d})&&S(a)),o=requestAnimationFrame(C)}function w(r){let{nodeLookup:i,multiSelectionActive:o,nodesDraggable:c,transform:l,snapGrid:f,snapToGrid:p,selectNodesOnDrag:m,onNodeDragStart:h,onSelectionDragStart:g,unselectNodesAndEdges:_}=t();d=!0,(!m||!y)&&!o&&b&&(i.get(b)?.selected||_()),y&&m&&b&&e?.(b);let v=O8(r.sourceEvent,{transform:l,snapGrid:f,snapToGrid:p,containerBounds:u});if(a=v,s=bQe(i,c,v,b),s.size>0&&(n||h||!b&&g)){let[e,t]=s5({nodeId:b,dragItems:s,nodeLookup:i});n?.(r.sourceEvent,s,e,t),h?.(r.sourceEvent,e,t),b||g?.(r.sourceEvent,t)}}let T=p3().clickDistance(x).on(`start`,e=>{let{domNode:n,nodeDragThreshold:r,transform:i,snapGrid:o,snapToGrid:s}=t();u=n?.getBoundingClientRect()||null,p=!1,m=!1,h=e.sourceEvent,r===0&&w(e),a=O8(e.sourceEvent,{transform:i,snapGrid:o,snapToGrid:s,containerBounds:u}),l=N8(e.sourceEvent,u)}).on(`drag`,e=>{let{autoPanOnNodeDrag:n,transform:r,snapGrid:i,snapToGrid:o,nodeDragThreshold:f,nodeLookup:m}=t(),g=O8(e.sourceEvent,{transform:r,snapGrid:i,snapToGrid:o,containerBounds:u});if(h=e.sourceEvent,(e.sourceEvent.type===`touchmove`&&e.sourceEvent.touches.length>1||b&&!m.has(b))&&(p=!0),!p){if(!c&&n&&d&&(c=!0,C()),!d){let t=N8(e.sourceEvent,u),n=t.x-l.x,r=t.y-l.y;Math.sqrt(n*n+r*r)>f&&w(e)}(a.x!==g.xSnapped||a.y!==g.ySnapped)&&s&&d&&(l=N8(e.sourceEvent,u),S(g))}}).on(`end`,e=>{if(!(!d||p)&&(c=!1,d=!1,cancelAnimationFrame(o),s.size>0)){let{nodeLookup:n,updateNodePositions:r,onNodeDragStop:a,onSelectionDragStop:o}=t();if(m&&=(r(s,!1),!1),i||a||!b&&o){let[t,r]=s5({nodeId:b,dragItems:s,nodeLookup:n,dragging:!1});i?.(e.sourceEvent,s,t,r),a?.(e.sourceEvent,t,r),b||o?.(e.sourceEvent,r)}}}).filter(e=>{let t=e.target;return!e.button&&(!g||!o5(t,`.${g}`,v))&&(!_||o5(t,_,v))});f.call(T)}function _(){f?.on(`.drag`,null)}return{update:g,destroy:_}}function CQe(e,t,n){let r=[],i={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(let e of t.values())m8(i,d8(e))>0&&r.push(e);return r}var wQe=250;function TQe(e,t,n,r){let i=[],a=1/0,o=CQe(e,n,t+wQe);for(let n of o){let o=[...n.internals.handleBounds?.source??[],...n.internals.handleBounds?.target??[]];for(let s of o){if(r.nodeId===s.nodeId&&r.type===s.type&&r.id===s.id)continue;let{x:o,y:c}=K8(n,s,s.position,!0),l=Math.sqrt((o-e.x)**2+(c-e.y)**2);l>t||(l<a?(i=[{...s,x:o,y:c}],a=l):l===a&&i.push({...s,x:o,y:c}))}}if(!i.length)return null;if(i.length>1){let e=r.type===`source`?`target`:`source`;return i.find(t=>t.type===e)??i[0]}return i[0]}function c5(e,t,n,r,i,a=!1){let o=r.get(e);if(!o)return null;let s=i===`strict`?o.internals.handleBounds?.[t]:[...o.internals.handleBounds?.source??[],...o.internals.handleBounds?.target??[]],c=(n?s?.find(e=>e.id===n):s?.[0])??null;return c&&a?{...c,...K8(o,c,c.position,!0)}:c}function l5(e,t){return e||(t?.classList.contains(`target`)?`target`:t?.classList.contains(`source`)?`source`:null)}function EQe(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}var u5=()=>!0;function DQe(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:i,edgeUpdaterType:a,isTarget:o,domNode:s,nodeLookup:c,lib:l,autoPanOnConnect:u,flowId:d,panBy:f,cancelConnection:p,onConnectStart:m,onConnect:h,onConnectEnd:g,isValidConnection:_=u5,onReconnectEnd:v,updateConnection:y,getTransform:b,getFromHandle:x,autoPanSpeed:S,dragThreshold:C=1,handleDomNode:w}){let T=A8(e.target),E=0,D,{x:O,y:k}=N8(e),A=l5(a,w),j=s?.getBoundingClientRect(),M=!1;if(!j||!A)return;let N=c5(i,A,r,c,t);if(!N)return;let P=N8(e,j),F=!1,I=null,L=!1,R=null;function ee(){if(!u||!j)return;let[e,t]=s8(P,j,S);f({x:e,y:t}),E=requestAnimationFrame(ee)}let z={...N,nodeId:i,type:A,position:N.position},te=c.get(i),B={inProgress:!0,isValid:null,from:K8(te,z,J6.Left,!0),fromHandle:z,fromPosition:z.position,fromNode:te,to:P,toHandle:null,toPosition:Y6[z.position],toNode:null,pointer:P};function V(){M=!0,y(B),m?.(e,{nodeId:i,handleId:r,handleType:A})}C===0&&V();function ne(e){if(!M){let{x:t,y:n}=N8(e),r=t-O,i=n-k;if(!(r*r+i*i>C*C))return;V()}if(!x()||!z){re(e);return}let a=b();P=N8(e,j),D=TQe(v8(P,a,!1,[1,1]),n,c,z),F||=(ee(),!0);let s=d5(e,{handle:D,connectionMode:t,fromNodeId:i,fromHandleId:r,fromType:o?`target`:`source`,isValidConnection:_,doc:T,lib:l,flowId:d,nodeLookup:c});R=s.handleDomNode,I=s.connection,L=EQe(!!D,s.isValid);let u=c.get(i),f=u?K8(u,z,J6.Left,!0):B.from,p={...B,from:f,isValid:L,to:s.toHandle&&L?y8({x:s.toHandle.x,y:s.toHandle.y},a):P,toHandle:s.toHandle,toPosition:L&&s.toHandle?s.toHandle.position:Y6[z.position],toNode:s.toHandle?c.get(s.toHandle.nodeId):null,pointer:P};y(p),B=p}function re(e){if(!(`touches`in e&&e.touches.length>0)){if(M){(D||R)&&I&&L&&h?.(I);let{inProgress:t,...n}=B,r={...n,toPosition:B.toHandle?B.toPosition:null};g?.(e,r),a&&v?.(e,r)}p(),cancelAnimationFrame(E),F=!1,L=!1,I=null,R=null,T.removeEventListener(`mousemove`,ne),T.removeEventListener(`mouseup`,re),T.removeEventListener(`touchmove`,ne),T.removeEventListener(`touchend`,re)}}T.addEventListener(`mousemove`,ne),T.addEventListener(`mouseup`,re),T.addEventListener(`touchmove`,ne),T.addEventListener(`touchend`,re)}function d5(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:i,fromType:a,doc:o,lib:s,flowId:c,isValidConnection:l=u5,nodeLookup:u}){let d=a===`target`,f=t?o.querySelector(`.${s}-flow__handle[data-id="${c}-${t?.nodeId}-${t?.id}-${t?.type}"]`):null,{x:p,y:m}=N8(e),h=o.elementFromPoint(p,m),g=h?.classList.contains(`${s}-flow__handle`)?h:f,_={handleDomNode:g,isValid:!1,connection:null,toHandle:null};if(g){let e=l5(void 0,g),t=g.getAttribute(`data-nodeid`),a=g.getAttribute(`data-handleid`),o=g.classList.contains(`connectable`),s=g.classList.contains(`connectableend`);if(!t||!e)return _;let c={source:d?t:r,sourceHandle:d?a:i,target:d?r:t,targetHandle:d?i:a};_.connection=c,_.isValid=o&&s&&(n===H6.Strict?d&&e===`source`||!d&&e===`target`:t!==r||a!==i)&&l(c),_.toHandle=c5(t,e,a,u,n,!0)}return _}var f5={onPointerDown:DQe,isValid:d5};function OQe({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){let i=i3(e);function a({translateExtent:e,width:a,height:o,zoomStep:s=1,pannable:c=!0,zoomable:l=!0,inversePan:u=!1}){let d=e=>{if(e.sourceEvent.type!==`wheel`||!t)return;let r=n(),i=e.sourceEvent.ctrlKey&&S8()?10:1,a=-e.sourceEvent.deltaY*(e.sourceEvent.deltaMode===1?.05:e.sourceEvent.deltaMode?1:.002)*s,o=r[2]*2**(a*i);t.scaleTo(o)},f=[0,0],p=L6().on(`start`,e=>{(e.sourceEvent.type===`mousedown`||e.sourceEvent.type===`touchstart`)&&(f=[e.sourceEvent.clientX??e.sourceEvent.touches[0].clientX,e.sourceEvent.clientY??e.sourceEvent.touches[0].clientY])}).on(`zoom`,c?i=>{let s=n();if(i.sourceEvent.type!==`mousemove`&&i.sourceEvent.type!==`touchmove`||!t)return;let c=[i.sourceEvent.clientX??i.sourceEvent.touches[0].clientX,i.sourceEvent.clientY??i.sourceEvent.touches[0].clientY],l=[c[0]-f[0],c[1]-f[1]];f=c;let d=r()*Math.max(s[2],Math.log(s[2]))*(u?-1:1),p={x:s[0]-l[0]*d,y:s[1]-l[1]*d},m=[[0,0],[a,o]];t.setViewportConstrained({x:p.x,y:p.y,zoom:s[2]},m,e)}:null).on(`zoom.wheel`,l?d:null);i.call(p,{})}function o(){i.on(`zoom`,null)}return{update:a,destroy:o,pointer:a3}}var p5=e=>({x:e.x,y:e.y,zoom:e.k}),m5=({x:e,y:t,zoom:n})=>M6.translate(e,t).scale(n),h5=(e,t)=>e.target.closest(`.${t}`),g5=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),kQe=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,_5=(e,t=0,n=kQe,r=()=>{})=>{let i=typeof t==`number`&&t>0;return i||r(),i?e.transition().duration(t).ease(n).on(`end`,r):e},v5=e=>{let t=e.ctrlKey&&S8()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function AQe({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:i,panOnScrollSpeed:a,zoomOnPinch:o,onPanZoomStart:s,onPanZoom:c,onPanZoomEnd:l}){return u=>{if(h5(u,t))return u.ctrlKey&&u.preventDefault(),!1;u.preventDefault(),u.stopImmediatePropagation();let d=n.property(`__zoom`).k||1;if(u.ctrlKey&&o){let e=a3(u),t=d*2**v5(u);r.scaleTo(n,t,e,u);return}let f=u.deltaMode===1?20:1,p=i===U6.Vertical?0:u.deltaX*f,m=i===U6.Horizontal?0:u.deltaY*f;!S8()&&u.shiftKey&&i!==U6.Vertical&&(p=u.deltaY*f,m=0),r.translateBy(n,-(p/d)*a,-(m/d)*a,{internal:!0});let h=p5(n.property(`__zoom`));clearTimeout(e.panScrollTimeout),e.isPanScrolling?(c?.(u,h),e.panScrollTimeout=setTimeout(()=>{l?.(u,h),e.isPanScrolling=!1},150)):(e.isPanScrolling=!0,s?.(u,h))}}function jQe({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,i){let a=r.type===`wheel`,o=!t&&a&&!r.ctrlKey,s=h5(r,e);if(r.ctrlKey&&a&&s&&r.preventDefault(),o||s)return null;r.preventDefault(),n.call(this,r,i)}}function MQe({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{if(r.sourceEvent?.internal)return;let i=p5(r.transform);e.mouseButton=r.sourceEvent?.button||0,e.isZoomingOrPanning=!0,e.prevViewport=i,r.sourceEvent?.type===`mousedown`&&t(!0),n&&n?.(r.sourceEvent,i)}}function NQe({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:i}){return a=>{e.usedRightMouseButton=!!(n&&g5(t,e.mouseButton??0)),a.sourceEvent?.sync||r([a.transform.x,a.transform.y,a.transform.k]),i&&!a.sourceEvent?.internal&&i?.(a.sourceEvent,p5(a.transform))}}function PQe({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:i,onPaneContextMenu:a}){return o=>{if(!o.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,a&&g5(t,e.mouseButton??0)&&!e.usedRightMouseButton&&o.sourceEvent&&a(o.sourceEvent),e.usedRightMouseButton=!1,r(!1),i)){let t=p5(o.transform);e.prevViewport=t,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{i?.(o.sourceEvent,t)},n?150:0)}}}function FQe({zoomActivationKeyPressed:e,zoomOnScroll:t,zoomOnPinch:n,panOnDrag:r,panOnScroll:i,zoomOnDoubleClick:a,userSelectionActive:o,noWheelClassName:s,noPanClassName:c,lib:l,connectionInProgress:u}){return d=>{let f=e||t,p=n&&d.ctrlKey,m=d.type===`wheel`;if(d.button===1&&d.type===`mousedown`&&(h5(d,`${l}-flow__node`)||h5(d,`${l}-flow__edge`)))return!0;if(!r&&!f&&!i&&!a&&!n||o||u&&!m||h5(d,s)&&m||h5(d,c)&&(!m||i&&m&&!e)||!n&&d.ctrlKey&&m)return!1;if(!n&&d.type===`touchstart`&&d.touches?.length>1)return d.preventDefault(),!1;if(!f&&!i&&!p&&m||!r&&(d.type===`mousedown`||d.type===`touchstart`)||Array.isArray(r)&&!r.includes(d.button)&&d.type===`mousedown`)return!1;let h=Array.isArray(r)&&r.includes(d.button)||!d.button||d.button<=1;return(!d.ctrlKey||m)&&h}}function IQe({domNode:e,minZoom:t,maxZoom:n,translateExtent:r,viewport:i,onPanZoom:a,onPanZoomStart:o,onPanZoomEnd:s,onDraggingChange:c}){let l={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{x:0,y:0,zoom:0},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},u=e.getBoundingClientRect(),d=L6().scaleExtent([t,n]).translateExtent(r),f=i3(e).call(d);v({x:i.x,y:i.y,zoom:r8(i.zoom,t,n)},[[0,0],[u.width,u.height]],r);let p=f.on(`wheel.zoom`),m=f.on(`dblclick.zoom`);d.wheelDelta(v5);function h(e,t){return f?new Promise(n=>{d?.interpolate(t?.interpolate===`linear`?J3:t6).transform(_5(f,t?.duration,t?.ease,()=>n(!0)),e)}):Promise.resolve(!1)}function g({noWheelClassName:e,noPanClassName:t,onPaneContextMenu:n,userSelectionActive:r,panOnScroll:i,panOnDrag:u,panOnScrollMode:h,panOnScrollSpeed:g,preventScrolling:v,zoomOnPinch:y,zoomOnScroll:b,zoomOnDoubleClick:x,zoomActivationKeyPressed:S,lib:C,onTransformChange:w,connectionInProgress:T,paneClickDistance:E,selectionOnDrag:D}){r&&!l.isZoomingOrPanning&&_();let O=i&&!S&&!r;d.clickDistance(D?1/0:!g8(E)||E<0?0:E);let k=O?AQe({zoomPanValues:l,noWheelClassName:e,d3Selection:f,d3Zoom:d,panOnScrollMode:h,panOnScrollSpeed:g,zoomOnPinch:y,onPanZoomStart:o,onPanZoom:a,onPanZoomEnd:s}):jQe({noWheelClassName:e,preventScrolling:v,d3ZoomHandler:p});if(f.on(`wheel.zoom`,k,{passive:!1}),!r){let e=MQe({zoomPanValues:l,onDraggingChange:c,onPanZoomStart:o});d.on(`start`,e);let t=NQe({zoomPanValues:l,panOnDrag:u,onPaneContextMenu:!!n,onPanZoom:a,onTransformChange:w});d.on(`zoom`,t);let r=PQe({zoomPanValues:l,panOnDrag:u,panOnScroll:i,onPaneContextMenu:n,onPanZoomEnd:s,onDraggingChange:c});d.on(`end`,r)}let A=FQe({zoomActivationKeyPressed:S,panOnDrag:u,zoomOnScroll:b,panOnScroll:i,zoomOnDoubleClick:x,zoomOnPinch:y,userSelectionActive:r,noPanClassName:t,noWheelClassName:e,lib:C,connectionInProgress:T});d.filter(A),x?f.on(`dblclick.zoom`,m):f.on(`dblclick.zoom`,null)}function _(){d.on(`zoom`,null)}async function v(e,t,n){let r=m5(e),i=d?.constrain()(r,t,n);return i&&await h(i),new Promise(e=>e(i))}async function y(e,t){let n=m5(e);return await h(n,t),new Promise(e=>e(n))}function b(e){if(f){let t=m5(e),n=f.property(`__zoom`);(n.k!==e.zoom||n.x!==e.x||n.y!==e.y)&&d?.transform(f,t,null,{sync:!0})}}function x(){let e=f?N6(f.node()):{x:0,y:0,k:1};return{x:e.x,y:e.y,zoom:e.k}}function S(e,t){return f?new Promise(n=>{d?.interpolate(t?.interpolate===`linear`?J3:t6).scaleTo(_5(f,t?.duration,t?.ease,()=>n(!0)),e)}):Promise.resolve(!1)}function C(e,t){return f?new Promise(n=>{d?.interpolate(t?.interpolate===`linear`?J3:t6).scaleBy(_5(f,t?.duration,t?.ease,()=>n(!0)),e)}):Promise.resolve(!1)}function w(e){d?.scaleExtent(e)}function T(e){d?.translateExtent(e)}function E(e){let t=!g8(e)||e<0?0:e;d?.clickDistance(t)}return{update:g,destroy:_,setViewport:y,setViewportConstrained:v,getViewport:x,scaleTo:S,scaleBy:C,setScaleExtent:w,setTranslateExtent:T,syncViewport:b,setClickDistance:E}}var y5;(function(e){e.Line=`line`,e.Handle=`handle`})(y5||={});function LQe({width:e,prevWidth:t,height:n,prevHeight:r,affectsX:i,affectsY:a}){let o=e-t,s=n-r,c=[o>0?1:o<0?-1:0,s>0?1:s<0?-1:0];return o&&i&&(c[0]*=-1),s&&a&&(c[1]*=-1),c}function b5(e){return{isHorizontal:e.includes(`right`)||e.includes(`left`),isVertical:e.includes(`bottom`)||e.includes(`top`),affectsX:e.includes(`left`),affectsY:e.includes(`top`)}}function x5(e,t){return Math.max(0,t-e)}function S5(e,t){return Math.max(0,e-t)}function C5(e,t,n){return Math.max(0,t-e,e-n)}function w5(e,t){return e?!t:t}function RQe(e,t,n,r,i,a,o,s){let{affectsX:c,affectsY:l}=t,{isHorizontal:u,isVertical:d}=t,f=u&&d,{xSnapped:p,ySnapped:m}=n,{minWidth:h,maxWidth:g,minHeight:_,maxHeight:v}=r,{x:y,y:b,width:x,height:S,aspectRatio:C}=e,w=Math.floor(u?p-e.pointerX:0),T=Math.floor(d?m-e.pointerY:0),E=x+(c?-w:w),D=S+(l?-T:T),O=-a[0]*x,k=-a[1]*S,A=C5(E,h,g),j=C5(D,_,v);if(o){let e=0,t=0;c&&w<0?e=x5(y+w+O,o[0][0]):!c&&w>0&&(e=S5(y+E+O,o[1][0])),l&&T<0?t=x5(b+T+k,o[0][1]):!l&&T>0&&(t=S5(b+D+k,o[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(s){let e=0,t=0;c&&w>0?e=S5(y+w,s[0][0]):!c&&w<0&&(e=x5(y+E,s[1][0])),l&&T>0?t=S5(b+T,s[0][1]):!l&&T<0&&(t=x5(b+D,s[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(i){if(u){let e=C5(E/C,_,v)*C;if(A=Math.max(A,e),o){let e=0;e=!c&&!l||c&&!l&&f?S5(b+k+E/C,o[1][1])*C:x5(b+k+(c?w:-w)/C,o[0][1])*C,A=Math.max(A,e)}if(s){let e=0;e=!c&&!l||c&&!l&&f?x5(b+E/C,s[1][1])*C:S5(b+(c?w:-w)/C,s[0][1])*C,A=Math.max(A,e)}}if(d){let e=C5(D*C,h,g)/C;if(j=Math.max(j,e),o){let e=0;e=!c&&!l||l&&!c&&f?S5(y+D*C+O,o[1][0])/C:x5(y+(l?T:-T)*C+O,o[0][0])/C,j=Math.max(j,e)}if(s){let e=0;e=!c&&!l||l&&!c&&f?x5(y+D*C,s[1][0])/C:S5(y+(l?T:-T)*C,s[0][0])/C,j=Math.max(j,e)}}}T+=T<0?j:-j,w+=w<0?A:-A,i&&(f?E>D*C?T=(w5(c,l)?-w:w)/C:w=(w5(c,l)?-T:T)*C:u?(T=w/C,l=c):(w=T*C,c=l));let M=c?y+w:y,N=l?b+T:b;return{width:x+(c?-w:w),height:S+(l?-T:T),x:a[0]*w*(c?-1:1)+M,y:a[1]*T*(l?-1:1)+N}}var T5={width:0,height:0,x:0,y:0},zQe={...T5,pointerX:0,pointerY:0,aspectRatio:1};function BQe(e){return[[0,0],[e.measured.width,e.measured.height]]}function VQe(e,t,n){let r=t.position.x+e.position.x,i=t.position.y+e.position.y,a=e.measured.width??0,o=e.measured.height??0,s=n[0]*a,c=n[1]*o;return[[r-s,i-c],[r+a-s,i+o-c]]}function HQe({domNode:e,nodeId:t,getStoreItems:n,onChange:r,onEnd:i}){let a=i3(e),o={controlDirection:b5(`bottom-right`),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function s({controlPosition:e,boundaries:s,keepAspectRatio:c,resizeDirection:l,onResizeStart:u,onResize:d,onResizeEnd:f,shouldResize:p}){let m={...T5},h={...zQe};o={boundaries:s,resizeDirection:l,keepAspectRatio:c,controlDirection:b5(e)};let g,_=null,v=[],y,b,x,S=!1,C=p3().on(`start`,e=>{let{nodeLookup:r,transform:i,snapGrid:a,snapToGrid:o,nodeOrigin:s,paneDomNode:c}=n();if(g=r.get(t),!g)return;_=c?.getBoundingClientRect()??null;let{xSnapped:l,ySnapped:d}=O8(e.sourceEvent,{transform:i,snapGrid:a,snapToGrid:o,containerBounds:_});m={width:g.measured.width??0,height:g.measured.height??0,x:g.position.x??0,y:g.position.y??0},h={...m,pointerX:l,pointerY:d,aspectRatio:m.width/m.height},y=void 0,g.parentId&&(g.extent===`parent`||g.expandParent)&&(y=r.get(g.parentId),b=y&&g.extent===`parent`?BQe(y):void 0),v=[],x=void 0;for(let[e,n]of r)if(n.parentId===t&&(v.push({id:e,position:{...n.position},extent:n.extent}),n.extent===`parent`||n.expandParent)){let e=VQe(n,g,n.origin??s);x=x?[[Math.min(e[0][0],x[0][0]),Math.min(e[0][1],x[0][1])],[Math.max(e[1][0],x[1][0]),Math.max(e[1][1],x[1][1])]]:e}u?.(e,{...m})}).on(`drag`,e=>{let{transform:t,snapGrid:i,snapToGrid:a,nodeOrigin:s}=n(),c=O8(e.sourceEvent,{transform:t,snapGrid:i,snapToGrid:a,containerBounds:_}),l=[];if(!g)return;let{x:u,y:f,width:C,height:w}=m,T={},E=g.origin??s,{width:D,height:O,x:k,y:A}=RQe(h,o.controlDirection,c,o.boundaries,o.keepAspectRatio,E,b,x),j=D!==C,M=O!==w,N=k!==u&&j,P=A!==f&&M;if(!N&&!P&&!j&&!M)return;if((N||P||E[0]===1||E[1]===1)&&(T.x=N?k:m.x,T.y=P?A:m.y,m.x=T.x,m.y=T.y,v.length>0)){let e=k-u,t=A-f;for(let n of v)n.position={x:n.position.x-e+E[0]*(D-C),y:n.position.y-t+E[1]*(O-w)},l.push(n)}if((j||M)&&(T.width=j&&(!o.resizeDirection||o.resizeDirection===`horizontal`)?D:m.width,T.height=M&&(!o.resizeDirection||o.resizeDirection===`vertical`)?O:m.height,m.width=T.width,m.height=T.height),y&&g.expandParent){let e=E[0]*(T.width??0);T.x&&T.x<e&&(m.x=e,h.x-=T.x-e);let t=E[1]*(T.height??0);T.y&&T.y<t&&(m.y=t,h.y-=T.y-t)}let F=LQe({width:m.width,prevWidth:C,height:m.height,prevHeight:w,affectsX:o.controlDirection.affectsX,affectsY:o.controlDirection.affectsY}),I={...m,direction:F};p?.(e,I)!==!1&&(S=!0,d?.(e,I),r(T,l))}).on(`end`,e=>{S&&=(f?.(e,{...m}),i?.({...m}),!1)});a.call(C)}function c(){a.on(`.drag`,null)}return{update:s,destroy:c}}var E5=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e)),destroy:()=>{n.clear()}},o=t=e(r,i,a);return a},UQe=e=>e?E5(e):E5,{useDebugValue:WQe}=C.default,{useSyncExternalStoreWithSelector:GQe}=JC.default,KQe=e=>e;function D5(e,t=KQe,n){let r=GQe(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return WQe(r),r}var O5=(e,t)=>{let n=UQe(e),r=(e,r=t)=>D5(n,e,r);return Object.assign(r,n),r},qQe=(e,t)=>e?O5(e,t):O5;function k5(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||!Object.is(e[r],t[r]))return!1;return!0}var A5=(0,C.createContext)(null),JQe=A5.Provider,j5=R6.error001();function M5(e,t){let n=(0,C.useContext)(A5);if(n===null)throw Error(j5);return D5(n,e,t)}function N5(){let e=(0,C.useContext)(A5);if(e===null)throw Error(j5);return(0,C.useMemo)(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}var P5={display:`none`},YQe={position:`absolute`,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0px, 0px, 0px, 0px)`,clipPath:`inset(100%)`},F5=`react-flow__node-desc`,I5=`react-flow__edge-desc`,XQe=`react-flow__aria-live`,ZQe=e=>e.ariaLiveMessage,QQe=e=>e.ariaLabelConfig;function $Qe({rfId:e}){let t=M5(ZQe);return(0,W.jsx)(`div`,{id:`${XQe}-${e}`,"aria-live":`assertive`,"aria-atomic":`true`,style:YQe,children:t})}function e$e({rfId:e,disableKeyboardA11y:t}){let n=M5(QQe);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{id:`${F5}-${e}`,style:P5,children:t?n[`node.a11yDescription.default`]:n[`node.a11yDescription.keyboardDisabled`]}),(0,W.jsx)(`div`,{id:`${I5}-${e}`,style:P5,children:n[`edge.a11yDescription.default`]}),!t&&(0,W.jsx)($Qe,{rfId:e})]})}var L5=(0,C.forwardRef)(({position:e=`top-left`,children:t,className:n,style:r,...i},a)=>(0,W.jsx)(`div`,{className:P4([`react-flow__panel`,n,...`${e}`.split(`-`)]),style:r,ref:a,...i,children:t}));L5.displayName=`Panel`;function t$e({proOptions:e,position:t=`bottom-right`}){return e?.hideAttribution?null:(0,W.jsx)(L5,{position:t,className:`react-flow__attribution`,"data-message":`Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev`,children:(0,W.jsx)(`a`,{href:`https://reactflow.dev`,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`React Flow attribution`,children:`React Flow`})})}var n$e=e=>{let t=[],n=[];for(let[,n]of e.nodeLookup)n.selected&&t.push(n.internals.userNode);for(let[,t]of e.edgeLookup)t.selected&&n.push(t);return{selectedNodes:t,selectedEdges:n}},R5=e=>e.id;function r$e(e,t){return k5(e.selectedNodes.map(R5),t.selectedNodes.map(R5))&&k5(e.selectedEdges.map(R5),t.selectedEdges.map(R5))}function i$e({onSelectionChange:e}){let t=N5(),{selectedNodes:n,selectedEdges:r}=M5(n$e,r$e);return(0,C.useEffect)(()=>{let i={nodes:n,edges:r};e?.(i),t.getState().onSelectionChangeHandlers.forEach(e=>e(i))},[n,r,e]),null}var a$e=e=>!!e.onSelectionChangeHandlers;function o$e({onSelectionChange:e}){let t=M5(a$e);return e||t?(0,W.jsx)(i$e,{onSelectionChange:e}):null}var z5=typeof window<`u`?C.useLayoutEffect:C.useEffect,B5=[0,0],s$e={x:0,y:0,zoom:1},V5=[...`nodes.edges.defaultNodes.defaultEdges.onConnect.onConnectStart.onConnectEnd.onClickConnectStart.onClickConnectEnd.nodesDraggable.autoPanOnNodeFocus.nodesConnectable.nodesFocusable.edgesFocusable.edgesReconnectable.elevateNodesOnSelect.elevateEdgesOnSelect.minZoom.maxZoom.nodeExtent.onNodesChange.onEdgesChange.elementsSelectable.connectionMode.snapGrid.snapToGrid.translateExtent.connectOnClick.defaultEdgeOptions.fitView.fitViewOptions.onNodesDelete.onEdgesDelete.onDelete.onNodeDrag.onNodeDragStart.onNodeDragStop.onSelectionDrag.onSelectionDragStart.onSelectionDragStop.onMoveStart.onMove.onMoveEnd.noPanClassName.nodeOrigin.autoPanOnConnect.autoPanOnNodeDrag.onError.connectionRadius.isValidConnection.selectNodesOnDrag.nodeDragThreshold.connectionDragThreshold.onBeforeDelete.debug.autoPanSpeed.ariaLabelConfig.zIndexMode`.split(`.`),`rfId`],c$e=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),H5={translateExtent:z6,nodeOrigin:B5,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:`nopan`,rfId:`1`};function l$e(e){let{setNodes:t,setEdges:n,setMinZoom:r,setMaxZoom:i,setTranslateExtent:a,setNodeExtent:o,reset:s,setDefaultNodesAndEdges:c}=M5(c$e,k5),l=N5();z5(()=>(c(e.defaultNodes,e.defaultEdges),()=>{u.current=H5,s()}),[]);let u=(0,C.useRef)(H5);return z5(()=>{for(let s of V5){let c=e[s];c!==u.current[s]&&e[s]!==void 0&&(s===`nodes`?t(c):s===`edges`?n(c):s===`minZoom`?r(c):s===`maxZoom`?i(c):s===`translateExtent`?a(c):s===`nodeExtent`?o(c):s===`ariaLabelConfig`?l.setState({ariaLabelConfig:eQe(c)}):s===`fitView`?l.setState({fitViewQueued:c}):s===`fitViewOptions`?l.setState({fitViewOptions:c}):l.setState({[s]:c}))}u.current=e},V5.map(t=>e[t])),null}function U5(){return typeof window>`u`||!window.matchMedia?null:window.matchMedia(`(prefers-color-scheme: dark)`)}function u$e(e){let[t,n]=(0,C.useState)(e===`system`?null:e);return(0,C.useEffect)(()=>{if(e!==`system`){n(e);return}let t=U5(),r=()=>n(t?.matches?`dark`:`light`);return r(),t?.addEventListener(`change`,r),()=>{t?.removeEventListener(`change`,r)}},[e]),t===null?U5()?.matches?`dark`:`light`:t}var W5=typeof document<`u`?document:null;function G5(e=null,t={target:W5,actInsideInputWithModifier:!0}){let[n,r]=(0,C.useState)(!1),i=(0,C.useRef)(!1),a=(0,C.useRef)(new Set([])),[o,s]=(0,C.useMemo)(()=>{if(e!==null){let t=(Array.isArray(e)?e:[e]).filter(e=>typeof e==`string`).map(e=>e.replace(`+`,`
460
460
  `).replace(`
461
461
 
462
462
  `,`
@@ -466,4 +466,4 @@ $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,`$1$2`).replace(/\
466
466
  To pick up a draggable item, press the space bar.
467
467
  While dragging, use the arrow keys to move the item.
468
468
  Press space again to drop the item in its new position, or press escape to cancel.
469
- `},g2e={onDragStart(e){let{active:t}=e;return`Picked up draggable item `+t.id+`.`},onDragOver(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was moved over droppable area `+n.id+`.`:`Draggable item `+t.id+` is no longer over a droppable area.`},onDragEnd(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was dropped over droppable area `+n.id:`Draggable item `+t.id+` was dropped.`},onDragCancel(e){let{active:t}=e;return`Dragging was cancelled. Draggable item `+t.id+` was dropped.`}};function _2e(e){let{announcements:t=g2e,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=h2e}=e,{announce:a,announcement:o}=d2e(),s=p9(`DndLiveRegion`),[c,l]=(0,C.useState)(!1);if((0,C.useEffect)(()=>{l(!0)},[]),p2e((0,C.useMemo)(()=>({onDragStart(e){let{active:n}=e;a(t.onDragStart({active:n}))},onDragMove(e){let{active:n,over:r}=e;t.onDragMove&&a(t.onDragMove({active:n,over:r}))},onDragOver(e){let{active:n,over:r}=e;a(t.onDragOver({active:n,over:r}))},onDragEnd(e){let{active:n,over:r}=e;a(t.onDragEnd({active:n,over:r}))},onDragCancel(e){let{active:n,over:r}=e;a(t.onDragCancel({active:n,over:r}))}}),[a,t])),!c)return null;let u=C.createElement(C.Fragment,null,C.createElement(l2e,{id:r,value:i.draggable}),C.createElement(u2e,{id:s,announcement:o}));return n?(0,ba.createPortal)(u,n):u}var y9;(function(e){e.DragStart=`dragStart`,e.DragMove=`dragMove`,e.DragEnd=`dragEnd`,e.DragCancel=`dragCancel`,e.DragOver=`dragOver`,e.RegisterDroppable=`registerDroppable`,e.SetDroppableDisabled=`setDroppableDisabled`,e.UnregisterDroppable=`unregisterDroppable`})(y9||={});function b9(){}function v2e(e,t){return(0,C.useMemo)(()=>({sensor:e,options:t??{}}),[e,t])}function y2e(){var e=[...arguments];return(0,C.useMemo)(()=>[...e].filter(e=>e!=null),[...e])}var x9=Object.freeze({x:0,y:0});function b2e(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function x2e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function S2e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function C2e(e){let{left:t,top:n,height:r,width:i}=e;return[{x:t,y:n},{x:t+i,y:n},{x:t,y:n+r},{x:t+i,y:n+r}]}function w2e(e,t){if(!e||e.length===0)return null;let[n]=e;return t?n[t]:n}function T2e(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}var E2e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=T2e(t,t.left,t.top),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=b2e(T2e(r),i);a.push({id:t,data:{droppableContainer:e,value:n}})}}return a.sort(x2e)},D2e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=C2e(t),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=C2e(r),o=i.reduce((e,t,r)=>e+b2e(n[r],t),0),s=Number((o/4).toFixed(4));a.push({id:t,data:{droppableContainer:e,value:s}})}}return a.sort(x2e)};function O2e(e,t){let n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height),o=i-r,s=a-n;if(r<i&&n<a){let n=t.width*t.height,r=e.width*e.height,i=o*s,a=i/(n+r-i);return Number(a.toFixed(4))}return 0}var k2e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=[];for(let e of r){let{id:r}=e,a=n.get(r);if(a){let n=O2e(a,t);n>0&&i.push({id:r,data:{droppableContainer:e,value:n}})}}return i.sort(S2e)};function A2e(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function j2e(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:x9}function M2e(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>({...t,top:t.top+e*n.y,bottom:t.bottom+e*n.y,left:t.left+e*n.x,right:t.right+e*n.x}),{...t})}}var N2e=M2e(1);function P2e(e){if(e.startsWith(`matrix3d(`)){let t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith(`matrix(`)){let t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function F2e(e,t,n){let r=P2e(t);if(!r)return e;let{scaleX:i,scaleY:a,x:o,y:s}=r,c=e.left-o-(1-i)*parseFloat(n),l=e.top-s-(1-a)*parseFloat(n.slice(n.indexOf(` `)+1)),u=i?e.width/i:e.width,d=a?e.height/a:e.height;return{width:u,height:d,top:l,right:c+u,bottom:l+d,left:c}}var I2e={ignoreTransform:!1};function S9(e,t){t===void 0&&(t=I2e);let n=e.getBoundingClientRect();if(t.ignoreTransform){let{transform:t,transformOrigin:r}=n9(e).getComputedStyle(e);t&&(n=F2e(n,t,r))}let{top:r,left:i,width:a,height:o,bottom:s,right:c}=n;return{top:r,left:i,width:a,height:o,bottom:s,right:c}}function L2e(e){return S9(e,{ignoreTransform:!0})}function R2e(e){let t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function z2e(e,t){return t===void 0&&(t=n9(e).getComputedStyle(e)),t.position===`fixed`}function B2e(e,t){t===void 0&&(t=n9(e).getComputedStyle(e));let n=/(auto|scroll|overlay)/;return[`overflow`,`overflowX`,`overflowY`].some(e=>{let r=t[e];return typeof r==`string`?n.test(r):!1})}function C9(e,t){let n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(r9(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!i9(i)||t2e(i)||n.includes(i))return n;let a=n9(e).getComputedStyle(i);return i!==e&&B2e(i,a)&&n.push(i),z2e(i,a)?n:r(i.parentNode)}return e?r(e):n}function V2e(e){let[t]=C9(e,1);return t??null}function w9(e){return!$7||!e?null:e9(e)?e:t9(e)?r9(e)||e===a9(e).scrollingElement?window:i9(e)?e:null:null}function H2e(e){return e9(e)?e.scrollX:e.scrollLeft}function U2e(e){return e9(e)?e.scrollY:e.scrollTop}function T9(e){return{x:H2e(e),y:U2e(e)}}var E9;(function(e){e[e.Forward=1]=`Forward`,e[e.Backward=-1]=`Backward`})(E9||={});function W2e(e){return!$7||!e?!1:e===document.scrollingElement}function G2e(e){let t={x:0,y:0},n=W2e(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height};return{isTop:e.scrollTop<=t.y,isLeft:e.scrollLeft<=t.x,isBottom:e.scrollTop>=r.y,isRight:e.scrollLeft>=r.x,maxScroll:r,minScroll:t}}var K2e={x:.2,y:.2};function q2e(e,t,n,r,i){let{top:a,left:o,right:s,bottom:c}=n;r===void 0&&(r=10),i===void 0&&(i=K2e);let{isTop:l,isBottom:u,isLeft:d,isRight:f}=G2e(e),p={x:0,y:0},m={x:0,y:0},h={height:t.height*i.y,width:t.width*i.x};return!l&&a<=t.top+h.height?(p.y=E9.Backward,m.y=r*Math.abs((t.top+h.height-a)/h.height)):!u&&c>=t.bottom-h.height&&(p.y=E9.Forward,m.y=r*Math.abs((t.bottom-h.height-c)/h.height)),!f&&s>=t.right-h.width?(p.x=E9.Forward,m.x=r*Math.abs((t.right-h.width-s)/h.width)):!d&&o<=t.left+h.width&&(p.x=E9.Backward,m.x=r*Math.abs((t.left+h.width-o)/h.width)),{direction:p,speed:m}}function J2e(e){if(e===document.scrollingElement){let{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}let{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function Y2e(e){return e.reduce((e,t)=>m9(e,T9(t)),x9)}function X2e(e){return e.reduce((e,t)=>e+H2e(t),0)}function Z2e(e){return e.reduce((e,t)=>e+U2e(t),0)}function Q2e(e,t){if(t===void 0&&(t=S9),!e)return;let{top:n,left:r,bottom:i,right:a}=t(e);V2e(e)&&(i<=0||a<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:`center`,inline:`center`})}var $2e=[[`x`,[`left`,`right`],X2e],[`y`,[`top`,`bottom`],Z2e]],D9=class{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;let n=C9(t),r=Y2e(n);this.rect={...e},this.width=e.width,this.height=e.height;for(let[e,t,i]of $2e)for(let a of t)Object.defineProperty(this,a,{get:()=>{let t=i(n),o=r[e]-t;return this.rect[a]+o},enumerable:!0});Object.defineProperty(this,`rect`,{enumerable:!1})}},O9=class{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(e=>this.target?.removeEventListener(...e))},this.target=e}add(e,t,n){var r;(r=this.target)==null||r.addEventListener(e,t,n),this.listeners.push([e,t,n])}};function e4e(e){let{EventTarget:t}=n9(e);return e instanceof t?e:a9(e)}function k9(e,t){let n=Math.abs(e.x),r=Math.abs(e.y);return typeof t==`number`?Math.sqrt(n**2+r**2)>t:`x`in t&&`y`in t?n>t.x&&r>t.y:`x`in t?n>t.x:`y`in t?r>t.y:!1}var A9;(function(e){e.Click=`click`,e.DragStart=`dragstart`,e.Keydown=`keydown`,e.ContextMenu=`contextmenu`,e.Resize=`resize`,e.SelectionChange=`selectionchange`,e.VisibilityChange=`visibilitychange`})(A9||={});function t4e(e){e.preventDefault()}function n4e(e){e.stopPropagation()}var j9;(function(e){e.Space=`Space`,e.Down=`ArrowDown`,e.Right=`ArrowRight`,e.Left=`ArrowLeft`,e.Up=`ArrowUp`,e.Esc=`Escape`,e.Enter=`Enter`,e.Tab=`Tab`})(j9||={});var r4e={start:[j9.Space,j9.Enter],cancel:[j9.Esc],end:[j9.Space,j9.Enter,j9.Tab]},i4e=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case j9.Right:return{...n,x:n.x+25};case j9.Left:return{...n,x:n.x-25};case j9.Down:return{...n,y:n.y+25};case j9.Up:return{...n,y:n.y-25}}},M9=class{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;let{event:{target:t}}=e;this.props=e,this.listeners=new O9(a9(t)),this.windowListeners=new O9(n9(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(A9.Resize,this.handleCancel),this.windowListeners.add(A9.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(A9.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&Q2e(n),t(x9)}handleKeyDown(e){if(g9(e)){let{active:t,context:n,options:r}=this.props,{keyboardCodes:i=r4e,coordinateGetter:a=i4e,scrollBehavior:o=`smooth`}=r,{code:s}=e;if(i.end.includes(s)){this.handleEnd(e);return}if(i.cancel.includes(s)){this.handleCancel(e);return}let{collisionRect:c}=n.current,l=c?{x:c.left,y:c.top}:x9;this.referenceCoordinates||=l;let u=a(e,{active:t,context:n.current,currentCoordinates:l});if(u){let t=h9(u,l),r={x:0,y:0},{scrollableAncestors:i}=n.current;for(let n of i){let i=e.code,{isTop:a,isRight:s,isLeft:c,isBottom:l,maxScroll:d,minScroll:f}=G2e(n),p=J2e(n),m={x:Math.min(i===j9.Right?p.right-p.width/2:p.right,Math.max(i===j9.Right?p.left:p.left+p.width/2,u.x)),y:Math.min(i===j9.Down?p.bottom-p.height/2:p.bottom,Math.max(i===j9.Down?p.top:p.top+p.height/2,u.y))},h=i===j9.Right&&!s||i===j9.Left&&!c,g=i===j9.Down&&!l||i===j9.Up&&!a;if(h&&m.x!==u.x){let e=n.scrollLeft+t.x,a=i===j9.Right&&e<=d.x||i===j9.Left&&e>=f.x;if(a&&!t.y){n.scrollTo({left:e,behavior:o});return}a?r.x=n.scrollLeft-e:r.x=i===j9.Right?n.scrollLeft-d.x:n.scrollLeft-f.x,r.x&&n.scrollBy({left:-r.x,behavior:o});break}else if(g&&m.y!==u.y){let e=n.scrollTop+t.y,a=i===j9.Down&&e<=d.y||i===j9.Up&&e>=f.y;if(a&&!t.x){n.scrollTo({top:e,behavior:o});return}a?r.y=n.scrollTop-e:r.y=i===j9.Down?n.scrollTop-d.y:n.scrollTop-f.y,r.y&&n.scrollBy({top:-r.y,behavior:o});break}}this.handleMove(e,m9(h9(u,this.referenceCoordinates),r))}}}handleMove(e,t){let{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){let{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){let{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}};M9.activators=[{eventName:`onKeyDown`,handler:(e,t,n)=>{let{keyboardCodes:r=r4e,onActivation:i}=t,{active:a}=n,{code:o}=e.nativeEvent;if(r.start.includes(o)){let t=a.activatorNode.current;return t&&e.target!==t?!1:(e.preventDefault(),i?.({event:e.nativeEvent}),!0)}return!1}}];function a4e(e){return!!(e&&`distance`in e)}function o4e(e){return!!(e&&`delay`in e)}var N9=class{constructor(e,t,n){n===void 0&&(n=e4e(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;let{event:r}=e,{target:i}=r;this.props=e,this.events=t,this.document=a9(i),this.documentListeners=new O9(this.document),this.listeners=new O9(n),this.windowListeners=new O9(n9(i)),this.initialCoordinates=_9(r)??x9,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(A9.Resize,this.handleCancel),this.windowListeners.add(A9.DragStart,t4e),this.windowListeners.add(A9.VisibilityChange,this.handleCancel),this.windowListeners.add(A9.ContextMenu,t4e),this.documentListeners.add(A9.Keydown,this.handleKeydown),t){if(n!=null&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(o4e(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(a4e(t)){this.handlePending(t);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){let{active:n,onPending:r}=this.props;r(n,e,this.initialCoordinates,t)}handleStart(){let{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(A9.Click,n4e,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(A9.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){let{activated:t,initialCoordinates:n,props:r}=this,{onMove:i,options:{activationConstraint:a}}=r;if(!n)return;let o=_9(e)??x9,s=h9(n,o);if(!t&&a){if(a4e(a)){if(a.tolerance!=null&&k9(s,a.tolerance))return this.handleCancel();if(k9(s,a.distance))return this.handleStart()}if(o4e(a)&&k9(s,a.tolerance))return this.handleCancel();this.handlePending(a,s);return}e.cancelable&&e.preventDefault(),i(o)}handleEnd(){let{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){let{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===j9.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}},s4e={cancel:{name:`pointercancel`},move:{name:`pointermove`},end:{name:`pointerup`}},P9=class extends N9{constructor(e){let{event:t}=e,n=a9(t.target);super(e,s4e,n)}};P9.activators=[{eventName:`onPointerDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];var c4e={move:{name:`mousemove`},end:{name:`mouseup`}},l4e;(function(e){e[e.RightClick=2]=`RightClick`})(l4e||={});var u4e=class extends N9{constructor(e){super(e,c4e,a9(e.event.target))}};u4e.activators=[{eventName:`onMouseDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===l4e.RightClick?!1:(r?.({event:n}),!0)}}];var F9={cancel:{name:`touchcancel`},move:{name:`touchmove`},end:{name:`touchend`}},d4e=class extends N9{constructor(e){super(e,F9)}static setup(){return window.addEventListener(F9.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(F9.move.name,e)};function e(){}}};d4e.activators=[{eventName:`onTouchStart`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t,{touches:i}=n;return i.length>1?!1:(r?.({event:n}),!0)}}];var I9;(function(e){e[e.Pointer=0]=`Pointer`,e[e.DraggableRect=1]=`DraggableRect`})(I9||={});var L9;(function(e){e[e.TreeOrder=0]=`TreeOrder`,e[e.ReversedTreeOrder=1]=`ReversedTreeOrder`})(L9||={});function f4e(e){let{acceleration:t,activator:n=I9.Pointer,canScroll:r,draggingRect:i,enabled:a,interval:o=5,order:s=L9.TreeOrder,pointerCoordinates:c,scrollableAncestors:l,scrollableAncestorRects:u,delta:d,threshold:f}=e,p=m4e({delta:d,disabled:!a}),[m,h]=n2e(),g=(0,C.useRef)({x:0,y:0}),_=(0,C.useRef)({x:0,y:0}),v=(0,C.useMemo)(()=>{switch(n){case I9.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case I9.DraggableRect:return i}},[n,i,c]),y=(0,C.useRef)(null),b=(0,C.useCallback)(()=>{let e=y.current;if(!e)return;let t=g.current.x*_.current.x,n=g.current.y*_.current.y;e.scrollBy(t,n)},[]),x=(0,C.useMemo)(()=>s===L9.TreeOrder?[...l].reverse():l,[s,l]);(0,C.useEffect)(()=>{if(!a||!l.length||!v){h();return}for(let e of x){if(r?.(e)===!1)continue;let n=u[l.indexOf(e)];if(!n)continue;let{direction:i,speed:a}=q2e(e,n,v,t,f);for(let e of[`x`,`y`])p[e][i[e]]||(a[e]=0,i[e]=0);if(a.x>0||a.y>0){h(),y.current=e,m(b,o),g.current=a,_.current=i;return}}g.current={x:0,y:0},_.current={x:0,y:0},h()},[t,b,r,h,a,o,JSON.stringify(v),JSON.stringify(p),m,l,x,u,JSON.stringify(f)])}var p4e={x:{[E9.Backward]:!1,[E9.Forward]:!1},y:{[E9.Backward]:!1,[E9.Forward]:!1}};function m4e(e){let{delta:t,disabled:n}=e,r=d9(t);return l9(e=>{if(n||!r||!e)return p4e;let i={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[E9.Backward]:e.x[E9.Backward]||i.x===-1,[E9.Forward]:e.x[E9.Forward]||i.x===1},y:{[E9.Backward]:e.y[E9.Backward]||i.y===-1,[E9.Forward]:e.y[E9.Forward]||i.y===1}}},[n,t,r])}function h4e(e,t){let n=t==null?void 0:e.get(t),r=n?n.node.current:null;return l9(e=>t==null?null:r??e??null,[r,t])}function g4e(e,t){return(0,C.useMemo)(()=>e.reduce((e,n)=>{let{sensor:r}=n,i=r.activators.map(e=>({eventName:e.eventName,handler:t(e.handler,n)}));return[...e,...i]},[]),[e,t])}var R9;(function(e){e[e.Always=0]=`Always`,e[e.BeforeDragging=1]=`BeforeDragging`,e[e.WhileDragging=2]=`WhileDragging`})(R9||={});var _4e;(function(e){e.Optimized=`optimized`})(_4e||={});var v4e=new Map;function y4e(e,t){let{dragging:n,dependencies:r,config:i}=t,[a,o]=(0,C.useState)(null),{frequency:s,measure:c,strategy:l}=i,u=(0,C.useRef)(e),d=g(),f=c9(d),p=(0,C.useCallback)(function(e){e===void 0&&(e=[]),!f.current&&o(t=>t===null?e:t.concat(e.filter(e=>!t.includes(e))))},[f]),m=(0,C.useRef)(null),h=l9(t=>{if(d&&!n)return v4e;if(!t||t===v4e||u.current!==e||a!=null){let t=new Map;for(let n of e){if(!n)continue;if(a&&a.length>0&&!a.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}let e=n.node.current,r=e?new D9(c(e),e):null;n.rect.current=r,r&&t.set(n.id,r)}return t}return t},[e,a,n,d,c]);return(0,C.useEffect)(()=>{u.current=e},[e]),(0,C.useEffect)(()=>{d||p()},[n,d]),(0,C.useEffect)(()=>{a&&a.length>0&&o(null)},[JSON.stringify(a)]),(0,C.useEffect)(()=>{d||typeof s!=`number`||m.current!==null||(m.current=setTimeout(()=>{p(),m.current=null},s))},[s,d,p,...r]),{droppableRects:h,measureDroppableContainers:p,measuringScheduled:a!=null};function g(){switch(l){case R9.Always:return!1;case R9.BeforeDragging:return n;default:return!n}}}function b4e(e,t){return l9(n=>e?n||(typeof t==`function`?t(e):e):null,[t,e])}function x4e(e,t){return b4e(e,t)}function S4e(e){let{callback:t,disabled:n}=e,r=s9(t),i=(0,C.useMemo)(()=>{if(n||typeof window>`u`||window.MutationObserver===void 0)return;let{MutationObserver:e}=window;return new e(r)},[r,n]);return(0,C.useEffect)(()=>()=>i?.disconnect(),[i]),i}function z9(e){let{callback:t,disabled:n}=e,r=s9(t),i=(0,C.useMemo)(()=>{if(n||typeof window>`u`||window.ResizeObserver===void 0)return;let{ResizeObserver:e}=window;return new e(r)},[n]);return(0,C.useEffect)(()=>()=>i?.disconnect(),[i]),i}function C4e(e){return new D9(S9(e),e)}function w4e(e,t,n){t===void 0&&(t=C4e);let[r,i]=(0,C.useState)(null);function a(){i(r=>{if(!e)return null;if(e.isConnected===!1)return r??n??null;let i=t(e);return JSON.stringify(r)===JSON.stringify(i)?r:i})}let o=S4e({callback(t){if(e)for(let n of t){let{type:t,target:r}=n;if(t===`childList`&&r instanceof HTMLElement&&r.contains(e)){a();break}}}}),s=z9({callback:a});return o9(()=>{a(),e?(s?.observe(e),o?.observe(document.body,{childList:!0,subtree:!0})):(s?.disconnect(),o?.disconnect())},[e]),r}function T4e(e){return j2e(e,b4e(e))}var E4e=[];function D4e(e){let t=(0,C.useRef)(e),n=l9(n=>e?n&&n!==E4e&&e&&t.current&&e.parentNode===t.current.parentNode?n:C9(e):E4e,[e]);return(0,C.useEffect)(()=>{t.current=e},[e]),n}function O4e(e){let[t,n]=(0,C.useState)(null),r=(0,C.useRef)(e),i=(0,C.useCallback)(e=>{let t=w9(e.target);t&&n(e=>e?(e.set(t,T9(t)),new Map(e)):null)},[]);return(0,C.useEffect)(()=>{let t=r.current;if(e!==t){a(t);let o=e.map(e=>{let t=w9(e);return t?(t.addEventListener(`scroll`,i,{passive:!0}),[t,T9(t)]):null}).filter(e=>e!=null);n(o.length?new Map(o):null),r.current=e}return()=>{a(e),a(t)};function a(e){e.forEach(e=>{w9(e)?.removeEventListener(`scroll`,i)})}},[i,e]),(0,C.useMemo)(()=>e.length?t?Array.from(t.values()).reduce((e,t)=>m9(e,t),x9):Y2e(e):x9,[e,t])}function k4e(e,t){t===void 0&&(t=[]);let n=(0,C.useRef)(null);return(0,C.useEffect)(()=>{n.current=null},t),(0,C.useEffect)(()=>{let t=e!==x9;t&&!n.current&&(n.current=e),!t&&n.current&&(n.current=null)},[e]),n.current?h9(e,n.current):x9}function A4e(e){(0,C.useEffect)(()=>{if(!$7)return;let t=e.map(e=>{let{sensor:t}=e;return t.setup==null?void 0:t.setup()});return()=>{for(let e of t)e?.()}},e.map(e=>{let{sensor:t}=e;return t}))}function j4e(e,t){return(0,C.useMemo)(()=>e.reduce((e,n)=>{let{eventName:r,handler:i}=n;return e[r]=e=>{i(e,t)},e},{}),[e,t])}function M4e(e){return(0,C.useMemo)(()=>e?R2e(e):null,[e])}var N4e=[];function P4e(e,t){t===void 0&&(t=S9);let[n]=e,r=M4e(n?n9(n):null),[i,a]=(0,C.useState)(N4e);function o(){a(()=>e.length?e.map(e=>W2e(e)?r:new D9(t(e),e)):N4e)}let s=z9({callback:o});return o9(()=>{s?.disconnect(),o(),e.forEach(e=>s?.observe(e))},[e]),i}function F4e(e){if(!e)return null;if(e.children.length>1)return e;let t=e.children[0];return i9(t)?t:e}function I4e(e){let{measure:t}=e,[n,r]=(0,C.useState)(null),i=z9({callback:(0,C.useCallback)(e=>{for(let{target:n}of e)if(i9(n)){r(e=>{let r=t(n);return e?{...e,width:r.width,height:r.height}:r});break}},[t])}),[a,o]=u9((0,C.useCallback)(e=>{let n=F4e(e);i?.disconnect(),n&&i?.observe(n),r(n?t(n):null)},[t,i]));return(0,C.useMemo)(()=>({nodeRef:a,rect:n,setRef:o}),[n,a,o])}var L4e=[{sensor:P9,options:{}},{sensor:M9,options:{}}],R4e={current:{}},B9={draggable:{measure:L2e},droppable:{measure:L2e,strategy:R9.WhileDragging,frequency:_4e.Optimized},dragOverlay:{measure:S9}},V9=class extends Map{get(e){return e==null?void 0:super.get(e)??void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:t}=e;return!t})}getNodeFor(e){return this.get(e)?.node.current??void 0}},z4e={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new V9,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:b9},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:B9,measureDroppableContainers:b9,windowRect:null,measuringScheduled:!1},B4e={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:``},dispatch:b9,draggableNodes:new Map,over:null,measureDroppableContainers:b9},H9=(0,C.createContext)(B4e),V4e=(0,C.createContext)(z4e);function H4e(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new V9}}}function U4e(e,t){switch(t.type){case y9.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case y9.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case y9.DragEnd:case y9.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case y9.RegisterDroppable:{let{element:n}=t,{id:r}=n,i=new V9(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case y9.SetDroppableDisabled:{let{id:n,key:r,disabled:i}=t,a=e.droppable.containers.get(n);if(!a||r!==a.key)return e;let o=new V9(e.droppable.containers);return o.set(n,{...a,disabled:i}),{...e,droppable:{...e.droppable,containers:o}}}case y9.UnregisterDroppable:{let{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;let a=new V9(e.droppable.containers);return a.delete(n),{...e,droppable:{...e.droppable,containers:a}}}default:return e}}function W4e(e){let{disabled:t}=e,{active:n,activatorEvent:r,draggableNodes:i}=(0,C.useContext)(H9),a=d9(r),o=d9(n?.id);return(0,C.useEffect)(()=>{if(!t&&!r&&a&&o!=null){if(!g9(a)||document.activeElement===a.target)return;let e=i.get(o);if(!e)return;let{activatorNode:t,node:n}=e;if(!t.current&&!n.current)return;requestAnimationFrame(()=>{for(let e of[t.current,n.current]){if(!e)continue;let t=s2e(e);if(t){t.focus();break}}})}},[r,t,i,o,a]),null}function G4e(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((e,t)=>t({transform:e,...r}),n):n}function K4e(e){return(0,C.useMemo)(()=>({draggable:{...B9.draggable,...e?.draggable},droppable:{...B9.droppable,...e?.droppable},dragOverlay:{...B9.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function q4e(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e,a=(0,C.useRef)(!1),{x:o,y:s}=typeof i==`boolean`?{x:i,y:i}:i;o9(()=>{if(!o&&!s||!t){a.current=!1;return}if(a.current||!r)return;let e=t?.node.current;if(!e||e.isConnected===!1)return;let i=j2e(n(e),r);if(o||(i.x=0),s||(i.y=0),a.current=!0,Math.abs(i.x)>0||Math.abs(i.y)>0){let t=V2e(e);t&&t.scrollBy({top:i.y,left:i.x})}},[t,o,s,r,n])}var J4e=(0,C.createContext)({...x9,scaleX:1,scaleY:1}),U9;(function(e){e[e.Uninitialized=0]=`Uninitialized`,e[e.Initializing=1]=`Initializing`,e[e.Initialized=2]=`Initialized`})(U9||={});var Y4e=(0,C.memo)(function(e){let{id:t,accessibility:n,autoScroll:r=!0,children:i,sensors:a=L4e,collisionDetection:o=k2e,measuring:s,modifiers:c,...l}=e,[u,d]=(0,C.useReducer)(U4e,void 0,H4e),[f,p]=m2e(),[m,h]=(0,C.useState)(U9.Uninitialized),g=m===U9.Initialized,{draggable:{active:_,nodes:v,translate:y},droppable:{containers:b}}=u,x=_==null?null:v.get(_),S=(0,C.useRef)({initial:null,translated:null}),w=(0,C.useMemo)(()=>_==null?null:{id:_,data:x?.data??R4e,rect:S},[_,x]),T=(0,C.useRef)(null),[E,D]=(0,C.useState)(null),[O,k]=(0,C.useState)(null),A=c9(l,Object.values(l)),j=p9(`DndDescribedBy`,t),M=(0,C.useMemo)(()=>b.getEnabled(),[b]),N=K4e(s),{droppableRects:P,measureDroppableContainers:F,measuringScheduled:I}=y4e(M,{dragging:g,dependencies:[y.x,y.y],config:N.droppable}),L=h4e(v,_),R=(0,C.useMemo)(()=>O?_9(O):null,[O]),ee=Ee(),z=x4e(L,N.draggable.measure);q4e({activeNode:_==null?null:v.get(_),config:ee.layoutShiftCompensation,initialRect:z,measure:N.draggable.measure});let te=w4e(L,N.draggable.measure,z),B=w4e(L?L.parentElement:null),V=(0,C.useRef)({activatorEvent:null,active:null,activeNode:L,collisionRect:null,collisions:null,droppableRects:P,draggableNodes:v,draggingNode:null,draggingNodeRect:null,droppableContainers:b,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ne=b.getNodeFor(V.current.over?.id),re=I4e({measure:N.dragOverlay.measure}),ie=re.nodeRef.current??L,ae=g?re.rect??te:null,oe=!!(re.nodeRef.current&&re.rect),se=T4e(oe?null:te),ce=M4e(ie?n9(ie):null),le=D4e(g?ne??L:null),ue=P4e(le),de=G4e(c,{transform:{x:y.x-se.x,y:y.y-se.y,scaleX:1,scaleY:1},activatorEvent:O,active:w,activeNodeRect:te,containerNodeRect:B,draggingNodeRect:ae,over:V.current.over,overlayNodeRect:re.rect,scrollableAncestors:le,scrollableAncestorRects:ue,windowRect:ce}),fe=R?m9(R,y):null,pe=O4e(le),H=k4e(pe),me=k4e(pe,[te]),he=m9(de,H),U=ae?N2e(ae,de):null,ge=w&&U?o({active:w,collisionRect:U,droppableRects:P,droppableContainers:M,pointerCoordinates:fe}):null,_e=w2e(ge,`id`),[ve,ye]=(0,C.useState)(null),be=A2e(oe?de:m9(de,me),ve?.rect??null,te),xe=(0,C.useRef)(null),Se=(0,C.useCallback)((e,t)=>{let{sensor:n,options:r}=t;if(T.current==null)return;let i=v.get(T.current);if(!i)return;let a=e.nativeEvent;xe.current=new n({active:T.current,activeNode:i,event:a,options:r,context:V,onAbort(e){if(!v.get(e))return;let{onDragAbort:t}=A.current,n={id:e};t?.(n),f({type:`onDragAbort`,event:n})},onPending(e,t,n,r){if(!v.get(e))return;let{onDragPending:i}=A.current,a={id:e,constraint:t,initialCoordinates:n,offset:r};i?.(a),f({type:`onDragPending`,event:a})},onStart(e){let t=T.current;if(t==null)return;let n=v.get(t);if(!n)return;let{onDragStart:r}=A.current,i={activatorEvent:a,active:{id:t,data:n.data,rect:S}};(0,ba.unstable_batchedUpdates)(()=>{r?.(i),h(U9.Initializing),d({type:y9.DragStart,initialCoordinates:e,active:t}),f({type:`onDragStart`,event:i}),D(xe.current),k(a)})},onMove(e){d({type:y9.DragMove,coordinates:e})},onEnd:o(y9.DragEnd),onCancel:o(y9.DragCancel)});function o(e){return async function(){let{active:t,collisions:n,over:r,scrollAdjustedTranslate:i}=V.current,o=null;if(t&&i){let{cancelDrop:s}=A.current;o={activatorEvent:a,active:t,collisions:n,delta:i,over:r},e===y9.DragEnd&&typeof s==`function`&&await Promise.resolve(s(o))&&(e=y9.DragCancel)}T.current=null,(0,ba.unstable_batchedUpdates)(()=>{d({type:e}),h(U9.Uninitialized),ye(null),D(null),k(null),xe.current=null;let t=e===y9.DragEnd?`onDragEnd`:`onDragCancel`;if(o){let e=A.current[t];e?.(o),f({type:t,event:o})}})}}},[v]),Ce=g4e(a,(0,C.useCallback)((e,t)=>(n,r)=>{let i=n.nativeEvent,a=v.get(r);if(T.current!==null||!a||i.dndKit||i.defaultPrevented)return;let o={active:a};e(n,t.options,o)===!0&&(i.dndKit={capturedBy:t.sensor},T.current=r,Se(n,t))},[v,Se]));A4e(a),o9(()=>{te&&m===U9.Initializing&&h(U9.Initialized)},[te,m]),(0,C.useEffect)(()=>{let{onDragMove:e}=A.current,{active:t,activatorEvent:n,collisions:r,over:i}=V.current;if(!t||!n)return;let a={active:t,activatorEvent:n,collisions:r,delta:{x:he.x,y:he.y},over:i};(0,ba.unstable_batchedUpdates)(()=>{e?.(a),f({type:`onDragMove`,event:a})})},[he.x,he.y]),(0,C.useEffect)(()=>{let{active:e,activatorEvent:t,collisions:n,droppableContainers:r,scrollAdjustedTranslate:i}=V.current;if(!e||T.current==null||!t||!i)return;let{onDragOver:a}=A.current,o=r.get(_e),s=o&&o.rect.current?{id:o.id,rect:o.rect.current,data:o.data,disabled:o.disabled}:null,c={active:e,activatorEvent:t,collisions:n,delta:{x:i.x,y:i.y},over:s};(0,ba.unstable_batchedUpdates)(()=>{ye(s),a?.(c),f({type:`onDragOver`,event:c})})},[_e]),o9(()=>{V.current={activatorEvent:O,active:w,activeNode:L,collisionRect:U,collisions:ge,droppableRects:P,draggableNodes:v,draggingNode:ie,draggingNodeRect:ae,droppableContainers:b,over:ve,scrollableAncestors:le,scrollAdjustedTranslate:he},S.current={initial:ae,translated:U}},[w,L,ge,U,v,ie,ae,P,b,ve,le,he]),f4e({...ee,delta:y,draggingRect:U,pointerCoordinates:fe,scrollableAncestors:le,scrollableAncestorRects:ue});let we=(0,C.useMemo)(()=>({active:w,activeNode:L,activeNodeRect:te,activatorEvent:O,collisions:ge,containerNodeRect:B,dragOverlay:re,draggableNodes:v,droppableContainers:b,droppableRects:P,over:ve,measureDroppableContainers:F,scrollableAncestors:le,scrollableAncestorRects:ue,measuringConfiguration:N,measuringScheduled:I,windowRect:ce}),[w,L,te,O,ge,B,re,v,b,P,ve,F,le,ue,N,I,ce]),Te=(0,C.useMemo)(()=>({activatorEvent:O,activators:Ce,active:w,activeNodeRect:te,ariaDescribedById:{draggable:j},dispatch:d,draggableNodes:v,over:ve,measureDroppableContainers:F}),[O,Ce,w,te,d,j,v,ve,F]);return C.createElement(f2e.Provider,{value:p},C.createElement(H9.Provider,{value:Te},C.createElement(V4e.Provider,{value:we},C.createElement(J4e.Provider,{value:be},i)),C.createElement(W4e,{disabled:n?.restoreFocus===!1})),C.createElement(_2e,{...n,hiddenTextDescribedById:j}));function Ee(){let e=E?.autoScrollEnabled===!1,t=typeof r==`object`?r.enabled===!1:r===!1,n=g&&!e&&!t;return typeof r==`object`?{...r,enabled:n}:{enabled:n}}}),X4e=(0,C.createContext)(null),Z4e=`button`,Q4e=`Draggable`;function $4e(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e,a=p9(Q4e),{activators:o,activatorEvent:s,active:c,activeNodeRect:l,ariaDescribedById:u,draggableNodes:d,over:f}=(0,C.useContext)(H9),{role:p=Z4e,roleDescription:m=`draggable`,tabIndex:h=0}=i??{},g=c?.id===t,_=(0,C.useContext)(g?J4e:X4e),[v,y]=u9(),[b,x]=u9(),S=j4e(o,t),w=c9(n);return o9(()=>(d.set(t,{id:t,key:a,node:v,activatorNode:b,data:w}),()=>{let e=d.get(t);e&&e.key===a&&d.delete(t)}),[d,t]),{active:c,activatorEvent:s,activeNodeRect:l,attributes:(0,C.useMemo)(()=>({role:p,tabIndex:h,"aria-disabled":r,"aria-pressed":g&&p===Z4e?!0:void 0,"aria-roledescription":m,"aria-describedby":u.draggable}),[r,p,h,g,m,u.draggable]),isDragging:g,listeners:r?void 0:S,node:v,over:f,setNodeRef:y,setActivatorNodeRef:x,transform:_}}function e3e(){return(0,C.useContext)(V4e)}var t3e=`Droppable`,n3e={timeout:25};function r3e(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e,a=p9(t3e),{active:o,dispatch:s,over:c,measureDroppableContainers:l}=(0,C.useContext)(H9),u=(0,C.useRef)({disabled:n}),d=(0,C.useRef)(!1),f=(0,C.useRef)(null),p=(0,C.useRef)(null),{disabled:m,updateMeasurementsFor:h,timeout:g}={...n3e,...i},_=c9(h??r),v=z9({callback:(0,C.useCallback)(()=>{if(!d.current){d.current=!0;return}p.current!=null&&clearTimeout(p.current),p.current=setTimeout(()=>{l(Array.isArray(_.current)?_.current:[_.current]),p.current=null},g)},[g]),disabled:m||!o}),[y,b]=u9((0,C.useCallback)((e,t)=>{v&&(t&&(v.unobserve(t),d.current=!1),e&&v.observe(e))},[v])),x=c9(t);return(0,C.useEffect)(()=>{!v||!y.current||(v.disconnect(),d.current=!1,v.observe(y.current))},[y,v]),(0,C.useEffect)(()=>(s({type:y9.RegisterDroppable,element:{id:r,key:a,disabled:n,node:y,rect:f,data:x}}),()=>s({type:y9.UnregisterDroppable,key:a,id:r})),[r]),(0,C.useEffect)(()=>{n!==u.current.disabled&&(s({type:y9.SetDroppableDisabled,id:r,key:a,disabled:n}),u.current.disabled=n)},[r,a,n,s]),{active:o,rect:f,isOver:c?.id===r,node:y,over:c,setNodeRef:b}}function W9(e,t,n){let r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function i3e(e,t){return e.reduce((e,n,r)=>{let i=t.get(n);return i&&(e[r]=i),e},Array(e.length))}function G9(e){return e!==null&&e>=0}function a3e(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function o3e(e){return typeof e==`boolean`?{draggable:e,droppable:e}:e}var s3e=e=>{let{rects:t,activeIndex:n,overIndex:r,index:i}=e,a=W9(t,r,n),o=t[i],s=a[i];return!s||!o?null:{x:s.left-o.left,y:s.top-o.top,scaleX:s.width/o.width,scaleY:s.height/o.height}},K9={scaleX:1,scaleY:1},c3e=e=>{let{activeIndex:t,activeNodeRect:n,index:r,rects:i,overIndex:a}=e,o=i[t]??n;if(!o)return null;if(r===t){let e=i[a];return e?{x:0,y:t<a?e.top+e.height-(o.top+o.height):e.top-o.top,...K9}:null}let s=l3e(i,r,t);return r>t&&r<=a?{x:0,y:-o.height-s,...K9}:r<t&&r>=a?{x:0,y:o.height+s,...K9}:{x:0,y:0,...K9}};function l3e(e,t,n){let r=e[t],i=e[t-1],a=e[t+1];return r?n<t?i?r.top-(i.top+i.height):a?a.top-(r.top+r.height):0:a?a.top-(r.top+r.height):i?r.top-(i.top+i.height):0:0}var u3e=`Sortable`,d3e=C.createContext({activeIndex:-1,containerId:u3e,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:s3e,disabled:{draggable:!1,droppable:!1}});function f3e(e){let{children:t,id:n,items:r,strategy:i=s3e,disabled:a=!1}=e,{active:o,dragOverlay:s,droppableRects:c,over:l,measureDroppableContainers:u}=e3e(),d=p9(u3e,n),f=s.rect!==null,p=(0,C.useMemo)(()=>r.map(e=>typeof e==`object`&&`id`in e?e.id:e),[r]),m=o!=null,h=o?p.indexOf(o.id):-1,g=l?p.indexOf(l.id):-1,_=(0,C.useRef)(p),v=!a3e(p,_.current),y=g!==-1&&h===-1||v,b=o3e(a);o9(()=>{v&&m&&u(p)},[v,p,m,u]),(0,C.useEffect)(()=>{_.current=p},[p]);let x=(0,C.useMemo)(()=>({activeIndex:h,containerId:d,disabled:b,disableTransforms:y,items:p,overIndex:g,useDragOverlay:f,sortedRects:i3e(p,c),strategy:i}),[h,d,b.draggable,b.droppable,y,p,g,c,f,i]);return C.createElement(d3e.Provider,{value:x},t)}var p3e=e=>{let{id:t,items:n,activeIndex:r,overIndex:i}=e;return W9(n,r,i).indexOf(t)},m3e=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:i,items:a,newIndex:o,previousItems:s,previousContainerId:c,transition:l}=e;return!l||!r||s!==a&&i===o?!1:n?!0:o!==i&&t===c},h3e={duration:200,easing:`ease`},g3e=`transform`,_3e=v9.Transition.toString({property:g3e,duration:0,easing:`linear`}),v3e={roleDescription:`sortable`};function y3e(e){let{disabled:t,index:n,node:r,rect:i}=e,[a,o]=(0,C.useState)(null),s=(0,C.useRef)(n);return o9(()=>{if(!t&&n!==s.current&&r.current){let e=i.current;if(e){let t=S9(r.current,{ignoreTransform:!0}),n={x:e.left-t.left,y:e.top-t.top,scaleX:e.width/t.width,scaleY:e.height/t.height};(n.x||n.y)&&o(n)}}n!==s.current&&(s.current=n)},[t,n,r,i]),(0,C.useEffect)(()=>{a&&o(null)},[a]),a}function b3e(e){let{animateLayoutChanges:t=m3e,attributes:n,disabled:r,data:i,getNewIndex:a=p3e,id:o,strategy:s,resizeObserverConfig:c,transition:l=h3e}=e,{items:u,containerId:d,activeIndex:f,disabled:p,disableTransforms:m,sortedRects:h,overIndex:g,useDragOverlay:_,strategy:v}=(0,C.useContext)(d3e),y=x3e(r,p),b=u.indexOf(o),x=(0,C.useMemo)(()=>({sortable:{containerId:d,index:b,items:u},...i}),[d,i,b,u]),S=(0,C.useMemo)(()=>u.slice(u.indexOf(o)),[u,o]),{rect:w,node:T,isOver:E,setNodeRef:D}=r3e({id:o,data:x,disabled:y.droppable,resizeObserverConfig:{updateMeasurementsFor:S,...c}}),{active:O,activatorEvent:k,activeNodeRect:A,attributes:j,setNodeRef:M,listeners:N,isDragging:P,over:F,setActivatorNodeRef:I,transform:L}=$4e({id:o,data:x,attributes:{...v3e,...n},disabled:y.draggable}),R=e2e(D,M),ee=!!O,z=ee&&!m&&G9(f)&&G9(g),te=!_&&P,B=z?(te&&z?L:null)??(s??v)({rects:h,activeNodeRect:A,activeIndex:f,overIndex:g,index:b}):null,V=G9(f)&&G9(g)?a({id:o,items:u,activeIndex:f,overIndex:g}):b,ne=O?.id,re=(0,C.useRef)({activeId:ne,items:u,newIndex:V,containerId:d}),ie=u!==re.current.items,ae=t({active:O,containerId:d,isDragging:P,isSorting:ee,id:o,index:b,items:u,newIndex:re.current.newIndex,previousItems:re.current.items,previousContainerId:re.current.containerId,transition:l,wasDragging:re.current.activeId!=null}),oe=y3e({disabled:!ae,index:b,node:T,rect:w});return(0,C.useEffect)(()=>{ee&&re.current.newIndex!==V&&(re.current.newIndex=V),d!==re.current.containerId&&(re.current.containerId=d),u!==re.current.items&&(re.current.items=u)},[ee,V,d,u]),(0,C.useEffect)(()=>{if(ne===re.current.activeId)return;if(ne!=null&&re.current.activeId==null){re.current.activeId=ne;return}let e=setTimeout(()=>{re.current.activeId=ne},50);return()=>clearTimeout(e)},[ne]),{active:O,activeIndex:f,attributes:j,data:x,rect:w,index:b,newIndex:V,items:u,isOver:E,isSorting:ee,isDragging:P,listeners:N,node:T,overIndex:g,over:F,setNodeRef:R,setActivatorNodeRef:I,setDroppableNodeRef:D,setDraggableNodeRef:M,transform:oe??B,transition:se()};function se(){if(oe||ie&&re.current.newIndex===b)return _3e;if(!(te&&!g9(k)||!l)&&(ee||ae))return v9.Transition.toString({...l,property:g3e})}}function x3e(e,t){return typeof e==`boolean`?{draggable:e,droppable:!1}:{draggable:e?.draggable??t.draggable,droppable:e?.droppable??t.droppable}}function q9(e){if(!e)return!1;let t=e.data.current;return!!(t&&`sortable`in t&&typeof t.sortable==`object`&&`containerId`in t.sortable&&`items`in t.sortable&&`index`in t.sortable)}var S3e=[j9.Down,j9.Right,j9.Up,j9.Left],C3e=(e,t)=>{let{context:{active:n,collisionRect:r,droppableRects:i,droppableContainers:a,over:o,scrollableAncestors:s}}=t;if(S3e.includes(e.code)){if(e.preventDefault(),!n||!r)return;let t=[];a.getEnabled().forEach(n=>{if(!n||n!=null&&n.disabled)return;let a=i.get(n.id);if(a)switch(e.code){case j9.Down:r.top<a.top&&t.push(n);break;case j9.Up:r.top>a.top&&t.push(n);break;case j9.Left:r.left>a.left&&t.push(n);break;case j9.Right:r.left<a.left&&t.push(n);break}});let c=D2e({active:n,collisionRect:r,droppableRects:i,droppableContainers:t,pointerCoordinates:null}),l=w2e(c,`id`);if(l===o?.id&&c.length>1&&(l=c[1].id),l!=null){let e=a.get(n.id),t=a.get(l),o=t?i.get(t.id):null,c=t?.node.current;if(c&&o&&e&&t){let n=C9(c).some((e,t)=>s[t]!==e),i=w3e(e,t),a=T3e(e,t),l=n||!i?{x:0,y:0}:{x:a?r.width-o.width:0,y:a?r.height-o.height:0},u={x:o.left,y:o.top};return l.x&&l.y?u:h9(u,l)}}}};function w3e(e,t){return!q9(e)||!q9(t)?!1:e.data.current.sortable.containerId===t.data.current.sortable.containerId}function T3e(e,t){return!q9(e)||!q9(t)||!w3e(e,t)?!1:e.data.current.sortable.index<t.data.current.sortable.index}var E3e=({bridge:e,index:t})=>{let{attributes:n,listeners:r,setNodeRef:i,transform:a,transition:o,isDragging:s}=b3e({id:e.id}),[c,l]=(0,C.useState)(!1);return(0,C.useEffect)(()=>{DE(e.id).then(l)},[e.id]),(0,W.jsx)(vv,{ref:i,style:{transform:v9.Transform.toString(a),transition:o,opacity:s?.5:1},variant:`outlined`,sx:{cursor:`grab`,"&:active":{cursor:`grabbing`},bgcolor:s?`action.selected`:`background.paper`,width:`fit-content`},children:(0,W.jsxs)(xv,{sx:{display:`flex`,alignItems:`center`,gap:1.5,py:1,"&:last-child":{pb:1}},children:[(0,W.jsx)(Z,{...n,...r,sx:{display:`flex`,alignItems:`center`,color:`text.secondary`},children:(0,W.jsx)(khe,{})}),(0,W.jsx)(kv,{label:t+1,size:`small`,color:`primary`,sx:{minWidth:32,fontWeight:`bold`}}),c?(0,W.jsx)(Z,{component:`img`,src:OE(e.id),alt:e.name,sx:{width:40,height:40,borderRadius:`50%`,objectFit:`cover`,boxShadow:2}}):(0,W.jsx)(Db,{sx:{bgcolor:PE(e),width:40,height:40,boxShadow:2},children:(0,W.jsx)(NE(e),{sx:{fontSize:24}})}),(0,W.jsxs)(Z,{sx:{flex:1},children:[(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:500,children:e.name}),(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,children:[`Port: `,e.port,` • Priority: `,e.priority??100]})]})]})})},D3e=()=>{let{t:e}=hs(),t=Xv(),{content:n,isLoading:r}=VT(),i=Kme(),[a,o]=(0,C.useState)([]),[s,c]=(0,C.useState)(!1);(0,C.useEffect)(()=>{n&&(o([...n].sort((e,t)=>(e.priority??100)-(t.priority??100))),c(!1))},[n]);let l=y2e(v2e(P9),v2e(M9,{coordinateGetter:C3e})),u=(0,C.useCallback)(e=>{let{active:t,over:n}=e;n&&t.id!==n.id&&(o(e=>W9(e,e.findIndex(e=>e.id===t.id),e.findIndex(e=>e.id===n.id))),c(!0))},[]),d=(0,C.useCallback)(async()=>{let n=a.map((e,t)=>({id:e.id,priority:(t+1)*10}));try{await i(n),t.show({message:e(`startup.saveSuccess`),severity:`success`}),c(!1)}catch(n){t.show({message:n instanceof Error?n.message:e(`startup.saveFailed`),severity:`error`})}},[a,i,t,e]),f=(0,C.useMemo)(()=>a.map(e=>e.id),[a]);return r?(0,W.jsxs)(Q,{children:[e(`common.loading`),`...`]}):(0,W.jsxs)(Gv,{spacing:3,children:[(0,W.jsx)(Yv,{items:[{name:e(`nav.bridges`),to:Y9.bridges},{name:e(`startup.title`),to:Y9.startup}]}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:2,children:[(0,W.jsx)(pv,{color:`primary`,fontSize:`large`}),(0,W.jsxs)(Z,{children:[(0,W.jsx)(Q,{variant:`h5`,fontWeight:600,children:e(`startup.title`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`startup.description`)})]})]}),s&&(0,W.jsx)(Kh,{severity:`info`,action:(0,W.jsx)(_v,{color:`inherit`,size:`small`,startIcon:(0,W.jsx)(_E,{}),onClick:d,children:e(`startup.saveChanges`)}),children:e(`startup.unsavedChanges`)}),(0,W.jsx)(Y4e,{sensors:l,collisionDetection:E2e,onDragEnd:u,children:(0,W.jsx)(f3e,{items:f,strategy:c3e,children:(0,W.jsx)(Gv,{spacing:1,children:a.map((e,t)=>(0,W.jsx)(E3e,{bridge:e,index:t},e.id))})})}),a.length===0&&(0,W.jsx)(Q,{color:`text.secondary`,textAlign:`center`,py:4,children:e(`startup.noBridges`)}),s&&a.length>0&&(0,W.jsx)(Z,{display:`flex`,justifyContent:`flex-end`,children:(0,W.jsx)(_v,{variant:`contained`,startIcon:(0,W.jsx)(_E,{}),onClick:d,children:e(`startup.saveOrder`)})})]})},J9=`https://riddix.github.io/home-assistant-matter-hub`,Y9={dashboard:`/`,bridges:`/bridges`,bridge:e=>`/bridges/${e}`,createBridge:`/bridges/create`,areaSetup:`/bridges/area-setup`,editBridge:e=>`/bridges/${e}/edit`,devices:`/devices`,standaloneDevices:`/standalone-devices`,networkMap:`/network-map`,health:`/health`,labels:`/labels`,lockCredentials:`/lock-credentials`,plugins:`/plugins`,settings:`/settings`,startup:`/startup`,githubRepository:`https://github.com/riddix/home-assistant-matter-hub/`,documentation:J9,support:`${J9}/support`,faq:{multiFabric:`${J9}/connect-multiple-fabrics`,bridgeConfig:`${J9}/bridge-configuration`}},O3e=[{path:``,element:(0,W.jsx)(Sre,{}),children:[{path:``,element:(0,W.jsx)(Xge,{})},{path:Y9.bridges,element:(0,W.jsx)(Wge,{})},{path:Y9.createBridge,element:(0,W.jsx)(Mqe,{})},{path:Y9.areaSetup,element:(0,W.jsx)(xae,{})},{path:Y9.bridge(`:bridgeId`),element:(0,W.jsx)(che,{})},{path:Y9.editBridge(`:bridgeId`),element:(0,W.jsx)(Nqe,{})},{path:Y9.devices,element:(0,W.jsx)(m_e,{})},{path:Y9.standaloneDevices,element:(0,W.jsx)($0e,{})},{path:Y9.networkMap,element:(0,W.jsx)(_0e,{})},{path:Y9.health,element:(0,W.jsx)(Qqe,{})},{path:Y9.labels,element:(0,W.jsx)(nJe,{})},{path:Y9.lockCredentials,element:(0,W.jsx)(cJe,{})},{path:Y9.plugins,element:(0,W.jsx)(U0e,{})},{path:Y9.settings,element:(0,W.jsx)(J0e,{})},{path:Y9.startup,element:(0,W.jsx)(D3e,{})},{path:`*`,element:(0,W.jsx)(lJe,{})}]}],k3e=A_({items:{isInitialized:!1,isLoading:!1}},e=>{e.addCase(W_.pending,e=>{e.items.isLoading=!0}).addCase(W_.rejected,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=void 0,e.items.error=t.error}).addCase(W_.fulfilled,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=t.payload,e.items.error=void 0}).addCase(G_.fulfilled,(e,t)=>{e.items.content?.push(t.payload)}).addCase(q_.fulfilled,(e,t)=>{let n=e.items.content?.findIndex(e=>e.id===t.payload.id)??-1;n!==-1&&(e.items.content[n]=t.payload)}).addCase(J_.fulfilled,(e,t)=>{let n=e.items.content?.findIndex(e=>e.id===t.payload.id)??-1;n!==-1&&(e.items.content[n]=t.payload)}).addCase(K_.fulfilled,(e,t)=>{if(e.items.content){let n=e.items.content.findIndex(e=>e.id===t.meta.arg);n!==-1&&e.items.content.splice(n,1)}}).addCase(Y_,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=t.payload,e.items.error=void 0}).addCase(X_,(e,t)=>{if(e.items.content){let n=e.items.content.findIndex(e=>e.id===t.payload.id);n===-1?e.items.content.push(t.payload):e.items.content[n]=t.payload}})}),A3e=A_({byBridge:{}},e=>{e.addCase(KT.pending,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)}).addCase(KT.rejected,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)}).addCase(KT.fulfilled,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)})}),X9=A_({isInitialized:!1,isLoading:!1,content:void 0,error:void 0},e=>{e.addCase(KT.pending,e=>{e.isLoading=!0}).addCase(KT.rejected,(e,t)=>{e.isInitialized=!0,e.isLoading=!1,e.content=void 0,e.error=t.error}).addCase(KT.fulfilled,(e,t)=>{e.isInitialized=!0,e.isLoading=!1,e.content=t.payload,e.error=void 0})}),j3e=Yne({reducer:{bridges:k3e,devices:A3e}}),Z9=vp({createStyledComponent:J(`div`,{name:`MuiContainer`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`maxWidth${Y(String(n.maxWidth))}`],n.fixed&&t.fixed,n.disableGutters&&t.disableGutters]}}),useThemeProps:e=>jm({props:e,name:`MuiContainer`})});function M3e(e){return zd(`MuiToolbar`,e)}K(`MuiToolbar`,[`root`,`gutters`,`regular`,`dense`]);var N3e=e=>{let{classes:t,disableGutters:n,variant:r}=e;return pp({root:[`root`,!n&&`gutters`,r]},M3e,t)},P3e=J(`div`,{name:`MuiToolbar`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.disableGutters&&t.gutters,t[n.variant]]}})(Lm(({theme:e})=>({position:`relative`,display:`flex`,alignItems:`center`,variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up(`sm`)]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:`dense`},style:{minHeight:48}},{props:{variant:`regular`},style:e.mixins.toolbar}]}))),F3e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiToolbar`}),{className:r,component:i=`div`,disableGutters:a=!1,variant:o=`regular`,...s}=n,c={...n,component:i,disableGutters:a,variant:o};return(0,W.jsx)(P3e,{as:i,className:G(N3e(c).root,r),ref:t,ownerState:c,...s})}),I3e=class extends C.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error(`ErrorBoundary caught:`,e,t.componentStack)}render(){return this.state.hasError?(0,W.jsxs)(Z,{display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,minHeight:`60vh`,gap:2,p:4,children:[(0,W.jsx)(yb,{color:`error`,sx:{fontSize:64}}),(0,W.jsx)(Q,{variant:`h5`,fontWeight:600,children:Is.t(`errorBoundary.title`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,textAlign:`center`,maxWidth:480,children:this.state.error?.message??Is.t(`errorBoundary.fallbackMessage`)}),(0,W.jsx)(_v,{variant:`contained`,onClick:()=>{this.setState({hasError:!1,error:null}),window.location.reload()},children:Is.t(`errorBoundary.reload`)})]}):this.props.children}};function L3e(e){return zd(`MuiFab`,e)}var R3e=K(`MuiFab`,[`root`,`primary`,`secondary`,`extended`,`circular`,`focusVisible`,`disabled`,`colorInherit`,`sizeSmall`,`sizeMedium`,`sizeLarge`,`info`,`error`,`warning`,`success`]),z3e=e=>{let{color:t,variant:n,classes:r,size:i}=e,a=pp({root:[`root`,n,`size${Y(i)}`,t===`inherit`?`colorInherit`:t]},L3e,r);return{...r,...a}},B3e=J(Ih,{name:`MuiFab`,slot:`Root`,shouldForwardProp:e=>km(e)||e===`classes`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant],t[`size${Y(n.size)}`],n.color===`inherit`&&t.colorInherit,t[Y(n.size)],t[n.color]]}})(Lm(({theme:e})=>({...e.typography.button,minHeight:36,transition:e.transitions.create([`background-color`,`box-shadow`,`border-color`],{duration:e.transitions.duration.short}),borderRadius:`50%`,padding:0,minWidth:0,width:56,height:56,zIndex:(e.vars||e).zIndex.fab,boxShadow:(e.vars||e).shadows[6],"&:active":{boxShadow:(e.vars||e).shadows[12]},color:e.vars?e.vars.palette.grey[900]:e.palette.getContrastText?.(e.palette.grey[300]),backgroundColor:(e.vars||e).palette.grey[300],"&:hover":{backgroundColor:(e.vars||e).palette.grey.A100,"@media (hover: none)":{backgroundColor:(e.vars||e).palette.grey[300]},textDecoration:`none`},[`&.${R3e.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},variants:[{props:{size:`small`},style:{width:40,height:40}},{props:{size:`medium`},style:{width:48,height:48}},{props:{variant:`extended`},style:{borderRadius:48/2,padding:`0 16px`,width:`auto`,minHeight:`auto`,minWidth:48,height:48}},{props:{variant:`extended`,size:`small`},style:{width:`auto`,padding:`0 8px`,borderRadius:34/2,minWidth:34,height:34}},{props:{variant:`extended`,size:`medium`},style:{width:`auto`,padding:`0 16px`,borderRadius:40/2,minWidth:40,height:40}},{props:{color:`inherit`},style:{color:`inherit`}}]})),Lm(({theme:e})=>({variants:[...Object.entries(e.palette).filter(Km([`dark`,`contrastText`])).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].contrastText,backgroundColor:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:(e.vars||e).palette[t].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t].main}}}}))]})),Lm(({theme:e})=>({[`&.${R3e.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}}))),V3e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiFab`}),{children:r,className:i,color:a=`default`,component:o=`button`,disabled:s=!1,disableFocusRipple:c=!1,focusVisibleClassName:l,size:u=`large`,variant:d=`circular`,...f}=n,p={...n,color:a,component:o,disabled:s,disableFocusRipple:c,size:u,variant:d},m=z3e(p);return(0,W.jsx)(B3e,{className:G(m.root,i),component:o,disabled:s,focusRipple:!c,focusVisibleClassName:G(m.focusVisible,l),ownerState:p,ref:t,...f,classes:m,children:r})}),H3e=[{code:`en`,flag:`🇬🇧`,name:`English`},{code:`de`,flag:`🇩🇪`,name:`Deutsch`},{code:`fr`,flag:`🇫🇷`,name:`Français`},{code:`es`,flag:`🇪🇸`,name:`Español`},{code:`it`,flag:`🇮🇹`,name:`Italiano`},{code:`hu`,flag:`🇭🇺`,name:`Magyar`},{code:`zh`,flag:`🇨🇳`,name:`中文`},{code:`zh-TW`,flag:`🇹🇼`,name:`繁體中文`},{code:`ja`,flag:`🇯🇵`,name:`日本語`},{code:`th`,flag:`🇹🇭`,name:`ไทย`},{code:`sv`,flag:`🇸🇪`,name:`Svenska`},{code:`tr`,flag:`🇹🇷`,name:`Türkçe`},{code:`ru`,flag:`🇷🇺`,name:`Русский`}],U3e=`hamh-custom-languages`;function W3e(){try{let e=localStorage.getItem(U3e);return e?JSON.parse(e).map(e=>({code:e.code,flag:`🌐`,name:e.name})):[]}catch{return[]}}var G3e=`https://github.com/RiDDiX/home-assistant-matter-hub/issues/new?labels=translation&title=Translation+improvement`;function K3e(){let{t:e,i18n:t}=hs(),[n,r]=(0,C.useState)(!1),i=(0,C.useRef)(null),a=(0,C.useMemo)(()=>[...H3e,...W3e()],[]),o=t.language??`en`,s=a.some(e=>e.code===o)?o:o.split(`-`)[0]??`en`,c=(0,C.useCallback)(()=>{r(e=>!e)},[]),l=(0,C.useCallback)(e=>{t.changeLanguage(e),r(!1)},[t]);return(0,W.jsx)(Yh,{onClickAway:(0,C.useCallback)(()=>{r(!1)},[]),children:(0,W.jsxs)(Z,{children:[(0,W.jsx)(V3e,{ref:i,size:`small`,color:`primary`,onClick:c,"aria-label":`Change language`,sx:{position:`fixed`,bottom:24,right:24,zIndex:1300},children:(0,W.jsx)(Ihe,{})}),(0,W.jsx)(cb,{open:n,anchorEl:i.current,placement:`top-end`,transition:!0,sx:{zIndex:1300},children:({TransitionProps:t})=>(0,W.jsx)(Pb,{...t,timeout:200,children:(0,W.jsxs)(qm,{elevation:8,sx:{mb:1,py:.5,minWidth:160,borderRadius:2,overflow:`hidden`},children:[a.map(e=>(0,W.jsxs)(Z,{onClick:()=>l(e.code),sx:{display:`flex`,alignItems:`center`,gap:1.5,px:2,py:1,cursor:`pointer`,bgcolor:s===e.code?`action.selected`:`transparent`,"&:hover":{bgcolor:`action.hover`},transition:`background-color 0.15s`},children:[(0,W.jsx)(Q,{sx:{fontSize:`1.4rem`,lineHeight:1,userSelect:`none`},children:e.flag}),(0,W.jsx)(Q,{variant:`body2`,fontWeight:s===e.code?600:400,children:e.name})]},e.code)),(0,W.jsx)(Kb,{}),(0,W.jsxs)(Z,{sx:{display:`flex`,alignItems:`flex-start`,gap:.75,px:2,py:1},children:[(0,W.jsx)(Zv,{sx:{fontSize:14,mt:.25,color:`text.secondary`}}),(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,sx:{lineHeight:1.4},children:[e(`languageSwitcher.disclaimer`),` `,(0,W.jsx)(Jv,{href:G3e,target:`_blank`,rel:`noopener`,sx:{fontSize:`inherit`},children:e(`languageSwitcher.contribute`)})]})]})]})})})]})})}var q3e={name:`home-assistant-matter-hub`,description:``,version:`2.1.0-alpha.740`,private:!1,type:`module`,bin:{"home-assistant-matter-hub":`./dist/backend/cli.js`},author:{name:`riddix`,url:`https://github.com/riddix`},keywords:[`home-assistant`,`homeassistant`,`home`,`assistant`,`apple home`,`google home`,`apple`,`google`,`alexa`,`matter`,`matter.js`,`matterjs`,`project-chip`,`smart`,`smarthome`,`smart-home`],bugs:{url:`https://github.com/riddix/home-assistant-matter-hub/issues`},license:`Apache-2.0`,repository:`github:riddix/home-assistant-matter-hub`,scripts:{cleanup:`npx rimraf node_modules dist pack LICENSE README.md`,build:`node build.js`,bundle:`pnpm pack --out package.tgz`,postbuild:`pnpm run bundle`,test:`vitest run`,prestart:`pnpm run build`,start:`dotenvx run -f ../../.env -- ./dist/backend/cli.js start`},dependencies:{"@matter/main":`0.17.2`,"@matter/nodejs":`0.17.2`,"@matter/general":`0.17.2`,ajv:`8.18.0`,archiver:`7.0.1`,color:`5.0.3`,debounce:`3.0.0`,express:`5.2.1`,"express-basic-auth":`1.2.1`,"express-ip-access-control":`1.1.3`,"home-assistant-js-websocket":`9.6.0`,"lodash-es":`4.18.1`,multer:`2.1.1`,nocache:`4.0.0`,unzipper:`0.12.3`,ws:`8.21.0`,yargs:`18.0.0`},devDependencies:{"@home-assistant-matter-hub/backend":`workspace:*`,"@home-assistant-matter-hub/frontend":`workspace:*`,"@home-assistant-matter-hub/common":`workspace:*`,"@types/lodash-es":`^4.17.12`},overrides:{minimatch:`9.0.7`,"path-to-regexp":`^8.4.0`,glob:`^13.0.0`},nx:{targets:{start:{cache:!1,dependsOn:[`build`]},pack:{cache:!0,dependsOn:[`build`],outputs:[`{projectRoot}/pack`]},build:{inputs:[`^default`,`default`,`{workspaceRoot}/README.md`,`{workspaceRoot}/LICENSE`],outputs:[`{projectRoot}/dist`,`{projectRoot}/README.md`,`{projectRoot}/LICENSE`]}}}};function J3e(){let e=`2.1.0-alpha.740`,[t,n]=(0,C.useState)(null);(0,C.useEffect)(()=>{fetch(`api/health`).then(e=>e.ok?e.json():null).then(e=>{e?.version&&n(e.version)}).catch(()=>{})},[]);let r=(0,C.useMemo)(()=>!t||e===`0.0.0-dev`?!1:e!==t,[t]);return(0,C.useMemo)(()=>({name:q3e.name,version:t??e,frontendVersion:e,backendVersion:t,versionMismatch:r}),[t,r])}var Y3e=()=>{let{t:e}=hs(),t=[{name:e(`footer.github`),url:Y9.githubRepository},{name:e(`footer.documentation`),url:Y9.documentation},{name:e(`footer.support`),url:Y9.support}];return(0,W.jsxs)(Z9,{sx:{mt:16,mb:4},children:[(0,W.jsx)(Kb,{sx:{mt:4,mb:4}}),(0,W.jsx)(Rv,{container:!0,spacing:2,justifyContent:`center`,children:t.map((e,t)=>(0,W.jsx)(Rv,{size:{xs:12,sm:`auto`},children:(0,W.jsx)(_v,{fullWidth:!0,size:`small`,variant:`outlined`,component:Jv,href:e.url,target:`_blank`,children:e.name})},t.toString()))})]})};function X3e(e){return zd(`MuiAppBar`,e)}K(`MuiAppBar`,[`root`,`positionFixed`,`positionAbsolute`,`positionSticky`,`positionStatic`,`positionRelative`,`colorDefault`,`colorPrimary`,`colorSecondary`,`colorInherit`,`colorTransparent`,`colorError`,`colorInfo`,`colorSuccess`,`colorWarning`]);var Z3e=e=>{let{color:t,position:n,classes:r}=e;return pp({root:[`root`,`color${Y(t)}`,`position${Y(n)}`]},X3e,r)},Q3e=(e,t)=>e?`${e.replace(`)`,``)}, ${t})`:t,$3e=J(qm,{name:`MuiAppBar`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`position${Y(n.position)}`],t[`color${Y(n.color)}`]]}})(Lm(({theme:e})=>({display:`flex`,flexDirection:`column`,width:`100%`,boxSizing:`border-box`,flexShrink:0,variants:[{props:{position:`fixed`},style:{position:`fixed`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0,"@media print":{position:`absolute`}}},{props:{position:`absolute`},style:{position:`absolute`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0}},{props:{position:`sticky`},style:{position:`sticky`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0}},{props:{position:`static`},style:{position:`static`}},{props:{position:`relative`},style:{position:`relative`}},{props:{color:`inherit`},style:{"--AppBar-color":`inherit`,color:`var(--AppBar-color)`}},{props:{color:`default`},style:{"--AppBar-background":e.vars?e.vars.palette.AppBar.defaultBg:e.palette.grey[100],"--AppBar-color":e.vars?e.vars.palette.text.primary:e.palette.getContrastText(e.palette.grey[100]),...e.applyStyles(`dark`,{"--AppBar-background":e.vars?e.vars.palette.AppBar.defaultBg:e.palette.grey[900],"--AppBar-color":e.vars?e.vars.palette.text.primary:e.palette.getContrastText(e.palette.grey[900])})}},...Object.entries(e.palette).filter(Km([`contrastText`])).map(([t])=>({props:{color:t},style:{"--AppBar-background":(e.vars??e).palette[t].main,"--AppBar-color":(e.vars??e).palette[t].contrastText}})),{props:e=>e.enableColorOnDark===!0&&![`inherit`,`transparent`].includes(e.color),style:{backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`}},{props:e=>e.enableColorOnDark===!1&&![`inherit`,`transparent`].includes(e.color),style:{backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`,...e.applyStyles(`dark`,{backgroundColor:e.vars?Q3e(e.vars.palette.AppBar.darkBg,`var(--AppBar-background)`):null,color:e.vars?Q3e(e.vars.palette.AppBar.darkColor,`var(--AppBar-color)`):null})}},{props:{color:`transparent`},style:{"--AppBar-background":`transparent`,"--AppBar-color":`inherit`,backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`,...e.applyStyles(`dark`,{backgroundImage:`none`})}}]}))),e6e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiAppBar`}),{className:r,color:i=`primary`,enableColorOnDark:a=!1,position:o=`fixed`,...s}=n,c={...n,color:i,position:o,enableColorOnDark:a};return(0,W.jsx)($3e,{square:!0,component:`header`,ownerState:c,elevation:4,className:G(Z3e(c).root,r,o===`fixed`&&`mui-fixed`),ref:t,...s})}),t6e={visibility:`hidden`};function n6e(e,t,n){let r=n&&n.getBoundingClientRect(),i=rh(t),a=t.style.transform,o=t.style.transition;t.style.transition=``,t.style.transform=``;let s=t.getBoundingClientRect(),c=i.getComputedStyle(t).getPropertyValue(`transform`);t.style.transform=a,t.style.transition=o;let l=0,u=0;if(c&&c!==`none`&&typeof c==`string`){let e=c.split(`(`)[1].split(`)`)[0].split(`,`);l=parseInt(e[4],10),u=parseInt(e[5],10)}return e===`left`?r?`translateX(${r.right+l-s.left}px)`:`translateX(${i.innerWidth+l-s.left}px)`:e===`right`?r?`translateX(-${s.right-r.left-l}px)`:`translateX(-${s.left+s.width-l}px)`:e===`up`?r?`translateY(${r.bottom+u-s.top}px)`:`translateY(${i.innerHeight+u-s.top}px)`:r?`translateY(-${s.top-r.top+s.height-u}px)`:`translateY(-${s.top+s.height-u}px)`}function r6e(e){return typeof e==`function`?e():e}function Q9(e,t,n){let r=n6e(e,t,r6e(n));r&&(t.style.transform=r)}var i6e=C.forwardRef(function(e,t){let n=Em(),r={enter:n.transitions.easing.easeOut,exit:n.transitions.easing.sharp},i={enter:n.transitions.duration.enteringScreen,exit:n.transitions.duration.leavingScreen},{addEndListener:a,appear:o=!0,children:s,container:c,direction:l=`down`,easing:u=r,in:d,onEnter:f,onEntered:p,onEntering:m,onExit:h,onExited:g,onExiting:_,style:v,timeout:y=i,...b}=e,x=C.useRef(null),S=dh(qh(s),x,t),w=Zh(x,(e,t)=>{Q9(l,e,c),Xh(e),f&&f(e,t)}),T=Zh(x,(e,t)=>{let r=$h({timeout:y,style:v,easing:u},{mode:`enter`});e.style.transition=n.transitions.create(`transform`,r),e.style.transform=`none`,m&&m(e,t)}),E=Zh(x,p),D=Zh(x,_),O=Zh(x,e=>{let t=$h({timeout:y,style:v,easing:u},{mode:`exit`});e.style.transition=n.transitions.create(`transform`,t),Q9(l,e,c),h&&h(e)}),k=Zh(x,e=>{e.style.transition=``,g&&g(e)}),A=e=>{a&&a(x.current,e)},j=C.useCallback(()=>{x.current&&Q9(l,x.current,c)},[l,c]);return C.useEffect(()=>{if(d||l===`down`||l===`right`)return;let e=Qm(()=>{x.current&&Q9(l,x.current,c)}),t=rh(x.current);return t.addEventListener(`resize`,e),()=>{e.clear(),t.removeEventListener(`resize`,e)}},[l,d,c]),C.useEffect(()=>{d||j()},[d,j]),(0,W.jsx)(Dh,{nodeRef:x,onEnter:w,onEntered:E,onEntering:T,onExit:O,onExited:k,onExiting:D,addEndListener:A,appear:o,in:d,timeout:y,...b,children:(e,{ownerState:t,...n})=>{let r;return r=e===`exited`&&!d?v||s.props.style?{visibility:`hidden`,...v,...s.props.style}:t6e:v&&s.props.style?{...v,...s.props.style}:v||s.props.style,C.cloneElement(s,{ref:S,style:r,...n})}})});function a6e(e){return zd(`MuiDrawer`,e)}K(`MuiDrawer`,[`root`,`docked`,`paper`,`anchorLeft`,`anchorRight`,`anchorTop`,`anchorBottom`,`paperAnchorLeft`,`paperAnchorRight`,`paperAnchorTop`,`paperAnchorBottom`,`paperAnchorDockedLeft`,`paperAnchorDockedRight`,`paperAnchorDockedTop`,`paperAnchorDockedBottom`,`modal`]);var o6e=(e,t)=>{let{ownerState:n}=e;return[t.root,(n.variant===`permanent`||n.variant===`persistent`)&&t.docked,n.variant===`temporary`&&t.modal]},s6e=e=>{let{classes:t,anchor:n,variant:r}=e;return pp({root:[`root`,`anchor${Y(n)}`],docked:[(r===`permanent`||r===`persistent`)&&`docked`],modal:[`modal`],paper:[`paper`,`paperAnchor${Y(n)}`,r!==`temporary`&&`paperAnchorDocked${Y(n)}`]},a6e,t)},c6e=J(Rb,{name:`MuiDrawer`,slot:`Root`,overridesResolver:o6e})(Lm(({theme:e})=>({zIndex:(e.vars||e).zIndex.drawer}))),l6e=J(`div`,{shouldForwardProp:km,name:`MuiDrawer`,slot:`Docked`,skipVariantsResolver:!1,overridesResolver:o6e})({flex:`0 0 auto`}),u6e=J(qm,{name:`MuiDrawer`,slot:`Paper`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.paper,t[`paperAnchor${Y(n.anchor)}`],n.variant!==`temporary`&&t[`paperAnchorDocked${Y(n.anchor)}`]]}})(Lm(({theme:e})=>({overflowY:`auto`,display:`flex`,flexDirection:`column`,height:`100%`,flex:`1 0 auto`,zIndex:(e.vars||e).zIndex.drawer,WebkitOverflowScrolling:`touch`,position:`fixed`,top:0,outline:0,variants:[{props:{anchor:`left`},style:{left:0}},{props:{anchor:`top`},style:{top:0,left:0,right:0,height:`auto`,maxHeight:`100%`}},{props:{anchor:`right`},style:{right:0}},{props:{anchor:`bottom`},style:{top:`auto`,left:0,bottom:0,right:0,height:`auto`,maxHeight:`100%`}},{props:({ownerState:e})=>e.anchor===`left`&&e.variant!==`temporary`,style:{borderRight:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`top`&&e.variant!==`temporary`,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`right`&&e.variant!==`temporary`,style:{borderLeft:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`bottom`&&e.variant!==`temporary`,style:{borderTop:`1px solid ${(e.vars||e).palette.divider}`}}]}))),d6e={left:`right`,right:`left`,top:`down`,bottom:`up`};function f6e(e){return[`left`,`right`].includes(e)}function p6e({direction:e},t){return e===`rtl`&&f6e(t)?d6e[t]:t}var m6e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiDrawer`}),r=Em(),i=Mf(),a={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{anchor:o=`left`,BackdropProps:s,children:c,className:l,elevation:u=16,hideBackdrop:d=!1,ModalProps:{BackdropProps:f,...p}={},onClose:m,open:h=!1,PaperProps:g={},SlideProps:_,TransitionComponent:v,transitionDuration:y=a,variant:b=`temporary`,slots:x={},slotProps:S={},...w}=n,T=C.useRef(!1);C.useEffect(()=>{T.current=!0},[]);let E=p6e({direction:i?`rtl`:`ltr`},o),D=o,O={...n,anchor:D,elevation:u,open:h,variant:b,...w},k=s6e(O),A={slots:{transition:v,...x},slotProps:{paper:g,transition:_,...S,backdrop:fh(S.backdrop||{...s,...f},{transitionDuration:y})}},[j,M]=Gm(`root`,{ref:t,elementType:c6e,className:G(k.root,k.modal,l),shouldForwardComponentProp:!0,ownerState:O,externalForwardedProps:{...A,...w,...p},additionalProps:{open:h,onClose:m,hideBackdrop:d,slots:{backdrop:A.slots.backdrop},slotProps:{backdrop:A.slotProps.backdrop}}}),[N,P]=Gm(`paper`,{elementType:u6e,shouldForwardComponentProp:!0,className:G(k.paper,g.className),ownerState:O,externalForwardedProps:A,additionalProps:{elevation:b===`temporary`?u:0,square:!0,...b===`temporary`&&{role:`dialog`,"aria-modal":`true`}}}),[F,I]=Gm(`docked`,{elementType:l6e,ref:t,className:G(k.root,k.docked,l),ownerState:O,externalForwardedProps:A,additionalProps:w}),[L,R]=Gm(`transition`,{elementType:i6e,ownerState:O,externalForwardedProps:A,additionalProps:{in:h,direction:d6e[E],timeout:y,appear:T.current}}),ee=(0,W.jsx)(N,{...P,children:c});if(b===`permanent`)return(0,W.jsx)(F,{...I,children:ee});let z=(0,W.jsx)(L,{...R,children:ee});return b===`persistent`?(0,W.jsx)(F,{...I,children:z}):(0,W.jsx)(j,{...M,children:z})}),h6e=sf({themeId:Tm}),g6e={error:Tx,warn:Qv,info:xb,debug:$T},_6e=({open:e,onClose:t})=>{let{t:n}=hs(),r=Em(),i=(0,C.useMemo)(()=>({error:r.palette.error.main,warn:r.palette.warning.main,info:r.palette.info.main,debug:r.palette.secondary.main}),[r]),[a,o]=(0,C.useState)([]),[s,c]=(0,C.useState)(!0),[l,u]=(0,C.useState)(`error,warn,info`.split(`,`)),[d,f]=(0,C.useState)(``),[p,m]=(0,C.useState)(!0),h=(0,C.useCallback)(async()=>{try{let e=new URLSearchParams({level:l.join(`,`),limit:`500`,...d&&{search:d}}),t=await fetch(`api/logs?${e}`);t.ok&&o((await t.json()).entries)}catch(e){console.error(`Failed to fetch logs:`,e)}finally{c(!1)}},[l,d]);(0,C.useEffect)(()=>{e&&h()},[e,h]),(0,C.useEffect)(()=>{if(!p||!e)return;let t=setInterval(h,5e3);return()=>clearInterval(t)},[p,e,h]);let g=e=>{u(Array.isArray(e.target.value)?e.target.value:[e.target.value])},_=e=>{f(e.target.value)},v=async()=>{try{await fetch(`api/logs`,{method:`DELETE`}),o([])}catch(e){console.error(`Failed to clear logs:`,e)}},y=e=>(0,W.jsx)(g6e[e]||xb,{sx:{fontSize:16,color:i[e]}});return(0,W.jsxs)(Vb,{open:e,onClose:t,maxWidth:`lg`,fullWidth:!0,children:[(0,W.jsxs)(Wb,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)($T,{}),n(`logs.title`),(0,W.jsx)(Z,{sx:{flexGrow:1}}),(0,W.jsx)(mb,{title:n(`logs.autoRefresh`),children:(0,W.jsx)(kv,{label:p?`Auto`:`Manual`,color:p?`success`:`default`,size:`small`,onClick:()=>m(!p),sx:{cursor:`pointer`}})}),(0,W.jsx)(Uh,{onClick:t,children:(0,W.jsx)(tE,{})})]}),(0,W.jsxs)(Ub,{children:[(0,W.jsx)(Gv,{spacing:2,sx:{mb:2},children:(0,W.jsxs)(Gv,{direction:`row`,spacing:2,alignItems:`center`,children:[(0,W.jsxs)(Mv,{size:`small`,sx:{minWidth:200},children:[(0,W.jsx)(Hx,{children:n(`logs.logLevel`)}),(0,W.jsxs)(wS,{value:l,label:n(`logs.logLevel`),onChange:g,multiple:!0,renderValue:e=>(0,W.jsx)(Z,{sx:{display:`flex`,flexWrap:`wrap`,gap:.5},children:(Array.isArray(e)?e:[e]).map(e=>(0,W.jsx)(kv,{label:e.toUpperCase(),size:`small`,sx:{backgroundColor:i[e],color:`white`}},e))}),children:[(0,W.jsx)(TS,{value:`error`,children:n(`logs.error`)}),(0,W.jsx)(TS,{value:`warn`,children:n(`logs.warning`)}),(0,W.jsx)(TS,{value:`info`,children:n(`logs.info`)}),(0,W.jsx)(TS,{value:`debug`,children:n(`logs.debug`)})]})]}),(0,W.jsx)(OS,{size:`small`,placeholder:n(`logs.searchPlaceholder`),value:d,onChange:_,sx:{flexGrow:1}}),(0,W.jsx)(_v,{variant:`outlined`,onClick:h,children:n(`common.refresh`)}),(0,W.jsx)(_v,{variant:`outlined`,color:`error`,onClick:v,children:n(`common.delete`)})]})}),(0,W.jsx)(Z,{sx:{height:400,overflow:`auto`,backgroundColor:`background.paper`,border:1,borderColor:`divider`,borderRadius:1,p:1},children:s?(0,W.jsx)(Z,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,W.jsxs)(Q,{children:[n(`common.loading`),`...`]})}):a.length===0?(0,W.jsx)(Z,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,W.jsx)(Q,{color:`text.secondary`,children:n(`logs.noResults`)})}):(0,W.jsx)(Gv,{spacing:1,children:a.map((e,t)=>(0,W.jsxs)(Z,{sx:{p:1,borderRadius:1,backgroundColor:`action.hover`,fontFamily:`monospace`,fontSize:`0.875rem`,wordBreak:`break-all`},children:[(0,W.jsxs)(Z,{sx:{display:`flex`,alignItems:`center`,gap:1,mb:.5},children:[y(e.level),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:new Date(e.timestamp).toLocaleString()}),(0,W.jsx)(kv,{label:e.level.toUpperCase(),size:`small`,sx:{backgroundColor:i[e.level],color:r.palette.getContrastText(i[e.level]??r.palette.grey[500]),fontSize:`0.7rem`,height:20}})]}),(0,W.jsx)(Q,{sx:{ml:3},children:e.message}),e.context&&(0,W.jsx)(Q,{sx:{ml:3,color:`text.secondary`,fontSize:`0.8rem`},children:JSON.stringify(e.context,null,2)})]},`${e.timestamp}-${e.level}-${t}`))})})]}),(0,W.jsx)(Hb,{children:(0,W.jsx)(_v,{onClick:t,children:n(`common.close`)})})]})};function v6e(){let{t:e}=hs(),{isConnected:t}=ev(),[n,r]=(0,C.useState)(null),[i,a]=(0,C.useState)(!1);(0,C.useEffect)(()=>{let e=async()=>{try{let e=await fetch(`api/health`);e.ok?(r(await e.json()),a(!1)):a(!0)}catch{a(!0)}};e();let t=setInterval(e,3e4);return()=>clearInterval(t)},[]);let o=e=>{let t=Math.floor(e/3600),n=Math.floor(e%3600/60);return t>0?`${t}h ${n}m`:`${n}m`},s=n?.status===`healthy`&&!i,c=n?.services?.bridges,l=c&&c.total>0&&c.running===c.total,u=c&&c.total===0,d=n?(0,W.jsxs)(Z,{sx:{p:.5},children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e(`health.version`),`:`]}),` `,n.version??e(`status.unknown`)]}),(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e(`health.uptime`),`:`]}),` `,o(n.uptime??0)]}),n.services?.bridges&&(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e(`nav.bridges`),`:`]}),` `,n.services.bridges.running??0,`/`,n.services.bridges.total??0,` `,e(`common.running`).toLowerCase(),(n.services.bridges.stopped??0)>0&&` (${n.services.bridges.stopped} ${e(`common.stopped`).toLowerCase()})`]}),n.services?.homeAssistant&&(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e(`health.homeAssistant`),`:`]}),` `,n.services.homeAssistant.connected?e(`health.connected`):e(`health.disconnected`)]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`strong`,{children:`WebSocket:`}),` `,e(t?`health.connected`:`health.disconnected`)]})]}):e(`status.loadingHealth`);return(0,W.jsx)(mb,{title:d,arrow:!0,children:(0,W.jsx)(kv,{icon:i||!s?(0,W.jsx)(Tx,{fontSize:`small`}):l?(0,W.jsx)(fv,{fontSize:`small`}):(0,W.jsx)(wb,{fontSize:`small`}),label:e(i?`status.error`:s?t?u?`status.noBridges`:l?`common.online`:`common.starting`:`common.offline`:`status.unhealthy`),color:i||!s?`error`:!l||!t?`warning`:`success`,size:`small`,variant:`filled`,sx:{borderRadius:1,fontWeight:600,"& .MuiChip-icon":{color:`inherit`}}})})}var y6e=e=>(0,W.jsx)(`svg`,{viewBox:`0 0 91 89`,xmlSpace:`preserve`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,W.jsxs)(`g`,{style:{display:`inline`},children:[(0,W.jsx)(`path`,{style:{fill:`#18bcf2`,fillOpacity:1,strokeWidth:.266194},d:`m 49.149143,1.473171 38.513568,38.536435 c 0,0 1.248354,1.186052 2.207681,3.092371 0.959329,1.906323 1.10864,4.600698 1.10864,4.600698 v 36.786372 c 0,0 -0.01549,1.748506 -1.49842,3.050572 -1.482931,1.302064 -3.333077,1.362947 -3.333077,1.362947 l -81.325658,7.7e-5 c 0,0 -1.7523855,-0.0091 -3.17112,-1.352526 C -0.07808495,85.913164 0.05953025,84.487808 0.05953025,84.487808 V 47.704546 c 0,0 -0.0018381,-2.218618 0.95921785,-4.315832 0.9610554,-2.097209 2.3010618,-3.355005 2.3010618,-3.355005 L 41.545959,1.4719546 c 0,0 1.465224,-1.46837077 3.753488,-1.46837077 2.288268,0 3.849696,1.46958717 3.849696,1.46958717 z`}),(0,W.jsx)(`path`,{style:{fill:`#ffffff`,fillOpacity:1,strokeWidth:.175841},d:`m 31.689717,32.051124 c 2.813363,2.331095 6.157331,3.89845 9.721813,4.556421 V 17.180647 l 3.873694,-2.282955 3.870527,2.282955 V 36.60772 c 3.565364,-0.658847 6.910387,-2.226204 9.725159,-4.556417 l 7.032345,4.154609 c -11.437354,11.557779 -29.852321,11.557779 -41.290025,0 z m 8.546732,49.60988 C 44.314996,65.760441 35.09933,49.470196 19.574984,45.139543 v 8.312381 c 3.383916,1.32244 6.386113,3.496288 8.728705,6.320026 L 11.83076,69.485301 v 4.56907 l 3.873697,2.270836 16.469936,-9.713534 c 1.224356,3.48294 1.56683,7.225375 0.996449,10.879778 z M 70.977694,45.139543 c -15.515726,4.34014 -24.72189,20.626696 -20.643519,36.521461 l 7.047658,-4.15742 c -0.569325,-3.654411 -0.2265,-7.3965 0.996449,-10.87979 l 16.457611,9.701233 3.870711,-2.283125 v -4.55677 L 62.233673,59.77195 c 2.342772,-2.822684 5.34497,-4.996533 8.728708,-6.320026 z`})]})}),b6e=e=>{let t=J3e();return(0,W.jsxs)(Z,{component:ta,to:Y9.dashboard,sx:{display:`flex`,alignItems:`center`,justifyContent:e.large?`flex-start`:`center`,flexGrow:1,textDecoration:`none`,color:`inherit`},children:[(0,W.jsx)(y6e,{style:{height:`40px`}}),(0,W.jsx)(Q,{variant:`inherit`,component:`span`,sx:{mr:1,ml:1},children:t.name.split(`-`).map(Y).join(`-`)}),e.large&&(0,W.jsx)(Q,{variant:`caption`,component:`span`,children:t.version})]})},x6e=()=>{let e=h6e(`(min-width:600px)`),{mode:t,setMode:n}=Im(),[r,i]=(0,C.useState)(!1),[a,o]=(0,C.useState)(!1),s=Cr(),c=br(),l=e=>e?e===`/`?c.pathname===`/`:c.pathname.startsWith(e):!1,u=()=>{n(t===`dark`?`light`:`dark`)},{t:d}=hs(),f=[{label:d(`dashboard.title`),icon:(0,W.jsx)(oE,{}),to:Y9.dashboard},{label:d(`nav.bridges`),icon:(0,W.jsx)(sE,{}),to:Y9.bridges},{label:d(`nav.devices`),icon:(0,W.jsx)(_b,{}),to:Y9.devices},{label:d(`nav.standaloneDevices`,`Standalone Devices`),icon:(0,W.jsx)(Khe,{}),to:Y9.standaloneDevices},{label:d(`nav.networkMap`),icon:(0,W.jsx)(JT,{}),to:Y9.networkMap},{label:d(`nav.startupOrder`),icon:(0,W.jsx)(pv,{}),to:Y9.startup},{label:d(`nav.lockCredentials`),icon:(0,W.jsx)(kT,{}),to:Y9.lockCredentials},{label:d(`nav.filterReference`),icon:(0,W.jsx)(cE,{}),to:Y9.labels},{label:`Plugins`,icon:(0,W.jsx)(iE,{}),to:Y9.plugins},{label:d(`nav.settings`),icon:(0,W.jsx)(RT,{}),to:Y9.settings},{label:d(t===`dark`?`nav.lightMode`:`nav.darkMode`),icon:t===`dark`?(0,W.jsx)(zhe,{}):(0,W.jsx)(Ehe,{}),onClick:u},{label:d(`nav.systemLogs`),icon:(0,W.jsx)($T,{}),onClick:()=>i(!0)},{label:d(`nav.health`),icon:(0,W.jsx)(jx,{}),to:Y9.health}],p=e=>{o(!1),e.onClick?e.onClick():e.to&&s(e.to)};return(0,W.jsxs)(Z,{children:[(0,W.jsx)(e6e,{sx:{height:`72px`},children:(0,W.jsx)(F3e,{sx:{paddingLeft:`0 !important`,paddingRight:`0 !important`},children:(0,W.jsxs)(Z9,{sx:{padding:2,height:`100%`,display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,W.jsx)(b6e,{large:e}),e?(0,W.jsxs)(Z,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[f.map(e=>e.to?(0,W.jsx)(mb,{title:e.label,children:(0,W.jsx)(Uh,{component:ta,to:e.to,sx:{color:`inherit`,bgcolor:l(e.to)?`rgba(255,255,255,0.15)`:`transparent`,borderRadius:1},children:e.icon})},e.label):(0,W.jsx)(mb,{title:e.label,children:(0,W.jsx)(Uh,{onClick:e.onClick,sx:{color:`inherit`},children:e.icon})},e.label)),(0,W.jsx)(v6e,{})]}):(0,W.jsxs)(Z,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(v6e,{}),(0,W.jsx)(Uh,{onClick:()=>o(!0),sx:{color:`inherit`},children:(0,W.jsx)(Bhe,{})})]})]})})}),(0,W.jsx)(m6e,{anchor:`right`,open:a,onClose:()=>o(!1),children:(0,W.jsx)(ny,{sx:{width:250},children:f.map(e=>(0,W.jsxs)(Rae,{selected:l(e.to),onClick:()=>p(e),children:[(0,W.jsx)(sy,{children:e.icon}),(0,W.jsx)(ly,{primary:e.label})]},e.label))})}),(0,W.jsx)(_6e,{open:r,onClose:()=>i(!1)})]})},S6e=()=>{let{versionMismatch:e,frontendVersion:t,backendVersion:n}=J3e(),{isConnected:r}=ev();return(0,W.jsxs)(Z,{children:[(0,W.jsx)(x6e,{}),(0,W.jsx)(F3e,{}),e&&(0,W.jsxs)(Kh,{severity:`warning`,variant:`filled`,sx:{borderRadius:0},action:(0,W.jsx)(_v,{color:`inherit`,size:`small`,onClick:()=>window.location.reload(),children:`Reload`}),children:[`Version mismatch: frontend `,t,`, backend `,n,`. Please reload to get the latest UI.`]}),!r&&(0,W.jsx)(Kh,{severity:`error`,variant:`filled`,sx:{borderRadius:0},children:`Connection lost, data may be outdated. Reconnecting…`}),(0,W.jsx)(Z9,{sx:{p:2},children:(0,W.jsx)(I3e,{children:(0,W.jsx)(si,{})})}),(0,W.jsx)(Y3e,{}),(0,W.jsx)(K3e,{})]})},C6e=Cm({colorSchemes:{light:{palette:{primary:{main:`#1976d2`,light:`#42a5f5`,dark:`#1565c0`},secondary:{main:`#9c27b0`,light:`#ba68c8`,dark:`#7b1fa2`},background:{default:`#f5f5f5`,paper:`#ffffff`}}},dark:{palette:{primary:{main:`#90caf9`,light:`#e3f2fd`,dark:`#42a5f5`},secondary:{main:`#ce93d8`,light:`#f3e5f5`,dark:`#ab47bc`},background:{default:`#121212`,paper:`#1e1e1e`}}}},typography:{fontFamily:`"Roboto", "Helvetica", "Arial", sans-serif`,h1:{fontSize:`2.5rem`,fontWeight:500},h2:{fontSize:`2rem`,fontWeight:500},h3:{fontSize:`1.75rem`,fontWeight:500},h4:{fontSize:`1.5rem`,fontWeight:500},h5:{fontSize:`1.25rem`,fontWeight:500},h6:{fontSize:`1rem`,fontWeight:500}},shape:{borderRadius:8},components:{MuiCard:{styleOverrides:{root:{transition:`transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out`,"&:hover":{transform:`translateY(-2px)`,boxShadow:`0 4px 20px rgba(0,0,0,0.12)`}}}},MuiButton:{styleOverrides:{root:{textTransform:`none`,fontWeight:500}}},MuiChip:{styleOverrides:{root:{fontWeight:500}}},MuiAppBar:{styleOverrides:{root:{backgroundImage:`none`}}}}}),$9=document.getElementsByTagName(`base`)[0]?.href?.replace(/\/$/,``);$9?.startsWith(`http`)&&($9=new URL($9).pathname);var w6e=Xi([{path:`/`,element:(0,W.jsx)(S6e,{}),children:O3e}],{basename:$9});(0,S.createRoot)(document.getElementById(`root`)).render((0,W.jsx)(C.StrictMode,{children:(0,W.jsx)(L,{store:j3e,children:(0,W.jsxs)(Gee,{theme:C6e,children:[(0,W.jsx)(zee,{}),(0,W.jsx)(Dm,{styles:{".rjsf-field-array > .MuiFormControl-root > .MuiPaper-root > .MuiBox-root > .MuiGrid-root > .MuiGrid-root:has(> .MuiBox-root > .MuiPaper-root > .MuiBox-root > .rjsf-field)":{overflow:`initial !important`,flexGrow:1}}}),(0,W.jsx)(xre,{children:(0,W.jsx)(sne,{children:(0,W.jsx)(xa,{router:w6e})})})]})})}));
469
+ `},g2e={onDragStart(e){let{active:t}=e;return`Picked up draggable item `+t.id+`.`},onDragOver(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was moved over droppable area `+n.id+`.`:`Draggable item `+t.id+` is no longer over a droppable area.`},onDragEnd(e){let{active:t,over:n}=e;return n?`Draggable item `+t.id+` was dropped over droppable area `+n.id:`Draggable item `+t.id+` was dropped.`},onDragCancel(e){let{active:t}=e;return`Dragging was cancelled. Draggable item `+t.id+` was dropped.`}};function _2e(e){let{announcements:t=g2e,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=h2e}=e,{announce:a,announcement:o}=d2e(),s=p9(`DndLiveRegion`),[c,l]=(0,C.useState)(!1);if((0,C.useEffect)(()=>{l(!0)},[]),p2e((0,C.useMemo)(()=>({onDragStart(e){let{active:n}=e;a(t.onDragStart({active:n}))},onDragMove(e){let{active:n,over:r}=e;t.onDragMove&&a(t.onDragMove({active:n,over:r}))},onDragOver(e){let{active:n,over:r}=e;a(t.onDragOver({active:n,over:r}))},onDragEnd(e){let{active:n,over:r}=e;a(t.onDragEnd({active:n,over:r}))},onDragCancel(e){let{active:n,over:r}=e;a(t.onDragCancel({active:n,over:r}))}}),[a,t])),!c)return null;let u=C.createElement(C.Fragment,null,C.createElement(l2e,{id:r,value:i.draggable}),C.createElement(u2e,{id:s,announcement:o}));return n?(0,ba.createPortal)(u,n):u}var y9;(function(e){e.DragStart=`dragStart`,e.DragMove=`dragMove`,e.DragEnd=`dragEnd`,e.DragCancel=`dragCancel`,e.DragOver=`dragOver`,e.RegisterDroppable=`registerDroppable`,e.SetDroppableDisabled=`setDroppableDisabled`,e.UnregisterDroppable=`unregisterDroppable`})(y9||={});function b9(){}function v2e(e,t){return(0,C.useMemo)(()=>({sensor:e,options:t??{}}),[e,t])}function y2e(){var e=[...arguments];return(0,C.useMemo)(()=>[...e].filter(e=>e!=null),[...e])}var x9=Object.freeze({x:0,y:0});function b2e(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function x2e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function S2e(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function C2e(e){let{left:t,top:n,height:r,width:i}=e;return[{x:t,y:n},{x:t+i,y:n},{x:t,y:n+r},{x:t+i,y:n+r}]}function w2e(e,t){if(!e||e.length===0)return null;let[n]=e;return t?n[t]:n}function T2e(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}var E2e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=T2e(t,t.left,t.top),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=b2e(T2e(r),i);a.push({id:t,data:{droppableContainer:e,value:n}})}}return a.sort(x2e)},D2e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=C2e(t),a=[];for(let e of r){let{id:t}=e,r=n.get(t);if(r){let n=C2e(r),o=i.reduce((e,t,r)=>e+b2e(n[r],t),0),s=Number((o/4).toFixed(4));a.push({id:t,data:{droppableContainer:e,value:s}})}}return a.sort(x2e)};function O2e(e,t){let n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height),o=i-r,s=a-n;if(r<i&&n<a){let n=t.width*t.height,r=e.width*e.height,i=o*s,a=i/(n+r-i);return Number(a.toFixed(4))}return 0}var k2e=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e,i=[];for(let e of r){let{id:r}=e,a=n.get(r);if(a){let n=O2e(a,t);n>0&&i.push({id:r,data:{droppableContainer:e,value:n}})}}return i.sort(S2e)};function A2e(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function j2e(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:x9}function M2e(e){return function(t){return[...arguments].slice(1).reduce((t,n)=>({...t,top:t.top+e*n.y,bottom:t.bottom+e*n.y,left:t.left+e*n.x,right:t.right+e*n.x}),{...t})}}var N2e=M2e(1);function P2e(e){if(e.startsWith(`matrix3d(`)){let t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith(`matrix(`)){let t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function F2e(e,t,n){let r=P2e(t);if(!r)return e;let{scaleX:i,scaleY:a,x:o,y:s}=r,c=e.left-o-(1-i)*parseFloat(n),l=e.top-s-(1-a)*parseFloat(n.slice(n.indexOf(` `)+1)),u=i?e.width/i:e.width,d=a?e.height/a:e.height;return{width:u,height:d,top:l,right:c+u,bottom:l+d,left:c}}var I2e={ignoreTransform:!1};function S9(e,t){t===void 0&&(t=I2e);let n=e.getBoundingClientRect();if(t.ignoreTransform){let{transform:t,transformOrigin:r}=n9(e).getComputedStyle(e);t&&(n=F2e(n,t,r))}let{top:r,left:i,width:a,height:o,bottom:s,right:c}=n;return{top:r,left:i,width:a,height:o,bottom:s,right:c}}function L2e(e){return S9(e,{ignoreTransform:!0})}function R2e(e){let t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function z2e(e,t){return t===void 0&&(t=n9(e).getComputedStyle(e)),t.position===`fixed`}function B2e(e,t){t===void 0&&(t=n9(e).getComputedStyle(e));let n=/(auto|scroll|overlay)/;return[`overflow`,`overflowX`,`overflowY`].some(e=>{let r=t[e];return typeof r==`string`?n.test(r):!1})}function C9(e,t){let n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(r9(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!i9(i)||t2e(i)||n.includes(i))return n;let a=n9(e).getComputedStyle(i);return i!==e&&B2e(i,a)&&n.push(i),z2e(i,a)?n:r(i.parentNode)}return e?r(e):n}function V2e(e){let[t]=C9(e,1);return t??null}function w9(e){return!$7||!e?null:e9(e)?e:t9(e)?r9(e)||e===a9(e).scrollingElement?window:i9(e)?e:null:null}function H2e(e){return e9(e)?e.scrollX:e.scrollLeft}function U2e(e){return e9(e)?e.scrollY:e.scrollTop}function T9(e){return{x:H2e(e),y:U2e(e)}}var E9;(function(e){e[e.Forward=1]=`Forward`,e[e.Backward=-1]=`Backward`})(E9||={});function W2e(e){return!$7||!e?!1:e===document.scrollingElement}function G2e(e){let t={x:0,y:0},n=W2e(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height};return{isTop:e.scrollTop<=t.y,isLeft:e.scrollLeft<=t.x,isBottom:e.scrollTop>=r.y,isRight:e.scrollLeft>=r.x,maxScroll:r,minScroll:t}}var K2e={x:.2,y:.2};function q2e(e,t,n,r,i){let{top:a,left:o,right:s,bottom:c}=n;r===void 0&&(r=10),i===void 0&&(i=K2e);let{isTop:l,isBottom:u,isLeft:d,isRight:f}=G2e(e),p={x:0,y:0},m={x:0,y:0},h={height:t.height*i.y,width:t.width*i.x};return!l&&a<=t.top+h.height?(p.y=E9.Backward,m.y=r*Math.abs((t.top+h.height-a)/h.height)):!u&&c>=t.bottom-h.height&&(p.y=E9.Forward,m.y=r*Math.abs((t.bottom-h.height-c)/h.height)),!f&&s>=t.right-h.width?(p.x=E9.Forward,m.x=r*Math.abs((t.right-h.width-s)/h.width)):!d&&o<=t.left+h.width&&(p.x=E9.Backward,m.x=r*Math.abs((t.left+h.width-o)/h.width)),{direction:p,speed:m}}function J2e(e){if(e===document.scrollingElement){let{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}let{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function Y2e(e){return e.reduce((e,t)=>m9(e,T9(t)),x9)}function X2e(e){return e.reduce((e,t)=>e+H2e(t),0)}function Z2e(e){return e.reduce((e,t)=>e+U2e(t),0)}function Q2e(e,t){if(t===void 0&&(t=S9),!e)return;let{top:n,left:r,bottom:i,right:a}=t(e);V2e(e)&&(i<=0||a<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:`center`,inline:`center`})}var $2e=[[`x`,[`left`,`right`],X2e],[`y`,[`top`,`bottom`],Z2e]],D9=class{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;let n=C9(t),r=Y2e(n);this.rect={...e},this.width=e.width,this.height=e.height;for(let[e,t,i]of $2e)for(let a of t)Object.defineProperty(this,a,{get:()=>{let t=i(n),o=r[e]-t;return this.rect[a]+o},enumerable:!0});Object.defineProperty(this,`rect`,{enumerable:!1})}},O9=class{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(e=>this.target?.removeEventListener(...e))},this.target=e}add(e,t,n){var r;(r=this.target)==null||r.addEventListener(e,t,n),this.listeners.push([e,t,n])}};function e4e(e){let{EventTarget:t}=n9(e);return e instanceof t?e:a9(e)}function k9(e,t){let n=Math.abs(e.x),r=Math.abs(e.y);return typeof t==`number`?Math.sqrt(n**2+r**2)>t:`x`in t&&`y`in t?n>t.x&&r>t.y:`x`in t?n>t.x:`y`in t?r>t.y:!1}var A9;(function(e){e.Click=`click`,e.DragStart=`dragstart`,e.Keydown=`keydown`,e.ContextMenu=`contextmenu`,e.Resize=`resize`,e.SelectionChange=`selectionchange`,e.VisibilityChange=`visibilitychange`})(A9||={});function t4e(e){e.preventDefault()}function n4e(e){e.stopPropagation()}var j9;(function(e){e.Space=`Space`,e.Down=`ArrowDown`,e.Right=`ArrowRight`,e.Left=`ArrowLeft`,e.Up=`ArrowUp`,e.Esc=`Escape`,e.Enter=`Enter`,e.Tab=`Tab`})(j9||={});var r4e={start:[j9.Space,j9.Enter],cancel:[j9.Esc],end:[j9.Space,j9.Enter,j9.Tab]},i4e=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case j9.Right:return{...n,x:n.x+25};case j9.Left:return{...n,x:n.x-25};case j9.Down:return{...n,y:n.y+25};case j9.Up:return{...n,y:n.y-25}}},M9=class{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;let{event:{target:t}}=e;this.props=e,this.listeners=new O9(a9(t)),this.windowListeners=new O9(n9(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(A9.Resize,this.handleCancel),this.windowListeners.add(A9.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(A9.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&Q2e(n),t(x9)}handleKeyDown(e){if(g9(e)){let{active:t,context:n,options:r}=this.props,{keyboardCodes:i=r4e,coordinateGetter:a=i4e,scrollBehavior:o=`smooth`}=r,{code:s}=e;if(i.end.includes(s)){this.handleEnd(e);return}if(i.cancel.includes(s)){this.handleCancel(e);return}let{collisionRect:c}=n.current,l=c?{x:c.left,y:c.top}:x9;this.referenceCoordinates||=l;let u=a(e,{active:t,context:n.current,currentCoordinates:l});if(u){let t=h9(u,l),r={x:0,y:0},{scrollableAncestors:i}=n.current;for(let n of i){let i=e.code,{isTop:a,isRight:s,isLeft:c,isBottom:l,maxScroll:d,minScroll:f}=G2e(n),p=J2e(n),m={x:Math.min(i===j9.Right?p.right-p.width/2:p.right,Math.max(i===j9.Right?p.left:p.left+p.width/2,u.x)),y:Math.min(i===j9.Down?p.bottom-p.height/2:p.bottom,Math.max(i===j9.Down?p.top:p.top+p.height/2,u.y))},h=i===j9.Right&&!s||i===j9.Left&&!c,g=i===j9.Down&&!l||i===j9.Up&&!a;if(h&&m.x!==u.x){let e=n.scrollLeft+t.x,a=i===j9.Right&&e<=d.x||i===j9.Left&&e>=f.x;if(a&&!t.y){n.scrollTo({left:e,behavior:o});return}a?r.x=n.scrollLeft-e:r.x=i===j9.Right?n.scrollLeft-d.x:n.scrollLeft-f.x,r.x&&n.scrollBy({left:-r.x,behavior:o});break}else if(g&&m.y!==u.y){let e=n.scrollTop+t.y,a=i===j9.Down&&e<=d.y||i===j9.Up&&e>=f.y;if(a&&!t.x){n.scrollTo({top:e,behavior:o});return}a?r.y=n.scrollTop-e:r.y=i===j9.Down?n.scrollTop-d.y:n.scrollTop-f.y,r.y&&n.scrollBy({top:-r.y,behavior:o});break}}this.handleMove(e,m9(h9(u,this.referenceCoordinates),r))}}}handleMove(e,t){let{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){let{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){let{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}};M9.activators=[{eventName:`onKeyDown`,handler:(e,t,n)=>{let{keyboardCodes:r=r4e,onActivation:i}=t,{active:a}=n,{code:o}=e.nativeEvent;if(r.start.includes(o)){let t=a.activatorNode.current;return t&&e.target!==t?!1:(e.preventDefault(),i?.({event:e.nativeEvent}),!0)}return!1}}];function a4e(e){return!!(e&&`distance`in e)}function o4e(e){return!!(e&&`delay`in e)}var N9=class{constructor(e,t,n){n===void 0&&(n=e4e(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;let{event:r}=e,{target:i}=r;this.props=e,this.events=t,this.document=a9(i),this.documentListeners=new O9(this.document),this.listeners=new O9(n),this.windowListeners=new O9(n9(i)),this.initialCoordinates=_9(r)??x9,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(A9.Resize,this.handleCancel),this.windowListeners.add(A9.DragStart,t4e),this.windowListeners.add(A9.VisibilityChange,this.handleCancel),this.windowListeners.add(A9.ContextMenu,t4e),this.documentListeners.add(A9.Keydown,this.handleKeydown),t){if(n!=null&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(o4e(t)){this.timeoutId=setTimeout(this.handleStart,t.delay),this.handlePending(t);return}if(a4e(t)){this.handlePending(t);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,t){let{active:n,onPending:r}=this.props;r(n,e,this.initialCoordinates,t)}handleStart(){let{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(A9.Click,n4e,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(A9.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){let{activated:t,initialCoordinates:n,props:r}=this,{onMove:i,options:{activationConstraint:a}}=r;if(!n)return;let o=_9(e)??x9,s=h9(n,o);if(!t&&a){if(a4e(a)){if(a.tolerance!=null&&k9(s,a.tolerance))return this.handleCancel();if(k9(s,a.distance))return this.handleStart()}if(o4e(a)&&k9(s,a.tolerance))return this.handleCancel();this.handlePending(a,s);return}e.cancelable&&e.preventDefault(),i(o)}handleEnd(){let{onAbort:e,onEnd:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleCancel(){let{onAbort:e,onCancel:t}=this.props;this.detach(),this.activated||e(this.props.active),t()}handleKeydown(e){e.code===j9.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}},s4e={cancel:{name:`pointercancel`},move:{name:`pointermove`},end:{name:`pointerup`}},P9=class extends N9{constructor(e){let{event:t}=e,n=a9(t.target);super(e,s4e,n)}};P9.activators=[{eventName:`onPointerDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];var c4e={move:{name:`mousemove`},end:{name:`mouseup`}},l4e;(function(e){e[e.RightClick=2]=`RightClick`})(l4e||={});var u4e=class extends N9{constructor(e){super(e,c4e,a9(e.event.target))}};u4e.activators=[{eventName:`onMouseDown`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===l4e.RightClick?!1:(r?.({event:n}),!0)}}];var F9={cancel:{name:`touchcancel`},move:{name:`touchmove`},end:{name:`touchend`}},d4e=class extends N9{constructor(e){super(e,F9)}static setup(){return window.addEventListener(F9.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(F9.move.name,e)};function e(){}}};d4e.activators=[{eventName:`onTouchStart`,handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t,{touches:i}=n;return i.length>1?!1:(r?.({event:n}),!0)}}];var I9;(function(e){e[e.Pointer=0]=`Pointer`,e[e.DraggableRect=1]=`DraggableRect`})(I9||={});var L9;(function(e){e[e.TreeOrder=0]=`TreeOrder`,e[e.ReversedTreeOrder=1]=`ReversedTreeOrder`})(L9||={});function f4e(e){let{acceleration:t,activator:n=I9.Pointer,canScroll:r,draggingRect:i,enabled:a,interval:o=5,order:s=L9.TreeOrder,pointerCoordinates:c,scrollableAncestors:l,scrollableAncestorRects:u,delta:d,threshold:f}=e,p=m4e({delta:d,disabled:!a}),[m,h]=n2e(),g=(0,C.useRef)({x:0,y:0}),_=(0,C.useRef)({x:0,y:0}),v=(0,C.useMemo)(()=>{switch(n){case I9.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case I9.DraggableRect:return i}},[n,i,c]),y=(0,C.useRef)(null),b=(0,C.useCallback)(()=>{let e=y.current;if(!e)return;let t=g.current.x*_.current.x,n=g.current.y*_.current.y;e.scrollBy(t,n)},[]),x=(0,C.useMemo)(()=>s===L9.TreeOrder?[...l].reverse():l,[s,l]);(0,C.useEffect)(()=>{if(!a||!l.length||!v){h();return}for(let e of x){if(r?.(e)===!1)continue;let n=u[l.indexOf(e)];if(!n)continue;let{direction:i,speed:a}=q2e(e,n,v,t,f);for(let e of[`x`,`y`])p[e][i[e]]||(a[e]=0,i[e]=0);if(a.x>0||a.y>0){h(),y.current=e,m(b,o),g.current=a,_.current=i;return}}g.current={x:0,y:0},_.current={x:0,y:0},h()},[t,b,r,h,a,o,JSON.stringify(v),JSON.stringify(p),m,l,x,u,JSON.stringify(f)])}var p4e={x:{[E9.Backward]:!1,[E9.Forward]:!1},y:{[E9.Backward]:!1,[E9.Forward]:!1}};function m4e(e){let{delta:t,disabled:n}=e,r=d9(t);return l9(e=>{if(n||!r||!e)return p4e;let i={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[E9.Backward]:e.x[E9.Backward]||i.x===-1,[E9.Forward]:e.x[E9.Forward]||i.x===1},y:{[E9.Backward]:e.y[E9.Backward]||i.y===-1,[E9.Forward]:e.y[E9.Forward]||i.y===1}}},[n,t,r])}function h4e(e,t){let n=t==null?void 0:e.get(t),r=n?n.node.current:null;return l9(e=>t==null?null:r??e??null,[r,t])}function g4e(e,t){return(0,C.useMemo)(()=>e.reduce((e,n)=>{let{sensor:r}=n,i=r.activators.map(e=>({eventName:e.eventName,handler:t(e.handler,n)}));return[...e,...i]},[]),[e,t])}var R9;(function(e){e[e.Always=0]=`Always`,e[e.BeforeDragging=1]=`BeforeDragging`,e[e.WhileDragging=2]=`WhileDragging`})(R9||={});var _4e;(function(e){e.Optimized=`optimized`})(_4e||={});var v4e=new Map;function y4e(e,t){let{dragging:n,dependencies:r,config:i}=t,[a,o]=(0,C.useState)(null),{frequency:s,measure:c,strategy:l}=i,u=(0,C.useRef)(e),d=g(),f=c9(d),p=(0,C.useCallback)(function(e){e===void 0&&(e=[]),!f.current&&o(t=>t===null?e:t.concat(e.filter(e=>!t.includes(e))))},[f]),m=(0,C.useRef)(null),h=l9(t=>{if(d&&!n)return v4e;if(!t||t===v4e||u.current!==e||a!=null){let t=new Map;for(let n of e){if(!n)continue;if(a&&a.length>0&&!a.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}let e=n.node.current,r=e?new D9(c(e),e):null;n.rect.current=r,r&&t.set(n.id,r)}return t}return t},[e,a,n,d,c]);return(0,C.useEffect)(()=>{u.current=e},[e]),(0,C.useEffect)(()=>{d||p()},[n,d]),(0,C.useEffect)(()=>{a&&a.length>0&&o(null)},[JSON.stringify(a)]),(0,C.useEffect)(()=>{d||typeof s!=`number`||m.current!==null||(m.current=setTimeout(()=>{p(),m.current=null},s))},[s,d,p,...r]),{droppableRects:h,measureDroppableContainers:p,measuringScheduled:a!=null};function g(){switch(l){case R9.Always:return!1;case R9.BeforeDragging:return n;default:return!n}}}function b4e(e,t){return l9(n=>e?n||(typeof t==`function`?t(e):e):null,[t,e])}function x4e(e,t){return b4e(e,t)}function S4e(e){let{callback:t,disabled:n}=e,r=s9(t),i=(0,C.useMemo)(()=>{if(n||typeof window>`u`||window.MutationObserver===void 0)return;let{MutationObserver:e}=window;return new e(r)},[r,n]);return(0,C.useEffect)(()=>()=>i?.disconnect(),[i]),i}function z9(e){let{callback:t,disabled:n}=e,r=s9(t),i=(0,C.useMemo)(()=>{if(n||typeof window>`u`||window.ResizeObserver===void 0)return;let{ResizeObserver:e}=window;return new e(r)},[n]);return(0,C.useEffect)(()=>()=>i?.disconnect(),[i]),i}function C4e(e){return new D9(S9(e),e)}function w4e(e,t,n){t===void 0&&(t=C4e);let[r,i]=(0,C.useState)(null);function a(){i(r=>{if(!e)return null;if(e.isConnected===!1)return r??n??null;let i=t(e);return JSON.stringify(r)===JSON.stringify(i)?r:i})}let o=S4e({callback(t){if(e)for(let n of t){let{type:t,target:r}=n;if(t===`childList`&&r instanceof HTMLElement&&r.contains(e)){a();break}}}}),s=z9({callback:a});return o9(()=>{a(),e?(s?.observe(e),o?.observe(document.body,{childList:!0,subtree:!0})):(s?.disconnect(),o?.disconnect())},[e]),r}function T4e(e){return j2e(e,b4e(e))}var E4e=[];function D4e(e){let t=(0,C.useRef)(e),n=l9(n=>e?n&&n!==E4e&&e&&t.current&&e.parentNode===t.current.parentNode?n:C9(e):E4e,[e]);return(0,C.useEffect)(()=>{t.current=e},[e]),n}function O4e(e){let[t,n]=(0,C.useState)(null),r=(0,C.useRef)(e),i=(0,C.useCallback)(e=>{let t=w9(e.target);t&&n(e=>e?(e.set(t,T9(t)),new Map(e)):null)},[]);return(0,C.useEffect)(()=>{let t=r.current;if(e!==t){a(t);let o=e.map(e=>{let t=w9(e);return t?(t.addEventListener(`scroll`,i,{passive:!0}),[t,T9(t)]):null}).filter(e=>e!=null);n(o.length?new Map(o):null),r.current=e}return()=>{a(e),a(t)};function a(e){e.forEach(e=>{w9(e)?.removeEventListener(`scroll`,i)})}},[i,e]),(0,C.useMemo)(()=>e.length?t?Array.from(t.values()).reduce((e,t)=>m9(e,t),x9):Y2e(e):x9,[e,t])}function k4e(e,t){t===void 0&&(t=[]);let n=(0,C.useRef)(null);return(0,C.useEffect)(()=>{n.current=null},t),(0,C.useEffect)(()=>{let t=e!==x9;t&&!n.current&&(n.current=e),!t&&n.current&&(n.current=null)},[e]),n.current?h9(e,n.current):x9}function A4e(e){(0,C.useEffect)(()=>{if(!$7)return;let t=e.map(e=>{let{sensor:t}=e;return t.setup==null?void 0:t.setup()});return()=>{for(let e of t)e?.()}},e.map(e=>{let{sensor:t}=e;return t}))}function j4e(e,t){return(0,C.useMemo)(()=>e.reduce((e,n)=>{let{eventName:r,handler:i}=n;return e[r]=e=>{i(e,t)},e},{}),[e,t])}function M4e(e){return(0,C.useMemo)(()=>e?R2e(e):null,[e])}var N4e=[];function P4e(e,t){t===void 0&&(t=S9);let[n]=e,r=M4e(n?n9(n):null),[i,a]=(0,C.useState)(N4e);function o(){a(()=>e.length?e.map(e=>W2e(e)?r:new D9(t(e),e)):N4e)}let s=z9({callback:o});return o9(()=>{s?.disconnect(),o(),e.forEach(e=>s?.observe(e))},[e]),i}function F4e(e){if(!e)return null;if(e.children.length>1)return e;let t=e.children[0];return i9(t)?t:e}function I4e(e){let{measure:t}=e,[n,r]=(0,C.useState)(null),i=z9({callback:(0,C.useCallback)(e=>{for(let{target:n}of e)if(i9(n)){r(e=>{let r=t(n);return e?{...e,width:r.width,height:r.height}:r});break}},[t])}),[a,o]=u9((0,C.useCallback)(e=>{let n=F4e(e);i?.disconnect(),n&&i?.observe(n),r(n?t(n):null)},[t,i]));return(0,C.useMemo)(()=>({nodeRef:a,rect:n,setRef:o}),[n,a,o])}var L4e=[{sensor:P9,options:{}},{sensor:M9,options:{}}],R4e={current:{}},B9={draggable:{measure:L2e},droppable:{measure:L2e,strategy:R9.WhileDragging,frequency:_4e.Optimized},dragOverlay:{measure:S9}},V9=class extends Map{get(e){return e==null?void 0:super.get(e)??void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:t}=e;return!t})}getNodeFor(e){return this.get(e)?.node.current??void 0}},z4e={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new V9,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:b9},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:B9,measureDroppableContainers:b9,windowRect:null,measuringScheduled:!1},B4e={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:``},dispatch:b9,draggableNodes:new Map,over:null,measureDroppableContainers:b9},H9=(0,C.createContext)(B4e),V4e=(0,C.createContext)(z4e);function H4e(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new V9}}}function U4e(e,t){switch(t.type){case y9.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case y9.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case y9.DragEnd:case y9.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case y9.RegisterDroppable:{let{element:n}=t,{id:r}=n,i=new V9(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case y9.SetDroppableDisabled:{let{id:n,key:r,disabled:i}=t,a=e.droppable.containers.get(n);if(!a||r!==a.key)return e;let o=new V9(e.droppable.containers);return o.set(n,{...a,disabled:i}),{...e,droppable:{...e.droppable,containers:o}}}case y9.UnregisterDroppable:{let{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;let a=new V9(e.droppable.containers);return a.delete(n),{...e,droppable:{...e.droppable,containers:a}}}default:return e}}function W4e(e){let{disabled:t}=e,{active:n,activatorEvent:r,draggableNodes:i}=(0,C.useContext)(H9),a=d9(r),o=d9(n?.id);return(0,C.useEffect)(()=>{if(!t&&!r&&a&&o!=null){if(!g9(a)||document.activeElement===a.target)return;let e=i.get(o);if(!e)return;let{activatorNode:t,node:n}=e;if(!t.current&&!n.current)return;requestAnimationFrame(()=>{for(let e of[t.current,n.current]){if(!e)continue;let t=s2e(e);if(t){t.focus();break}}})}},[r,t,i,o,a]),null}function G4e(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((e,t)=>t({transform:e,...r}),n):n}function K4e(e){return(0,C.useMemo)(()=>({draggable:{...B9.draggable,...e?.draggable},droppable:{...B9.droppable,...e?.droppable},dragOverlay:{...B9.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function q4e(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e,a=(0,C.useRef)(!1),{x:o,y:s}=typeof i==`boolean`?{x:i,y:i}:i;o9(()=>{if(!o&&!s||!t){a.current=!1;return}if(a.current||!r)return;let e=t?.node.current;if(!e||e.isConnected===!1)return;let i=j2e(n(e),r);if(o||(i.x=0),s||(i.y=0),a.current=!0,Math.abs(i.x)>0||Math.abs(i.y)>0){let t=V2e(e);t&&t.scrollBy({top:i.y,left:i.x})}},[t,o,s,r,n])}var J4e=(0,C.createContext)({...x9,scaleX:1,scaleY:1}),U9;(function(e){e[e.Uninitialized=0]=`Uninitialized`,e[e.Initializing=1]=`Initializing`,e[e.Initialized=2]=`Initialized`})(U9||={});var Y4e=(0,C.memo)(function(e){let{id:t,accessibility:n,autoScroll:r=!0,children:i,sensors:a=L4e,collisionDetection:o=k2e,measuring:s,modifiers:c,...l}=e,[u,d]=(0,C.useReducer)(U4e,void 0,H4e),[f,p]=m2e(),[m,h]=(0,C.useState)(U9.Uninitialized),g=m===U9.Initialized,{draggable:{active:_,nodes:v,translate:y},droppable:{containers:b}}=u,x=_==null?null:v.get(_),S=(0,C.useRef)({initial:null,translated:null}),w=(0,C.useMemo)(()=>_==null?null:{id:_,data:x?.data??R4e,rect:S},[_,x]),T=(0,C.useRef)(null),[E,D]=(0,C.useState)(null),[O,k]=(0,C.useState)(null),A=c9(l,Object.values(l)),j=p9(`DndDescribedBy`,t),M=(0,C.useMemo)(()=>b.getEnabled(),[b]),N=K4e(s),{droppableRects:P,measureDroppableContainers:F,measuringScheduled:I}=y4e(M,{dragging:g,dependencies:[y.x,y.y],config:N.droppable}),L=h4e(v,_),R=(0,C.useMemo)(()=>O?_9(O):null,[O]),ee=Ee(),z=x4e(L,N.draggable.measure);q4e({activeNode:_==null?null:v.get(_),config:ee.layoutShiftCompensation,initialRect:z,measure:N.draggable.measure});let te=w4e(L,N.draggable.measure,z),B=w4e(L?L.parentElement:null),V=(0,C.useRef)({activatorEvent:null,active:null,activeNode:L,collisionRect:null,collisions:null,droppableRects:P,draggableNodes:v,draggingNode:null,draggingNodeRect:null,droppableContainers:b,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ne=b.getNodeFor(V.current.over?.id),re=I4e({measure:N.dragOverlay.measure}),ie=re.nodeRef.current??L,ae=g?re.rect??te:null,oe=!!(re.nodeRef.current&&re.rect),se=T4e(oe?null:te),ce=M4e(ie?n9(ie):null),le=D4e(g?ne??L:null),ue=P4e(le),de=G4e(c,{transform:{x:y.x-se.x,y:y.y-se.y,scaleX:1,scaleY:1},activatorEvent:O,active:w,activeNodeRect:te,containerNodeRect:B,draggingNodeRect:ae,over:V.current.over,overlayNodeRect:re.rect,scrollableAncestors:le,scrollableAncestorRects:ue,windowRect:ce}),fe=R?m9(R,y):null,pe=O4e(le),H=k4e(pe),me=k4e(pe,[te]),he=m9(de,H),U=ae?N2e(ae,de):null,ge=w&&U?o({active:w,collisionRect:U,droppableRects:P,droppableContainers:M,pointerCoordinates:fe}):null,_e=w2e(ge,`id`),[ve,ye]=(0,C.useState)(null),be=A2e(oe?de:m9(de,me),ve?.rect??null,te),xe=(0,C.useRef)(null),Se=(0,C.useCallback)((e,t)=>{let{sensor:n,options:r}=t;if(T.current==null)return;let i=v.get(T.current);if(!i)return;let a=e.nativeEvent;xe.current=new n({active:T.current,activeNode:i,event:a,options:r,context:V,onAbort(e){if(!v.get(e))return;let{onDragAbort:t}=A.current,n={id:e};t?.(n),f({type:`onDragAbort`,event:n})},onPending(e,t,n,r){if(!v.get(e))return;let{onDragPending:i}=A.current,a={id:e,constraint:t,initialCoordinates:n,offset:r};i?.(a),f({type:`onDragPending`,event:a})},onStart(e){let t=T.current;if(t==null)return;let n=v.get(t);if(!n)return;let{onDragStart:r}=A.current,i={activatorEvent:a,active:{id:t,data:n.data,rect:S}};(0,ba.unstable_batchedUpdates)(()=>{r?.(i),h(U9.Initializing),d({type:y9.DragStart,initialCoordinates:e,active:t}),f({type:`onDragStart`,event:i}),D(xe.current),k(a)})},onMove(e){d({type:y9.DragMove,coordinates:e})},onEnd:o(y9.DragEnd),onCancel:o(y9.DragCancel)});function o(e){return async function(){let{active:t,collisions:n,over:r,scrollAdjustedTranslate:i}=V.current,o=null;if(t&&i){let{cancelDrop:s}=A.current;o={activatorEvent:a,active:t,collisions:n,delta:i,over:r},e===y9.DragEnd&&typeof s==`function`&&await Promise.resolve(s(o))&&(e=y9.DragCancel)}T.current=null,(0,ba.unstable_batchedUpdates)(()=>{d({type:e}),h(U9.Uninitialized),ye(null),D(null),k(null),xe.current=null;let t=e===y9.DragEnd?`onDragEnd`:`onDragCancel`;if(o){let e=A.current[t];e?.(o),f({type:t,event:o})}})}}},[v]),Ce=g4e(a,(0,C.useCallback)((e,t)=>(n,r)=>{let i=n.nativeEvent,a=v.get(r);if(T.current!==null||!a||i.dndKit||i.defaultPrevented)return;let o={active:a};e(n,t.options,o)===!0&&(i.dndKit={capturedBy:t.sensor},T.current=r,Se(n,t))},[v,Se]));A4e(a),o9(()=>{te&&m===U9.Initializing&&h(U9.Initialized)},[te,m]),(0,C.useEffect)(()=>{let{onDragMove:e}=A.current,{active:t,activatorEvent:n,collisions:r,over:i}=V.current;if(!t||!n)return;let a={active:t,activatorEvent:n,collisions:r,delta:{x:he.x,y:he.y},over:i};(0,ba.unstable_batchedUpdates)(()=>{e?.(a),f({type:`onDragMove`,event:a})})},[he.x,he.y]),(0,C.useEffect)(()=>{let{active:e,activatorEvent:t,collisions:n,droppableContainers:r,scrollAdjustedTranslate:i}=V.current;if(!e||T.current==null||!t||!i)return;let{onDragOver:a}=A.current,o=r.get(_e),s=o&&o.rect.current?{id:o.id,rect:o.rect.current,data:o.data,disabled:o.disabled}:null,c={active:e,activatorEvent:t,collisions:n,delta:{x:i.x,y:i.y},over:s};(0,ba.unstable_batchedUpdates)(()=>{ye(s),a?.(c),f({type:`onDragOver`,event:c})})},[_e]),o9(()=>{V.current={activatorEvent:O,active:w,activeNode:L,collisionRect:U,collisions:ge,droppableRects:P,draggableNodes:v,draggingNode:ie,draggingNodeRect:ae,droppableContainers:b,over:ve,scrollableAncestors:le,scrollAdjustedTranslate:he},S.current={initial:ae,translated:U}},[w,L,ge,U,v,ie,ae,P,b,ve,le,he]),f4e({...ee,delta:y,draggingRect:U,pointerCoordinates:fe,scrollableAncestors:le,scrollableAncestorRects:ue});let we=(0,C.useMemo)(()=>({active:w,activeNode:L,activeNodeRect:te,activatorEvent:O,collisions:ge,containerNodeRect:B,dragOverlay:re,draggableNodes:v,droppableContainers:b,droppableRects:P,over:ve,measureDroppableContainers:F,scrollableAncestors:le,scrollableAncestorRects:ue,measuringConfiguration:N,measuringScheduled:I,windowRect:ce}),[w,L,te,O,ge,B,re,v,b,P,ve,F,le,ue,N,I,ce]),Te=(0,C.useMemo)(()=>({activatorEvent:O,activators:Ce,active:w,activeNodeRect:te,ariaDescribedById:{draggable:j},dispatch:d,draggableNodes:v,over:ve,measureDroppableContainers:F}),[O,Ce,w,te,d,j,v,ve,F]);return C.createElement(f2e.Provider,{value:p},C.createElement(H9.Provider,{value:Te},C.createElement(V4e.Provider,{value:we},C.createElement(J4e.Provider,{value:be},i)),C.createElement(W4e,{disabled:n?.restoreFocus===!1})),C.createElement(_2e,{...n,hiddenTextDescribedById:j}));function Ee(){let e=E?.autoScrollEnabled===!1,t=typeof r==`object`?r.enabled===!1:r===!1,n=g&&!e&&!t;return typeof r==`object`?{...r,enabled:n}:{enabled:n}}}),X4e=(0,C.createContext)(null),Z4e=`button`,Q4e=`Draggable`;function $4e(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e,a=p9(Q4e),{activators:o,activatorEvent:s,active:c,activeNodeRect:l,ariaDescribedById:u,draggableNodes:d,over:f}=(0,C.useContext)(H9),{role:p=Z4e,roleDescription:m=`draggable`,tabIndex:h=0}=i??{},g=c?.id===t,_=(0,C.useContext)(g?J4e:X4e),[v,y]=u9(),[b,x]=u9(),S=j4e(o,t),w=c9(n);return o9(()=>(d.set(t,{id:t,key:a,node:v,activatorNode:b,data:w}),()=>{let e=d.get(t);e&&e.key===a&&d.delete(t)}),[d,t]),{active:c,activatorEvent:s,activeNodeRect:l,attributes:(0,C.useMemo)(()=>({role:p,tabIndex:h,"aria-disabled":r,"aria-pressed":g&&p===Z4e?!0:void 0,"aria-roledescription":m,"aria-describedby":u.draggable}),[r,p,h,g,m,u.draggable]),isDragging:g,listeners:r?void 0:S,node:v,over:f,setNodeRef:y,setActivatorNodeRef:x,transform:_}}function e3e(){return(0,C.useContext)(V4e)}var t3e=`Droppable`,n3e={timeout:25};function r3e(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e,a=p9(t3e),{active:o,dispatch:s,over:c,measureDroppableContainers:l}=(0,C.useContext)(H9),u=(0,C.useRef)({disabled:n}),d=(0,C.useRef)(!1),f=(0,C.useRef)(null),p=(0,C.useRef)(null),{disabled:m,updateMeasurementsFor:h,timeout:g}={...n3e,...i},_=c9(h??r),v=z9({callback:(0,C.useCallback)(()=>{if(!d.current){d.current=!0;return}p.current!=null&&clearTimeout(p.current),p.current=setTimeout(()=>{l(Array.isArray(_.current)?_.current:[_.current]),p.current=null},g)},[g]),disabled:m||!o}),[y,b]=u9((0,C.useCallback)((e,t)=>{v&&(t&&(v.unobserve(t),d.current=!1),e&&v.observe(e))},[v])),x=c9(t);return(0,C.useEffect)(()=>{!v||!y.current||(v.disconnect(),d.current=!1,v.observe(y.current))},[y,v]),(0,C.useEffect)(()=>(s({type:y9.RegisterDroppable,element:{id:r,key:a,disabled:n,node:y,rect:f,data:x}}),()=>s({type:y9.UnregisterDroppable,key:a,id:r})),[r]),(0,C.useEffect)(()=>{n!==u.current.disabled&&(s({type:y9.SetDroppableDisabled,id:r,key:a,disabled:n}),u.current.disabled=n)},[r,a,n,s]),{active:o,rect:f,isOver:c?.id===r,node:y,over:c,setNodeRef:b}}function W9(e,t,n){let r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function i3e(e,t){return e.reduce((e,n,r)=>{let i=t.get(n);return i&&(e[r]=i),e},Array(e.length))}function G9(e){return e!==null&&e>=0}function a3e(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function o3e(e){return typeof e==`boolean`?{draggable:e,droppable:e}:e}var s3e=e=>{let{rects:t,activeIndex:n,overIndex:r,index:i}=e,a=W9(t,r,n),o=t[i],s=a[i];return!s||!o?null:{x:s.left-o.left,y:s.top-o.top,scaleX:s.width/o.width,scaleY:s.height/o.height}},K9={scaleX:1,scaleY:1},c3e=e=>{let{activeIndex:t,activeNodeRect:n,index:r,rects:i,overIndex:a}=e,o=i[t]??n;if(!o)return null;if(r===t){let e=i[a];return e?{x:0,y:t<a?e.top+e.height-(o.top+o.height):e.top-o.top,...K9}:null}let s=l3e(i,r,t);return r>t&&r<=a?{x:0,y:-o.height-s,...K9}:r<t&&r>=a?{x:0,y:o.height+s,...K9}:{x:0,y:0,...K9}};function l3e(e,t,n){let r=e[t],i=e[t-1],a=e[t+1];return r?n<t?i?r.top-(i.top+i.height):a?a.top-(r.top+r.height):0:a?a.top-(r.top+r.height):i?r.top-(i.top+i.height):0:0}var u3e=`Sortable`,d3e=C.createContext({activeIndex:-1,containerId:u3e,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:s3e,disabled:{draggable:!1,droppable:!1}});function f3e(e){let{children:t,id:n,items:r,strategy:i=s3e,disabled:a=!1}=e,{active:o,dragOverlay:s,droppableRects:c,over:l,measureDroppableContainers:u}=e3e(),d=p9(u3e,n),f=s.rect!==null,p=(0,C.useMemo)(()=>r.map(e=>typeof e==`object`&&`id`in e?e.id:e),[r]),m=o!=null,h=o?p.indexOf(o.id):-1,g=l?p.indexOf(l.id):-1,_=(0,C.useRef)(p),v=!a3e(p,_.current),y=g!==-1&&h===-1||v,b=o3e(a);o9(()=>{v&&m&&u(p)},[v,p,m,u]),(0,C.useEffect)(()=>{_.current=p},[p]);let x=(0,C.useMemo)(()=>({activeIndex:h,containerId:d,disabled:b,disableTransforms:y,items:p,overIndex:g,useDragOverlay:f,sortedRects:i3e(p,c),strategy:i}),[h,d,b.draggable,b.droppable,y,p,g,c,f,i]);return C.createElement(d3e.Provider,{value:x},t)}var p3e=e=>{let{id:t,items:n,activeIndex:r,overIndex:i}=e;return W9(n,r,i).indexOf(t)},m3e=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:i,items:a,newIndex:o,previousItems:s,previousContainerId:c,transition:l}=e;return!l||!r||s!==a&&i===o?!1:n?!0:o!==i&&t===c},h3e={duration:200,easing:`ease`},g3e=`transform`,_3e=v9.Transition.toString({property:g3e,duration:0,easing:`linear`}),v3e={roleDescription:`sortable`};function y3e(e){let{disabled:t,index:n,node:r,rect:i}=e,[a,o]=(0,C.useState)(null),s=(0,C.useRef)(n);return o9(()=>{if(!t&&n!==s.current&&r.current){let e=i.current;if(e){let t=S9(r.current,{ignoreTransform:!0}),n={x:e.left-t.left,y:e.top-t.top,scaleX:e.width/t.width,scaleY:e.height/t.height};(n.x||n.y)&&o(n)}}n!==s.current&&(s.current=n)},[t,n,r,i]),(0,C.useEffect)(()=>{a&&o(null)},[a]),a}function b3e(e){let{animateLayoutChanges:t=m3e,attributes:n,disabled:r,data:i,getNewIndex:a=p3e,id:o,strategy:s,resizeObserverConfig:c,transition:l=h3e}=e,{items:u,containerId:d,activeIndex:f,disabled:p,disableTransforms:m,sortedRects:h,overIndex:g,useDragOverlay:_,strategy:v}=(0,C.useContext)(d3e),y=x3e(r,p),b=u.indexOf(o),x=(0,C.useMemo)(()=>({sortable:{containerId:d,index:b,items:u},...i}),[d,i,b,u]),S=(0,C.useMemo)(()=>u.slice(u.indexOf(o)),[u,o]),{rect:w,node:T,isOver:E,setNodeRef:D}=r3e({id:o,data:x,disabled:y.droppable,resizeObserverConfig:{updateMeasurementsFor:S,...c}}),{active:O,activatorEvent:k,activeNodeRect:A,attributes:j,setNodeRef:M,listeners:N,isDragging:P,over:F,setActivatorNodeRef:I,transform:L}=$4e({id:o,data:x,attributes:{...v3e,...n},disabled:y.draggable}),R=e2e(D,M),ee=!!O,z=ee&&!m&&G9(f)&&G9(g),te=!_&&P,B=z?(te&&z?L:null)??(s??v)({rects:h,activeNodeRect:A,activeIndex:f,overIndex:g,index:b}):null,V=G9(f)&&G9(g)?a({id:o,items:u,activeIndex:f,overIndex:g}):b,ne=O?.id,re=(0,C.useRef)({activeId:ne,items:u,newIndex:V,containerId:d}),ie=u!==re.current.items,ae=t({active:O,containerId:d,isDragging:P,isSorting:ee,id:o,index:b,items:u,newIndex:re.current.newIndex,previousItems:re.current.items,previousContainerId:re.current.containerId,transition:l,wasDragging:re.current.activeId!=null}),oe=y3e({disabled:!ae,index:b,node:T,rect:w});return(0,C.useEffect)(()=>{ee&&re.current.newIndex!==V&&(re.current.newIndex=V),d!==re.current.containerId&&(re.current.containerId=d),u!==re.current.items&&(re.current.items=u)},[ee,V,d,u]),(0,C.useEffect)(()=>{if(ne===re.current.activeId)return;if(ne!=null&&re.current.activeId==null){re.current.activeId=ne;return}let e=setTimeout(()=>{re.current.activeId=ne},50);return()=>clearTimeout(e)},[ne]),{active:O,activeIndex:f,attributes:j,data:x,rect:w,index:b,newIndex:V,items:u,isOver:E,isSorting:ee,isDragging:P,listeners:N,node:T,overIndex:g,over:F,setNodeRef:R,setActivatorNodeRef:I,setDroppableNodeRef:D,setDraggableNodeRef:M,transform:oe??B,transition:se()};function se(){if(oe||ie&&re.current.newIndex===b)return _3e;if(!(te&&!g9(k)||!l)&&(ee||ae))return v9.Transition.toString({...l,property:g3e})}}function x3e(e,t){return typeof e==`boolean`?{draggable:e,droppable:!1}:{draggable:e?.draggable??t.draggable,droppable:e?.droppable??t.droppable}}function q9(e){if(!e)return!1;let t=e.data.current;return!!(t&&`sortable`in t&&typeof t.sortable==`object`&&`containerId`in t.sortable&&`items`in t.sortable&&`index`in t.sortable)}var S3e=[j9.Down,j9.Right,j9.Up,j9.Left],C3e=(e,t)=>{let{context:{active:n,collisionRect:r,droppableRects:i,droppableContainers:a,over:o,scrollableAncestors:s}}=t;if(S3e.includes(e.code)){if(e.preventDefault(),!n||!r)return;let t=[];a.getEnabled().forEach(n=>{if(!n||n!=null&&n.disabled)return;let a=i.get(n.id);if(a)switch(e.code){case j9.Down:r.top<a.top&&t.push(n);break;case j9.Up:r.top>a.top&&t.push(n);break;case j9.Left:r.left>a.left&&t.push(n);break;case j9.Right:r.left<a.left&&t.push(n);break}});let c=D2e({active:n,collisionRect:r,droppableRects:i,droppableContainers:t,pointerCoordinates:null}),l=w2e(c,`id`);if(l===o?.id&&c.length>1&&(l=c[1].id),l!=null){let e=a.get(n.id),t=a.get(l),o=t?i.get(t.id):null,c=t?.node.current;if(c&&o&&e&&t){let n=C9(c).some((e,t)=>s[t]!==e),i=w3e(e,t),a=T3e(e,t),l=n||!i?{x:0,y:0}:{x:a?r.width-o.width:0,y:a?r.height-o.height:0},u={x:o.left,y:o.top};return l.x&&l.y?u:h9(u,l)}}}};function w3e(e,t){return!q9(e)||!q9(t)?!1:e.data.current.sortable.containerId===t.data.current.sortable.containerId}function T3e(e,t){return!q9(e)||!q9(t)||!w3e(e,t)?!1:e.data.current.sortable.index<t.data.current.sortable.index}var E3e=({bridge:e,index:t})=>{let{attributes:n,listeners:r,setNodeRef:i,transform:a,transition:o,isDragging:s}=b3e({id:e.id}),[c,l]=(0,C.useState)(!1);return(0,C.useEffect)(()=>{DE(e.id).then(l)},[e.id]),(0,W.jsx)(vv,{ref:i,style:{transform:v9.Transform.toString(a),transition:o,opacity:s?.5:1},variant:`outlined`,sx:{cursor:`grab`,"&:active":{cursor:`grabbing`},bgcolor:s?`action.selected`:`background.paper`,width:`fit-content`},children:(0,W.jsxs)(xv,{sx:{display:`flex`,alignItems:`center`,gap:1.5,py:1,"&:last-child":{pb:1}},children:[(0,W.jsx)(Z,{...n,...r,sx:{display:`flex`,alignItems:`center`,color:`text.secondary`},children:(0,W.jsx)(khe,{})}),(0,W.jsx)(kv,{label:t+1,size:`small`,color:`primary`,sx:{minWidth:32,fontWeight:`bold`}}),c?(0,W.jsx)(Z,{component:`img`,src:OE(e.id),alt:e.name,sx:{width:40,height:40,borderRadius:`50%`,objectFit:`cover`,boxShadow:2}}):(0,W.jsx)(Db,{sx:{bgcolor:PE(e),width:40,height:40,boxShadow:2},children:(0,W.jsx)(NE(e),{sx:{fontSize:24}})}),(0,W.jsxs)(Z,{sx:{flex:1},children:[(0,W.jsx)(Q,{variant:`subtitle1`,fontWeight:500,children:e.name}),(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,children:[`Port: `,e.port,` • Priority: `,e.priority??100]})]})]})})},D3e=()=>{let{t:e}=hs(),t=Xv(),{content:n,isLoading:r}=VT(),i=Kme(),[a,o]=(0,C.useState)([]),[s,c]=(0,C.useState)(!1);(0,C.useEffect)(()=>{n&&(o([...n].sort((e,t)=>(e.priority??100)-(t.priority??100))),c(!1))},[n]);let l=y2e(v2e(P9),v2e(M9,{coordinateGetter:C3e})),u=(0,C.useCallback)(e=>{let{active:t,over:n}=e;n&&t.id!==n.id&&(o(e=>W9(e,e.findIndex(e=>e.id===t.id),e.findIndex(e=>e.id===n.id))),c(!0))},[]),d=(0,C.useCallback)(async()=>{let n=a.map((e,t)=>({id:e.id,priority:(t+1)*10}));try{await i(n),t.show({message:e(`startup.saveSuccess`),severity:`success`}),c(!1)}catch(n){t.show({message:n instanceof Error?n.message:e(`startup.saveFailed`),severity:`error`})}},[a,i,t,e]),f=(0,C.useMemo)(()=>a.map(e=>e.id),[a]);return r?(0,W.jsxs)(Q,{children:[e(`common.loading`),`...`]}):(0,W.jsxs)(Gv,{spacing:3,children:[(0,W.jsx)(Yv,{items:[{name:e(`nav.bridges`),to:Y9.bridges},{name:e(`startup.title`),to:Y9.startup}]}),(0,W.jsxs)(Z,{display:`flex`,alignItems:`center`,gap:2,children:[(0,W.jsx)(pv,{color:`primary`,fontSize:`large`}),(0,W.jsxs)(Z,{children:[(0,W.jsx)(Q,{variant:`h5`,fontWeight:600,children:e(`startup.title`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,children:e(`startup.description`)})]})]}),s&&(0,W.jsx)(Kh,{severity:`info`,action:(0,W.jsx)(_v,{color:`inherit`,size:`small`,startIcon:(0,W.jsx)(_E,{}),onClick:d,children:e(`startup.saveChanges`)}),children:e(`startup.unsavedChanges`)}),(0,W.jsx)(Y4e,{sensors:l,collisionDetection:E2e,onDragEnd:u,children:(0,W.jsx)(f3e,{items:f,strategy:c3e,children:(0,W.jsx)(Gv,{spacing:1,children:a.map((e,t)=>(0,W.jsx)(E3e,{bridge:e,index:t},e.id))})})}),a.length===0&&(0,W.jsx)(Q,{color:`text.secondary`,textAlign:`center`,py:4,children:e(`startup.noBridges`)}),s&&a.length>0&&(0,W.jsx)(Z,{display:`flex`,justifyContent:`flex-end`,children:(0,W.jsx)(_v,{variant:`contained`,startIcon:(0,W.jsx)(_E,{}),onClick:d,children:e(`startup.saveOrder`)})})]})},J9=`https://riddix.github.io/home-assistant-matter-hub`,Y9={dashboard:`/`,bridges:`/bridges`,bridge:e=>`/bridges/${e}`,createBridge:`/bridges/create`,areaSetup:`/bridges/area-setup`,editBridge:e=>`/bridges/${e}/edit`,devices:`/devices`,standaloneDevices:`/standalone-devices`,networkMap:`/network-map`,health:`/health`,labels:`/labels`,lockCredentials:`/lock-credentials`,plugins:`/plugins`,settings:`/settings`,startup:`/startup`,githubRepository:`https://github.com/riddix/home-assistant-matter-hub/`,documentation:J9,support:`${J9}/support`,faq:{multiFabric:`${J9}/connect-multiple-fabrics`,bridgeConfig:`${J9}/bridge-configuration`}},O3e=[{path:``,element:(0,W.jsx)(Sre,{}),children:[{path:``,element:(0,W.jsx)(Xge,{})},{path:Y9.bridges,element:(0,W.jsx)(Wge,{})},{path:Y9.createBridge,element:(0,W.jsx)(Mqe,{})},{path:Y9.areaSetup,element:(0,W.jsx)(xae,{})},{path:Y9.bridge(`:bridgeId`),element:(0,W.jsx)(che,{})},{path:Y9.editBridge(`:bridgeId`),element:(0,W.jsx)(Nqe,{})},{path:Y9.devices,element:(0,W.jsx)(m_e,{})},{path:Y9.standaloneDevices,element:(0,W.jsx)($0e,{})},{path:Y9.networkMap,element:(0,W.jsx)(_0e,{})},{path:Y9.health,element:(0,W.jsx)(Qqe,{})},{path:Y9.labels,element:(0,W.jsx)(nJe,{})},{path:Y9.lockCredentials,element:(0,W.jsx)(cJe,{})},{path:Y9.plugins,element:(0,W.jsx)(U0e,{})},{path:Y9.settings,element:(0,W.jsx)(J0e,{})},{path:Y9.startup,element:(0,W.jsx)(D3e,{})},{path:`*`,element:(0,W.jsx)(lJe,{})}]}],k3e=A_({items:{isInitialized:!1,isLoading:!1}},e=>{e.addCase(W_.pending,e=>{e.items.isLoading=!0}).addCase(W_.rejected,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=void 0,e.items.error=t.error}).addCase(W_.fulfilled,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=t.payload,e.items.error=void 0}).addCase(G_.fulfilled,(e,t)=>{e.items.content?.push(t.payload)}).addCase(q_.fulfilled,(e,t)=>{let n=e.items.content?.findIndex(e=>e.id===t.payload.id)??-1;n!==-1&&(e.items.content[n]=t.payload)}).addCase(J_.fulfilled,(e,t)=>{let n=e.items.content?.findIndex(e=>e.id===t.payload.id)??-1;n!==-1&&(e.items.content[n]=t.payload)}).addCase(K_.fulfilled,(e,t)=>{if(e.items.content){let n=e.items.content.findIndex(e=>e.id===t.meta.arg);n!==-1&&e.items.content.splice(n,1)}}).addCase(Y_,(e,t)=>{e.items.isInitialized=!0,e.items.isLoading=!1,e.items.content=t.payload,e.items.error=void 0}).addCase(X_,(e,t)=>{if(e.items.content){let n=e.items.content.findIndex(e=>e.id===t.payload.id);n===-1?e.items.content.push(t.payload):e.items.content[n]=t.payload}})}),A3e=A_({byBridge:{}},e=>{e.addCase(KT.pending,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)}).addCase(KT.rejected,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)}).addCase(KT.fulfilled,(e,t)=>{e.byBridge[t.meta.arg]=X9(e.byBridge[t.meta.arg],t)})}),X9=A_({isInitialized:!1,isLoading:!1,content:void 0,error:void 0},e=>{e.addCase(KT.pending,e=>{e.isLoading=!0}).addCase(KT.rejected,(e,t)=>{e.isInitialized=!0,e.isLoading=!1,e.content=void 0,e.error=t.error}).addCase(KT.fulfilled,(e,t)=>{e.isInitialized=!0,e.isLoading=!1,e.content=t.payload,e.error=void 0})}),j3e=Yne({reducer:{bridges:k3e,devices:A3e}}),Z9=vp({createStyledComponent:J(`div`,{name:`MuiContainer`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`maxWidth${Y(String(n.maxWidth))}`],n.fixed&&t.fixed,n.disableGutters&&t.disableGutters]}}),useThemeProps:e=>jm({props:e,name:`MuiContainer`})});function M3e(e){return zd(`MuiToolbar`,e)}K(`MuiToolbar`,[`root`,`gutters`,`regular`,`dense`]);var N3e=e=>{let{classes:t,disableGutters:n,variant:r}=e;return pp({root:[`root`,!n&&`gutters`,r]},M3e,t)},P3e=J(`div`,{name:`MuiToolbar`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.disableGutters&&t.gutters,t[n.variant]]}})(Lm(({theme:e})=>({position:`relative`,display:`flex`,alignItems:`center`,variants:[{props:({ownerState:e})=>!e.disableGutters,style:{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up(`sm`)]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}}},{props:{variant:`dense`},style:{minHeight:48}},{props:{variant:`regular`},style:e.mixins.toolbar}]}))),F3e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiToolbar`}),{className:r,component:i=`div`,disableGutters:a=!1,variant:o=`regular`,...s}=n,c={...n,component:i,disableGutters:a,variant:o};return(0,W.jsx)(P3e,{as:i,className:G(N3e(c).root,r),ref:t,ownerState:c,...s})}),I3e=class extends C.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error(`ErrorBoundary caught:`,e,t.componentStack)}render(){return this.state.hasError?(0,W.jsxs)(Z,{display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,minHeight:`60vh`,gap:2,p:4,children:[(0,W.jsx)(yb,{color:`error`,sx:{fontSize:64}}),(0,W.jsx)(Q,{variant:`h5`,fontWeight:600,children:Is.t(`errorBoundary.title`)}),(0,W.jsx)(Q,{variant:`body2`,color:`text.secondary`,textAlign:`center`,maxWidth:480,children:this.state.error?.message??Is.t(`errorBoundary.fallbackMessage`)}),(0,W.jsx)(_v,{variant:`contained`,onClick:()=>{this.setState({hasError:!1,error:null}),window.location.reload()},children:Is.t(`errorBoundary.reload`)})]}):this.props.children}};function L3e(e){return zd(`MuiFab`,e)}var R3e=K(`MuiFab`,[`root`,`primary`,`secondary`,`extended`,`circular`,`focusVisible`,`disabled`,`colorInherit`,`sizeSmall`,`sizeMedium`,`sizeLarge`,`info`,`error`,`warning`,`success`]),z3e=e=>{let{color:t,variant:n,classes:r,size:i}=e,a=pp({root:[`root`,n,`size${Y(i)}`,t===`inherit`?`colorInherit`:t]},L3e,r);return{...r,...a}},B3e=J(Ih,{name:`MuiFab`,slot:`Root`,shouldForwardProp:e=>km(e)||e===`classes`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant],t[`size${Y(n.size)}`],n.color===`inherit`&&t.colorInherit,t[Y(n.size)],t[n.color]]}})(Lm(({theme:e})=>({...e.typography.button,minHeight:36,transition:e.transitions.create([`background-color`,`box-shadow`,`border-color`],{duration:e.transitions.duration.short}),borderRadius:`50%`,padding:0,minWidth:0,width:56,height:56,zIndex:(e.vars||e).zIndex.fab,boxShadow:(e.vars||e).shadows[6],"&:active":{boxShadow:(e.vars||e).shadows[12]},color:e.vars?e.vars.palette.grey[900]:e.palette.getContrastText?.(e.palette.grey[300]),backgroundColor:(e.vars||e).palette.grey[300],"&:hover":{backgroundColor:(e.vars||e).palette.grey.A100,"@media (hover: none)":{backgroundColor:(e.vars||e).palette.grey[300]},textDecoration:`none`},[`&.${R3e.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},variants:[{props:{size:`small`},style:{width:40,height:40}},{props:{size:`medium`},style:{width:48,height:48}},{props:{variant:`extended`},style:{borderRadius:48/2,padding:`0 16px`,width:`auto`,minHeight:`auto`,minWidth:48,height:48}},{props:{variant:`extended`,size:`small`},style:{width:`auto`,padding:`0 8px`,borderRadius:34/2,minWidth:34,height:34}},{props:{variant:`extended`,size:`medium`},style:{width:`auto`,padding:`0 16px`,borderRadius:40/2,minWidth:40,height:40}},{props:{color:`inherit`},style:{color:`inherit`}}]})),Lm(({theme:e})=>({variants:[...Object.entries(e.palette).filter(Km([`dark`,`contrastText`])).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].contrastText,backgroundColor:(e.vars||e).palette[t].main,"&:hover":{backgroundColor:(e.vars||e).palette[t].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t].main}}}}))]})),Lm(({theme:e})=>({[`&.${R3e.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}}))),V3e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiFab`}),{children:r,className:i,color:a=`default`,component:o=`button`,disabled:s=!1,disableFocusRipple:c=!1,focusVisibleClassName:l,size:u=`large`,variant:d=`circular`,...f}=n,p={...n,color:a,component:o,disabled:s,disableFocusRipple:c,size:u,variant:d},m=z3e(p);return(0,W.jsx)(B3e,{className:G(m.root,i),component:o,disabled:s,focusRipple:!c,focusVisibleClassName:G(m.focusVisible,l),ownerState:p,ref:t,...f,classes:m,children:r})}),H3e=[{code:`en`,flag:`🇬🇧`,name:`English`},{code:`de`,flag:`🇩🇪`,name:`Deutsch`},{code:`fr`,flag:`🇫🇷`,name:`Français`},{code:`es`,flag:`🇪🇸`,name:`Español`},{code:`it`,flag:`🇮🇹`,name:`Italiano`},{code:`hu`,flag:`🇭🇺`,name:`Magyar`},{code:`zh`,flag:`🇨🇳`,name:`中文`},{code:`zh-TW`,flag:`🇹🇼`,name:`繁體中文`},{code:`ja`,flag:`🇯🇵`,name:`日本語`},{code:`th`,flag:`🇹🇭`,name:`ไทย`},{code:`sv`,flag:`🇸🇪`,name:`Svenska`},{code:`tr`,flag:`🇹🇷`,name:`Türkçe`},{code:`ru`,flag:`🇷🇺`,name:`Русский`}],U3e=`hamh-custom-languages`;function W3e(){try{let e=localStorage.getItem(U3e);return e?JSON.parse(e).map(e=>({code:e.code,flag:`🌐`,name:e.name})):[]}catch{return[]}}var G3e=`https://github.com/RiDDiX/home-assistant-matter-hub/issues/new?labels=translation&title=Translation+improvement`;function K3e(){let{t:e,i18n:t}=hs(),[n,r]=(0,C.useState)(!1),i=(0,C.useRef)(null),a=(0,C.useMemo)(()=>[...H3e,...W3e()],[]),o=t.language??`en`,s=a.some(e=>e.code===o)?o:o.split(`-`)[0]??`en`,c=(0,C.useCallback)(()=>{r(e=>!e)},[]),l=(0,C.useCallback)(e=>{t.changeLanguage(e),r(!1)},[t]);return(0,W.jsx)(Yh,{onClickAway:(0,C.useCallback)(()=>{r(!1)},[]),children:(0,W.jsxs)(Z,{children:[(0,W.jsx)(V3e,{ref:i,size:`small`,color:`primary`,onClick:c,"aria-label":`Change language`,sx:{position:`fixed`,bottom:24,right:24,zIndex:1300},children:(0,W.jsx)(Ihe,{})}),(0,W.jsx)(cb,{open:n,anchorEl:i.current,placement:`top-end`,transition:!0,sx:{zIndex:1300},children:({TransitionProps:t})=>(0,W.jsx)(Pb,{...t,timeout:200,children:(0,W.jsxs)(qm,{elevation:8,sx:{mb:1,py:.5,minWidth:160,borderRadius:2,overflow:`hidden`},children:[a.map(e=>(0,W.jsxs)(Z,{onClick:()=>l(e.code),sx:{display:`flex`,alignItems:`center`,gap:1.5,px:2,py:1,cursor:`pointer`,bgcolor:s===e.code?`action.selected`:`transparent`,"&:hover":{bgcolor:`action.hover`},transition:`background-color 0.15s`},children:[(0,W.jsx)(Q,{sx:{fontSize:`1.4rem`,lineHeight:1,userSelect:`none`},children:e.flag}),(0,W.jsx)(Q,{variant:`body2`,fontWeight:s===e.code?600:400,children:e.name})]},e.code)),(0,W.jsx)(Kb,{}),(0,W.jsxs)(Z,{sx:{display:`flex`,alignItems:`flex-start`,gap:.75,px:2,py:1},children:[(0,W.jsx)(Zv,{sx:{fontSize:14,mt:.25,color:`text.secondary`}}),(0,W.jsxs)(Q,{variant:`caption`,color:`text.secondary`,sx:{lineHeight:1.4},children:[e(`languageSwitcher.disclaimer`),` `,(0,W.jsx)(Jv,{href:G3e,target:`_blank`,rel:`noopener`,sx:{fontSize:`inherit`},children:e(`languageSwitcher.contribute`)})]})]})]})})})]})})}var q3e={name:`home-assistant-matter-hub`,description:``,version:`2.1.0-alpha.741`,private:!1,type:`module`,bin:{"home-assistant-matter-hub":`./dist/backend/cli.js`},author:{name:`riddix`,url:`https://github.com/riddix`},keywords:[`home-assistant`,`homeassistant`,`home`,`assistant`,`apple home`,`google home`,`apple`,`google`,`alexa`,`matter`,`matter.js`,`matterjs`,`project-chip`,`smart`,`smarthome`,`smart-home`],bugs:{url:`https://github.com/riddix/home-assistant-matter-hub/issues`},license:`Apache-2.0`,repository:`github:riddix/home-assistant-matter-hub`,scripts:{cleanup:`npx rimraf node_modules dist pack LICENSE README.md`,build:`node build.js`,bundle:`pnpm pack --out package.tgz`,postbuild:`pnpm run bundle`,test:`vitest run`,prestart:`pnpm run build`,start:`dotenvx run -f ../../.env -- ./dist/backend/cli.js start`},dependencies:{"@matter/main":`0.17.2`,"@matter/nodejs":`0.17.2`,"@matter/general":`0.17.2`,ajv:`8.18.0`,archiver:`7.0.1`,color:`5.0.3`,debounce:`3.0.0`,express:`5.2.1`,"express-basic-auth":`1.2.1`,"express-ip-access-control":`1.1.3`,"home-assistant-js-websocket":`9.6.0`,"lodash-es":`4.18.1`,multer:`2.1.1`,nocache:`4.0.0`,unzipper:`0.12.3`,ws:`8.21.0`,yargs:`18.0.0`},devDependencies:{"@home-assistant-matter-hub/backend":`workspace:*`,"@home-assistant-matter-hub/frontend":`workspace:*`,"@home-assistant-matter-hub/common":`workspace:*`,"@types/lodash-es":`^4.17.12`},overrides:{minimatch:`9.0.7`,"path-to-regexp":`^8.4.0`,glob:`^13.0.0`},nx:{targets:{start:{cache:!1,dependsOn:[`build`]},pack:{cache:!0,dependsOn:[`build`],outputs:[`{projectRoot}/pack`]},build:{inputs:[`^default`,`default`,`{workspaceRoot}/README.md`,`{workspaceRoot}/LICENSE`],outputs:[`{projectRoot}/dist`,`{projectRoot}/README.md`,`{projectRoot}/LICENSE`]}}}};function J3e(){let e=`2.1.0-alpha.741`,[t,n]=(0,C.useState)(null);(0,C.useEffect)(()=>{fetch(`api/health`).then(e=>e.ok?e.json():null).then(e=>{e?.version&&n(e.version)}).catch(()=>{})},[]);let r=(0,C.useMemo)(()=>!t||e===`0.0.0-dev`?!1:e!==t,[t]);return(0,C.useMemo)(()=>({name:q3e.name,version:t??e,frontendVersion:e,backendVersion:t,versionMismatch:r}),[t,r])}var Y3e=()=>{let{t:e}=hs(),t=[{name:e(`footer.github`),url:Y9.githubRepository},{name:e(`footer.documentation`),url:Y9.documentation},{name:e(`footer.support`),url:Y9.support}];return(0,W.jsxs)(Z9,{sx:{mt:16,mb:4},children:[(0,W.jsx)(Kb,{sx:{mt:4,mb:4}}),(0,W.jsx)(Rv,{container:!0,spacing:2,justifyContent:`center`,children:t.map((e,t)=>(0,W.jsx)(Rv,{size:{xs:12,sm:`auto`},children:(0,W.jsx)(_v,{fullWidth:!0,size:`small`,variant:`outlined`,component:Jv,href:e.url,target:`_blank`,children:e.name})},t.toString()))})]})};function X3e(e){return zd(`MuiAppBar`,e)}K(`MuiAppBar`,[`root`,`positionFixed`,`positionAbsolute`,`positionSticky`,`positionStatic`,`positionRelative`,`colorDefault`,`colorPrimary`,`colorSecondary`,`colorInherit`,`colorTransparent`,`colorError`,`colorInfo`,`colorSuccess`,`colorWarning`]);var Z3e=e=>{let{color:t,position:n,classes:r}=e;return pp({root:[`root`,`color${Y(t)}`,`position${Y(n)}`]},X3e,r)},Q3e=(e,t)=>e?`${e.replace(`)`,``)}, ${t})`:t,$3e=J(qm,{name:`MuiAppBar`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`position${Y(n.position)}`],t[`color${Y(n.color)}`]]}})(Lm(({theme:e})=>({display:`flex`,flexDirection:`column`,width:`100%`,boxSizing:`border-box`,flexShrink:0,variants:[{props:{position:`fixed`},style:{position:`fixed`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0,"@media print":{position:`absolute`}}},{props:{position:`absolute`},style:{position:`absolute`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0}},{props:{position:`sticky`},style:{position:`sticky`,zIndex:(e.vars||e).zIndex.appBar,top:0,left:`auto`,right:0}},{props:{position:`static`},style:{position:`static`}},{props:{position:`relative`},style:{position:`relative`}},{props:{color:`inherit`},style:{"--AppBar-color":`inherit`,color:`var(--AppBar-color)`}},{props:{color:`default`},style:{"--AppBar-background":e.vars?e.vars.palette.AppBar.defaultBg:e.palette.grey[100],"--AppBar-color":e.vars?e.vars.palette.text.primary:e.palette.getContrastText(e.palette.grey[100]),...e.applyStyles(`dark`,{"--AppBar-background":e.vars?e.vars.palette.AppBar.defaultBg:e.palette.grey[900],"--AppBar-color":e.vars?e.vars.palette.text.primary:e.palette.getContrastText(e.palette.grey[900])})}},...Object.entries(e.palette).filter(Km([`contrastText`])).map(([t])=>({props:{color:t},style:{"--AppBar-background":(e.vars??e).palette[t].main,"--AppBar-color":(e.vars??e).palette[t].contrastText}})),{props:e=>e.enableColorOnDark===!0&&![`inherit`,`transparent`].includes(e.color),style:{backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`}},{props:e=>e.enableColorOnDark===!1&&![`inherit`,`transparent`].includes(e.color),style:{backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`,...e.applyStyles(`dark`,{backgroundColor:e.vars?Q3e(e.vars.palette.AppBar.darkBg,`var(--AppBar-background)`):null,color:e.vars?Q3e(e.vars.palette.AppBar.darkColor,`var(--AppBar-color)`):null})}},{props:{color:`transparent`},style:{"--AppBar-background":`transparent`,"--AppBar-color":`inherit`,backgroundColor:`var(--AppBar-background)`,color:`var(--AppBar-color)`,...e.applyStyles(`dark`,{backgroundImage:`none`})}}]}))),e6e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiAppBar`}),{className:r,color:i=`primary`,enableColorOnDark:a=!1,position:o=`fixed`,...s}=n,c={...n,color:i,position:o,enableColorOnDark:a};return(0,W.jsx)($3e,{square:!0,component:`header`,ownerState:c,elevation:4,className:G(Z3e(c).root,r,o===`fixed`&&`mui-fixed`),ref:t,...s})}),t6e={visibility:`hidden`};function n6e(e,t,n){let r=n&&n.getBoundingClientRect(),i=rh(t),a=t.style.transform,o=t.style.transition;t.style.transition=``,t.style.transform=``;let s=t.getBoundingClientRect(),c=i.getComputedStyle(t).getPropertyValue(`transform`);t.style.transform=a,t.style.transition=o;let l=0,u=0;if(c&&c!==`none`&&typeof c==`string`){let e=c.split(`(`)[1].split(`)`)[0].split(`,`);l=parseInt(e[4],10),u=parseInt(e[5],10)}return e===`left`?r?`translateX(${r.right+l-s.left}px)`:`translateX(${i.innerWidth+l-s.left}px)`:e===`right`?r?`translateX(-${s.right-r.left-l}px)`:`translateX(-${s.left+s.width-l}px)`:e===`up`?r?`translateY(${r.bottom+u-s.top}px)`:`translateY(${i.innerHeight+u-s.top}px)`:r?`translateY(-${s.top-r.top+s.height-u}px)`:`translateY(-${s.top+s.height-u}px)`}function r6e(e){return typeof e==`function`?e():e}function Q9(e,t,n){let r=n6e(e,t,r6e(n));r&&(t.style.transform=r)}var i6e=C.forwardRef(function(e,t){let n=Em(),r={enter:n.transitions.easing.easeOut,exit:n.transitions.easing.sharp},i={enter:n.transitions.duration.enteringScreen,exit:n.transitions.duration.leavingScreen},{addEndListener:a,appear:o=!0,children:s,container:c,direction:l=`down`,easing:u=r,in:d,onEnter:f,onEntered:p,onEntering:m,onExit:h,onExited:g,onExiting:_,style:v,timeout:y=i,...b}=e,x=C.useRef(null),S=dh(qh(s),x,t),w=Zh(x,(e,t)=>{Q9(l,e,c),Xh(e),f&&f(e,t)}),T=Zh(x,(e,t)=>{let r=$h({timeout:y,style:v,easing:u},{mode:`enter`});e.style.transition=n.transitions.create(`transform`,r),e.style.transform=`none`,m&&m(e,t)}),E=Zh(x,p),D=Zh(x,_),O=Zh(x,e=>{let t=$h({timeout:y,style:v,easing:u},{mode:`exit`});e.style.transition=n.transitions.create(`transform`,t),Q9(l,e,c),h&&h(e)}),k=Zh(x,e=>{e.style.transition=``,g&&g(e)}),A=e=>{a&&a(x.current,e)},j=C.useCallback(()=>{x.current&&Q9(l,x.current,c)},[l,c]);return C.useEffect(()=>{if(d||l===`down`||l===`right`)return;let e=Qm(()=>{x.current&&Q9(l,x.current,c)}),t=rh(x.current);return t.addEventListener(`resize`,e),()=>{e.clear(),t.removeEventListener(`resize`,e)}},[l,d,c]),C.useEffect(()=>{d||j()},[d,j]),(0,W.jsx)(Dh,{nodeRef:x,onEnter:w,onEntered:E,onEntering:T,onExit:O,onExited:k,onExiting:D,addEndListener:A,appear:o,in:d,timeout:y,...b,children:(e,{ownerState:t,...n})=>{let r;return r=e===`exited`&&!d?v||s.props.style?{visibility:`hidden`,...v,...s.props.style}:t6e:v&&s.props.style?{...v,...s.props.style}:v||s.props.style,C.cloneElement(s,{ref:S,style:r,...n})}})});function a6e(e){return zd(`MuiDrawer`,e)}K(`MuiDrawer`,[`root`,`docked`,`paper`,`anchorLeft`,`anchorRight`,`anchorTop`,`anchorBottom`,`paperAnchorLeft`,`paperAnchorRight`,`paperAnchorTop`,`paperAnchorBottom`,`paperAnchorDockedLeft`,`paperAnchorDockedRight`,`paperAnchorDockedTop`,`paperAnchorDockedBottom`,`modal`]);var o6e=(e,t)=>{let{ownerState:n}=e;return[t.root,(n.variant===`permanent`||n.variant===`persistent`)&&t.docked,n.variant===`temporary`&&t.modal]},s6e=e=>{let{classes:t,anchor:n,variant:r}=e;return pp({root:[`root`,`anchor${Y(n)}`],docked:[(r===`permanent`||r===`persistent`)&&`docked`],modal:[`modal`],paper:[`paper`,`paperAnchor${Y(n)}`,r!==`temporary`&&`paperAnchorDocked${Y(n)}`]},a6e,t)},c6e=J(Rb,{name:`MuiDrawer`,slot:`Root`,overridesResolver:o6e})(Lm(({theme:e})=>({zIndex:(e.vars||e).zIndex.drawer}))),l6e=J(`div`,{shouldForwardProp:km,name:`MuiDrawer`,slot:`Docked`,skipVariantsResolver:!1,overridesResolver:o6e})({flex:`0 0 auto`}),u6e=J(qm,{name:`MuiDrawer`,slot:`Paper`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.paper,t[`paperAnchor${Y(n.anchor)}`],n.variant!==`temporary`&&t[`paperAnchorDocked${Y(n.anchor)}`]]}})(Lm(({theme:e})=>({overflowY:`auto`,display:`flex`,flexDirection:`column`,height:`100%`,flex:`1 0 auto`,zIndex:(e.vars||e).zIndex.drawer,WebkitOverflowScrolling:`touch`,position:`fixed`,top:0,outline:0,variants:[{props:{anchor:`left`},style:{left:0}},{props:{anchor:`top`},style:{top:0,left:0,right:0,height:`auto`,maxHeight:`100%`}},{props:{anchor:`right`},style:{right:0}},{props:{anchor:`bottom`},style:{top:`auto`,left:0,bottom:0,right:0,height:`auto`,maxHeight:`100%`}},{props:({ownerState:e})=>e.anchor===`left`&&e.variant!==`temporary`,style:{borderRight:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`top`&&e.variant!==`temporary`,style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`right`&&e.variant!==`temporary`,style:{borderLeft:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:e})=>e.anchor===`bottom`&&e.variant!==`temporary`,style:{borderTop:`1px solid ${(e.vars||e).palette.divider}`}}]}))),d6e={left:`right`,right:`left`,top:`down`,bottom:`up`};function f6e(e){return[`left`,`right`].includes(e)}function p6e({direction:e},t){return e===`rtl`&&f6e(t)?d6e[t]:t}var m6e=C.forwardRef(function(e,t){let n=jm({props:e,name:`MuiDrawer`}),r=Em(),i=Mf(),a={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{anchor:o=`left`,BackdropProps:s,children:c,className:l,elevation:u=16,hideBackdrop:d=!1,ModalProps:{BackdropProps:f,...p}={},onClose:m,open:h=!1,PaperProps:g={},SlideProps:_,TransitionComponent:v,transitionDuration:y=a,variant:b=`temporary`,slots:x={},slotProps:S={},...w}=n,T=C.useRef(!1);C.useEffect(()=>{T.current=!0},[]);let E=p6e({direction:i?`rtl`:`ltr`},o),D=o,O={...n,anchor:D,elevation:u,open:h,variant:b,...w},k=s6e(O),A={slots:{transition:v,...x},slotProps:{paper:g,transition:_,...S,backdrop:fh(S.backdrop||{...s,...f},{transitionDuration:y})}},[j,M]=Gm(`root`,{ref:t,elementType:c6e,className:G(k.root,k.modal,l),shouldForwardComponentProp:!0,ownerState:O,externalForwardedProps:{...A,...w,...p},additionalProps:{open:h,onClose:m,hideBackdrop:d,slots:{backdrop:A.slots.backdrop},slotProps:{backdrop:A.slotProps.backdrop}}}),[N,P]=Gm(`paper`,{elementType:u6e,shouldForwardComponentProp:!0,className:G(k.paper,g.className),ownerState:O,externalForwardedProps:A,additionalProps:{elevation:b===`temporary`?u:0,square:!0,...b===`temporary`&&{role:`dialog`,"aria-modal":`true`}}}),[F,I]=Gm(`docked`,{elementType:l6e,ref:t,className:G(k.root,k.docked,l),ownerState:O,externalForwardedProps:A,additionalProps:w}),[L,R]=Gm(`transition`,{elementType:i6e,ownerState:O,externalForwardedProps:A,additionalProps:{in:h,direction:d6e[E],timeout:y,appear:T.current}}),ee=(0,W.jsx)(N,{...P,children:c});if(b===`permanent`)return(0,W.jsx)(F,{...I,children:ee});let z=(0,W.jsx)(L,{...R,children:ee});return b===`persistent`?(0,W.jsx)(F,{...I,children:z}):(0,W.jsx)(j,{...M,children:z})}),h6e=sf({themeId:Tm}),g6e={error:Tx,warn:Qv,info:xb,debug:$T},_6e=({open:e,onClose:t})=>{let{t:n}=hs(),r=Em(),i=(0,C.useMemo)(()=>({error:r.palette.error.main,warn:r.palette.warning.main,info:r.palette.info.main,debug:r.palette.secondary.main}),[r]),[a,o]=(0,C.useState)([]),[s,c]=(0,C.useState)(!0),[l,u]=(0,C.useState)(`error,warn,info`.split(`,`)),[d,f]=(0,C.useState)(``),[p,m]=(0,C.useState)(!0),h=(0,C.useCallback)(async()=>{try{let e=new URLSearchParams({level:l.join(`,`),limit:`500`,...d&&{search:d}}),t=await fetch(`api/logs?${e}`);t.ok&&o((await t.json()).entries)}catch(e){console.error(`Failed to fetch logs:`,e)}finally{c(!1)}},[l,d]);(0,C.useEffect)(()=>{e&&h()},[e,h]),(0,C.useEffect)(()=>{if(!p||!e)return;let t=setInterval(h,5e3);return()=>clearInterval(t)},[p,e,h]);let g=e=>{u(Array.isArray(e.target.value)?e.target.value:[e.target.value])},_=e=>{f(e.target.value)},v=async()=>{try{await fetch(`api/logs`,{method:`DELETE`}),o([])}catch(e){console.error(`Failed to clear logs:`,e)}},y=e=>(0,W.jsx)(g6e[e]||xb,{sx:{fontSize:16,color:i[e]}});return(0,W.jsxs)(Vb,{open:e,onClose:t,maxWidth:`lg`,fullWidth:!0,children:[(0,W.jsxs)(Wb,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,W.jsx)($T,{}),n(`logs.title`),(0,W.jsx)(Z,{sx:{flexGrow:1}}),(0,W.jsx)(mb,{title:n(`logs.autoRefresh`),children:(0,W.jsx)(kv,{label:p?`Auto`:`Manual`,color:p?`success`:`default`,size:`small`,onClick:()=>m(!p),sx:{cursor:`pointer`}})}),(0,W.jsx)(Uh,{onClick:t,children:(0,W.jsx)(tE,{})})]}),(0,W.jsxs)(Ub,{children:[(0,W.jsx)(Gv,{spacing:2,sx:{mb:2},children:(0,W.jsxs)(Gv,{direction:`row`,spacing:2,alignItems:`center`,children:[(0,W.jsxs)(Mv,{size:`small`,sx:{minWidth:200},children:[(0,W.jsx)(Hx,{children:n(`logs.logLevel`)}),(0,W.jsxs)(wS,{value:l,label:n(`logs.logLevel`),onChange:g,multiple:!0,renderValue:e=>(0,W.jsx)(Z,{sx:{display:`flex`,flexWrap:`wrap`,gap:.5},children:(Array.isArray(e)?e:[e]).map(e=>(0,W.jsx)(kv,{label:e.toUpperCase(),size:`small`,sx:{backgroundColor:i[e],color:`white`}},e))}),children:[(0,W.jsx)(TS,{value:`error`,children:n(`logs.error`)}),(0,W.jsx)(TS,{value:`warn`,children:n(`logs.warning`)}),(0,W.jsx)(TS,{value:`info`,children:n(`logs.info`)}),(0,W.jsx)(TS,{value:`debug`,children:n(`logs.debug`)})]})]}),(0,W.jsx)(OS,{size:`small`,placeholder:n(`logs.searchPlaceholder`),value:d,onChange:_,sx:{flexGrow:1}}),(0,W.jsx)(_v,{variant:`outlined`,onClick:h,children:n(`common.refresh`)}),(0,W.jsx)(_v,{variant:`outlined`,color:`error`,onClick:v,children:n(`common.delete`)})]})}),(0,W.jsx)(Z,{sx:{height:400,overflow:`auto`,backgroundColor:`background.paper`,border:1,borderColor:`divider`,borderRadius:1,p:1},children:s?(0,W.jsx)(Z,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,W.jsxs)(Q,{children:[n(`common.loading`),`...`]})}):a.length===0?(0,W.jsx)(Z,{sx:{display:`flex`,justifyContent:`center`,p:4},children:(0,W.jsx)(Q,{color:`text.secondary`,children:n(`logs.noResults`)})}):(0,W.jsx)(Gv,{spacing:1,children:a.map((e,t)=>(0,W.jsxs)(Z,{sx:{p:1,borderRadius:1,backgroundColor:`action.hover`,fontFamily:`monospace`,fontSize:`0.875rem`,wordBreak:`break-all`},children:[(0,W.jsxs)(Z,{sx:{display:`flex`,alignItems:`center`,gap:1,mb:.5},children:[y(e.level),(0,W.jsx)(Q,{variant:`caption`,color:`text.secondary`,children:new Date(e.timestamp).toLocaleString()}),(0,W.jsx)(kv,{label:e.level.toUpperCase(),size:`small`,sx:{backgroundColor:i[e.level],color:r.palette.getContrastText(i[e.level]??r.palette.grey[500]),fontSize:`0.7rem`,height:20}})]}),(0,W.jsx)(Q,{sx:{ml:3},children:e.message}),e.context&&(0,W.jsx)(Q,{sx:{ml:3,color:`text.secondary`,fontSize:`0.8rem`},children:JSON.stringify(e.context,null,2)})]},`${e.timestamp}-${e.level}-${t}`))})})]}),(0,W.jsx)(Hb,{children:(0,W.jsx)(_v,{onClick:t,children:n(`common.close`)})})]})};function v6e(){let{t:e}=hs(),{isConnected:t}=ev(),[n,r]=(0,C.useState)(null),[i,a]=(0,C.useState)(!1);(0,C.useEffect)(()=>{let e=async()=>{try{let e=await fetch(`api/health`);e.ok?(r(await e.json()),a(!1)):a(!0)}catch{a(!0)}};e();let t=setInterval(e,3e4);return()=>clearInterval(t)},[]);let o=e=>{let t=Math.floor(e/3600),n=Math.floor(e%3600/60);return t>0?`${t}h ${n}m`:`${n}m`},s=n?.status===`healthy`&&!i,c=n?.services?.bridges,l=c&&c.total>0&&c.running===c.total,u=c&&c.total===0,d=n?(0,W.jsxs)(Z,{sx:{p:.5},children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e(`health.version`),`:`]}),` `,n.version??e(`status.unknown`)]}),(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e(`health.uptime`),`:`]}),` `,o(n.uptime??0)]}),n.services?.bridges&&(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e(`nav.bridges`),`:`]}),` `,n.services.bridges.running??0,`/`,n.services.bridges.total??0,` `,e(`common.running`).toLowerCase(),(n.services.bridges.stopped??0)>0&&` (${n.services.bridges.stopped} ${e(`common.stopped`).toLowerCase()})`]}),n.services?.homeAssistant&&(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e(`health.homeAssistant`),`:`]}),` `,n.services.homeAssistant.connected?e(`health.connected`):e(`health.disconnected`)]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`strong`,{children:`WebSocket:`}),` `,e(t?`health.connected`:`health.disconnected`)]})]}):e(`status.loadingHealth`);return(0,W.jsx)(mb,{title:d,arrow:!0,children:(0,W.jsx)(kv,{icon:i||!s?(0,W.jsx)(Tx,{fontSize:`small`}):l?(0,W.jsx)(fv,{fontSize:`small`}):(0,W.jsx)(wb,{fontSize:`small`}),label:e(i?`status.error`:s?t?u?`status.noBridges`:l?`common.online`:`common.starting`:`common.offline`:`status.unhealthy`),color:i||!s?`error`:!l||!t?`warning`:`success`,size:`small`,variant:`filled`,sx:{borderRadius:1,fontWeight:600,"& .MuiChip-icon":{color:`inherit`}}})})}var y6e=e=>(0,W.jsx)(`svg`,{viewBox:`0 0 91 89`,xmlSpace:`preserve`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,W.jsxs)(`g`,{style:{display:`inline`},children:[(0,W.jsx)(`path`,{style:{fill:`#18bcf2`,fillOpacity:1,strokeWidth:.266194},d:`m 49.149143,1.473171 38.513568,38.536435 c 0,0 1.248354,1.186052 2.207681,3.092371 0.959329,1.906323 1.10864,4.600698 1.10864,4.600698 v 36.786372 c 0,0 -0.01549,1.748506 -1.49842,3.050572 -1.482931,1.302064 -3.333077,1.362947 -3.333077,1.362947 l -81.325658,7.7e-5 c 0,0 -1.7523855,-0.0091 -3.17112,-1.352526 C -0.07808495,85.913164 0.05953025,84.487808 0.05953025,84.487808 V 47.704546 c 0,0 -0.0018381,-2.218618 0.95921785,-4.315832 0.9610554,-2.097209 2.3010618,-3.355005 2.3010618,-3.355005 L 41.545959,1.4719546 c 0,0 1.465224,-1.46837077 3.753488,-1.46837077 2.288268,0 3.849696,1.46958717 3.849696,1.46958717 z`}),(0,W.jsx)(`path`,{style:{fill:`#ffffff`,fillOpacity:1,strokeWidth:.175841},d:`m 31.689717,32.051124 c 2.813363,2.331095 6.157331,3.89845 9.721813,4.556421 V 17.180647 l 3.873694,-2.282955 3.870527,2.282955 V 36.60772 c 3.565364,-0.658847 6.910387,-2.226204 9.725159,-4.556417 l 7.032345,4.154609 c -11.437354,11.557779 -29.852321,11.557779 -41.290025,0 z m 8.546732,49.60988 C 44.314996,65.760441 35.09933,49.470196 19.574984,45.139543 v 8.312381 c 3.383916,1.32244 6.386113,3.496288 8.728705,6.320026 L 11.83076,69.485301 v 4.56907 l 3.873697,2.270836 16.469936,-9.713534 c 1.224356,3.48294 1.56683,7.225375 0.996449,10.879778 z M 70.977694,45.139543 c -15.515726,4.34014 -24.72189,20.626696 -20.643519,36.521461 l 7.047658,-4.15742 c -0.569325,-3.654411 -0.2265,-7.3965 0.996449,-10.87979 l 16.457611,9.701233 3.870711,-2.283125 v -4.55677 L 62.233673,59.77195 c 2.342772,-2.822684 5.34497,-4.996533 8.728708,-6.320026 z`})]})}),b6e=e=>{let t=J3e();return(0,W.jsxs)(Z,{component:ta,to:Y9.dashboard,sx:{display:`flex`,alignItems:`center`,justifyContent:e.large?`flex-start`:`center`,flexGrow:1,textDecoration:`none`,color:`inherit`},children:[(0,W.jsx)(y6e,{style:{height:`40px`}}),(0,W.jsx)(Q,{variant:`inherit`,component:`span`,sx:{mr:1,ml:1},children:t.name.split(`-`).map(Y).join(`-`)}),e.large&&(0,W.jsx)(Q,{variant:`caption`,component:`span`,children:t.version})]})},x6e=()=>{let e=h6e(`(min-width:600px)`),{mode:t,setMode:n}=Im(),[r,i]=(0,C.useState)(!1),[a,o]=(0,C.useState)(!1),s=Cr(),c=br(),l=e=>e?e===`/`?c.pathname===`/`:c.pathname.startsWith(e):!1,u=()=>{n(t===`dark`?`light`:`dark`)},{t:d}=hs(),f=[{label:d(`dashboard.title`),icon:(0,W.jsx)(oE,{}),to:Y9.dashboard},{label:d(`nav.bridges`),icon:(0,W.jsx)(sE,{}),to:Y9.bridges},{label:d(`nav.devices`),icon:(0,W.jsx)(_b,{}),to:Y9.devices},{label:d(`nav.standaloneDevices`,`Standalone Devices`),icon:(0,W.jsx)(Khe,{}),to:Y9.standaloneDevices},{label:d(`nav.networkMap`),icon:(0,W.jsx)(JT,{}),to:Y9.networkMap},{label:d(`nav.startupOrder`),icon:(0,W.jsx)(pv,{}),to:Y9.startup},{label:d(`nav.lockCredentials`),icon:(0,W.jsx)(kT,{}),to:Y9.lockCredentials},{label:d(`nav.filterReference`),icon:(0,W.jsx)(cE,{}),to:Y9.labels},{label:`Plugins`,icon:(0,W.jsx)(iE,{}),to:Y9.plugins},{label:d(`nav.settings`),icon:(0,W.jsx)(RT,{}),to:Y9.settings},{label:d(t===`dark`?`nav.lightMode`:`nav.darkMode`),icon:t===`dark`?(0,W.jsx)(zhe,{}):(0,W.jsx)(Ehe,{}),onClick:u},{label:d(`nav.systemLogs`),icon:(0,W.jsx)($T,{}),onClick:()=>i(!0)},{label:d(`nav.health`),icon:(0,W.jsx)(jx,{}),to:Y9.health}],p=e=>{o(!1),e.onClick?e.onClick():e.to&&s(e.to)};return(0,W.jsxs)(Z,{children:[(0,W.jsx)(e6e,{sx:{height:`72px`},children:(0,W.jsx)(F3e,{sx:{paddingLeft:`0 !important`,paddingRight:`0 !important`},children:(0,W.jsxs)(Z9,{sx:{padding:2,height:`100%`,display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,W.jsx)(b6e,{large:e}),e?(0,W.jsxs)(Z,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[f.map(e=>e.to?(0,W.jsx)(mb,{title:e.label,children:(0,W.jsx)(Uh,{component:ta,to:e.to,sx:{color:`inherit`,bgcolor:l(e.to)?`rgba(255,255,255,0.15)`:`transparent`,borderRadius:1},children:e.icon})},e.label):(0,W.jsx)(mb,{title:e.label,children:(0,W.jsx)(Uh,{onClick:e.onClick,sx:{color:`inherit`},children:e.icon})},e.label)),(0,W.jsx)(v6e,{})]}):(0,W.jsxs)(Z,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[(0,W.jsx)(v6e,{}),(0,W.jsx)(Uh,{onClick:()=>o(!0),sx:{color:`inherit`},children:(0,W.jsx)(Bhe,{})})]})]})})}),(0,W.jsx)(m6e,{anchor:`right`,open:a,onClose:()=>o(!1),children:(0,W.jsx)(ny,{sx:{width:250},children:f.map(e=>(0,W.jsxs)(Rae,{selected:l(e.to),onClick:()=>p(e),children:[(0,W.jsx)(sy,{children:e.icon}),(0,W.jsx)(ly,{primary:e.label})]},e.label))})}),(0,W.jsx)(_6e,{open:r,onClose:()=>i(!1)})]})},S6e=()=>{let{versionMismatch:e,frontendVersion:t,backendVersion:n}=J3e(),{isConnected:r}=ev();return(0,W.jsxs)(Z,{children:[(0,W.jsx)(x6e,{}),(0,W.jsx)(F3e,{}),e&&(0,W.jsxs)(Kh,{severity:`warning`,variant:`filled`,sx:{borderRadius:0},action:(0,W.jsx)(_v,{color:`inherit`,size:`small`,onClick:()=>window.location.reload(),children:`Reload`}),children:[`Version mismatch: frontend `,t,`, backend `,n,`. Please reload to get the latest UI.`]}),!r&&(0,W.jsx)(Kh,{severity:`error`,variant:`filled`,sx:{borderRadius:0},children:`Connection lost, data may be outdated. Reconnecting…`}),(0,W.jsx)(Z9,{sx:{p:2},children:(0,W.jsx)(I3e,{children:(0,W.jsx)(si,{})})}),(0,W.jsx)(Y3e,{}),(0,W.jsx)(K3e,{})]})},C6e=Cm({colorSchemes:{light:{palette:{primary:{main:`#1976d2`,light:`#42a5f5`,dark:`#1565c0`},secondary:{main:`#9c27b0`,light:`#ba68c8`,dark:`#7b1fa2`},background:{default:`#f5f5f5`,paper:`#ffffff`}}},dark:{palette:{primary:{main:`#90caf9`,light:`#e3f2fd`,dark:`#42a5f5`},secondary:{main:`#ce93d8`,light:`#f3e5f5`,dark:`#ab47bc`},background:{default:`#121212`,paper:`#1e1e1e`}}}},typography:{fontFamily:`"Roboto", "Helvetica", "Arial", sans-serif`,h1:{fontSize:`2.5rem`,fontWeight:500},h2:{fontSize:`2rem`,fontWeight:500},h3:{fontSize:`1.75rem`,fontWeight:500},h4:{fontSize:`1.5rem`,fontWeight:500},h5:{fontSize:`1.25rem`,fontWeight:500},h6:{fontSize:`1rem`,fontWeight:500}},shape:{borderRadius:8},components:{MuiCard:{styleOverrides:{root:{transition:`transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out`,"&:hover":{transform:`translateY(-2px)`,boxShadow:`0 4px 20px rgba(0,0,0,0.12)`}}}},MuiButton:{styleOverrides:{root:{textTransform:`none`,fontWeight:500}}},MuiChip:{styleOverrides:{root:{fontWeight:500}}},MuiAppBar:{styleOverrides:{root:{backgroundImage:`none`}}}}}),$9=document.getElementsByTagName(`base`)[0]?.href?.replace(/\/$/,``);$9?.startsWith(`http`)&&($9=new URL($9).pathname);var w6e=Xi([{path:`/`,element:(0,W.jsx)(S6e,{}),children:O3e}],{basename:$9});(0,S.createRoot)(document.getElementById(`root`)).render((0,W.jsx)(C.StrictMode,{children:(0,W.jsx)(L,{store:j3e,children:(0,W.jsxs)(Gee,{theme:C6e,children:[(0,W.jsx)(zee,{}),(0,W.jsx)(Dm,{styles:{".rjsf-field-array > .MuiFormControl-root > .MuiPaper-root > .MuiBox-root > .MuiGrid-root > .MuiGrid-root:has(> .MuiBox-root > .MuiPaper-root > .MuiBox-root > .rjsf-field)":{overflow:`initial !important`,flexGrow:1}}}),(0,W.jsx)(xre,{children:(0,W.jsx)(sne,{children:(0,W.jsx)(xa,{router:w6e})})})]})})}));