homebridge-config-ui-x 5.11.2-beta.3 → 5.11.2-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -3
- package/dist/core/auth/auth.controller.d.ts +4 -0
- package/dist/core/config/config.interfaces.d.ts +14 -0
- package/dist/core/config/config.service.d.ts +6 -0
- package/dist/core/config/config.service.js +8 -0
- package/dist/core/config/config.service.js.map +1 -1
- package/dist/core/config/config.startup.js +48 -17
- package/dist/core/config/config.startup.js.map +1 -1
- package/dist/core/feature-flags/feature-flags.registry.js +5 -0
- package/dist/core/feature-flags/feature-flags.registry.js.map +1 -1
- package/dist/core/homebridge-ipc/homebridge-ipc.service.js +1 -0
- package/dist/core/homebridge-ipc/homebridge-ipc.service.js.map +1 -1
- package/dist/core/spa/spa-html.service.d.ts +5 -0
- package/dist/core/spa/spa-html.service.js +32 -0
- package/dist/core/spa/spa-html.service.js.map +1 -0
- package/dist/core/spa/spa.filter.d.ts +3 -0
- package/dist/core/spa/spa.filter.js +22 -2
- package/dist/core/spa/spa.filter.js.map +1 -1
- package/dist/core/ssl/ssl-cert-generator.service.d.ts +15 -0
- package/dist/core/ssl/ssl-cert-generator.service.js +125 -0
- package/dist/core/ssl/ssl-cert-generator.service.js.map +1 -0
- package/dist/globalDefaults.js +3 -0
- package/dist/globalDefaults.js.map +1 -1
- package/dist/main.js +18 -4
- package/dist/main.js.map +1 -1
- package/dist/modules/accessories/accessories.controller.d.ts +1 -1
- package/dist/modules/accessories/accessories.interfaces.d.ts +94 -0
- package/dist/modules/accessories/accessories.interfaces.js +2 -0
- package/dist/modules/accessories/accessories.interfaces.js.map +1 -0
- package/dist/modules/accessories/accessories.module.js +2 -0
- package/dist/modules/accessories/accessories.module.js.map +1 -1
- package/dist/modules/accessories/accessories.service.d.ts +21 -3
- package/dist/modules/accessories/accessories.service.js +280 -17
- package/dist/modules/accessories/accessories.service.js.map +1 -1
- package/dist/modules/child-bridges/child-bridges.interfaces.d.ts +9 -0
- package/dist/modules/config-editor/config-editor.controller.d.ts +4 -0
- package/dist/modules/config-editor/config-editor.controller.js +64 -0
- package/dist/modules/config-editor/config-editor.controller.js.map +1 -1
- package/dist/modules/config-editor/config-editor.service.d.ts +6 -1
- package/dist/modules/config-editor/config-editor.service.js +45 -1
- package/dist/modules/config-editor/config-editor.service.js.map +1 -1
- package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js +1 -1
- package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js.map +1 -1
- package/dist/modules/plugins/plugins.service.js +15 -0
- package/dist/modules/plugins/plugins.service.js.map +1 -1
- package/dist/modules/server/server.controller.d.ts +50 -0
- package/dist/modules/server/server.controller.js +201 -2
- package/dist/modules/server/server.controller.js.map +1 -1
- package/dist/modules/server/server.service.d.ts +48 -0
- package/dist/modules/server/server.service.js +502 -14
- package/dist/modules/server/server.service.js.map +1 -1
- package/dist/modules/status/status.gateway.d.ts +2 -0
- package/dist/modules/status/status.interfaces.d.ts +11 -0
- package/dist/modules/status/status.service.d.ts +4 -1
- package/dist/modules/status/status.service.js +21 -2
- package/dist/modules/status/status.service.js.map +1 -1
- package/docs/matter-todo.md +15 -0
- package/docs/ssl-upload-pr.md +103 -0
- package/package.json +3 -1
- package/public/3rdpartylicenses.txt +595 -621
- package/public/assets/matter.svg +8 -0
- package/public/assets/plugin-ui-utils/ui.js +3 -0
- package/public/assets/plugin-ui-utils/ui.js.map +1 -1
- package/public/chunk-2TQEV57U.js +2 -0
- package/public/chunk-2Y6QBPFY.js +1 -0
- package/public/chunk-3LKYOCGJ.js +1 -0
- package/public/chunk-3YTNATAH.js +1 -0
- package/public/chunk-42Y35W3J.js +2 -0
- package/public/chunk-47QTMPRY.js +1 -0
- package/public/chunk-4KXPUEE3.js +4 -0
- package/public/chunk-4PQ5WRGK.js +1 -0
- package/public/chunk-4TAGCB7R.js +1 -0
- package/public/chunk-4VLAXCSY.js +1 -0
- package/public/chunk-5K3S6ZXB.js +1 -0
- package/public/chunk-6BRZAIW2.js +3 -0
- package/public/chunk-6QJUZNZL.js +1 -0
- package/public/chunk-6ZOSTYPR.js +1 -0
- package/public/{chunk-6XNDXRET.js → chunk-7JNVXXNR.js} +1 -1
- package/public/chunk-7PPGGAHV.js +1 -0
- package/public/chunk-AM5CKSLZ.js +1 -0
- package/public/chunk-B4AJQJMI.js +1 -0
- package/public/chunk-BBRC6PRL.js +1 -0
- package/public/chunk-BGCYR25X.js +1 -0
- package/public/chunk-BHA7V2NQ.js +1 -0
- package/public/{chunk-KI6BE77G.js → chunk-BMOLDRJ3.js} +1 -1
- package/public/chunk-BVJS76CN.js +1 -0
- package/public/chunk-CNUIQJSO.js +1 -0
- package/public/chunk-CPECPTSN.js +1 -0
- package/public/{chunk-75KR2TK6.js → chunk-DBMKB5Z2.js} +1 -1
- package/public/chunk-DEM3FH7C.js +1 -0
- package/public/chunk-E35SHTFY.js +1 -0
- package/public/chunk-EAYA44IV.js +1 -0
- package/public/chunk-EBHP3YOF.js +1 -0
- package/public/chunk-EMF6ZINV.js +4 -0
- package/public/chunk-FJB6YCFU.js +1 -0
- package/public/chunk-FKJY3Z2V.js +1 -0
- package/public/chunk-FQDRGOO5.js +1 -0
- package/public/chunk-FRMRAPF2.js +1 -0
- package/public/chunk-FYHEIYSO.js +5 -0
- package/public/chunk-GEQRIXEF.js +1 -0
- package/public/chunk-GJ42U6LP.js +16 -0
- package/public/chunk-GT2YL2TI.js +1 -0
- package/public/chunk-GTIVJH6Y.js +1 -0
- package/public/chunk-GYMWB5SQ.js +1 -0
- package/public/chunk-H2D3SCVU.js +1 -0
- package/public/{chunk-OMFNURQZ.js → chunk-H7F7H5MW.js} +1 -1
- package/public/chunk-HKOUIAFO.js +1 -0
- package/public/chunk-I5V7VF5M.js +1 -0
- package/public/chunk-IBFLM7UM.js +1 -0
- package/public/chunk-IZHFI46L.js +2 -0
- package/public/chunk-JNSPIONO.js +1 -0
- package/public/chunk-JUCPYKUR.js +1 -0
- package/public/chunk-KJH2IPMR.js +1 -0
- package/public/chunk-KPSGNAPN.js +1 -0
- package/public/chunk-LH4WRTR2.js +1 -0
- package/public/chunk-LHXNE56J.js +1 -0
- package/public/chunk-LOEOVQRM.js +1 -0
- package/public/chunk-LRB7FQNQ.js +1 -0
- package/public/chunk-LTYAICHT.js +1 -0
- package/public/chunk-LVBVUIJY.js +12 -0
- package/public/chunk-MKV5RAJQ.js +4 -0
- package/public/chunk-MPQEE6FH.js +1 -0
- package/public/chunk-MRPQNEON.js +35 -0
- package/public/chunk-MS4K4KAK.js +5 -0
- package/public/chunk-N6AN65NK.js +3 -0
- package/public/chunk-NCLG2ZY5.js +1 -0
- package/public/chunk-OHJQJ73S.js +1 -0
- package/public/chunk-P3DOEH3R.js +1 -0
- package/public/chunk-PEOTW7KR.js +1 -0
- package/public/chunk-PQM33D72.js +1 -0
- package/public/chunk-Q4PUZM2R.js +1 -0
- package/public/chunk-QBG7SKRK.js +68 -0
- package/public/chunk-QGLAR7UC.js +1 -0
- package/public/chunk-QK4CWVVD.js +1 -0
- package/public/chunk-QPGHC7OK.js +1 -0
- package/public/chunk-RAG53DHZ.js +1 -0
- package/public/chunk-RHJRKBK2.js +1 -0
- package/public/chunk-RQ42YKAP.js +1 -0
- package/public/chunk-S4BMZ4C4.js +1 -0
- package/public/chunk-S4O5HRCM.js +1 -0
- package/public/chunk-SE6AXFTZ.js +1 -0
- package/public/chunk-SIODBMHU.js +1 -0
- package/public/chunk-SS725Q7L.js +1 -0
- package/public/chunk-STXA2UWR.js +1 -0
- package/public/chunk-SVEGWVQJ.js +1 -0
- package/public/chunk-T472BWYK.js +1 -0
- package/public/chunk-TPGJVI7J.js +1 -0
- package/public/chunk-TRDYZJYI.js +1 -0
- package/public/chunk-TTX3XSDC.js +1 -0
- package/public/chunk-TVEZZ2CK.js +1 -0
- package/public/chunk-UDXPJS32.js +1 -0
- package/public/chunk-UO7KCTHV.js +1 -0
- package/public/chunk-UOOJPKZJ.js +1 -0
- package/public/chunk-VAD47NOZ.js +1 -0
- package/public/chunk-VBQ2CSUE.js +1 -0
- package/public/chunk-VWBS6KRT.js +1 -0
- package/public/chunk-VYAAI7PY.js +1 -0
- package/public/chunk-WBTFILXV.js +19 -0
- package/public/chunk-WO6QHRQI.js +1 -0
- package/public/chunk-WOMMYJV2.js +1 -0
- package/public/chunk-WOXYSKNU.js +1 -0
- package/public/{chunk-BKCIVF4W.js → chunk-WX345PMX.js} +52 -2
- package/public/chunk-XGK5YFH6.js +19 -0
- package/public/chunk-XLJ6VVK3.js +8 -0
- package/public/chunk-XPSIQPO4.js +1 -0
- package/public/chunk-XQXAVYM6.js +1 -0
- package/public/chunk-YBGB3IOQ.js +1 -0
- package/public/chunk-YHH6UACV.js +1 -0
- package/public/chunk-YLRX4V4V.js +1 -0
- package/public/chunk-YM6RL7NW.js +1 -0
- package/public/chunk-YMEXNW5V.js +1 -0
- package/public/chunk-YSJHLHJ6.js +1 -0
- package/public/chunk-ZCGZM7LU.js +1 -0
- package/public/chunk-ZDUAXPNP.js +1 -0
- package/public/index.html +2 -2
- package/public/main-SPPQL5YI.js +1 -0
- package/public/media/matter-P563JGDL.svg +8 -0
- package/public/polyfills-34U4WL3Z.js +1 -0
- package/public/styles-CT2LPGES.css +1 -0
- package/scripts/extract-plugin-alias.js +53 -2
- package/public/chunk-24WUAMEX.js +0 -1
- package/public/chunk-37VANHXR.js +0 -19
- package/public/chunk-3CYQHQMG.js +0 -4
- package/public/chunk-3F6KNL45.js +0 -5
- package/public/chunk-3XZXVB5X.js +0 -1
- package/public/chunk-4GAZDLVC.js +0 -2
- package/public/chunk-4UB3VNSO.js +0 -1
- package/public/chunk-5GRM2PNI.js +0 -8
- package/public/chunk-5XHUVG6K.js +0 -1
- package/public/chunk-7VHL5WCX.js +0 -8
- package/public/chunk-A5LIZQXO.js +0 -1
- package/public/chunk-ADWZU2CD.js +0 -1
- package/public/chunk-B4UHOSC6.js +0 -1
- package/public/chunk-B6MBMYJR.js +0 -1
- package/public/chunk-BACUUL7U.js +0 -1
- package/public/chunk-BBH2ZQY6.js +0 -1
- package/public/chunk-BON2K2BD.js +0 -2
- package/public/chunk-CFHVD4RQ.js +0 -1
- package/public/chunk-CIGCQV5A.js +0 -1
- package/public/chunk-CSK7YFJT.js +0 -1
- package/public/chunk-D3YCLD23.js +0 -1
- package/public/chunk-DI7U3IQB.js +0 -1
- package/public/chunk-DIMLCFIJ.js +0 -50
- package/public/chunk-E4FQSBCT.js +0 -4
- package/public/chunk-EGMMF7JA.js +0 -1
- package/public/chunk-FOBEQN7K.js +0 -1
- package/public/chunk-GBVRRZAB.js +0 -1
- package/public/chunk-I6HDP5DA.js +0 -1
- package/public/chunk-ICGWKQ7Q.js +0 -1
- package/public/chunk-JFQAZ3RI.js +0 -1
- package/public/chunk-JFY2RCD6.js +0 -1
- package/public/chunk-JJQ5TUDL.js +0 -1
- package/public/chunk-JMZS4O2V.js +0 -1
- package/public/chunk-JOYHBMRK.js +0 -3
- package/public/chunk-JQJMDLP7.js +0 -1
- package/public/chunk-KFXDCZRC.js +0 -1
- package/public/chunk-KSSI2ZEF.js +0 -40
- package/public/chunk-LH7IFLPW.js +0 -1
- package/public/chunk-MEOR6W3Y.js +0 -1
- package/public/chunk-MMBLECEN.js +0 -1
- package/public/chunk-MXYD5BHP.js +0 -1
- package/public/chunk-NSMJ3YMV.js +0 -1
- package/public/chunk-ODLNBFZU.js +0 -1
- package/public/chunk-OEM5IQ3P.js +0 -1
- package/public/chunk-OOM2PIRM.js +0 -5
- package/public/chunk-OWKBT6OU.js +0 -1
- package/public/chunk-P3767BHD.js +0 -1
- package/public/chunk-P63ZI6TN.js +0 -1
- package/public/chunk-PAQ5FY7P.js +0 -4
- package/public/chunk-PVEWB3YZ.js +0 -1
- package/public/chunk-QETNOX4M.js +0 -1
- package/public/chunk-QXD4RXA4.js +0 -1
- package/public/chunk-R7Q4CXAE.js +0 -1
- package/public/chunk-T2CKM6EK.js +0 -1
- package/public/chunk-TNQ2USMJ.js +0 -1
- package/public/chunk-UDSIZPWR.js +0 -1
- package/public/chunk-V5MOUAJH.js +0 -1
- package/public/chunk-VKXQKTA4.js +0 -1
- package/public/chunk-W62QNDAL.js +0 -16
- package/public/chunk-WF6CKG4I.js +0 -1
- package/public/chunk-XDFBUXFD.js +0 -1
- package/public/chunk-Y5HHX2AA.js +0 -5
- package/public/chunk-ZXUIFQS4.js +0 -51
- package/public/main-XHXMXNYC.js +0 -1
- package/public/polyfills-5KWHJ7II.js +0 -2
- package/public/styles-7EFV5QBG.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as Hr,b as Ut,c as Ee,p as Vr}from"./chunk-2TQEV57U.js";import{$ as We,Aa as Dt,D as Ve,E as He,G as ae,Ib as xr,Ic as Fr,K as pr,L as H,M as Et,Mc as qr,Oc as Br,P as gr,Q as q,R as Ge,S as A,Sc as Ze,U as S,V as vr,Wc as Ye,X as C,Xa as Ir,Xb as jr,Z as mr,_ as T,a as ar,aa as d,ac as $r,b as cr,ba as Ot,bb as Ar,c as ur,cc as kr,d as ee,db as Tr,dc as zr,e as O,ea as ce,fa as D,g as z,h as U,hb as Nt,i as p,ib as x,j as lr,jb as Mr,k as Tt,ka as yr,kb as Er,l as dr,la as Rr,lb as Or,ma as Sr,mb as Pt,na as Cr,nb as Dr,o as R,oa as te,p as hr,pa as wr,pb as Me,q as F,r as Mt,ra as Qe,s as fr,sa as Ae,t as Be,ub as Nr,vb as Pr,wa as G,wb as Ur,xa as Te,xb as _r,ya as Ke,yb as Lr,z as V,za as br}from"./chunk-MKV5RAJQ.js";import{a as h,b as P,h as m}from"./chunk-B4AJQJMI.js";var f="primary",ke=Symbol("RouteTitle"),$t=class{params;constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}};function oe(t){return new $t(t)}function en(t,n,e){let r=e.path.split("/");if(r.length>t.length||e.pathMatch==="full"&&(n.hasChildren()||r.length<t.length))return null;let i={};for(let s=0;s<r.length;s++){let o=r[s],a=t[s];if(o[0]===":")i[o.substring(1)]=a;else if(o!==a.path)return null}return{consumed:t.slice(0,r.length),posParams:i}}function nt(t){return new Promise((n,e)=>{t.pipe(H()).subscribe({next:r=>n(r),error:r=>e(r)})})}function Wn(t,n){if(t.length!==n.length)return!1;for(let e=0;e<t.length;++e)if(!j(t[e],n[e]))return!1;return!0}function j(t,n){let e=t?kt(t):void 0,r=n?kt(n):void 0;if(!e||!r||e.length!=r.length)return!1;let i;for(let s=0;s<e.length;s++)if(i=e[s],!tn(t[i],n[i]))return!1;return!0}function kt(t){return[...Object.keys(t),...Object.getOwnPropertySymbols(t)]}function tn(t,n){if(Array.isArray(t)&&Array.isArray(n)){if(t.length!==n.length)return!1;let e=[...t].sort(),r=[...n].sort();return e.every((i,s)=>r[s]===i)}else return t===n}function rn(t){return t.length>0?t[t.length-1]:null}function se(t){return Tt(t)?t:Pr(t)?U(Promise.resolve(t)):p(t)}function nn(t){return Tt(t)?nt(t):Promise.resolve(t)}var Qn={exact:sn,subset:an},on={exact:Kn,subset:Zn,ignored:()=>!0};function Gr(t,n,e){return Qn[e.paths](t.root,n.root,e.matrixParams)&&on[e.queryParams](t.queryParams,n.queryParams)&&!(e.fragment==="exact"&&t.fragment!==n.fragment)}function Kn(t,n){return j(t,n)}function sn(t,n,e){if(!ne(t.segments,n.segments)||!et(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(let r in n.children)if(!t.children[r]||!sn(t.children[r],n.children[r],e))return!1;return!0}function Zn(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>tn(t[e],n[e]))}function an(t,n,e){return cn(t,n,n.segments,e)}function cn(t,n,e,r){if(t.segments.length>e.length){let i=t.segments.slice(0,e.length);return!(!ne(i,e)||n.hasChildren()||!et(i,e,r))}else if(t.segments.length===e.length){if(!ne(t.segments,e)||!et(t.segments,e,r))return!1;for(let i in n.children)if(!t.children[i]||!an(t.children[i],n.children[i],r))return!1;return!0}else{let i=e.slice(0,t.segments.length),s=e.slice(t.segments.length);return!ne(t.segments,i)||!et(t.segments,i,r)||!t.children[f]?!1:cn(t.children[f],n,s,r)}}function et(t,n,e){return n.every((r,i)=>on[e](t[i].parameters,r.parameters))}var L=class{root;queryParams;fragment;_queryParamMap;constructor(n=new g([],{}),e={},r=null){this.root=n,this.queryParams=e,this.fragment=r}get queryParamMap(){return this._queryParamMap??=oe(this.queryParams),this._queryParamMap}toString(){return Jn.serialize(this)}},g=class{segments;children;parent=null;constructor(n,e){this.segments=n,this.children=e,Object.values(e).forEach(r=>r.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return tt(this)}},W=class{path;parameters;_parameterMap;constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap??=oe(this.parameters),this._parameterMap}toString(){return ln(this)}};function Yn(t,n){return ne(t,n)&&t.every((e,r)=>j(e.parameters,n[r].parameters))}function ne(t,n){return t.length!==n.length?!1:t.every((e,r)=>e.path===n[r].path)}function Xn(t,n){let e=[];return Object.entries(t.children).forEach(([r,i])=>{r===f&&(e=e.concat(n(i,r)))}),Object.entries(t.children).forEach(([r,i])=>{r!==f&&(e=e.concat(n(i,r)))}),e}var Re=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>new Q,providedIn:"root"})}return t})(),Q=class{parse(n){let e=new Ft(n);return new L(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){let e=`/${Oe(n.root,!0)}`,r=ri(n.queryParams),i=typeof n.fragment=="string"?`#${ei(n.fragment)}`:"";return`${e}${r}${i}`}},Jn=new Q;function tt(t){return t.segments.map(n=>ln(n)).join("/")}function Oe(t,n){if(!t.hasChildren())return tt(t);if(n){let e=t.children[f]?Oe(t.children[f],!1):"",r=[];return Object.entries(t.children).forEach(([i,s])=>{i!==f&&r.push(`${i}:${Oe(s,!1)}`)}),r.length>0?`${e}(${r.join("//")})`:e}else{let e=Xn(t,(r,i)=>i===f?[Oe(t.children[f],!1)]:[`${i}:${Oe(r,!1)}`]);return Object.keys(t.children).length===1&&t.children[f]!=null?`${tt(t)}/${e[0]}`:`${tt(t)}/(${e.join("//")})`}}function un(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function Xe(t){return un(t).replace(/%3B/gi,";")}function ei(t){return encodeURI(t)}function zt(t){return un(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function rt(t){return decodeURIComponent(t)}function Wr(t){return rt(t.replace(/\+/g,"%20"))}function ln(t){return`${zt(t.path)}${ti(t.parameters)}`}function ti(t){return Object.entries(t).map(([n,e])=>`;${zt(n)}=${zt(e)}`).join("")}function ri(t){let n=Object.entries(t).map(([e,r])=>Array.isArray(r)?r.map(i=>`${Xe(e)}=${Xe(i)}`).join("&"):`${Xe(e)}=${Xe(r)}`).filter(e=>e);return n.length?`?${n.join("&")}`:""}var ni=/^[^\/()?;#]+/;function _t(t){let n=t.match(ni);return n?n[0]:""}var ii=/^[^\/()?;=#]+/;function oi(t){let n=t.match(ii);return n?n[0]:""}var si=/^[^=?&#]+/;function ai(t){let n=t.match(si);return n?n[0]:""}var ci=/^[^&#]+/;function ui(t){let n=t.match(ci);return n?n[0]:""}var Ft=class{url;remaining;constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new g([],{}):new g([],this.parseChildren())}parseQueryParams(){let n={};if(this.consumeOptional("?"))do this.parseQueryParam(n);while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(this.remaining==="")return{};this.consumeOptional("/");let n=[];for(this.peekStartsWith("(")||n.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),n.push(this.parseSegment());let e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let r={};return this.peekStartsWith("(")&&(r=this.parseParens(!1)),(n.length>0||Object.keys(e).length>0)&&(r[f]=new g(n,e)),r}parseSegment(){let n=_t(this.remaining);if(n===""&&this.peekStartsWith(";"))throw new S(4009,!1);return this.capture(n),new W(rt(n),this.parseMatrixParams())}parseMatrixParams(){let n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){let e=oi(this.remaining);if(!e)return;this.capture(e);let r="";if(this.consumeOptional("=")){let i=_t(this.remaining);i&&(r=i,this.capture(r))}n[rt(e)]=rt(r)}parseQueryParam(n){let e=ai(this.remaining);if(!e)return;this.capture(e);let r="";if(this.consumeOptional("=")){let o=ui(this.remaining);o&&(r=o,this.capture(r))}let i=Wr(e),s=Wr(r);if(n.hasOwnProperty(i)){let o=n[i];Array.isArray(o)||(o=[o],n[i]=o),o.push(s)}else n[i]=s}parseParens(n){let e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let r=_t(this.remaining),i=this.remaining[r.length];if(i!=="/"&&i!==")"&&i!==";")throw new S(4010,!1);let s;r.indexOf(":")>-1?(s=r.slice(0,r.indexOf(":")),this.capture(s),this.capture(":")):n&&(s=f);let o=this.parseChildren();e[s??f]=Object.keys(o).length===1&&o[f]?o[f]:new g([],o),this.consumeOptional("//")}return e}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return this.peekStartsWith(n)?(this.remaining=this.remaining.substring(n.length),!0):!1}capture(n){if(!this.consumeOptional(n))throw new S(4011,!1)}};function dn(t){return t.segments.length>0?new g([],{[f]:t}):t}function hn(t){let n={};for(let[r,i]of Object.entries(t.children)){let s=hn(i);if(r===f&&s.segments.length===0&&s.hasChildren())for(let[o,a]of Object.entries(s.children))n[o]=a;else(s.segments.length>0||s.hasChildren())&&(n[r]=s)}let e=new g(t.segments,n);return li(e)}function li(t){if(t.numberOfChildren===1&&t.children[f]){let n=t.children[f];return new g(t.segments.concat(n.segments),n.children)}return t}function K(t){return t instanceof L}function fn(t,n,e=null,r=null,i=new Q){let s=pn(t);return gn(s,n,e,r,i)}function pn(t){let n;function e(s){let o={};for(let c of s.children){let u=e(c);o[c.outlet]=u}let a=new g(s.url,o);return s===t&&(n=a),a}let r=e(t.root),i=dn(r);return n??i}function gn(t,n,e,r,i){let s=t;for(;s.parent;)s=s.parent;if(n.length===0)return Lt(s,s,s,e,r,i);let o=di(n);if(o.toRoot())return Lt(s,s,new g([],{}),e,r,i);let a=hi(o,s,t),c=a.processChildren?Ne(a.segmentGroup,a.index,o.commands):mn(a.segmentGroup,a.index,o.commands);return Lt(s,a.segmentGroup,c,e,r,i)}function it(t){return typeof t=="object"&&t!=null&&!t.outlets&&!t.segmentPath}function Ue(t){return typeof t=="object"&&t!=null&&t.outlets}function Qr(t,n,e){t||="\u0275";let r=new L;return r.queryParams={[t]:n},e.parse(e.serialize(r)).queryParams[t]}function Lt(t,n,e,r,i,s){let o={};for(let[u,l]of Object.entries(r??{}))o[u]=Array.isArray(l)?l.map(v=>Qr(u,v,s)):Qr(u,l,s);let a;t===n?a=e:a=vn(t,n,e);let c=dn(hn(a));return new L(c,o,i)}function vn(t,n,e){let r={};return Object.entries(t.children).forEach(([i,s])=>{s===n?r[i]=e:r[i]=vn(s,n,e)}),new g(t.segments,r)}var ot=class{isAbsolute;numberOfDoubleDots;commands;constructor(n,e,r){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=r,n&&r.length>0&&it(r[0]))throw new S(4003,!1);let i=r.find(Ue);if(i&&i!==rn(r))throw new S(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function di(t){if(typeof t[0]=="string"&&t.length===1&&t[0]==="/")return new ot(!0,0,t);let n=0,e=!1,r=t.reduce((i,s,o)=>{if(typeof s=="object"&&s!=null){if(s.outlets){let a={};return Object.entries(s.outlets).forEach(([c,u])=>{a[c]=typeof u=="string"?u.split("/"):u}),[...i,{outlets:a}]}if(s.segmentPath)return[...i,s.segmentPath]}return typeof s!="string"?[...i,s]:o===0?(s.split("/").forEach((a,c)=>{c==0&&a==="."||(c==0&&a===""?e=!0:a===".."?n++:a!=""&&i.push(a))}),i):[...i,s]},[]);return new ot(e,n,r)}var le=class{segmentGroup;processChildren;index;constructor(n,e,r){this.segmentGroup=n,this.processChildren=e,this.index=r}};function hi(t,n,e){if(t.isAbsolute)return new le(n,!0,0);if(!e)return new le(n,!1,NaN);if(e.parent===null)return new le(e,!0,0);let r=it(t.commands[0])?0:1,i=e.segments.length-1+r;return fi(e,i,t.numberOfDoubleDots)}function fi(t,n,e){let r=t,i=n,s=e;for(;s>i;){if(s-=i,r=r.parent,!r)throw new S(4005,!1);i=r.segments.length}return new le(r,!1,i-s)}function pi(t){return Ue(t[0])?t[0].outlets:{[f]:t}}function mn(t,n,e){if(t??=new g([],{}),t.segments.length===0&&t.hasChildren())return Ne(t,n,e);let r=gi(t,n,e),i=e.slice(r.commandIndex);if(r.match&&r.pathIndex<t.segments.length){let s=new g(t.segments.slice(0,r.pathIndex),{});return s.children[f]=new g(t.segments.slice(r.pathIndex),t.children),Ne(s,0,i)}else return r.match&&i.length===0?new g(t.segments,{}):r.match&&!t.hasChildren()?qt(t,n,e):r.match?Ne(t,0,i):qt(t,n,e)}function Ne(t,n,e){if(e.length===0)return new g(t.segments,{});{let r=pi(e),i={};if(Object.keys(r).some(s=>s!==f)&&t.children[f]&&t.numberOfChildren===1&&t.children[f].segments.length===0){let s=Ne(t.children[f],n,e);return new g(t.segments,s.children)}return Object.entries(r).forEach(([s,o])=>{typeof o=="string"&&(o=[o]),o!==null&&(i[s]=mn(t.children[s],n,o))}),Object.entries(t.children).forEach(([s,o])=>{r[s]===void 0&&(i[s]=o)}),new g(t.segments,i)}}function gi(t,n,e){let r=0,i=n,s={match:!1,pathIndex:0,commandIndex:0};for(;i<t.segments.length;){if(r>=e.length)return s;let o=t.segments[i],a=e[r];if(Ue(a))break;let c=`${a}`,u=r<e.length-1?e[r+1]:null;if(i>0&&c===void 0)break;if(c&&u&&typeof u=="object"&&u.outlets===void 0){if(!Zr(c,u,o))return s;r+=2}else{if(!Zr(c,{},o))return s;r++}i++}return{match:!0,pathIndex:i,commandIndex:r}}function qt(t,n,e){let r=t.segments.slice(0,n),i=0;for(;i<e.length;){let s=e[i];if(Ue(s)){let c=vi(s.outlets);return new g(r,c)}if(i===0&&it(e[0])){let c=t.segments[n];r.push(new W(c.path,Kr(e[0]))),i++;continue}let o=Ue(s)?s.outlets[f]:`${s}`,a=i<e.length-1?e[i+1]:null;o&&a&&it(a)?(r.push(new W(o,Kr(a))),i+=2):(r.push(new W(o,{})),i++)}return new g(r,{})}function vi(t){let n={};return Object.entries(t).forEach(([e,r])=>{typeof r=="string"&&(r=[r]),r!==null&&(n[e]=qt(new g([],{}),0,r))}),n}function Kr(t){let n={};return Object.entries(t).forEach(([e,r])=>n[e]=`${r}`),n}function Zr(t,n,e){return t==e.path&&j(n,e.parameters)}var de="imperative",y=(function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t})(y||{}),E=class{id;url;constructor(n,e){this.id=n,this.url=e}},Z=class extends E{type=y.NavigationStart;navigationTrigger;restoredState;constructor(n,e,r="imperative",i=null){super(n,e),this.navigationTrigger=r,this.restoredState=i}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},N=class extends E{urlAfterRedirects;type=y.NavigationEnd;constructor(n,e,r){super(n,e),this.urlAfterRedirects=r}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},I=(function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t[t.Aborted=4]="Aborted",t})(I||{}),fe=(function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t})(fe||{}),$=class extends E{reason;code;type=y.NavigationCancel;constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}},k=class extends E{reason;code;type=y.NavigationSkipped;constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i}},pe=class extends E{error;target;type=y.NavigationError;constructor(n,e,r,i){super(n,e),this.error=r,this.target=i}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},_e=class extends E{urlAfterRedirects;state;type=y.RoutesRecognized;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},st=class extends E{urlAfterRedirects;state;type=y.GuardsCheckStart;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},at=class extends E{urlAfterRedirects;state;shouldActivate;type=y.GuardsCheckEnd;constructor(n,e,r,i,s){super(n,e),this.urlAfterRedirects=r,this.state=i,this.shouldActivate=s}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},ct=class extends E{urlAfterRedirects;state;type=y.ResolveStart;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},ut=class extends E{urlAfterRedirects;state;type=y.ResolveEnd;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},lt=class{route;type=y.RouteConfigLoadStart;constructor(n){this.route=n}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},dt=class{route;type=y.RouteConfigLoadEnd;constructor(n){this.route=n}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},ht=class{snapshot;type=y.ChildActivationStart;constructor(n){this.snapshot=n}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},ft=class{snapshot;type=y.ChildActivationEnd;constructor(n){this.snapshot=n}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},pt=class{snapshot;type=y.ActivationStart;constructor(n){this.snapshot=n}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},gt=class{snapshot;type=y.ActivationEnd;constructor(n){this.snapshot=n}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},ge=class{routerEvent;position;anchor;type=y.Scroll;constructor(n,e,r){this.routerEvent=n,this.position=e,this.anchor=r}toString(){let n=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${n}')`}},Le=class{},ve=class{url;navigationBehaviorOptions;constructor(n,e){this.url=n,this.navigationBehaviorOptions=e}};function mi(t){return!(t instanceof Le)&&!(t instanceof ve)}function yi(t,n){return t.providers&&!t._injector&&(t._injector=Pt(t.providers,n,`Route: ${t.path}`)),t._injector??n}function _(t){return t.outlet||f}function Ri(t,n){let e=t.filter(r=>_(r)===n);return e.push(...t.filter(r=>_(r)!==n)),e}function Se(t){if(!t)return null;if(t.routeConfig?._injector)return t.routeConfig._injector;for(let n=t.parent;n;n=n.parent){let e=n.routeConfig;if(e?._loadedInjector)return e._loadedInjector;if(e?._injector)return e._injector}return null}var vt=class{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return Se(this.route?.snapshot)??this.rootInjector}constructor(n){this.rootInjector=n,this.children=new Ce(this.rootInjector)}},Ce=(()=>{class t{rootInjector;contexts=new Map;constructor(e){this.rootInjector=e}onChildOutletCreated(e,r){let i=this.getOrCreateContext(e);i.outlet=r,this.contexts.set(e,i)}onChildOutletDestroyed(e){let r=this.getContext(e);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){let e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let r=this.getContext(e);return r||(r=new vt(this.rootInjector),this.contexts.set(e,r)),r}getContext(e){return this.contexts.get(e)||null}static \u0275fac=function(r){return new(r||t)(We(ce))};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),mt=class{_root;constructor(n){this._root=n}get root(){return this._root.value}parent(n){let e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){let e=Bt(n,this._root);return e?e.children.map(r=>r.value):[]}firstChild(n){let e=Bt(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){let e=Vt(n,this._root);return e.length<2?[]:e[e.length-2].children.map(i=>i.value).filter(i=>i!==n)}pathFromRoot(n){return Vt(n,this._root).map(e=>e.value)}};function Bt(t,n){if(t===n.value)return n;for(let e of n.children){let r=Bt(t,e);if(r)return r}return null}function Vt(t,n){if(t===n.value)return[n];for(let e of n.children){let r=Vt(t,e);if(r.length)return r.unshift(n),r}return[]}var M=class{value;children;constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}};function ue(t){let n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}var xe=class extends mt{snapshot;constructor(n,e){super(n),this.snapshot=e,Zt(this,n)}toString(){return this.snapshot.toString()}};function yn(t){let n=Si(t),e=new O([new W("",{})]),r=new O({}),i=new O({}),s=new O({}),o=new O(""),a=new B(e,r,s,o,i,f,t,n.root);return a.snapshot=n.root,new xe(new M(a,[]),n)}function Si(t){let n={},e={},r={},s=new ie([],n,r,"",e,f,t,null,{});return new je("",new M(s,[]))}var B=class{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;constructor(n,e,r,i,s,o,a,c){this.urlSubject=n,this.paramsSubject=e,this.queryParamsSubject=r,this.fragmentSubject=i,this.dataSubject=s,this.outlet=o,this.component=a,this._futureSnapshot=c,this.title=this.dataSubject?.pipe(R(u=>u[ke]))??p(void 0),this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=s}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(R(n=>oe(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(R(n=>oe(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function yt(t,n,e="emptyOnly"){let r,{routeConfig:i}=t;return n!==null&&(e==="always"||i?.path===""||!n.component&&!n.routeConfig?.loadComponent)?r={params:h(h({},n.params),t.params),data:h(h({},n.data),t.data),resolve:h(h(h(h({},t.data),n.data),i?.data),t._resolvedData)}:r={params:h({},t.params),data:h({},t.data),resolve:h(h({},t.data),t._resolvedData??{})},i&&Sn(i)&&(r.resolve[ke]=i.title),r}var ie=class{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;get title(){return this.data?.[ke]}constructor(n,e,r,i,s,o,a,c,u){this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=s,this.outlet=o,this.component=a,this.routeConfig=c,this._resolve=u}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=oe(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=oe(this.queryParams),this._queryParamMap}toString(){let n=this.url.map(r=>r.toString()).join("/"),e=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${n}', path:'${e}')`}},je=class extends mt{url;constructor(n,e){super(e),this.url=n,Zt(this,e)}toString(){return Rn(this._root)}};function Zt(t,n){n.value._routerState=t,n.children.forEach(e=>Zt(t,e))}function Rn(t){let n=t.children.length>0?` { ${t.children.map(Rn).join(", ")} } `:"";return`${t.value}${n}`}function xt(t){if(t.snapshot){let n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,j(n.queryParams,e.queryParams)||t.queryParamsSubject.next(e.queryParams),n.fragment!==e.fragment&&t.fragmentSubject.next(e.fragment),j(n.params,e.params)||t.paramsSubject.next(e.params),Wn(n.url,e.url)||t.urlSubject.next(e.url),j(n.data,e.data)||t.dataSubject.next(e.data)}else t.snapshot=t._futureSnapshot,t.dataSubject.next(t._futureSnapshot.data)}function Ht(t,n){let e=j(t.params,n.params)&&Yn(t.url,n.url),r=!t.parent!=!n.parent;return e&&!r&&(!t.parent||Ht(t.parent,n.parent))}function Sn(t){return typeof t.title=="string"||t.title===null}var Cn=new T(""),Yt=(()=>{class t{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=f;activateEvents=new te;deactivateEvents=new te;attachEvents=new te;detachEvents=new te;routerOutletData=Br(void 0,{});parentContexts=d(Ce);location=d(Er);changeDetector=d(Ze);inputBinder=d(wt,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(e){if(e.name){let{firstChange:r,previousValue:i}=e.name;if(r)return;this.isTrackedInParentContexts(i)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(i)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new S(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new S(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new S(4012,!1);this.location.detach();let e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,r){this.activated=e,this._activatedRoute=r,this.location.insert(e.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){let e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,r){if(this.isActivated)throw new S(4013,!1);this._activatedRoute=e;let i=this.location,o=e.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,c=new Gt(e,a,i.injector,this.routerOutletData);this.activated=i.createComponent(o,{index:i.length,injector:c,environmentInjector:r}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static \u0275fac=function(r){return new(r||t)};static \u0275dir=Me({type:t,selectors:[["router-outlet"]],inputs:{name:"name",routerOutletData:[1,"routerOutletData"]},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],features:[Te]})}return t})(),Gt=class{route;childContexts;parent;outletData;constructor(n,e,r,i){this.route=n,this.childContexts=e,this.parent=r,this.outletData=i}get(n,e){return n===B?this.route:n===Ce?this.childContexts:n===Cn?this.outletData:this.parent.get(n,e)}},wt=new T("");var Xt=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275cmp=Dr({type:t,selectors:[["ng-component"]],exportAs:["emptyRouterOutlet"],decls:1,vars:0,template:function(r,i){r&1&&xr(0,"router-outlet")},dependencies:[Yt],encapsulation:2})}return t})();function Jt(t){let n=t.children&&t.children.map(Jt),e=n?P(h({},t),{children:n}):h({},t);return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==f&&(e.component=Xt),e}function Ci(t,n,e){let r=$e(t,n._root,e?e._root:void 0);return new xe(r,n)}function $e(t,n,e){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){let r=e.value;r._futureSnapshot=n.value;let i=wi(t,n,e);return new M(r,i)}else{if(t.shouldAttach(n.value)){let s=t.retrieve(n.value);if(s!==null){let o=s.route;return o.value._futureSnapshot=n.value,o.children=n.children.map(a=>$e(t,a)),o}}let r=bi(n.value),i=n.children.map(s=>$e(t,s));return new M(r,i)}}function wi(t,n,e){return n.children.map(r=>{for(let i of e.children)if(t.shouldReuseRoute(r.value,i.value.snapshot))return $e(t,r,i);return $e(t,r)})}function bi(t){return new B(new O(t.url),new O(t.params),new O(t.queryParams),new O(t.fragment),new O(t.data),t.outlet,t.component,t)}var me=class{redirectTo;navigationBehaviorOptions;constructor(n,e){this.redirectTo=n,this.navigationBehaviorOptions=e}},wn="ngNavigationCancelingError";function Rt(t,n){let{redirectTo:e,navigationBehaviorOptions:r}=K(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,i=bn(!1,I.Redirect);return i.url=e,i.navigationBehaviorOptions=r,i}function bn(t,n){let e=new Error(`NavigationCancelingError: ${t||""}`);return e[wn]=!0,e.cancellationCode=n,e}function Ii(t){return In(t)&&K(t.url)}function In(t){return!!t&&t[wn]}var Ai=(t,n,e,r)=>R(i=>(new Wt(n,i.targetRouterState,i.currentRouterState,e,r).activate(t),i)),Wt=class{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(n,e,r,i,s){this.routeReuseStrategy=n,this.futureState=e,this.currState=r,this.forwardEvent=i,this.inputBindingEnabled=s}activate(n){let e=this.futureState._root,r=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,r,n),xt(this.futureState.root),this.activateChildRoutes(e,r,n)}deactivateChildRoutes(n,e,r){let i=ue(e);n.children.forEach(s=>{let o=s.value.outlet;this.deactivateRoutes(s,i[o],r),delete i[o]}),Object.values(i).forEach(s=>{this.deactivateRouteAndItsChildren(s,r)})}deactivateRoutes(n,e,r){let i=n.value,s=e?e.value:null;if(i===s)if(i.component){let o=r.getContext(i.outlet);o&&this.deactivateChildRoutes(n,e,o.children)}else this.deactivateChildRoutes(n,e,r);else s&&this.deactivateRouteAndItsChildren(e,r)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,s=ue(n);for(let o of Object.values(s))this.deactivateRouteAndItsChildren(o,i);if(r&&r.outlet){let o=r.outlet.detach(),a=r.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:o,route:n,contexts:a})}}deactivateRouteAndOutlet(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,s=ue(n);for(let o of Object.values(s))this.deactivateRouteAndItsChildren(o,i);r&&(r.outlet&&(r.outlet.deactivate(),r.children.onOutletDeactivated()),r.attachRef=null,r.route=null)}activateChildRoutes(n,e,r){let i=ue(e);n.children.forEach(s=>{this.activateRoutes(s,i[s.value.outlet],r),this.forwardEvent(new gt(s.value.snapshot))}),n.children.length&&this.forwardEvent(new ft(n.value.snapshot))}activateRoutes(n,e,r){let i=n.value,s=e?e.value:null;if(xt(i),i===s)if(i.component){let o=r.getOrCreateContext(i.outlet);this.activateChildRoutes(n,e,o.children)}else this.activateChildRoutes(n,e,r);else if(i.component){let o=r.getOrCreateContext(i.outlet);if(this.routeReuseStrategy.shouldAttach(i.snapshot)){let a=this.routeReuseStrategy.retrieve(i.snapshot);this.routeReuseStrategy.store(i.snapshot,null),o.children.onOutletReAttached(a.contexts),o.attachRef=a.componentRef,o.route=a.route.value,o.outlet&&o.outlet.attach(a.componentRef,a.route.value),xt(a.route.value),this.activateChildRoutes(n,null,o.children)}else o.attachRef=null,o.route=i,o.outlet&&o.outlet.activateWith(i,o.injector),this.activateChildRoutes(n,null,o.children)}else this.activateChildRoutes(n,null,r)}},St=class{path;route;constructor(n){this.path=n,this.route=this.path[this.path.length-1]}},he=class{component;route;constructor(n,e){this.component=n,this.route=e}};function Ti(t,n,e){let r=t._root,i=n?n._root:null;return De(r,i,e,[r.value])}function Mi(t){let n=t.routeConfig?t.routeConfig.canActivateChild:null;return!n||n.length===0?null:{node:t,guards:n}}function we(t,n){let e=Symbol(),r=n.get(t,e);return r===e?typeof t=="function"&&!mr(t)?t:n.get(t):r}function De(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let s=ue(n);return t.children.forEach(o=>{Ei(o,s[o.value.outlet],e,r.concat([o.value]),i),delete s[o.value.outlet]}),Object.entries(s).forEach(([o,a])=>Pe(a,e.getContext(o),i)),i}function Ei(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let s=t.value,o=n?n.value:null,a=e?e.getContext(t.value.outlet):null;if(o&&s.routeConfig===o.routeConfig){let c=Oi(o,s,s.routeConfig.runGuardsAndResolvers);c?i.canActivateChecks.push(new St(r)):(s.data=o.data,s._resolvedData=o._resolvedData),s.component?De(t,n,a?a.children:null,r,i):De(t,n,e,r,i),c&&a&&a.outlet&&a.outlet.isActivated&&i.canDeactivateChecks.push(new he(a.outlet.component,o))}else o&&Pe(n,a,i),i.canActivateChecks.push(new St(r)),s.component?De(t,null,a?a.children:null,r,i):De(t,null,e,r,i);return i}function Oi(t,n,e){if(typeof e=="function")return e(t,n);switch(e){case"pathParamsChange":return!ne(t.url,n.url);case"pathParamsOrQueryParamsChange":return!ne(t.url,n.url)||!j(t.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Ht(t,n)||!j(t.queryParams,n.queryParams);case"paramsChange":default:return!Ht(t,n)}}function Pe(t,n,e){let r=ue(t),i=t.value;Object.entries(r).forEach(([s,o])=>{i.component?n?Pe(o,n.children.getContext(s),e):Pe(o,null,e):Pe(o,n,e)}),i.component?n&&n.outlet&&n.outlet.isActivated?e.canDeactivateChecks.push(new he(n.outlet.component,i)):e.canDeactivateChecks.push(new he(null,i)):e.canDeactivateChecks.push(new he(null,i))}function ze(t){return typeof t=="function"}function Di(t){return typeof t=="boolean"}function Ni(t){return t&&ze(t.canLoad)}function Pi(t){return t&&ze(t.canActivate)}function Ui(t){return t&&ze(t.canActivateChild)}function _i(t){return t&&ze(t.canDeactivate)}function Li(t){return t&&ze(t.canMatch)}function An(t){return t instanceof dr||t?.name==="EmptyError"}var Je=Symbol("INITIAL_VALUE");function ye(){return q(t=>hr(t.map(n=>n.pipe(ae(1),gr(Je)))).pipe(R(n=>{for(let e of n)if(e!==!0){if(e===Je)return Je;if(e===!1||xi(e))return e}return!0}),V(n=>n!==Je),ae(1)))}function xi(t){return K(t)||t instanceof me}function Tn(t){return t.aborted?p(void 0).pipe(ae(1)):new ur(n=>{let e=()=>{n.next(),n.complete()};return t.addEventListener("abort",e),()=>t.removeEventListener("abort",e)})}function Mn(t){return Ge(Tn(t))}function ji(t,n){return F(e=>{let{targetSnapshot:r,currentSnapshot:i,guards:{canActivateChecks:s,canDeactivateChecks:o}}=e;return o.length===0&&s.length===0?p(P(h({},e),{guardsResult:!0})):$i(o,r,i,t).pipe(F(a=>a&&Di(a)?ki(r,s,t,n):p(a)),R(a=>P(h({},e),{guardsResult:a})))})}function $i(t,n,e,r){return U(t).pipe(F(i=>Vi(i.component,i.route,e,n,r)),H(i=>i!==!0,!0))}function ki(t,n,e,r){return U(n).pipe(He(i=>fr(Fi(i.route.parent,r),zi(i.route,r),Bi(t,i.path,e),qi(t,i.route,e))),H(i=>i!==!0,!0))}function zi(t,n){return t!==null&&n&&n(new pt(t)),p(!0)}function Fi(t,n){return t!==null&&n&&n(new ht(t)),p(!0)}function qi(t,n,e){let r=n.routeConfig?n.routeConfig.canActivate:null;if(!r||r.length===0)return p(!0);let i=r.map(s=>Be(()=>{let o=Se(n)??e,a=we(s,o),c=Pi(a)?a.canActivate(n,t):D(o,()=>a(n,t));return se(c).pipe(H())}));return p(i).pipe(ye())}function Bi(t,n,e){let r=n[n.length-1],s=n.slice(0,n.length-1).reverse().map(o=>Mi(o)).filter(o=>o!==null).map(o=>Be(()=>{let a=o.guards.map(c=>{let u=Se(o.node)??e,l=we(c,u),v=Ui(l)?l.canActivateChild(r,t):D(u,()=>l(r,t));return se(v).pipe(H())});return p(a).pipe(ye())}));return p(s).pipe(ye())}function Vi(t,n,e,r,i){let s=n&&n.routeConfig?n.routeConfig.canDeactivate:null;if(!s||s.length===0)return p(!0);let o=s.map(a=>{let c=Se(n)??i,u=we(a,c),l=_i(u)?u.canDeactivate(t,n,e,r):D(c,()=>u(t,n,e,r));return se(l).pipe(H())});return p(o).pipe(ye())}function Hi(t,n,e,r,i){let s=n.canLoad;if(s===void 0||s.length===0)return p(!0);let o=s.map(a=>{let c=we(a,t),u=Ni(c)?c.canLoad(n,e):D(t,()=>c(n,e)),l=se(u);return i?l.pipe(Mn(i)):l});return p(o).pipe(ye(),En(r))}function En(t){return cr(A(n=>{if(typeof n!="boolean")throw Rt(t,n)}),R(n=>n===!0))}function Gi(t,n,e,r,i){let s=n.canMatch;if(!s||s.length===0)return p(!0);let o=s.map(a=>{let c=we(a,t),u=Li(c)?c.canMatch(n,e):D(t,()=>c(n,e)),l=se(u);return i?l.pipe(Mn(i)):l});return p(o).pipe(ye(),En(r))}var re=class On extends Error{segmentGroup;constructor(n){super(),this.segmentGroup=n||null,Object.setPrototypeOf(this,On.prototype)}},Qt=class Dn extends Error{urlTree;constructor(n){super(),this.urlTree=n,Object.setPrototypeOf(this,Dn.prototype)}};function Wi(t){throw new S(4e3,!1)}function Qi(t){throw bn(!1,I.GuardRejected)}var Ki=class{urlSerializer;urlTree;constructor(n,e){this.urlSerializer=n,this.urlTree=e}lineralizeSegments(n,e){return m(this,null,function*(){let r=[],i=e.root;for(;;){if(r=r.concat(i.segments),i.numberOfChildren===0)return r;if(i.numberOfChildren>1||!i.children[f])throw Wi(`${n.redirectTo}`);i=i.children[f]}})}applyRedirectCommands(n,e,r,i,s){return m(this,null,function*(){let o=yield Zi(e,i,s);if(o instanceof L)throw new Qt(o);let a=this.applyRedirectCreateUrlTree(o,this.urlSerializer.parse(o),n,r);if(o[0]==="/")throw new Qt(a);return a})}applyRedirectCreateUrlTree(n,e,r,i){let s=this.createSegmentGroup(n,e.root,r,i);return new L(s,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){let r={};return Object.entries(n).forEach(([i,s])=>{if(typeof s=="string"&&s[0]===":"){let a=s.substring(1);r[i]=e[a]}else r[i]=s}),r}createSegmentGroup(n,e,r,i){let s=this.createSegments(n,e.segments,r,i),o={};return Object.entries(e.children).forEach(([a,c])=>{o[a]=this.createSegmentGroup(n,c,r,i)}),new g(s,o)}createSegments(n,e,r,i){return e.map(s=>s.path[0]===":"?this.findPosParam(n,s,i):this.findOrReturn(s,r))}findPosParam(n,e,r){let i=r[e.path.substring(1)];if(!i)throw new S(4001,!1);return i}findOrReturn(n,e){let r=0;for(let i of e){if(i.path===n.path)return e.splice(r),i;r++}return n}};function Zi(t,n,e){if(typeof t=="string")return Promise.resolve(t);let r=t,{queryParams:i,fragment:s,routeConfig:o,url:a,outlet:c,params:u,data:l,title:v}=n;return nt(se(D(e,()=>r({params:u,data:l,queryParams:i,fragment:s,routeConfig:o,url:a,outlet:c,title:v}))))}var Kt={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function Yi(t,n,e,r,i,s){let o=Nn(t,n,e);return o.matched?(r=yi(n,r),Gi(r,n,e,i,s).pipe(R(a=>a===!0?o:h({},Kt)))):p(o)}function Nn(t,n,e){if(n.path==="**")return Xi(e);if(n.path==="")return n.pathMatch==="full"&&(t.hasChildren()||e.length>0)?h({},Kt):{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};let i=(n.matcher||en)(e,t,n);if(!i)return h({},Kt);let s={};Object.entries(i.posParams??{}).forEach(([a,c])=>{s[a]=c.path});let o=i.consumed.length>0?h(h({},s),i.consumed[i.consumed.length-1].parameters):s;return{matched:!0,consumedSegments:i.consumed,remainingSegments:e.slice(i.consumed.length),parameters:o,positionalParamSegments:i.posParams??{}}}function Xi(t){return{matched:!0,parameters:t.length>0?rn(t).parameters:{},consumedSegments:t,remainingSegments:[],positionalParamSegments:{}}}function Yr(t,n,e,r){return e.length>0&&to(t,e,r)?{segmentGroup:new g(n,eo(r,new g(e,t.children))),slicedSegments:[]}:e.length===0&&ro(t,e,r)?{segmentGroup:new g(t.segments,Ji(t,e,r,t.children)),slicedSegments:e}:{segmentGroup:new g(t.segments,t.children),slicedSegments:e}}function Ji(t,n,e,r){let i={};for(let s of e)if(bt(t,n,s)&&!r[_(s)]){let o=new g([],{});i[_(s)]=o}return h(h({},r),i)}function eo(t,n){let e={};e[f]=n;for(let r of t)if(r.path===""&&_(r)!==f){let i=new g([],{});e[_(r)]=i}return e}function to(t,n,e){return e.some(r=>bt(t,n,r)&&_(r)!==f)}function ro(t,n,e){return e.some(r=>bt(t,n,r))}function bt(t,n,e){return(t.hasChildren()||n.length>0)&&e.pathMatch==="full"?!1:e.path===""}function no(t,n,e){return n.length===0&&!t.children[e]}var io=class{};function oo(t,n,e,r,i,s,o="emptyOnly",a){return m(this,null,function*(){return new ao(t,n,e,r,i,o,s,a).recognize()})}var so=31,ao=class{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;abortSignal;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(n,e,r,i,s,o,a,c){this.injector=n,this.configLoader=e,this.rootComponentType=r,this.config=i,this.urlTree=s,this.paramsInheritanceStrategy=o,this.urlSerializer=a,this.abortSignal=c,this.applyRedirects=new Ki(this.urlSerializer,this.urlTree)}noMatchError(n){return new S(4002,`'${n.segmentGroup}'`)}recognize(){return m(this,null,function*(){let n=Yr(this.urlTree.root,[],[],this.config).segmentGroup,{children:e,rootSnapshot:r}=yield this.match(n),i=new M(r,e),s=new je("",i),o=fn(r,[],this.urlTree.queryParams,this.urlTree.fragment);return o.queryParams=this.urlTree.queryParams,s.url=this.urlSerializer.serialize(o),{state:s,tree:o}})}match(n){return m(this,null,function*(){let e=new ie([],Object.freeze({}),Object.freeze(h({},this.urlTree.queryParams)),this.urlTree.fragment,Object.freeze({}),f,this.rootComponentType,null,{});try{return{children:yield this.processSegmentGroup(this.injector,this.config,n,f,e),rootSnapshot:e}}catch(r){if(r instanceof Qt)return this.urlTree=r.urlTree,this.match(r.urlTree.root);throw r instanceof re?this.noMatchError(r):r}})}processSegmentGroup(n,e,r,i,s){return m(this,null,function*(){if(r.segments.length===0&&r.hasChildren())return this.processChildren(n,e,r,s);let o=yield this.processSegment(n,e,r,r.segments,i,!0,s);return o instanceof M?[o]:[]})}processChildren(n,e,r,i){return m(this,null,function*(){let s=[];for(let c of Object.keys(r.children))c==="primary"?s.unshift(c):s.push(c);let o=[];for(let c of s){let u=r.children[c],l=Ri(e,c),v=yield this.processSegmentGroup(n,l,u,c,i);o.push(...v)}let a=Pn(o);return co(a),a})}processSegment(n,e,r,i,s,o,a){return m(this,null,function*(){for(let c of e)try{return yield this.processSegmentAgainstRoute(c._injector??n,e,c,r,i,s,o,a)}catch(u){if(u instanceof re||An(u))continue;throw u}if(no(r,i,s))return new io;throw new re(r)})}processSegmentAgainstRoute(n,e,r,i,s,o,a,c){return m(this,null,function*(){if(_(r)!==o&&(o===f||!bt(i,s,r)))throw new re(i);if(r.redirectTo===void 0)return this.matchSegmentAgainstRoute(n,i,r,s,o,c);if(this.allowRedirects&&a)return this.expandSegmentAgainstRouteUsingRedirect(n,i,e,r,s,o,c);throw new re(i)})}expandSegmentAgainstRouteUsingRedirect(n,e,r,i,s,o,a){return m(this,null,function*(){let{matched:c,parameters:u,consumedSegments:l,positionalParamSegments:v,remainingSegments:w}=Nn(e,i,s);if(!c)throw new re(e);typeof i.redirectTo=="string"&&i.redirectTo[0]==="/"&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>so&&(this.allowRedirects=!1));let b=new ie(s,u,Object.freeze(h({},this.urlTree.queryParams)),this.urlTree.fragment,Xr(i),_(i),i.component??i._loadedComponent??null,i,Jr(i)),Y=yt(b,a,this.paramsInheritanceStrategy);if(b.params=Object.freeze(Y.params),b.data=Object.freeze(Y.data),this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let X=yield this.applyRedirects.applyRedirectCommands(l,i.redirectTo,v,b,n),J=yield this.applyRedirects.lineralizeSegments(i,X);return this.processSegment(n,r,e,J.concat(w),o,!1,a)})}matchSegmentAgainstRoute(n,e,r,i,s,o){return m(this,null,function*(){if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let a=yield nt(Yi(e,r,i,n,this.urlSerializer,this.abortSignal));if(r.path==="**"&&(e.children={}),!a?.matched)throw new re(e);n=r._injector??n;let{routes:c}=yield this.getChildConfig(n,r,i),u=r._loadedInjector??n,{parameters:l,consumedSegments:v,remainingSegments:w}=a,b=new ie(v,l,Object.freeze(h({},this.urlTree.queryParams)),this.urlTree.fragment,Xr(r),_(r),r.component??r._loadedComponent??null,r,Jr(r)),Y=yt(b,o,this.paramsInheritanceStrategy);b.params=Object.freeze(Y.params),b.data=Object.freeze(Y.data);let{segmentGroup:X,slicedSegments:J}=Yr(e,v,w,c);if(J.length===0&&X.hasChildren()){let Hn=yield this.processChildren(u,c,X,b);return new M(b,Hn)}if(c.length===0&&J.length===0)return new M(b,[]);let qe=_(r)===s,sr=yield this.processSegment(u,c,X,J,qe?f:s,!0,b);return new M(b,sr instanceof M?[sr]:[])})}getChildConfig(n,e,r){return m(this,null,function*(){if(e.children)return{routes:e.children,injector:n};if(e.loadChildren){if(e._loadedRoutes!==void 0)return{routes:e._loadedRoutes,injector:e._loadedInjector};if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);if(yield nt(Hi(n,e,r,this.urlSerializer,this.abortSignal))){let s=yield this.configLoader.loadChildren(n,e);return e._loadedRoutes=s.routes,e._loadedInjector=s.injector,s}throw Qi(e)}return{routes:[],injector:n}})}};function co(t){t.sort((n,e)=>n.value.outlet===f?-1:e.value.outlet===f?1:n.value.outlet.localeCompare(e.value.outlet))}function uo(t){let n=t.value.routeConfig;return n&&n.path===""}function Pn(t){let n=[],e=new Set;for(let r of t){if(!uo(r)){n.push(r);continue}let i=n.find(s=>r.value.routeConfig===s.value.routeConfig);i!==void 0?(i.children.push(...r.children),e.add(i)):n.push(r)}for(let r of e){let i=Pn(r.children);n.push(new M(r.value,i))}return n.filter(r=>!e.has(r))}function Xr(t){return t.data||{}}function Jr(t){return t.resolve||{}}var lo=new T("",{factory:()=>oo});function ho(t,n,e,r,i,s,o){let a=t.get(lo);return F(c=>p(c).pipe(q(u=>a(t,n,e,r,u.extractedUrl,i,s,o)),R(({state:u,tree:l})=>P(h({},c),{targetSnapshot:u,urlAfterRedirects:l}))))}function fo(t,n){return F(e=>{let{targetSnapshot:r,guards:{canActivateChecks:i}}=e;if(!i.length)return p(e);let s=new Set(i.map(c=>c.route)),o=new Set;for(let c of s)if(!o.has(c))for(let u of Un(c))o.add(u);let a=0;return U(o).pipe(He(c=>s.has(c)?po(c,r,t,n):(c.data=yt(c,c.parent,t).resolve,p(void 0))),A(()=>a++),Et(1),F(c=>a===o.size?p(e):z))})}function Un(t){let n=t.children.map(e=>Un(e)).flat();return[t,...n]}function po(t,n,e,r){let i=t.routeConfig,s=t._resolve;return i?.title!==void 0&&!Sn(i)&&(s[ke]=i.title),Be(()=>(t.data=yt(t,t.parent,e).resolve,go(s,t,n,r).pipe(R(o=>(t._resolvedData=o,t.data=h(h({},t.data),o),null)))))}function go(t,n,e,r){let i=kt(t);if(i.length===0)return p({});let s={};return U(i).pipe(F(o=>vo(t[o],n,e,r).pipe(H(),A(a=>{if(a instanceof me)throw Rt(new Q,a);s[o]=a}))),Et(1),R(()=>s),Ve(o=>An(o)?z:lr(o)))}function vo(t,n,e,r){let i=Se(n)??r,s=we(t,i),o=s.resolve?s.resolve(n,e):D(i,()=>s(n,e));return se(o)}function jt(t){return q(n=>{let e=t(n);return e?U(e).pipe(R(()=>n)):p(n)})}var er=(()=>{class t{buildTitle(e){let r,i=e.root;for(;i!==void 0;)r=this.getResolvedTitleForRoute(i)??r,i=i.children.find(s=>s.outlet===f);return r}getResolvedTitleForRoute(e){return e.data[ke]}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>d(_n),providedIn:"root"})}return t})(),_n=(()=>{class t extends er{title;constructor(e){super(),this.title=e}updateTitle(e){let r=this.buildTitle(e);r!==void 0&&this.title.setTitle(r)}static \u0275fac=function(r){return new(r||t)(We(Hr))};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),be=new T("",{factory:()=>({})}),Fe=new T(""),Ln=(()=>{class t{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=d(Fr);loadComponent(e,r){return m(this,null,function*(){if(this.componentLoaders.get(r))return this.componentLoaders.get(r);if(r._loadedComponent)return Promise.resolve(r._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(r);let i=m(this,null,function*(){try{let s=yield nn(D(e,()=>r.loadComponent())),o=yield $n(jn(s));return this.onLoadEndListener&&this.onLoadEndListener(r),r._loadedComponent=o,o}finally{this.componentLoaders.delete(r)}});return this.componentLoaders.set(r,i),i})}loadChildren(e,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return Promise.resolve({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);let i=m(this,null,function*(){try{let s=yield xn(r,this.compiler,e,this.onLoadEndListener);return r._loadedRoutes=s.routes,r._loadedInjector=s.injector,s}finally{this.childrenLoaders.delete(r)}});return this.childrenLoaders.set(r,i),i}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function xn(t,n,e,r){return m(this,null,function*(){let i=yield nn(D(e,()=>t.loadChildren())),s=yield $n(jn(i)),o;s instanceof Or||Array.isArray(s)?o=s:o=yield n.compileModuleAsync(s),r&&r(t);let a,c,u=!1;return Array.isArray(o)?(c=o,u=!0):(a=o.create(e).injector,c=a.get(Fe,[],{optional:!0,self:!0}).flat()),{routes:c.map(Jt),injector:a}})}function mo(t){return t&&typeof t=="object"&&"default"in t}function jn(t){return mo(t)?t.default:t}function $n(t){return m(this,null,function*(){return t})}var It=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>d(yo),providedIn:"root"})}return t})(),yo=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,r){return e}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),tr=new T(""),rr=new T("");function kn(t,n,e){let r=t.get(rr),i=t.get(Rr);if(!i.startViewTransition||r.skipNextTransition)return r.skipNextTransition=!1,new Promise(u=>setTimeout(u));let s,o=new Promise(u=>{s=u}),a=i.startViewTransition(()=>(s(),Ro(t)));a.ready.catch(u=>{});let{onViewTransitionCreated:c}=r;return c&&D(t,()=>c({transition:a,from:n,to:e})),o}function Ro(t){return new Promise(n=>{Tr({read:()=>setTimeout(n)},{injector:t})})}var So=()=>{},zn=new T(""),nr=(()=>{class t{currentNavigation=Ae(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=Ae(null,{});events=new ee;transitionAbortWithErrorSubject=new ee;configLoader=d(Ln);environmentInjector=d(ce);destroyRef=d(Sr);urlSerializer=d(Re);rootContexts=d(Ce);location=d(Ee);inputBindingEnabled=d(wt,{optional:!0})!==null;titleStrategy=d(er);options=d(be,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly";urlHandlingStrategy=d(It);createViewTransition=d(tr,{optional:!0});navigationErrorHandler=d(zn,{optional:!0});navigationId=0;get hasRequestedNavigation(){return this.navigationId!==0}transitions;afterPreactivation=()=>p(void 0);rootComponentType=null;destroyed=!1;constructor(){let e=i=>this.events.next(new lt(i)),r=i=>this.events.next(new dt(i));this.configLoader.onLoadEndListener=r,this.configLoader.onLoadStartListener=e,this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(e){let r=++this.navigationId;G(()=>{this.transitions?.next(P(h({},e),{extractedUrl:this.urlHandlingStrategy.extract(e.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,id:r}))})}setupNavigations(e){return this.transitions=new O(null),this.transitions.pipe(V(r=>r!==null),q(r=>{let i=!1,s=new AbortController;return p(r).pipe(q(o=>{if(this.navigationId>r.id)return this.cancelNavigationTransition(r,"",I.SupersededByNewNavigation),z;this.currentTransition=r;let a=this.lastSuccessfulNavigation();this.currentNavigation.set({id:o.id,initialUrl:o.rawUrl,extractedUrl:o.extractedUrl,targetBrowserUrl:typeof o.extras.browserUrl=="string"?this.urlSerializer.parse(o.extras.browserUrl):o.extras.browserUrl,trigger:o.source,extras:o.extras,previousNavigation:a?P(h({},a),{previousNavigation:null}):null,abort:()=>s.abort()});let c=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),u=o.extras.onSameUrlNavigation??e.onSameUrlNavigation;if(!c&&u!=="reload")return this.events.next(new k(o.id,this.urlSerializer.serialize(o.rawUrl),"",fe.IgnoredSameUrlNavigation)),o.resolve(!1),z;if(this.urlHandlingStrategy.shouldProcessUrl(o.rawUrl))return p(o).pipe(q(l=>(this.events.next(new Z(l.id,this.urlSerializer.serialize(l.extractedUrl),l.source,l.restoredState)),l.id!==this.navigationId?z:Promise.resolve(l))),ho(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy,s.signal),A(l=>{r.targetSnapshot=l.targetSnapshot,r.urlAfterRedirects=l.urlAfterRedirects,this.currentNavigation.update(w=>(w.finalUrl=l.urlAfterRedirects,w));let v=new _e(l.id,this.urlSerializer.serialize(l.extractedUrl),this.urlSerializer.serialize(l.urlAfterRedirects),l.targetSnapshot);this.events.next(v)}));if(c&&this.urlHandlingStrategy.shouldProcessUrl(o.currentRawUrl)){let{id:l,extractedUrl:v,source:w,restoredState:b,extras:Y}=o,X=new Z(l,this.urlSerializer.serialize(v),w,b);this.events.next(X);let J=yn(this.rootComponentType).snapshot;return this.currentTransition=r=P(h({},o),{targetSnapshot:J,urlAfterRedirects:v,extras:P(h({},Y),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.update(qe=>(qe.finalUrl=v,qe)),p(r)}else return this.events.next(new k(o.id,this.urlSerializer.serialize(o.extractedUrl),"",fe.IgnoredByUrlHandlingStrategy)),o.resolve(!1),z}),A(o=>{let a=new st(o.id,this.urlSerializer.serialize(o.extractedUrl),this.urlSerializer.serialize(o.urlAfterRedirects),o.targetSnapshot);this.events.next(a)}),R(o=>(this.currentTransition=r=P(h({},o),{guards:Ti(o.targetSnapshot,o.currentSnapshot,this.rootContexts)}),r)),ji(this.environmentInjector,o=>this.events.next(o)),A(o=>{if(r.guardsResult=o.guardsResult,o.guardsResult&&typeof o.guardsResult!="boolean")throw Rt(this.urlSerializer,o.guardsResult);let a=new at(o.id,this.urlSerializer.serialize(o.extractedUrl),this.urlSerializer.serialize(o.urlAfterRedirects),o.targetSnapshot,!!o.guardsResult);this.events.next(a)}),V(o=>o.guardsResult?!0:(this.cancelNavigationTransition(o,"",I.GuardRejected),!1)),jt(o=>{if(o.guards.canActivateChecks.length!==0)return p(o).pipe(A(a=>{let c=new ct(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(c)}),q(a=>{let c=!1;return p(a).pipe(fo(this.paramsInheritanceStrategy,this.environmentInjector),A({next:()=>c=!0,complete:()=>{c||this.cancelNavigationTransition(a,"",I.NoDataFromResolver)}}))}),A(a=>{let c=new ut(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(c)}))}),jt(o=>{let a=u=>{let l=[];if(u.routeConfig?._loadedComponent)u.component=u.routeConfig?._loadedComponent;else if(u.routeConfig?.loadComponent){let v=Se(u)??this.environmentInjector;l.push(this.configLoader.loadComponent(v,u.routeConfig).then(w=>{u.component=w}))}for(let v of u.children)l.push(...a(v));return l},c=a(o.targetSnapshot.root);return c.length===0?p(o):U(Promise.all(c).then(()=>o))}),jt(()=>this.afterPreactivation()),q(()=>{let{currentSnapshot:o,targetSnapshot:a}=r,c=this.createViewTransition?.(this.environmentInjector,o.root,a.root);return c?U(c).pipe(R(()=>r)):p(r)}),R(o=>{let a=Ci(e.routeReuseStrategy,o.targetSnapshot,o.currentRouterState);return this.currentTransition=r=P(h({},o),{targetRouterState:a}),this.currentNavigation.update(c=>(c.targetRouterState=a,c)),r}),A(()=>{this.events.next(new Le)}),Ai(this.rootContexts,e.routeReuseStrategy,o=>this.events.next(o),this.inputBindingEnabled),ae(1),Ge(Tn(s.signal).pipe(V(()=>!i&&!r.targetRouterState),A(()=>{this.cancelNavigationTransition(r,s.signal.reason+"",I.Aborted)}))),A({next:o=>{i=!0,this.currentNavigation.update(a=>(a.abort=So,a)),this.lastSuccessfulNavigation.set(G(this.currentNavigation)),this.events.next(new N(o.id,this.urlSerializer.serialize(o.extractedUrl),this.urlSerializer.serialize(o.urlAfterRedirects))),this.titleStrategy?.updateTitle(o.targetRouterState.snapshot),o.resolve(!0)},complete:()=>{i=!0}}),Ge(this.transitionAbortWithErrorSubject.pipe(A(o=>{throw o}))),pr(()=>{s.abort(),i||this.cancelNavigationTransition(r,"",I.SupersededByNewNavigation),this.currentTransition?.id===r.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),Ve(o=>{if(this.destroyed)return r.resolve(!1),z;if(i=!0,In(o))this.events.next(new $(r.id,this.urlSerializer.serialize(r.extractedUrl),o.message,o.cancellationCode)),Ii(o)?this.events.next(new ve(o.url,o.navigationBehaviorOptions)):r.resolve(!1);else{let a=new pe(r.id,this.urlSerializer.serialize(r.extractedUrl),o,r.targetSnapshot??void 0);try{let c=D(this.environmentInjector,()=>this.navigationErrorHandler?.(a));if(c instanceof me){let{message:u,cancellationCode:l}=Rt(this.urlSerializer,c);this.events.next(new $(r.id,this.urlSerializer.serialize(r.extractedUrl),u,l)),this.events.next(new ve(c.redirectTo,c.navigationBehaviorOptions))}else throw this.events.next(a),o}catch(c){this.options.resolveNavigationPromiseOnError?r.resolve(!1):r.reject(c)}}return z}))}))}cancelNavigationTransition(e,r,i){let s=new $(e.id,this.urlSerializer.serialize(e.extractedUrl),r,i);this.events.next(s),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){let e=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),r=G(this.currentNavigation),i=r?.targetBrowserUrl??r?.extractedUrl;return e.toString()!==i?.toString()&&!r?.extras.skipLocationChange}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Co(t){return t!==de}var Fn=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>d(wo),providedIn:"root"})}return t})(),Ct=class{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}},wo=(()=>{class t extends Ct{static \u0275fac=(()=>{let e;return function(i){return(e||(e=Ke(t)))(i||t)}})();static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),ir=(()=>{class t{urlSerializer=d(Re);options=d(be,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||"replace";location=d(Ee);urlHandlingStrategy=d(It);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";currentUrlTree=new L;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:e,initialUrl:r,targetBrowserUrl:i}){let s=e!==void 0?this.urlHandlingStrategy.merge(e,r):r,o=i??s;return o instanceof L?this.urlSerializer.serialize(o):o}commitTransition({targetRouterState:e,finalUrl:r,initialUrl:i}){r&&e?(this.currentUrlTree=r,this.rawUrlTree=this.urlHandlingStrategy.merge(r,i),this.routerState=e):this.rawUrlTree=i}routerState=yn(null);getRouterState(){return this.routerState}stateMemento=this.createStateMemento();updateStateMemento(){this.stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}resetInternalState({finalUrl:e}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e??this.rawUrlTree)}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>d(qn),providedIn:"root"})}return t})(),qn=(()=>{class t extends ir{currentPageId=0;lastSuccessfulId=-1;restoredState(){return this.location.getState()}get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(r=>{r.type==="popstate"&&setTimeout(()=>{e(r.url,r.state,"popstate")})})}handleRouterEvent(e,r){e instanceof Z?this.updateStateMemento():e instanceof k?this.commitTransition(r):e instanceof _e?this.urlUpdateStrategy==="eager"&&(r.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(r),r)):e instanceof Le?(this.commitTransition(r),this.urlUpdateStrategy==="deferred"&&!r.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(r),r)):e instanceof $&&e.code!==I.SupersededByNewNavigation&&e.code!==I.Redirect?this.restoreHistory(r):e instanceof pe?this.restoreHistory(r,!0):e instanceof N&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,{extras:r,id:i}){let{replaceUrl:s,state:o}=r;if(this.location.isCurrentPathEqualTo(e)||s){let a=this.browserPageId,c=h(h({},o),this.generateNgRouterState(i,a));this.location.replaceState(e,"",c)}else{let a=h(h({},o),this.generateNgRouterState(i,this.browserPageId+1));this.location.go(e,"",a)}}restoreHistory(e,r=!1){if(this.canceledNavigationResolution==="computed"){let i=this.browserPageId,s=this.currentPageId-i;s!==0?this.location.historyGo(s):this.getCurrentUrlTree()===e.finalUrl&&s===0&&(this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(r&&this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,r){return this.canceledNavigationResolution==="computed"?{navigationId:e,\u0275routerPageId:r}:{navigationId:e}}static \u0275fac=(()=>{let e;return function(i){return(e||(e=Ke(t)))(i||t)}})();static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function or(t,n){t.events.pipe(V(e=>e instanceof N||e instanceof $||e instanceof pe||e instanceof k),R(e=>e instanceof N||e instanceof k?0:(e instanceof $?e.code===I.Redirect||e.code===I.SupersededByNewNavigation:!1)?2:1),V(e=>e!==2),ae(1)).subscribe(()=>{n()})}var bo={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},Io={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"},Ie=(()=>{class t{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=d(Nr);stateManager=d(ir);options=d(be,{optional:!0})||{};pendingTasks=d(Cr);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";navigationTransitions=d(nr);urlSerializer=d(Re);location=d(Ee);urlHandlingStrategy=d(It);injector=d(ce);_events=new ee;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=d(Fn);onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore";config=d(Fe,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!d(wt,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:e=>{this.console.warn(e)}}),this.subscribeToNavigationEvents()}eventsSubscription=new ar;subscribeToNavigationEvents(){let e=this.navigationTransitions.events.subscribe(r=>{try{let i=this.navigationTransitions.currentTransition,s=G(this.navigationTransitions.currentNavigation);if(i!==null&&s!==null){if(this.stateManager.handleRouterEvent(r,s),r instanceof $&&r.code!==I.Redirect&&r.code!==I.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof N)this.navigated=!0;else if(r instanceof ve){let o=r.navigationBehaviorOptions,a=this.urlHandlingStrategy.merge(r.url,i.currentRawUrl),c=h({browserUrl:i.extras.browserUrl,info:i.extras.info,skipLocationChange:i.extras.skipLocationChange,replaceUrl:i.extras.replaceUrl||this.urlUpdateStrategy==="eager"||Co(i.source)},o);this.scheduleNavigation(a,de,null,c,{resolve:i.resolve,reject:i.reject,promise:i.promise})}}mi(r)&&this._events.next(r)}catch(i){this.navigationTransitions.transitionAbortWithErrorSubject.next(i)}});this.eventsSubscription.add(e)}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),de,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,r,i)=>{this.navigateToSyncWithBrowser(e,i,r)})}navigateToSyncWithBrowser(e,r,i){let s={replaceUrl:!0},o=i?.navigationId?i:null;if(i){let c=h({},i);delete c.navigationId,delete c.\u0275routerPageId,Object.keys(c).length!==0&&(s.state=c)}let a=this.parseUrl(e);this.scheduleNavigation(a,r,o,s).catch(c=>{this.disposed||this.injector.get(Qe)(c)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return G(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map(Jt),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,r={}){let{relativeTo:i,queryParams:s,fragment:o,queryParamsHandling:a,preserveFragment:c}=r,u=c?this.currentUrlTree.fragment:o,l=null;switch(a??this.options.defaultQueryParamsHandling){case"merge":l=h(h({},this.currentUrlTree.queryParams),s);break;case"preserve":l=this.currentUrlTree.queryParams;break;default:l=s||null}l!==null&&(l=this.removeEmptyProps(l));let v;try{let w=i?i.snapshot:this.routerState.snapshot.root;v=pn(w)}catch{(typeof e[0]!="string"||e[0][0]!=="/")&&(e=[]),v=this.currentUrlTree.root}return gn(v,e,l,u??null,this.urlSerializer)}navigateByUrl(e,r={skipLocationChange:!1}){let i=K(e)?e:this.parseUrl(e),s=this.urlHandlingStrategy.merge(i,this.rawUrlTree);return this.scheduleNavigation(s,de,null,r)}navigate(e,r={skipLocationChange:!1}){return Ao(e),this.navigateByUrl(this.createUrlTree(e,r),r)}serializeUrl(e){return this.urlSerializer.serialize(e)}parseUrl(e){try{return this.urlSerializer.parse(e)}catch{return this.console.warn(vr(4018,!1)),this.urlSerializer.parse("/")}}isActive(e,r){let i;if(r===!0?i=h({},bo):r===!1?i=h({},Io):i=r,K(e))return Gr(this.currentUrlTree,e,i);let s=this.parseUrl(e);return Gr(this.currentUrlTree,s,i)}removeEmptyProps(e){return Object.entries(e).reduce((r,[i,s])=>(s!=null&&(r[i]=s),r),{})}scheduleNavigation(e,r,i,s,o){if(this.disposed)return Promise.resolve(!1);let a,c,u;o?(a=o.resolve,c=o.reject,u=o.promise):u=new Promise((v,w)=>{a=v,c=w});let l=this.pendingTasks.add();return or(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(l))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:i,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:s,resolve:a,reject:c,promise:u,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),u.catch(v=>Promise.reject(v))}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Ao(t){for(let n=0;n<t.length;n++)if(t[n]==null)throw new S(4008,!1)}var At=(()=>{class t{router;route;tabIndexAttribute;renderer;el;locationStrategy;reactiveHref=Ae(null,{});get href(){return G(this.reactiveHref)}set href(e){this.reactiveHref.set(e)}target;queryParams;fragment;queryParamsHandling;state;info;relativeTo;isAnchorElement;subscription;onChanges=new ee;applicationErrorHandler=d(Qe);options=d(be,{optional:!0});constructor(e,r,i,s,o,a){this.router=e,this.route=r,this.tabIndexAttribute=i,this.renderer=s,this.el=o,this.locationStrategy=a,this.reactiveHref.set(d(new qr("href"),{optional:!0}));let c=o.nativeElement.tagName?.toLowerCase();this.isAnchorElement=c==="a"||c==="area"||!!(typeof customElements=="object"&&customElements.get(c)?.observedAttributes?.includes?.("href")),this.isAnchorElement?this.setTabIndexIfNotOnNativeEl("0"):this.subscribeToNavigationEventsIfNecessary()}subscribeToNavigationEventsIfNecessary(){if(this.subscription!==void 0||!this.isAnchorElement)return;let e=this.preserveFragment,r=i=>i==="merge"||i==="preserve";e||=r(this.queryParamsHandling),e||=!this.queryParamsHandling&&!r(this.options?.defaultQueryParamsHandling),e&&(this.subscription=this.router.events.subscribe(i=>{i instanceof N&&this.updateHref()}))}preserveFragment=!1;skipLocationChange=!1;replaceUrl=!1;setTabIndexIfNotOnNativeEl(e){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue("tabindex",e)}ngOnChanges(e){this.isAnchorElement&&(this.updateHref(),this.subscribeToNavigationEventsIfNecessary()),this.onChanges.next(this)}routerLinkInput=null;set routerLink(e){e==null?(this.routerLinkInput=null,this.setTabIndexIfNotOnNativeEl(null)):(K(e)?this.routerLinkInput=e:this.routerLinkInput=Array.isArray(e)?e:[e],this.setTabIndexIfNotOnNativeEl("0"))}onClick(e,r,i,s,o){let a=this.urlTree;if(a===null||this.isAnchorElement&&(e!==0||r||i||s||o||typeof this.target=="string"&&this.target!="_self"))return!0;let c={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(a,c)?.catch(u=>{this.applicationErrorHandler(u)}),!this.isAnchorElement}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){let e=this.urlTree;this.reactiveHref.set(e!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(e))??"":null)}applyAttributeValue(e,r){let i=this.renderer,s=this.el.nativeElement;r!==null?i.setAttribute(s,e,r):i.removeAttribute(s,e)}get urlTree(){return this.routerLinkInput===null?null:K(this.routerLinkInput)?this.routerLinkInput:this.router.createUrlTree(this.routerLinkInput,{relativeTo:this.relativeTo!==void 0?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}static \u0275fac=function(r){return new(r||t)(x(Ie),x(B),br("tabindex"),x(Nt),x(Dt),x(Ut))};static \u0275dir=Me({type:t,selectors:[["","routerLink",""]],hostVars:2,hostBindings:function(r,i){r&1&&jr("click",function(o){return i.onClick(o.button,o.ctrlKey,o.shiftKey,o.altKey,o.metaKey)}),r&2&&Lr("href",i.reactiveHref(),Ir)("target",i.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[2,"preserveFragment","preserveFragment",Ye],skipLocationChange:[2,"skipLocationChange","skipLocationChange",Ye],replaceUrl:[2,"replaceUrl","replaceUrl",Ye],routerLink:"routerLink"},features:[Te]})}return t})(),To=(()=>{class t{router;element;renderer;cdr;links;classes=[];routerEventsSubscription;linkInputChangesSubscription;_isActive=!1;get isActive(){return this._isActive}routerLinkActiveOptions={exact:!1};ariaCurrentWhenActive;isActiveChange=new te;link=d(At,{optional:!0});constructor(e,r,i,s){this.router=e,this.element=r,this.renderer=i,this.cdr=s,this.routerEventsSubscription=e.events.subscribe(o=>{o instanceof N&&this.update()})}ngAfterContentInit(){p(this.links.changes,p(null)).pipe(Mt()).subscribe(e=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let e=[...this.links.toArray(),this.link].filter(r=>!!r).map(r=>r.onChanges);this.linkInputChangesSubscription=U(e).pipe(Mt()).subscribe(r=>{this._isActive!==this.isLinkActive(this.router)(r)&&this.update()})}set routerLinkActive(e){let r=Array.isArray(e)?e:e.split(" ");this.classes=r.filter(i=>!!i)}ngOnChanges(e){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||queueMicrotask(()=>{let e=this.hasActiveLinks();this.classes.forEach(r=>{e?this.renderer.addClass(this.element.nativeElement,r):this.renderer.removeClass(this.element.nativeElement,r)}),e&&this.ariaCurrentWhenActive!==void 0?this.renderer.setAttribute(this.element.nativeElement,"aria-current",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,"aria-current"),this._isActive!==e&&(this._isActive=e,this.cdr.markForCheck(),this.isActiveChange.emit(e))})}isLinkActive(e){let r=Mo(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return i=>{let s=i.urlTree;return s?e.isActive(s,r):!1}}hasActiveLinks(){let e=this.isLinkActive(this.router);return this.link&&e(this.link)||this.links.some(e)}static \u0275fac=function(r){return new(r||t)(x(Ie),x(Dt),x(Nt),x(Ze))};static \u0275dir=Me({type:t,selectors:[["","routerLinkActive",""]],contentQueries:function(r,i,s){if(r&1&&$r(s,At,5),r&2){let o;kr(o=zr())&&(i.links=o)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],features:[Te]})}return t})();function Mo(t){return!!t.paths}var Bn=new T(""),Eo=(()=>{class t{urlSerializer;transitions;viewportScroller;zone;options;routerEventsSubscription;scrollEventsSubscription;lastId=0;lastSource=de;restoredId=0;store={};constructor(e,r,i,s,o={}){this.urlSerializer=e,this.transitions=r,this.viewportScroller=i,this.zone=s,this.options=o,o.scrollPositionRestoration||="disabled",o.anchorScrolling||="disabled"}init(){this.options.scrollPositionRestoration!=="disabled"&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof Z?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof N?(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment)):e instanceof k&&e.code===fe.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{if(!(e instanceof ge))return;let r={behavior:"instant"};e.position?this.options.scrollPositionRestoration==="top"?this.viewportScroller.scrollToPosition([0,0],r):this.options.scrollPositionRestoration==="enabled"&&this.viewportScroller.scrollToPosition(e.position,r):e.anchor&&this.options.anchorScrolling==="enabled"?this.viewportScroller.scrollToAnchor(e.anchor):this.options.scrollPositionRestoration!=="disabled"&&this.viewportScroller.scrollToPosition([0,0])})}scheduleScrollEvent(e,r){this.zone.runOutsideAngular(()=>m(this,null,function*(){yield new Promise(i=>{setTimeout(i),typeof requestAnimationFrame<"u"&&requestAnimationFrame(i)}),this.zone.run(()=>{this.transitions.events.next(new ge(e,this.lastSource==="popstate"?this.store[this.restoredId]:null,r))})}))}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static \u0275fac=function(r){Mr()};static \u0275prov=C({token:t,factory:t.\u0275fac})}return t})();function Oo(t,...n){return Ot([{provide:Fe,multi:!0,useValue:t},[],{provide:B,useFactory:Do},{provide:Ur,multi:!0,useFactory:Po},n.map(e=>e.\u0275providers)])}function Do(){return d(Ie).routerState.root}function Vn(t,n){return{\u0275kind:t,\u0275providers:n}}function No(t={}){return Vn(4,[{provide:Bn,useFactory:()=>{let e=d(Vr),r=d(wr),i=d(nr),s=d(Re);return new Eo(s,i,e,r,t)}}])}function Po(){let t=d(yr);return n=>{let e=t.get(_r);if(n!==e.components[0])return;let r=t.get(Ie),i=t.get(Uo);t.get(_o)===1&&r.initialNavigation(),t.get(Lo,null,{optional:!0})?.setUpPreloading(),t.get(Bn,null,{optional:!0})?.init(),r.resetRootComponentType(e.componentTypes[0]),i.closed||(i.next(),i.complete(),i.unsubscribe())}}var Uo=new T("",{factory:()=>new ee}),_o=new T("",{factory:()=>1});var Lo=new T("");function xo(t){Ar("NgRouterViewTransitions");let n=[{provide:tr,useValue:kn},{provide:rr,useValue:h({skipNextTransition:!!t?.skipInitialTransition},t)}];return Vn(9,n)}export{Z as a,N as b,B as c,Yt as d,Ie as e,At as f,To as g,Oo as h,No as i,xo as j};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as W}from"./chunk-6ZOSTYPR.js";import{e as T}from"./chunk-TRDYZJYI.js";import{a as C}from"./chunk-BGCYR25X.js";import"./chunk-E35SHTFY.js";import{b as P}from"./chunk-T472BWYK.js";import{E as B,F as N,H as U,K as A}from"./chunk-2TQEV57U.js";import{Ab as v,Ec as c,Fc as l,Jb as a,Kb as n,Lb as f,Lc as E,Rb as O,Rc as M,Yb as R,Za as e,Zb as u,aa as m,ga as y,ha as I,ic as D,jc as b,kc as o,lc as d,ma as S,mc as _,nb as k,sa as p,w as x,zb as h}from"./chunk-MKV5RAJQ.js";import{h as $}from"./chunk-B4AJQJMI.js";function j(i,g){if(i&1&&(a(0,"div",7),o(1),n()),i&2){let t=u();e(),d(t.error())}}function q(i,g){if(i&1&&(a(0,"p",9),o(1),c(2,"translate"),n(),a(3,"div",10)(4,"div",11)(5,"span"),f(6,"i"),o(7),c(8,"translate"),n()(),a(9,"div",11)(10,"span"),f(11,"i"),o(12),c(13,"translate"),n()()()),i&2){let t=u();e(),d(l(2,9,"restart.please_wait_while_server_restarts")),e(5),b(t.uiIcon()),e(),_(" ",l(8,11,"restart.ui_online")," "),e(3),D("grey-text",!t.uiOnline()),e(),b(t.serviceIcon()),e(),_(" ",l(13,13,"restart.service_ready")," ")}}function z(i,g){if(i&1){let t=O();a(0,"p",14)(1,"button",15),R("click",function(){y(t);let s=u(2);return I(s.viewLogs())}),o(2),c(3,"translate"),n()()}i&2&&(e(2),d(l(3,1,"menu.tooltip_view_logs")))}function L(i,g){if(i&1&&(a(0,"div",8)(1,"p"),o(2),c(3,"translate"),n(),a(4,"p",12),o(5),c(6,"translate"),a(7,"span",13),o(8),n()(),h(9,z,4,3,"p",14),n()),i&2){let t=u();e(2),d(l(3,4,"restart.server_is_taking_long_time_to_restart")),e(3),_(" ",l(6,6,"restart.label_restart_command_executed"),": "),e(3),d(t.resp().command||"End Process"),e(),v(t.uiOnline()?9:-1)}}var et=(()=>{class i{$api=m(A);$router=m(T);$settings=m(P);$toastr=m(U);$translate=m(B);$ws=m(W);destroyRef=m(S);uiOnline=p(!1,{});error=p(!1,{});resp=p({},{});timeout=p(!1,{});uiIcon=E(()=>this.uiOnline()?"far fa-check-circle":"fas fa-spinner fa-spin",{});serviceIcon=E(()=>this.uiOnline()?"fas fa-spinner fa-spin":"far fa-circle",{});io;webrootChanged=!1;statusCheckActive=p(!1,{});ngOnInit(){this.io=this.$ws.connectToNamespace("status"),this.io.connected.subscribe(()=>{this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})}),this.io.socket.on("homebridge-status",s=>{if(this.statusCheckActive()&&(this.uiOnline.set(!0),s.status==="ok"||s.status==="pending"))if(this.$toastr.success(this.$translate.instant("restart.toast_server_restarted"),this.$translate.instant("toast.title_success")),this.webrootChanged&&!M()){let w=this.$settings.webroot?.replace(/^\/+|\/+$/g,"")||"";window.location.href=w?`/${w}/`:"/"}else this.$router.navigate(["/"])}),this.$router.parseUrl(this.$router.url).queryParams.restarting==="true"?(this.uiOnline.set(!0),this.checkIfServerUp()):this.performRestart()}ngOnDestroy(){this.io.end(),this.statusCheckActive.set(!1)}viewLogs(){this.$router.navigate(["/logs"])}performRestart(){return $(this,null,function*(){try{let t=this.$settings.originalWebroot||"",r=this.$settings.webroot||"";this.webrootChanged=t!==r&&t!==globalThis.webroot.errorCode,this.webrootChanged&&(yield this.$api.put("/server/webroot",{webroot:r}));try{let s=yield this.$api.put("/server/restart",{});this.resp.set(s),this.checkIfServerUp(),s.restartingUI||this.uiOnline.set(!0)}catch(s){console.error(s),this.error.set(this.$translate.instant("restart.toast_server_restart_error")),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}}catch(t){console.error("Failed to update webroot:",t);try{let r=yield this.$api.put("/server/restart",{});this.resp.set(r),this.checkIfServerUp(),r.restartingUI||this.uiOnline.set(!0)}catch(r){console.error(r),this.error.set(this.$translate.instant("restart.toast_server_restart_error")),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}}})}checkIfServerUp(){x(7e3).pipe(C(this.destroyRef)).subscribe(()=>{this.statusCheckActive.set(!0)}),x(4e4).pipe(C(this.destroyRef)).subscribe(()=>{this.$toastr.warning(this.$translate.instant("restart.toast_server_restart_timeout"),this.$translate.instant("toast.title_warning"),{timeOut:1e4}),this.timeout.set(!0)})}static \u0275fac=function(r){return new(r||i)};static \u0275cmp=k({type:i,selectors:[["ng-component"]],decls:14,vars:8,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"my-4","align-items-center",2,"max-width","1000px","margin","auto"],[1,"w-100","text-center","primary-text","mb-5"],[1,"fas","fa-power-off",2,"font-size","75px"],[1,"text-center"],[1,"primary-text","mb-4"],[1,"alert","alert-error","my-4"],[1,"alert","alert-warning","my-4"],[1,"grey-text"],[1,"justify-content-center","my-4"],[1,"restart-progress-box","primary-text"],[1,"grey-text","mb-0"],[1,"font-monospace"],[1,"mt-2","mb-0"],[1,"btn","btn-primary","mb-0",3,"click"]],template:function(r,s){r&1&&(a(0,"div",0)(1,"h3",1),o(2),c(3,"translate"),n()(),a(4,"div",2)(5,"div",3),f(6,"i",4),n(),a(7,"div",5)(8,"h4",6),o(9),c(10,"translate"),n(),h(11,j,2,1,"div",7)(12,q,14,15),h(13,L,10,8,"div",8),n()()),r&2&&(e(2),d(l(3,4,"menu.restart.title")),e(7),d(l(10,6,"restart.title_restart")),e(2),v(s.error()?11:12),e(2),v(s.timeout()?13:-1))},dependencies:[N],styles:[".restart-progress-box[_ngcontent-%COMP%]{font-size:22px;font-weight:300;margin-top:15px}"]})}return i})();export{et as RestartComponent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{X as o,d as e}from"./chunk-MKV5RAJQ.js";var n=new e,f=(()=>{class t{readyEvent;constructor(){this.readyEvent=n}static \u0275fac=function(r){return new(r||t)};static \u0275prov=o({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function d(){n.next(void 0)}export{f as a,d as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e}from"./chunk-B4AJQJMI.js";var i=e((n,a)=>{a.exports={"accessories.accessory_info":"Informasi Aksesoris","accessories.bridge_ip":"Bridge IP","accessories.bridge_port":"Port Bridge","accessories.button_add_room":"Tambah Ruangan","accessories.button_hidden_hide":"Sembunykan Tersembunyi","accessories.button_hidden_show":"Tampilkan Tersembunyi","accessories.button_remove":"Hapus dari Cache","accessories.control.adaptive_lighting":"Adaptive Lighting","accessories.control.adaptive_lighting_note":"Some plugins may automatically re-enable Adaptive Lighting when changing this.","accessories.control.auto":"Otomatis","accessories.control.away":"Tidak di tempat","accessories.control.battery_charged":"Charged","accessories.control.battery_charging":"Pengisian Daya","accessories.control.battery_low":"Battery Low","accessories.control.battery_notchargeable":"Tidak Bisa Melakukan Pengisian Daya","accessories.control.battery_notcharging":"Tidak Melakukan Pengisian Daya","accessories.control.brightness":"Kecerahan","accessories.control.cleaning":"Cleaning","accessories.control.closed":"Tutup","accessories.control.closing":"Penutupan","accessories.control.color_temperature":"Color Temperature","accessories.control.cool":"Dingin","accessories.control.current":"Current","accessories.control.default_room":"Ruangan Standar","accessories.control.dehumidify":"Dehumidify","accessories.control.detected":"Terdeteksi","accessories.control.direction_control":"Direction Control","accessories.control.drag_here":"Seret Ke sini","accessories.control.filter_level":"Filter Life","accessories.control.heat":"Panas","accessories.control.home":"Rumah","accessories.control.hue":"Hue","accessories.control.humidify":"Humidify","accessories.control.idle":"Idle","accessories.control.input":"Input List","accessories.control.input_control":"Input Control","accessories.control.jammed":"Tersendat","accessories.control.lock_auto":"Auto Lock Timer","accessories.control.locked":"Terkunci","accessories.control.manual":"Manual","accessories.control.media_control":"Media Control","accessories.control.microphone":"Microphone","accessories.control.mode":"Mode","accessories.control.mode_control":"Mode Control","accessories.control.mute":"Bisu","accessories.control.mute_control":"Mute Control","accessories.control.night":"Malam","accessories.control.no_data":"No Data","accessories.control.not_detected":"Tidak Terdeteksi","accessories.control.not_mute":"Hidup","accessories.control.obstructed":"Obstructed","accessories.control.off":"Mati","accessories.control.on":"Hidup","accessories.control.open":"Buka","accessories.control.opening":"Membuka","accessories.control.pause":"Pause","accessories.control.paused":"Paused","accessories.control.play":"Play","accessories.control.replace":"Replace","accessories.control.rotation_c_clockwise":"Berlawanan Arah Jarum Jam","accessories.control.rotation_clockwise":"Searah Jarum Jam","accessories.control.rotation_direction":"Arah Rotasi","accessories.control.rotation_speed":"Kecepatan Rotasi","accessories.control.running":"Berjalan","accessories.control.saturation":"Saturation","accessories.control.set_duration":"Set Duration","accessories.control.speaker":"Speaker","accessories.control.speaker_volume":"Volume","accessories.control.state_control":"State Control","accessories.control.stateless":"Stateless","accessories.control.stop":"Stop","accessories.control.stopped":"Terhenti","accessories.control.target":"Target","accessories.control.target_auto":"Auto Target","accessories.control.threshold_auto":"Auto Threshold","accessories.control.triggered":"Terpicu","accessories.control.unknown":"Tidak Dikenal","accessories.control.unlocked":"Tidak Dikunci","accessories.control_disabled":"Homebridge Kontrol Aksesoris Dinonaktifkan","accessories.core.air_purifier":"Air Purifier","accessories.core.air_quality_sensor":"Air Quality Sensor","accessories.core.battery":"Battery","accessories.core.carbon_dioxide_sensor":"Carbon Dioxide Sensor","accessories.core.carbon_monoxide_sensor":"Carbon Monoxide Sensor","accessories.core.contact_sensor":"Contact Sensor","accessories.core.cooler":"Cooler","accessories.core.dehumidifier":"Dehumidifier","accessories.core.door":"Door","accessories.core.doorbell":"Doorbell","accessories.core.fan":"Fan","accessories.core.faucet_valve":"Valve","accessories.core.filter_maintenance":"Filter Maintenance","accessories.core.garage_door_opener":"Garage Door Opener","accessories.core.generic_valve":"Valve","accessories.core.heater":"Heater","accessories.core.heater_cooler":"Heater Cooler","accessories.core.humidifier":"Humidifier","accessories.core.humidifier_dehumidifier":"Humidifier Dehumidifier","accessories.core.humidity_sensor":"Humidity Sensor","accessories.core.irrigation_system":"Irrigation System","accessories.core.irrigation_valve":"Valve","accessories.core.leak_sensor":"Leak Sensor","accessories.core.light_sensor":"Light Sensor","accessories.core.lightbulb":"Lightbulb","accessories.core.lock_mechanism":"Lock Mechanism","accessories.core.microphone":"Microphone","accessories.core.motion_sensor":"Motion Sensor","accessories.core.occupancy_sensor":"Occupancy Sensor","accessories.core.on_off_light":"Lightbulb","accessories.core.on_off_light_switch":"Switch","accessories.core.on_off_plug_in_unit":"Outlet","accessories.core.outlet":"Outlet","accessories.core.robot_vacuum":"Robot Vacuum","accessories.core.robotic_vacuum_cleaner":"Robot Vacuum","accessories.core.security_system":"Security System","accessories.core.shower_head_valve":"Valve","accessories.core.smoke_sensor":"Smoke Sensor","accessories.core.speaker":"Speaker","accessories.core.stateless_programmable_switch":"Stateless Programmable Switch","accessories.core.switch":"Switch","accessories.core.television":"Television","accessories.core.temperature_sensor":"Temperature Sensor","accessories.core.thermostat":"Thermostat","accessories.core.valve":"Valve","accessories.core.washing_machine":"Washing Machine","accessories.core.window":"Window","accessories.core.window_covering":"Window Covering","accessories.custom_name":"Nama Kustom","accessories.custom_type":"Custom Type","accessories.hide_this_accessory":"Sembunyikan aksesoris ini","accessories.message_must_use_insecure_mode":"Untuk mengontrol aksesoris anda, anda harus menjalankan Homebridge dalam mode tidak aman {{ link }}.","accessories.name":"Nama","accessories.no_plugins.message_1":"Accessories are created and managed by Homebridge plugins.","accessories.no_plugins.message_2":"You can find and install plugins from the plugins page.","accessories.no_plugins.title":"No Plugins Installed","accessories.only_ui":"These settings are only for the Homebridge UI and <strong>will not be reflected in HomeKit</strong>.","accessories.only_ui_2":"These options are unique to your Homebridge UI account.","accessories.plugin":"Plugin","accessories.room_name":"Nama Ruangan","accessories.service":"Layanan","accessories.service_info":"Informasi Layanan","accessories.settings_link":"Anda dapat mengakses Pengaturan Homebridge kapan saja dari ikon roda gigi di menu samping.","accessories.show_on_dashboard":"Tampilkan di widget dasbor","accessories.support.acc_1":"Aksesori mungkin memerlukan waktu beberapa menit untuk muncul di layar ini setelah Homebridge dimulai kembali atau setelah ditambahkan. Jika aksesori selalu hilang, coba ubah pengiklan dns di pengaturan.","accessories.support.acc_2":"You can change the type of certain accessories in the UI (like showing a switch as a heater). You can do this by clicking on the three bars that appear in the top-right corner of the accessory tile as you hover over it. A 'Custom Type' option will appear if the accessory supports this. Note this will not change the accessory in HomeKit (only a plugin can do this).","accessories.support.rooms_1":"Ruangan yang anda buat di sini tidak akan muncul di HomeKit, hanya untuk pengaturan aksesoris di Homebridge UI.","accessories.support.rooms_2":"Untuk mengganti nama ruangan yang ada, buat ruangan baru dengan nama yang diinginkan dan pindahkan aksesori ke ruangan baru.","accessories.support.rooms_3":"Untuk menghapus ruangan yang ada, pindahkan semua aksesorinya ke ruangan lain dan segarkan halaman.","accessories.title_rooms":"Rooms","backup.backup_delete_failed":"Penghapusan cadangan gagal. Lihat log untuk detailnya.","backup.backup_download_failed":"Gagal Mengunduh Cadangan","backup.backup_exceeds_max_size":"Cadangan ({{ backupSize }}) melebihi ukuran file pemulihan maksimum {{ maxBackupSizeText }}","backup.backup_help_one":"Unduh arsip cadangan dari keseluruhan lingkunan Homebirdge anda. Proses ini akan mencadangkan seluruh konten dari direktori Homebridge anda yang nantinya dapat anda pulihkan pada platform lainnya yang mampu menjalankan Homebridge UI.","backup.backup_help_two":"Plugin tidak di host di npm, atau plugin yang dipasang langsung dari GitHub tidak akan dicadangkan atau dikembalikan.","backup.backup_now":"Cadangkan Sekarang","backup.backup_now_desc":"Buat dan unduh file cadangan terbaru.","backup.backup_now_save_desc":"Generate an up-to-date backup file in your backup storage directory.","backup.backup_restored":"Arsip Cadangan Dipulihkan","backup.backup_warning":"Arsip cadangan berisikan informasi sensitif dan sebaiknya tidak dibagikan kepada orang lain.","backup.files_auto":"Stored Backup Files","backup.label_extracting":"Extracting Archive","backup.label_uploading":"Mengunggah\u2026","backup.load_error":"Gagal memuat cadangan konfigurasi.","backup.restore_failed":"Pemulihan Gagal","backup.restore_help_one":"Pulihkan arsip cadangan yang sebelumnya dibuat menggunakan Homebridge UI. Konfigurasi Homebridge Anda, aksesoris yang di-cache, pasangan HomeKit dan akun pengguna Homebridge UI akan dipulihkan. Setiap plugin Homebridge yang telah Anda instal juga akan diunduh dari registri npm.","backup.restore_help_two":"Anda harus masuk ke Homebridge UI setelah melakukan pemulihan menggunakan kredensial dari instance yang dipulihkan.","backup.restore_max_size":"Anda dapat memulihkan arsip cadangan hingga ukuran {{ maxBackupSizeText }}.","backup.restore_now":"Pulihkan Sekarang","backup.restore_now_desc":"Pulihkan dari file cadangan yang diunduh sebelumnya.","backup.restore_warning":"Mengembalikan dari cadangan akan menimpa konfigurasi Homebridge saat ini dan tidak dapat dikembalikan.","backup.scheduled_backup_disabled":"Pencadangan terjadwal telah dinonaktifkan melalui konfigurasi.","backup.scheduled_backup_time":"Cadangan menyeluruh dari Homebridge dibuat secara otomatis setiap hari pada jam {{ backupTime }} dan akan disimpan selama {{ dayCount }} hari.","backup.settings_enable":"Enable Automated Backups","backup.settings_path":"Backup Storage Path","backup.settings_path_desc":"If you are changing this from the default, please ensure the directory exists and is writable by the Homebridge user.","backup.settings_title":"Backup Settings","backup.title_backup":"Pencadangan & Pemulihan","child_bridge.about":"Homebridge memungkinkan Anda menjalankan platform plugin atau aksesori sebagai Bridge anak yang terisolasi {{ link }}. Ini dapat meningkatkan daya tanggap dan keandalan Homebridge secara umum.","child_bridge.bridge_connect":"Hubungkan ke HomeKit","child_bridge.bridge_settings":"Pengaturan Bridge","child_bridge.bridges":"Bridge","child_bridge.bridges_paired":"Setiap platform atau aksesori Bridge anak perlu dipasangkan dengan HomeKit secara terpisah.","child_bridge.bridges_paired_2":"Jika Anda menyiapkan Bridge anak sekarang dan kemudian menonaktifkannya, aksesori apa pun di Bridge ini akan dihapus dan dibuat ulang di Bridge utama Homebridge.","child_bridge.config.accessory":"Akeseoris","child_bridge.config.debug":"Mode Debug","child_bridge.config.enable_hap":"Enable HAP","child_bridge.config.firmware":"Versi Firmware","child_bridge.config.hide_pairing_alert":"Hide Pairing Alert","child_bridge.config.manufacturer":"Produsen","child_bridge.config.matter_note_1":"Plugins must be updated by the developer to support Matter accessories. There is no use in enabling Matter here unless you definitely know the plugin supports it.","child_bridge.config.matter_note_2":"Matter accessories don't appear in the Homebridge UI accessories screen. They can be managed using the Home app or other Matter controllers.","child_bridge.config.model":"Model","child_bridge.config.name":"Nama","child_bridge.config.or_link":"Tautkan Bridge yang ada","child_bridge.config.platform":"Platform","child_bridge.config.port":"Port","child_bridge.config.prevent":"Tidak dapat menonaktifkan Bridge turunan dengan aksesori tertaut.","child_bridge.config.select_existing":"Pilih Bridge yang ada...","child_bridge.config.use":"Gunakan Bridge anak","child_bridge.confirm_delete_1":"Bridge anak berikut akan dihapus.","child_bridge.confirm_delete_2":"Anda harus menghapus Bridge yang dipasangkan secara manual dari aplikasi Beranda. Aksesori apa pun akan dilepas dan dibuat ulang di Bridge utama Homebridge.","child_bridge.must_configure_plugin":"Anda perlu mengkonfigurasi plugin ini sebelum Anda dapat mengelola pengaturan bridge-nya.","child_bridge.reset_accessories":"Setel Ulang Aksesori","child_bridge.restart":"Mulai kembali Bridge anak","child_bridge.restart_plural":"Mulai kembali Bridge-bridge anak","child_bridge.return_to_pair":"Kembali ke layar ini setelah Homebridge dimulai kembali untuk melihat kode QR.","child_bridge.setup":"Siapkan Bridge anak","child_bridge.start":"Mulai Bridge anak","child_bridge.start_plural":"Mulai Bridge-bridge anak","child_bridge.stop":"Hentikan Bridge anak","child_bridge.stop_plural":"Hentikan Bridge-bridge anak","common.labels.beta":"beta","common.labels.no_confirmation":"There is no confirmation when clicking the button, it will immediately perform the action.","common.phrases.are_you_sure":"Apakah Anda yakin ingin melanjutkan?","common.phrases.support":"Feel like there is something useful we could add here? Let us know on {{ github }} or {{ discord }}!","config.config_accessory_must_be_array":"Aksesoris harus berupa array []","config.config_bridge_missing":"Pengaturan Bridge Hilang","config.config_invalid_json":"Konfigurasi berisi JSON yang tidak valid","config.config_platform_must_be_array":"platform harus berupa array []","config.config_saved":"Configuration Saved","config.config_username_error":"Nama pengguna Bridge harus terdiri dari 6 pasang karakter heksadesimal yang dipisahkan oleh titik dua (A-F 0-9)","config.error_blocks_objects":"Semua blok {{ type }} harus berupa objek.","config.error_blocks_type":"Semua blok {{ type }} harus memiliki {{ type }} atribut.","config.error_string_array":"Setiap bagan dari array {{ key }} harus berupa string.","config.error_string_type":"Atribut {{ type }} harus berupa string.","config.failed_to_save_config":"Gagal menyimpan konfigurasi","config.hide_hap_pairing":"Hide HAP Pairing Alert","config.hide_matter_pairing":"Hide Matter Pairing Alert","config.hide_plugin_updates":"Hide Plugin Updates For","config.no_restart":"A restart is not needed as no changes were made to the Homebridge configuration.","config.restore.confirm":"Klik Simpan untuk mengonfirmasi bahwa Anda ingin memulihkan cadangan ini.","config.restore.copy_to_editor":"Salin ke Editor","config.restore.download":"Download your current configuration as a JSON file.","config.restore.help_1":"A backup of your config file is created each time it is updated from actions you take in the Homebridge UI.","config.restore.help_2":"You can restore a previous version of your config file by selecting it from the list below. You will be able to compare this version with your current config before deciding whether to restore it.","config.restore.title":"Config File Backup & Restore","config.restore.toast_backups_deleted":"Semua Cadangan Dihapus","config.restore.view_inline":"Inline View","config.restore.view_side_by_side":"Side-By-Side View","config.title_backup_loaded":"Cadangan Dimuat","form.button_allow":"Allow","form.button_back":"Kembali","form.button_cancel":"Batal","form.button_close":"Tutup","form.button_continue":"Melanjutkan","form.button_delete":"Hapus","form.button_delete_all":"Delete All","form.button_disable":"Nonaktifkan","form.button_download":"Unduh","form.button_edit":"Ubah","form.button_enable":"Aktifkan","form.button_lock":"Kunci","form.button_more_info":"Info Lebih Lanjut","form.button_remove":"Hapus","form.button_reset":"Setel ulang","form.button_restore":"Pulihkan","form.button_save":"Simpan","form.button_show":"Tampilkan","form.button_unlock":"Buka kunci","form.button_unpair":"Cabut pasangan","form.label.changes_kept":"Perhatikan bahwa pilihan/perubahan yang ada akan dipertahankan saat peralihan antara bagan-bagan.","form.label_invalid":"Validasi konfigurasi gagal - Anda masih dapat menyimpan perubahan Anda.","form.label_invalid_strict":"Validasi konfigurasi gagal - harap tinjau formulir sebelum menyimpan.","form.label_valid":"Validasi konfigurasi berhasil.","form.optional":"Optional","form.search":"Search...","form.select.auto":"Otomatis (Gunakan Pengaturan Peramban)","login.invalid_code":"The code entered is incorrect or has expired","login.invalid_credentials":"Nama Pengguna dan Kata Sandi Salah","login.invalid_credentials_2":"If you lose access, delete the <code>auth.json</code> file in your Homebridge storage directory and restart Homebridge. Then refresh this page to set up a new admin account. Your Homebridge/UI settings will remain unchanged, except for UI user accounts. The only user account will be the admin account that you are setting up now.","login.invalid_password":"Kata kunci tidak valid","login.label_2fa_code":"Kode Otentikasi Dua Faktor (2FA)","logs.download.error":"Gagal mengunduh berkas log.","logs.download_warning":"Berkas catatan berkas log Homebridge mungkin mengandung informasi personal, password atau token akses. Harap review berkas catatan dan hapus informasi sensitif sebelum dibagikan.","logs.log_file_truncated":"Berkas catatan terpotong.","logs.placeholder_search_logs":"Search logs (min. 3 characters)...","logs.title_download_log_file":"Unduh Berkas Catatan","logs.title_truncate_log_file":"Potong Berkas Catatan","logs.truncate.error":"Gagal memotong file log.","logs.truncate_log_warning":"Aksi ini akan menghapus catatan Homebridge secara permanen. Apakah anda yakin yakin ingin melanjutkan?","matter_bridge.config.use":"Enable Matter","menu.config_json_editor":"Konfigurasi JSON","menu.docker.restart_container":"Memulai Kembali Kontainer","menu.docker.startup_script":"Skrip Startup","menu.docker.terminal":"Terminal","menu.hbrestart.confirm_hb":"Memulai Kembali Homebridge","menu.hbrestart.confirm_ui":"Memulai Kembali HB Service & UI","menu.hbrestart.title":"Memulai Kembali Homebridge","menu.label_accessories":"Aksesoris","menu.label_plugins":"Plugin","menu.label_settings":"Pengaturan","menu.label_status":"Status","menu.linux.label_logs":"Log","menu.linux.label_restart_server":"Memulai Kembali Server","menu.linux.label_shutdown_modal":"Are you sure you want to shut down the operating system? You will need physical access to turn it back on.","menu.linux.label_shutdown_server":"Mematikan Server","menu.linux.label_terminal":"Terminal","menu.reload":"Muat ulang","menu.restart.title":"Opsi Daya","menu.settings.title":"Pengaturan","menu.tooltip_logout":"Keluar","menu.tooltip_restart":"Memulai Kembali","menu.tooltip_user_accounts":"Akun Pengguna","menu.tooltip_view_logs":"Lihat catatan","platform.docker.container_restarted":"Kontainer Docker Dimuat Ulang","platform.docker.must_use_hashbang":"Skrip harus menggunakan #!/bin/sh hashbang.","platform.docker.restart_required":"Anda harus memulai kembali Kontainer Docker ini agar perubahan diterapkan.","platform.docker.run_with_restart":"Pastikan Anda menjalankan Kontainer Docker dengan parameter {{ command }}","platform.docker.script_help":"Skrip ini akan dieksekusi setiap saat docker container mulai. Anda dapat menggunakan proses ini untuk menginstal paket tambahan yang dibutuhkan plugin anda seperti ffmpeg atau libpcap-dev.","platform.docker.script_saved":"Skrip Memulai Tersimpan","platform.docker.server_long_time":"Memulai kembali server membutuhkan waktu lebih lama. Anda mungkin perlu menjalankan Kontainer Docker secara manual.","platform.docker.title_restarting":"Memulai Kembali Kontainer Docker","platform.linux.long_time":"Proses memulai kembali server sudah terjadi terlalu lama. Anda mungkin perlu menghidupkan server cadangan secara manual.","platform.linux.restart":"Harap tunggu, halaman ini akan dialihkan secara otomatis ketika Homebridge kembali online.","platform.linux.restarting_server":"Memulai Kembali Server","platform.linux.server_restart_error":"Terjadi kesalahan saat mengirim perintah restart ke server","platform.linux.server_restarted":"Server Telah Dimulai Kembali","platform.linux.server_taking_long_time":"Server membutuhkan waktu lebih lama untuk kembali online","platform.linux.server_will_power_down":"Server akan segera dimatikan.","platform.linux.shutting_down_server":"Mematikan Server","platform.terminal.terminate_message_1":"Navigating away from this page will terminate your current session, all foreground processes will be terminated.","platform.terminal.terminate_message_2":"To avoid this warning, enable <strong>Terminal Session Persistence</strong> from the settings page.","platform.terminal.terminate_title":"Session Termination","platform.terminal.terminate_unload":"Your terminal session will be terminated. Enable Terminal Session Persistence in Settings to prevent this.","platform.version.restart_required":"Homebridge UI v{{ uiVersion }} telah dipasang, namun server masih menjalankan v{{ serverVersion }}.","platform.version.service_restart_required":"Memulai Kembali Layanan Diperlukan","plugins.bridge.action_error":"Gagal untuk {{ action }} Bridge anak.","plugins.bridge.name_error":"Bridge name must start and end with a letter or number, and can only contain letters, numbers, spaces, and apostrophes.","plugins.bridge.port_error":"{{ type }} port must be an integer between 1025 and 65533, excluding 5353, 8080, 8443 and any other already-configured port.","plugins.button_homepage":"Homepage Plugin","plugins.button_set_up":"Siapkan","plugins.button_settings":"Pengaturan","plugins.button_uninstall":"Copot","plugins.button_update":"Pembaruan","plugins.compat.hb_node_too_low":"{{ packageName }} v{{ latestVersion }} membutuhkan Node.js v{{ minVersion }} atau lebih baru. Saat ini anda menjalankan Node.js {{ installedVersion }}.","plugins.compat.hb_too_low":"Plugin {{ pluginName }} merekomendasikan Homebridge v{{ minVersion }} atau lebih baru. Saat ini anda menjalankan Homebridge v{{ installedVersion }}.","plugins.compat.node_first":"Harap tingkatkan Node.js sebelum memperbaharui {{ packageName }}.","plugins.compat.node_link":"Cara memperbarui Node.js","plugins.compat.node_too_low":"Plugin {{ pluginName }} merekomendasikan Node.js v{{ minVersion }} atau lebih baru. Saat ini anda menjalankan Node.js {{ installedVersion }}.","plugins.compat.title":"Pemeriksaan Kompatibilitas","plugins.config.load_error":"Gagal memuat konfigurasi plugin.","plugins.config.must_be_array":"Konfigurasi plugin harus berupa array.","plugins.config.must_be_array_objects":"Konfigurasi plugin harus berupa array objek.","plugins.config.must_be_object":"Blok konfigurasi harus berupa objek.","plugins.config.name_property":'Aksesori harus memiliki atribut "nama" yang valid',"plugins.config.please_fix":"Harap perbaiki kesalahan validasi sebelum menambahkan blok baru.","plugins.disable.error":"Gagal menonaktifkan plugin.","plugins.donate.message_1":"Karena lebih banyak pengguna menginstal plugin mereka melalui UI Homebridge, mereka cenderung tidak mengunjungi halaman GitHub proyek di mana cara untuk mendukung pengembang biasanya akan ditampilkan.","plugins.donate.message_2":"Menambahkan tautan donasi langsung di UI Homebridge memastikan pengguna mengetahui cara mendukung pengembang Homebridge jika mereka ingin melakukannya.","plugins.donate.tile_donate_to":"Donasi ke {{ author }}","plugins.enable.error":"Gagal mengaktifkan plugin.","plugins.manage.all_versions":"Semua versi","plugins.manage.backup":"Download a backup before updating?","plugins.manage.changelog":"Full Changelog","plugins.manage.changelog_none":"Could not retrieve changelog, perhaps this plugin does not provide a <code>CHANGELOG.md</code> file.","plugins.manage.child_bridge_restart":"Bridge anak berhasil dimulai kembali.","plugins.manage.child_bridge_restart_failed":"Pengaktifan ulang plugin gagal, harap mulai kembali Homebridge secara manual.","plugins.manage.confirm_disable":"Apakah Anda yakin ingin menonaktifkan {{ pluginName }}?","plugins.manage.confirm_disable_accessory_1":"Aksesori apa pun yang diekspos oleh plugin ini akan dihapus dari layar aksesori Homebridge UI dan dihapus dari HomeKit.","plugins.manage.confirm_disable_accessory_2":"Saat Anda mengaktifkan kembali plugin, aksesori akan muncul kembali di Homebridge UI dan HomeKit.Aksesori akan kehilangan data homeKit mereka (seperti adegan dan otomatisasi terkait).","plugins.manage.confirm_disable_platform_1":"Aksesori apa pun yang diekspos oleh plugin ini akan dihapus dari layar aksesori Homebridge UI tetapi tetap di HomeKit dengan label 'tidak ada respons'.","plugins.manage.confirm_disable_platform_2":"Saat Anda mengaktifkan kembali plugin, aksesoris akan muncul kembali di Homebridge UI dan dapat dikendalikan lagi di HomeKit.Aksesori tidak akan kehilangan data homeKit mereka (seperti adegan dan otomatisasi terkait).","plugins.manage.confirm_disable_setting":"Your setting for {{ setting }} is currently {{ value }}, therefore:","plugins.manage.confirm_enable":"Apakah Anda yakin ingin mengaktifkan {{ pluginName }}?","plugins.manage.disable":"Nonaktifkan","plugins.manage.enable":"Aktifkan","plugins.manage.github_support":"Anda dapat menunjukkan dukungan Anda dengan memberikan plugin ini {{ iconStar }} (atau rilis A {{ iconThumbsUp }}) di github!","plugins.manage.hb_restart":"Homebridge and the UI will automatically restart after any version change.","plugins.manage.hide_updates":"Disable Update Notifications","plugins.manage.hide_updates_desc":"If you don't want to see update notifications for this plugin, you can turn them off here.","plugins.manage.information":"Informasi Plugin","plugins.manage.install":"Pasang","plugins.manage.installed":"Terpasang","plugins.manage.json_config":"Konfigurasi JSON","plugins.manage.manage_version":"Pasang Versi Sebelumnya","plugins.manage.manual_update_command":"Untuk memutakhirkan paket jalankan dan buka prompt perintah node.js sebagai administrator dan jalankan perintah berikut:","plugins.manage.more_info":"Informasi lebih lanjut tentang lingkup {{ scopedLink }} dan verifikasi plugin {{ verifiedLink }}.","plugins.manage.notes":"Release Notes","plugins.manage.notes_beta_1":"Thank you for helping improve {{ pluginName }} by testing a pre-release version.","plugins.manage.notes_beta_2":"You can use the Homebridge UI to revert back to the stable version at any time.","plugins.manage.notes_beta_3":"Please remember this is a pre-release version, and report any issues to the plugin's GitHub repository page.","plugins.manage.notes_latest":"Release notes are only shown when updating to the latest version.","plugins.manage.notes_none":"Could not retrieve release notes, perhaps this version does not have a GitHub release.","plugins.manage.online_updates":"Pembaruan online tidak didukung di Windows. Anda perlu memutakhirkan Homebridge UI secara manual setelah menghentikan layanan Homebridge.","plugins.manage.plugin_logs":"Log plugin","plugins.manage.scoped.error":"Terjadi kesalahan.Anda dapat mengunduh log di bawah ini.","plugins.manage.scoped.info_1":"Homebridge plugin terlingkup memiliki nama yang dimulai dengan {{ prefix }}.","plugins.manage.scoped.info_2":"Untuk informasi lebih lanjut tentang plugin terlingkup dan mengapa harus beralih, lihat halaman wiki {{ link }}.","plugins.manage.scoped.process":"Proses ini tidak akan mempengaruhi aksesoris homebridge/homeKit Anda. Anda tidak akan dapat membatalkan proses setelah dimulai. Prosesnya:","plugins.manage.scoped.switch":"Beralih ke plugin terlingkup","plugins.manage.scoped.windows":'Pembaruan online tidak didukung di Windows. Anda perlu menginstal plugin baru dan menghapus instalan plugin lama secara manual. <span class="fw-bold">Jangan</span> memulai kembali homebridge sampai kedua langkah selesai.',"plugins.manage.scoped_message":"Plugin terlingkup meningkatkan keandalan jangka panjang dan memastikan pemeliharaan yang konsisten dengan menggabungkan pengawasan terpusat dari tim Homebridge dengan keterlibatan berkelanjutan dari pemelihara asli.","plugins.manage.scoped_subtitle":"Plugin ini terlingkup dan terverifikasi.","plugins.manage.select_version":"Pilih versi yang akan diinstal","plugins.manage.uninstall":"Hapus Pemasangan","plugins.manage.uninstalled":"Terhapus","plugins.manage.unverified_message":"Plugin Homebridge yang tidak diverifikasi menunjukkan bahwa mereka belum menjalankan proses peninjauan oleh tim proyek Homebridge. Tidak adanya verifikasi tidak selalu menyiratkan ketidakefisienan atau masalah keamanan. Pembuat plugin mungkin memilih untuk tidak mencari verifikasi karena berbagai alasan.","plugins.manage.unverified_subtitle":"Plugin ini tidak diverifikasi.","plugins.manage.update":"Pembaruan","plugins.manage.updated":"Diperbarui","plugins.manage.verified_message":"Plugin Homebridge yang ditandai sebagai diverifikasi telah ditinjau oleh tim proyek Homebridge untuk memastikan mereka memenuhi berbagai persyaratan yang mendorong praktik terbaik dan pengalaman pengguna yang bebas masalah.","plugins.manage.verified_subtitle":"Plugin ini terverifikasi.","plugins.placeholder_search_first":"Gunakan bilah pencarian di atas untuk menemukan plugin pertama Anda","plugins.placeholder_search_none":"Tidak ada hasil yang ditemukan","plugins.placeholder_search_plugin":"Cari plugin untuk dipasang\u2026","plugins.settings.custom.homebridge-gsh.label_account_linked":"Akun Terhubung","plugins.settings.custom.homebridge-gsh.label_link_account":"Hubungkan Akun","plugins.settings.custom.homebridge-gsh.message_about":"Plugin Homebridge Google Smart Home memungkinkan anda untuk mengontrol aksesoris Homebridge dari pengeras suara berkemampuan Google Home atau aplikasi seluler Google Home.","plugins.settings.custom.homebridge-gsh.message_account_link_required":"Untuk mengaktifkan fungsi ini, anda harus masuk dengan akun Google atau GitHub anda; pastikan anda menggunakan akun yang sama saat menambahkan tindakan Homebridge di aplikasi seluler Google Home.","plugins.settings.custom.homebridge-gsh.message_homebridge_restart_required":"Homebridge membutuhkan pengaktifan ulang agar perubahan dapat diterapkan.","plugins.settings.deconz.dump_no_exist":"Berkas dump homebridge deCONZ belum ada.","plugins.settings.hue.dump_no_exist":"Berkas dump Homebridge Hue belum ada.","plugins.settings.label_open_config_editor":"Buka Editor Konfigurasi","plugins.settings.message_consult_documentation":"Silakan baca dokumentasi plugin untuk instruksi tentang cara mengkonfigurasi plugin ini dengan benar.","plugins.settings.message_manual_config_required":"Plugin ini harus dikonfigurasi secara manual menggunakan Homebridge UI Config Editor","plugins.settings.plugin_config_saved":"Konfigurasi Plugin Tersimpan","plugins.settings.restart_required":"Homebridge perlu diulang kembali untuk menerapkan perubahan.","plugins.stats":"Plugin Statistics","plugins.stats_note":"Plugins cannot be installed from this page, this is provided just for interest.","plugins.status_disabled":"Nonaktifkan","plugins.status_installed":"Terpasang","plugins.support.list_1":"Homebridge plugins are the building blocks of Homebridge, allowing you to add support for new accessories and platforms. Plugins add support for smart lights, cameras, TVs, etc, for brands that don't natively support HomeKit. For example, to bring your Ring doorbells and cameras into HomeKit, you can install the <code>homebridge-ring</code> plugin.","plugins.support.list_2":"Homebridge plugins are created by public contributors in the Homebridge community, and are not typically associated with the Homebridge maintainers, nor with the manufacturers of the accessories themselves. If you have a question about a specific plugin, you should let the plugin developer know via the plugin's GitHub page.","plugins.support.list_3":"There are currently over 4,700 plugins available for Homebridge, so you should be able to find plugins to suit your needs. If you are a Javascript/TypeScript developer (or want to take the opportunity to learn), you can also create your own plugin and share it with the Homebridge community. Check out the Support section for some handy links to get you started.","plugins.support.list_4":"Some plugins allow you to create 'virtual/dummy' accessories, which are accessories that do not have a physical counterpart. These can be used to create virtual accessories in HomeKit, such as virtual switches, lights, or sensors. Try searching for <code>dummy</code> or <code>virtual</code> in the search bar to find some examples.","plugins.toast_failed_to_load_plugin_schema":"Gagal memuat skema konfigurasi plugin.","plugins.toast_failed_to_load_plugins":"Gagal memuat plugin","plugins.toast_failed_to_search_plugins":"Failed to search plugins","plugins.uninstall_remove_child_bridge":"Lepaskan Bridge anak plugin?","plugins.uninstall_remove_child_bridges":"Lepaskan {{ count }} Bridge-bridge anak plugin?","plugins.uninstall_remove_config_required":"Jika anda menghapus plugin ini secara permanen, pastikan anda menghapus konfigurasi untuk plugin ini di config.json sebelum memulai kembali Homebridge.","plugins.uninstall_remove_confirmation":"Anda yakin ingin mencopot pemasangan {{ pluginName }}?","plugins.uninstall_remove_plugin_config":"Hapus konfigurasi plugin?","plugins.uninstall_warn_1":"Saat melepas Bridge anak, aksesori apa pun yang diterbitkan oleh Bridge ini akan dihapus dari cache Homebridge.","plugins.uninstall_warn_2":"Aksesori akan menjadi basi di HomeKit (tidak menunjukkan tanggapan). Untuk menghapusnya, Anda harus menghapus Bridge ini secara manual dari HomeKit. Anda dapat melakukan ini di aplikasi Home dari bagian Pengaturan Home.","reset.accessory_all.desc":"Hapus semua aksesori dari cache.","reset.accessory_all.list_1":"Saat mengklik tombol Hapus di bawah ini, Homebridge akan memulai kembali dan semua aksesori Anda yang ada akan dihapus dari Homebridge dan HomeKit.","reset.accessory_all.list_2":"Semua data HomeKit yang terkait juga akan dihapus, ini termasuk asosiasi kamar, adegan dan otomatisasi yang digunakan aksesori ini.","reset.accessory_all.list_3":"Setelah Homebridge memulai kembali, plugin Anda akan menambahkan kembali semua aksesori seolah-olah plugin sedang dipasang untuk pertama kalinya.","reset.accessory_all.title":"Hapus Semua Aksesori","reset.accessory_ind.bridge":"Bridge","reset.accessory_ind.desc":"Hapus aksesori individu dari cache.","reset.accessory_ind.done":"Selesai menghapus aksesori dari cache, periksa log untuk konfirmasi dan/atau kesalahan.","reset.accessory_ind.fail":"Gagal menghapus aksesori dari cache, periksa log untuk kesalahan.","reset.accessory_ind.list_1":"Beberapa plugin tidak dapat membersihkan diri mereka sendiri dengan benar. Jika Anda memiliki aksesori yang menyangkut, Anda dapat menghapusnya dari cache. Fungsi ini juga dapat digunakan untuk mengatur ulang aksesori yang ada di HomeKit.","reset.accessory_ind.list_2":"Aksesori akan dihapus dari Homebridge dan HomeKit, bersama dengan asosiasi kamar, adegan, dan otomatisasi terkait.","reset.accessory_ind.list_3":"Setelah memulai kembali Homebridge, plugin Anda akan menyerahkan kembali aksesori yang dihapus seolah-olah plugin sedang diinstal untuk pertama kalinya.","reset.accessory_ind.title":"Hapus aksesori individu","reset.accessory_ind.unknown":"Nama yang tidak diketahui","reset.accessory_reset":"Mengatur Ulang Aksesoris Homebridge","reset.action_is_irreversible":"Tindakan ini tidak dapat dipulihkan. Harap baca dengan seksama sebelum melanjutkan.","reset.bridge_accessories.desc":"Hapus semua aksesori yang diterbitkan oleh Bridge anak dari cache.","reset.bridge_accessories.empty":"Anda tidak memiliki Bridge untuk menghapus aksesori.","reset.bridge_accessories.list_1":"Fungsi ini dapat digunakan untuk mengatur ulang aksesori plugin yang ada di HomeKit.Mereka akan dihapus dari Homebridge dan HomeKit, dan kemudian ditahan kembali oleh plugin sebagai aksesori baru.","reset.bridge_accessories.list_2":"Detail dan status pasangan Bridge anak akan tetap sama.","reset.bridge_accessories.title":"Lepaskan aksesoris Bridge","reset.bridge_all.desc":"Setel ulang semua Bridge dengan mengeluarkannya dari cache. Ini termasuk Bridge Homebridge utama, Bridge anak dan Bridge untuk aksesori eksternal.","reset.bridge_all.list_1":"Ini akan mengatur ulang Bridge Homebridge, semua Bridge anak dan Bridge untuk aksesori eksternal dari HomeKit.","reset.bridge_all.list_2":"Perhatikan bahwa aksesori Anda akan terus ditampilkan di HomeKit sebagai tidak ada tanggapan, sampai Bridge dihapus secara manual dari HomeKit.Anda dapat melakukan ini di aplikasi Home, dengan mengakses pengaturan rumah \u2192 Home Hubs & Bridges \u2192 {Bridge} \u2192 Lepaskan Bridge dari rumah.","reset.bridge_all.list_3":"Semua homebridge Anda ke homeKit aksesori, adegan, dan otomatisasi perlu dikonfigurasi ulang setelah tidak berpasangan.","reset.bridge_all.list_4":"Pin untuk memasangkan Bridge homebridge Anda ke HomeKit akan diubah. Anda dapat melihat nilai-nilai baru di konfigurasi homebridge Anda setelah tidak berpasangan.","reset.bridge_all.title":"Setel ulang semua Bridge","reset.bridge_ind.desc":"Setel ulang Bridge individual dengan mengeluarkannya dari cache. Ini mungkin Bridge anak atau Bridge untuk aksesori eksternal seperti kamera atau TV.","reset.bridge_ind.desc_child_active":"Homebridge telah mendeteksi bahwa Bridge anak ini sedang digunakan.Setelah dihapus, aksesorisnya akan dihapus dari cache Homebridge.Jika dipasangkan dengan HomeKit, aksesori Bridge akan ditampilkan sebagai 'tidak ada respons', dan Bridge perlu dihapus melalui aplikasi rumah.Informasi pemasangan Child Bridge akan diubah.Setelah Homebridge dimulai kembali, plugin akan membuat Bridge dan aksesori anak yang baru.Bridge baru perlu dipasangkan kembali dengan HomeKit.Anda dapat melihat informasi pasangan baru dari halaman Pengaturan Bridge Plugin yang sesuai.","reset.bridge_ind.desc_child_stale":"Homebridge telah mendeteksi bahwa Bridge ini tidak digunakan, tetapi periksa ganda sebelum dihapus.Mereka bisa tersisa dari plugin yang sebelumnya tidak diinstal.Jika dipasangkan dengan HomeKit, aksesori akan ditampilkan sebagai 'tidak ada respons', dan Bridge perlu dihapus melalui aplikasi rumah.","reset.bridge_ind.desc_non_child":"Homebridge telah mendeteksi bahwa Bridge ini digunakan.Anda dapat menghapusnya dari cache, tetapi mereka kemungkinan akan ditambahkan kembali oleh plugin ketika memulai kembali Homebridge. Informasi pasangan akan tetap tidak berubah.","reset.bridge_ind.done":"Selesai mengatur ulang Bridge, periksa log untuk konfirmasi dan/atau kesalahan.","reset.bridge_ind.fail":"Gagal mengatur ulang Bridge, periksa log untuk kesalahan.","reset.bridge_ind.head_child_active":"Bridge anak yang aktif","reset.bridge_ind.head_child_stale":"Bridge anak yang basi","reset.bridge_ind.head_non_child":"Bridge non-anak","reset.bridge_ind.title":"Setel ulang Bridge individu","reset.bridges.desc":"Jika Anda mengalami kesulitan memasangkan Homebridge, aksesori eksternal atau Bridge anak ke HomeKit, Anda mungkin perlu membongkarnya dari HomeKit untuk memulai lagi.","reset.bridges.empty":"Anda tidak memiliki Bridge untuk membuka diri dari HomeKit.","reset.bridges.title":"Bridge","reset.clear_cache_single.list_3":"Saat menghapus aksesori dari cache, semua data HomeKit yang terkait akan dihapus.Ini termasuk adegan dan otomatisasi terkait yang menggunakan aksesori ini.","reset.delete_success":"Memulai kembali Homebridge dan membersihkan cache aksesoris","reset.error_message":"Cache aksesori tidak dapat dimuat. Anda mungkin tidak memiliki aksesori yang di-cache.","reset.failed_to_reset":"Gagal mengatur-ulang Homebridge. Lihat catatan.","reset.force_restart_hb_help_text":"Gunakan tindakan ini untuk memaksa layanan hb-service untuk memulai kembali secara menyeluruh.","reset.no_accessories":"Anda tidak memiliki aksesori yang di-cache untuk dihapus.","restart.child_bridge_list":"Harap memulai kembali Bridge anak ini agar perubahan berlaku:","restart.child_bridges":"Harap memulai kembali Bridge anak plugin untuk perubahan yang berlaku.","restart.label_restart_command_executed":"Perintah memulai kembali dieksekusi","restart.please_wait_while_server_restarts":"Harap tunggu, halaman ini akan secara otomatis mengarahkan ulang ketika server kembali online.","restart.server_is_taking_long_time_to_restart":"Memulai kembali server membutuhkan waktu lebih lama. Anda mungkin perlu menjalankan layanan Homebridge secara manual.","restart.service_ready":"Server Homebridge Siap","restart.title_restart":"Memulai Kembali Homebridge","restart.toast_server_restart_error":"Terjadi kesalahan saat mengirim perintah memulai kembali ke server","restart.toast_server_restart_timeout":"Server membutuhkan waktu lebih lama untuk kembali online","restart.toast_server_restarted":"Server Dimulai Kembali","restart.ui_online":"Homebridge UI Online","rpi.throttled.currently_message":"Raspberry Pi ini melaporkan saat ini sedang dalam tegangan; Silakan periksa itu terhubung ke catu daya yang sesuai. Di bawah tegangan dapat mengakibatkan ketidakstabilan sistem dan korupsi kartu SD.","rpi.throttled.previously_message":"Raspberry Pi ini telah melaporkan acara yang kurang tegangan sejak terakhir di-boot ulang; Silakan periksa itu terhubung ke catu daya yang sesuai.","rpi.throttled.undervoltage_title":"Di bawah tegangan","settings.accessory.debug":"Accessory Debug Mode","settings.accessory.debug_desc":"If enabled, the Homebridge UI will log debug level messages to the console.","settings.cache.desc":"Homebridge memelihara aksesori dalam cache sehingga tidak dilepas dan ditahan kembali ke HomeKit setiap kali Homebridge restart. Terkadang cache ini bisa tidak selaras dengan aksesori aktual di Homebridge.","settings.changes.saved":"Perubahan Anda telah disimpan dan mengharuskan restart untuk berlaku.","settings.datetime.incorrect":"Tanggal dan waktu di server homebridge Anda tampaknya salah. Ini dapat menyebabkan masalah yang tidak terduga. Klik di sini untuk informasi lebih lanjut.","settings.display.blue":"Biru","settings.display.bluegrey":"Abu-abu Biru","settings.display.brown":"Cokelat","settings.display.cyan":"Cyan","settings.display.dark":"Gelap","settings.display.deep_purple":"Ungu tua","settings.display.green":"Hijau","settings.display.grey":"Abu-abu","settings.display.indigo":"Nila","settings.display.lang":"Bahasa","settings.display.light":"Lampu","settings.display.lighting_mode":"Mode Pencahayaan","settings.display.menu_default":"Bawaan","settings.display.menu_freeze":"Tetap Tertutup (di Desktop)","settings.display.menu_mode":"Mode Menu","settings.display.orange":"Oranye","settings.display.pink":"Pink","settings.display.purple":"Ungu","settings.display.red":"Merah","settings.display.show_betas":"Prefer Beta Versions","settings.display.teal":"Teal","settings.display.temp_units":"Unit suhu","settings.display.temp_units.c":"Celcius (\xB0C)","settings.display.temp_units.f":"Fahrenheit (\xB0F)","settings.display.theme":"Tema","settings.display.wallpaper":"Wallpaper","settings.display.wallpaper_intro":"Upload a wallpaper for your Homebridge UI. This is currently shown on the login screen.","settings.display.wallpaper_rule":"You can choose an image file which is up to {{ maxFileSizeText }}.","settings.display.wallpaper_rule2":"You will need to click Save to upload the wallpaper to your Homebridge storage directory.","settings.display.wallpaper_success":"Wallpaper was successfully updated.","settings.general.title_display":"Penampilan","settings.general.title_general":"Umum","settings.linux.restart":"Restart Command","settings.linux.restart_desc":"If no restart command is set the process will terminate with a non-zero exit code.","settings.linux.shutdown":"Shutdown Command","settings.linux.shutdown_desc":"If no shutdown command is set the process will terminate with a non-zero exit code.","settings.linux.temp":"Temperature File Path","settings.linux.temp_desc":"If you are running Homebridge on a Raspberry Pi, you can enter the path to the OS temperature file here. This will display the current temperature on the UI status page.","settings.matter.desc":"Enables Matter accessories on the main bridge. If only using Matter with child bridges, this setting does not need to be enabled - child bridges have independent Matter settings in their plugin bridge settings.","settings.matter.enabled":"Enabled","settings.matter.enabled_desc":"Whether to start a Matter instance and allow plugins to expose Matter accessories.","settings.matter.port":"Port","settings.matter.port_desc":"This must be between 1025 and 65533, and unique to any other configured port.","settings.matter.title":"Matter Settings","settings.mdns_advertiser":"Pengiklan mDNS","settings.mdns_advertiser_exp":"Eksperimental","settings.mdns_advertiser_help":"Jika Anda mengalami masalah saat menghubungkan ke Homebridge, coba gunakan salah satu pengiklan mDNS alternatif.","settings.mdns_advertiser_not_connected":"Tidak terhubung","settings.mdns_advertiser_rec":"direkomendasikan","settings.name":"Homebridge Name","settings.network.hb_package":"Homebridge Module Path","settings.network.hb_package_desc":"If you have multiple versions of Homebridge installed, you can specify the path to the version you want to use here.","settings.network.host":"Host IP Address","settings.network.host_desc":"The host IP address to listen on. In most cases this will be <code>::</code> or <code>0.0.0.0</code>.","settings.network.mdns_advertise":"Advertise Via mDNS","settings.network.mdns_advertise_help":"Enable mDNS advertising (using Bonjour) for your Homebridge UI, making it discoverable as an HTTP service on your local network.","settings.network.message_network_interface":"Jika tidak ada antarmuka jaringan yang terpilih, Homebridge akan mencoba menentukan secara otomatis antarmuka yang akan diumumkan.","settings.network.port_end":"End Port","settings.network.port_end_desc":"Control the end of the range of ports that separate accessories (like camera or television) should run on. This must be between 1025 and 65533, and higher than the start port above.","settings.network.port_hb":"Port Homebridge","settings.network.port_hb_desc":"Nomor port untuk menjalankan Homebridge Bridge menyala.Ini harus antara 1025 dan 65533, dan tidak boleh sama dengan port UI Homebridge.","settings.network.port_start":"Start Port","settings.network.port_start_desc":"Control the start of the range of ports that separate accessories (like camera or television) should run on. This must be between 1025 and 65533, and lower than the end port below.","settings.network.port_ui":"Port UI","settings.network.port_ui_desc":"Nomor port untuk menjalankan Homebridge UI.","settings.network.proxy":"Reverse Proxy Hostname","settings.network.proxy_desc":"When running behind a reverse proxy you may need to enter the hostname you use to access the UI.","settings.network.title_network":"Jaringan","settings.network.title_network_interfaces":"Antarmuka Jaringan","settings.network.title_security":"Security","settings.network.title_terminal":"Logging & Terminal","settings.network.webroot":"Webroot Path","settings.network.webroot_desc":"This can be configured if you want to access the Homebridge UI under a specific URL path.","settings.reset_bridge.error":"Gagal mengatur ulang jembatan.","settings.security.auth":"Authentication","settings.security.auth_desc":"Whether to enable authentication for the Homebridge UI with a username and password.","settings.security.cert":"Certificate Path","settings.security.https":"Enable HTTPS","settings.security.https_desc":"Enable HTTPS using an auto-generated self-signed certificate or by providing your own certificate files.","settings.security.https_keycert":"Private Key + Certificate","settings.security.https_pfx":"PKCS#12 Certificate + Passphrase","settings.security.https_raspbian":"HTTPS is already enabled by default when running the Homebridge Raspbian image {{ link }}.","settings.security.https_selfsigned":"Self-Signed Certificate","settings.security.key":"Private Key Path","settings.security.pass":"PKCS#12 Certificate Passphrase","settings.security.pfx":"PKCS#12 Certificate Path","settings.security.selfsigned_generate_keycert":"Generate Self\u2011Signed & Use as Key + Cert","settings.security.selfsigned_generate_selfsigned":"Generate & Enable Self\u2011Signed Mode","settings.security.selfsigned_generate_success_keycert":"Generated self\u2011signed certificate and set as Key + Cert","settings.security.selfsigned_generate_success_selfsigned":"Generated self\u2011signed certificate and enabled Self\u2011signed mode","settings.security.selfsigned_hostnames":"Certificate Hostnames","settings.security.selfsigned_hostnames_desc":"Comma-separated list of hostnames or IP addresses to include in the certificate (e.g., localhost, 127.0.0.1, homebridge.local, 192.168.1.100)","settings.security.ssl_upload_keycert_aria":"Upload private key and certificate","settings.security.ssl_upload_pfx_aria":"Upload PKCS#12 certificate","settings.security.ssl_upload_success_keycert":"Certificate and private key uploaded","settings.security.ssl_upload_success_pfx":"PKCS#12 certificate uploaded","settings.security.ssl_validate":"Validate SSL","settings.security.ssl_validate_error":"SSL configuration is invalid.","settings.security.ssl_validate_success":"SSL configuration is valid.","settings.security.ui_control":"Accessory Control Lists","settings.security.ui_control_desc":"Define which bridges and bridged accessories can be controlled or blocked by the Homebridge UI.","settings.security.ui_control_desc_2":"Allow the UI to control the accessories on a bridge by toggling on the switch below.","settings.service.debug_tooltip":"Beberapa plugin mengharuskan Anda untuk mengatur variabel lingkungan debug {{ link }} untuk mengaktifkan pencatatan level debug.","settings.service.node_tooltip":"Opsi runtime node.js untuk proses ini. Ini harus tetap kosong kecuali Anda tahu apa yang Anda lakukan.","settings.startup.debug":"Mode Debug Homebridge","settings.startup.debug_desc_v1":"Aktifkan ini jika Anda membutuhkan Homebridge untuk mengeluarkan log lebih rinci. Pengaturan ini berlaku untuk Jembatan Homebridge utama serta semua jembatan anak. Beberapa plugin juga dapat mematuhi pengaturan ini dan output log lebih rinci.","settings.startup.debug_desc_v2":"Aktifkan ini jika Anda membutuhkan Homebridge untuk mengeluarkan log lebih rinci. Pengaturan ini berlaku untuk Jembatan Homebridge utama. Pengaturan untuk jembatan anak dapat ditemukan di konfigurasi jembatan anak dari halaman plugin.Beberapa plugin juga dapat mematuhi pengaturan ini dan output log lebih rinci.","settings.startup.insecure":"Enable UI Accessory Control","settings.startup.insecure_desc":"Untuk mengontrol aksesori Anda melalui Homebridge UI, Anda harus menjalankan Homebridge dalam mode tidak aman.","settings.startup.keep_accessories":"Simpan aksesoris plugin yang tidak diinstal","settings.startup.keep_accessories_desc":"Jika diaktifkan, aksesori plugin platform akan tetap berada di cache bahkan setelah plugin tidak diinstal. Ini bisa berguna jika Anda berencana untuk menginstal ulang plugin nanti.","settings.startup.metrics":"Enable Server Metric Monitoring","settings.startup.metrics_desc":"When enabled, the Homebridge UI will collect and show CPU and memory stats on the status page.","settings.startup.scheduled_restart":"Scheduled Restart Cron","settings.startup.scheduled_restart_desc":"Schedule automatic restarts relative to your timezone using a cron expression. Leave empty to disable. Create a cron expression {{ link }}.","settings.startup.scheduled_restart_desc_2":"You can apply this setting per child bridge from the plugin bridge configuration.","settings.startup.session":"Session Timeout","settings.startup.session_days":"days","settings.startup.session_desc":"The number of seconds before a user will be logged out of the UI. Defaults to 8 hours.","settings.startup.session_hours":"hours","settings.startup.session_inactivity_based":"Inactivity-Based Session Refresh","settings.startup.session_inactivity_based_desc":"When enabled, the session will automatically refresh on navigation to prevent logout during active use.","settings.startup.session_minutes":"minutes","settings.terminal.buffer_size":"Terminal Buffer Character Size","settings.terminal.buffer_size_help":"Amount of terminal output to preserve for persistent sessions. Larger values use more memory.","settings.terminal.log_max":"Log Max Size","settings.terminal.log_max_desc":"The max log size (bytes). Set to -1 to disable log truncation.","settings.terminal.log_truncate":"Log Truncate Size","settings.terminal.log_truncate_desc":"The size (bytes) to truncate the log to once it goes over the max size specified above.","settings.terminal.persistence":"Terminal Session Persistence","settings.terminal.persistence_confirm_message":"Disabling terminal session persistence will terminate your current terminal session.","settings.terminal.persistence_confirm_title":"Disable Terminal Session Persistence","settings.terminal.persistence_help":"When enabled, terminal sessions will persist when navigating away and can be resumed when returning to the terminal page (or status page widget). Terminal sessions are shared across Homebridge UI admin users.","settings.terminal.warning":"Hide Terminal Termination Warning","settings.terminal.warning_help":"When enabled, the warning dialog will not be shown before terminating non-persistent terminal sessions.","settings.title_startup_options":"Opsi Startup","settings.unpair_bridge.load_error":"Jembatan berpasangan tidak dapat dimuat.","settings.warning_pwa":"This setting cannot be changed when accessing the UI from a PWA, please use a regular browser.","settings.warning_webroot":"Homebridge does not have write access to the served <code>index.html</code> file. To set up a webroot, please fix this issue and restart the Homebridge service.","setup.button_get_started":"Mulai","setup.create_account":"Buat akun","setup.intro":"If you are setting up for the first time, or if you just need to reset the password for your existing Homebridge setup, then choose <strong>Get Started</strong>.","setup.welcome_to_homebridge":"Selamat datang di Homebridge",setup_wizard_complete:"Restore Complete!",setup_wizard_complete_title:"Selamat!",setup_wizard_completed:"Prosedur pengaturan selesai dan Anda sekarang siap untuk mulai menggunakan Homebridge.",setup_wizard_create_info:"Once Homebridge is set up, you can set up 2FA on your account, or disable the need for authentication altogether.",setup_wizard_page_title:"Setup Homebridge",setup_wizard_restore:"Kembalikan dari cadangan",setup_wizard_restoring:"Restoring Backup...",setup_wizard_starting:"Starting Homebridge...","status.code_scan":"Pindai untuk menambahkan ke HomeKit","status.cpu.load":"Beban","status.cpu.temp":"Suhu","status.cpu.title_cpu":"CPU","status.credits.plugins_thanks":"Homebridge plugins are created by awesome developers in the Homebridge community.","status.credits.supporters":"Supporters","status.credits.title":"Kredit","status.credits.translations":"Translations","status.credits.translations_thanks":"Homebridge UI translations are provided by the community, with special thanks to:","status.homebridge.checking":"Memeriksa pembaruan\u2026","status.homebridge.up_to_date":"Terkini","status.memory.label_available":"Tersedia","status.memory.label_total":"Total","status.memory.title_memory":"Memori","status.network.received_per_second":"Diterima","status.network.sent_per_second":"Dikirim","status.network.title_network":"Aktivitas Jaringan","status.readiness.node_no":"Your version of Node.js is not compatible with {{ app }}.","status.readiness.node_yes":"Your version of Node.js is compatible with {{ app }}.","status.readiness.title":"{{ app }} Readiness","status.services.label_not_enabled":"Not Enabled","status.services.label_not_running":"Tidak berjalan","status.services.label_running":"Berjalan","status.services.updates":"Informasi Terbaru","status.uptime.title_uptime":"Waktu Aktif","status.widget.accessories.choose_accessories":"Pilih Aksesoris yang akan ditampilkan dalam widget ini dari tab Aksesoris.","status.widget.account_1":"The widget layout is shared among all Homebridge UI users.","status.widget.account_2":"Admin users can modify the layout, while non-admin users cannot make changes.","status.widget.add.label_pairing_code":"Kode Pemasangan","status.widget.add.matter_pairing_code":"Matter Pairing Code","status.widget.bridge.restart_error":"Failed to restart child bridge.","status.widget.clock":"Jam","status.widget.clock_dateformat":"Format Tanggal","status.widget.clock_timeformat":"Format Waktu","status.widget.expand_docker":"Expand Docker Container Information","status.widget.font_size":"Ukuran Huruf","status.widget.font_weight":"Lebar Huruf","status.widget.hide_node_info":"Hide Node.js Updates","status.widget.hide_npm":"Show npm Version","status.widget.hide_on_mobile":"Sembunyikan dalam tampilan ringkas (tampilan seluler)","status.widget.homebridge_logs":"Catatan Homebridge","status.widget.info":"Informasi Sistem","status.widget.info.arch":"Arch.","status.widget.info.config_path":"Path Konfigurasi","status.widget.info.docker":"Docker","status.widget.info.docker_update_message":"Updating the Docker container requires manually pulling the latest image and restarting the container. Homebridge does not perform this automatically. Refer to your Docker image's documentation for update instructions.","status.widget.info.docker_update_title":"Docker Container Update","status.widget.info.hostname":"Nama Host","status.widget.info.ipv4":"IPv4","status.widget.info.ipv6":"IPv6","status.widget.info.no":"No","status.widget.info.node_major":"Node.js Major Versions","status.widget.info.node_next_no":"Your current architecture ({{ architecture }}) is 32-bit, which is not supported. You will need to migrate to a 64-bit system. Please use Node.js v22 instead, which we will be supporting until April 2027.","status.widget.info.node_next_yes":"Your current architecture ({{ architecture }}) supports Node.js v24, so you can upgrade when you are ready.","status.widget.info.node_unsupp":"Tidak didukung","status.widget.info.node_unsupp_message":"Anda menjalankan versi Node.js yang tidak secara resmi didukung oleh Homebridge. Anda harus mempertimbangkan untuk mengubah ke versi yang didukung.","status.widget.info.node_update_message":"Homebridge membutuhkan node.js yang diinstal pada sistem Anda untuk dijalankan. Dari waktu ke waktu, Anda perlu memperbarui runtime Node.js untuk mengaktifkan dukungan untuk fitur baru. Homebridge (dan Plugin Terverifikasi) mendukung semua rilis LTS aktif dan pemeliharaan saat ini dari Node.js.","status.widget.info.node_update_message_2":"Untuk pengguna Docker/Synology, versi Node.js dikelola oleh image Docker atau paket Synology. Anda dapat menyembunyikan informasi pembaruan node.js menggunakan pengaturan widget.","status.widget.info.nodejs_path":"Jalur Node.js","status.widget.info.os":"OS","status.widget.info.plugin_path":"Path Plugin","status.widget.info.service_user":"Pengguna","status.widget.info.storage_path":"Path Penyimpanan","status.widget.info.synology_package":"Paket Synology","status.widget.info.timezone":"Zona Waktu","status.widget.info.yes":"Ya","status.widget.network.history_items":"Item Sejarah","status.widget.network.items":"item","status.widget.network.network_interface":"Antarmuka jaringan","status.widget.network.none_selected":"Menggunakan default","status.widget.network.refresh_interval":"Menyegarkan interval","status.widget.network.seconds":"detik","status.widget.qr_paired":"Terpasang","status.widget.qr_unpaired":"Tidak Terpasang","status.widget.show_hide":"Tampilkan/Sembunyikan Widget","status.widget.title_manage_widget":"Kelola Widget","status.widget.update_node_no":"{{ pluginName }} is not compatible with Node {{ nodeVersion }}.","status.widget.update_node_unknown":"The developer of {{ pluginName }} has not specified the Node version compatibility.","status.widget.update_node_yes":"{{ pluginName }} is compatible with Node {{ nodeVersion }}.","status.widget.uptime.label_process":"Proses","status.widget.uptime.label_server":"Server","status.widget.weather.label_config_required_help":"Silakan pilih kota anda di pengaturan widget.","status.widget.weather.label_search_for_your_city":"Cari kota anda:","status.widget.weather.title_weather":"Cuaca","support.dev.api":"Homebridge API","support.dev.api_hap":"HAP-NodeJS API","support.dev.api_hap_sub":"Hap-NodeJS adalah implementasi dari server aksesori homeKit sebagaimana ditentukan dalam HomeKit Accessory Protocol (HAP), yang didefinisikan oleh Apple sebagai bagian dari kerangka kerja HomeKit.","support.dev.api_sub":"Homebridge adalah server Node.js yang ringan yang dapat Anda jalankan di jaringan rumah Anda untuk meniru Protokol Aksesori HomeKit (HAP).","support.dev.item_swagger":"Dokumen Swagger","support.dev.item_swagger_sub":"Homebridge REST API memungkinkan Anda untuk berinteraksi dengan server Homebridge Anda menggunakan permintaan HTTP.","support.dev.template":"Repo Template Plugin","support.dev.template_sub":"Plugin Template Homebridge yang dapat digunakan sebagai dasar dalam membantu Anda untuk mulai mengembangkan plugin Anda sendiri.","support.dev.title":"Pengembang","support.dev.verified":"Diverifikasi oleh Homebridge","support.dev.verified_sub":"Program yang diverifikasi oleh Homebridge memungkinkan pengembang plugin untuk membuat plugin mereka ditinjau dan didukung oleh tim proyek Homebridge.","support.links.discord":"Server Discord","support.links.discord_sub":"Bergabung dengan server obrolan Discord Homebridge untuk mengobrol dengan pengguna dan pengembang lain.","support.links.documentation":"Dokumentasi","support.links.documentation_sub":"Dokumentasi Homebridge memberikan banyak informasi tentang cara memulai dengan homebridge dan penyelesaian masalah umum.","support.links.issue":"Laporkan Permasalah","support.links.issue_sub":"Jika Anda mengalami masalah dengan Homebridge, silakan buka masalah baru di GitHub. Tidak untuk permasalah dengan plugin yang spesifik.","support.links.reddit":"Komunitas Reddit","support.links.reddit_sub":"Homebridge Subreddit adalah tempat yang tepat untuk berbagi pengaturan Homebridge Anda dan meminta bantuan.","support.links.title":"Tautan berguna","support.title":"Dukungan","toast.no_auth":"Hanya administrator yang dapat mengakses halaman yang diminta.","toast.title_error":"Kesalahan","toast.title_success":"Sukses","toast.title_warning":"Peringatan","users.button_add_user":"Tambah Pengguna","users.label_admin_user":"Pengguna adalah Admin?","users.label_confirm_password":"Konfirmasi Kata Sandi","users.label_full_name":"Nama Lengkap","users.label_new_password":"Kata Sandi Baru","users.label_password":"Kata Sandi","users.label_username":"Nama Pengguna","users.setup_2fa":"Siapkan 2FA","users.setup_2fa_activate_error":"Terjadi kesalahan dalam mengaktifkan 2FA","users.setup_2fa_cannot_setup_2fa":"Tidak Dapat Menyiapkan 2FA","users.setup_2fa_disable":"Nonaktifkan 2FA","users.setup_2fa_disable_current_password":"Masukkan kata sandi Anda saat ini untuk menonaktifkan otentikasi dua faktor (2FA):","users.setup_2fa_disable_success":"Otentikasi dua faktor (2FA) telah dinonaktifkan.","users.setup_2fa_enable":"Aktifkan 2FA","users.setup_2fa_enable_error":"An error occurred setting up 2FA","users.setup_2fa_enabled_success":"Otentikasi dua faktor (2FA) telah diaktifkan.","users.setup_2fa_enter_code":"Masukkan kode dari aplikasi autentikator anda:","users.setup_2fa_scan_qr_code":"Pindai kode QR di bawah ini dengan aplikasi autentikator anda:","users.setup_2fa_scan_qr_manual":"If you cannot scan the QR code, you can enter the following secret key manually:","users.setup_2fa_server_time_out":"Jam server anda meleset {{ timeDiffError }} milidetik. Maksimum perbedaan adalah +/-5000 milidetik.","users.setup_2fa_warning":"Otentikasi Dua Faktor (2FA) mengharuskan server Homebridge anda memiliki tanggal dan waktu yang sangat akurat untuk masuk. Jika server Anda tidak memiliki kemampuan untuk menjaga waktu secara akurat, sebaiknya anda tidak mengaktifkan 2FA atau berisiko terkunci dari Homebridge UI.","users.support.acc_1":"There are two types of users that can access the Homebridge UI: admin and non-admin users. Admins can access and control everything available in the UI. Non-admin users have a read-only view of the following pages:","users.support.acc_2":"2FA can only be set up on admin accounts, and must do this via the users page logged in as themselves.","users.support.control":"can be controlled","users.title_add_user":"Tambah Pengguna","users.title_edit_user":"Ubah Pengguna","users.title_users":"Pengguna","users.toast_added_new_user":"Menambahkan Pengguna Baru","users.toast_failed_to_add_user":"Gagal Menambah Pengguna","users.toast_failed_to_delete_user":"Gagal Menghapus Pengguna","users.toast_updated_user":"Pengguna yang Diperbarui","users.toast_user_deleted":"Pengguna Dihapus"}});export{i as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as fe}from"./chunk-2TQEV57U.js";import{Aa as w,Lc as N,Sc as ce,U as X,W as d,Wc as he,X as Ne,Xb as y,Y,_ as A,aa as R,d as Ee,db as Pe,h as we,hb as I,ib as o,ic as de,ka as Oe,ma as xe,o as Ie,oa as D,ob as K,pb as l,sa as F,sb as u,u as Se,vb as Re,wa as v,wc as c,xa as E,xb as ke,ya as f,yb as S}from"./chunk-MKV5RAJQ.js";import{a as h,b as g}from"./chunk-B4AJQJMI.js";var We=(()=>{class n{_renderer;_elementRef;onChange=e=>{};onTouched=()=>{};constructor(e,i){this._renderer=e,this._elementRef=i}setProperty(e,i){this._renderer.setProperty(this._elementRef.nativeElement,e,i)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty("disabled",e)}static \u0275fac=function(i){return new(i||n)(o(I),o(w))};static \u0275dir=l({type:n})}return n})(),P=(()=>{class n extends We{static \u0275fac=(()=>{let e;return function(r){return(e||(e=f(n)))(r||n)}})();static \u0275dir=l({type:n,features:[u]})}return n})(),V=new A(""),vt={provide:V,useExisting:d(()=>yt),multi:!0},yt=(()=>{class n extends P{writeValue(e){this.setProperty("checked",e)}static \u0275fac=(()=>{let e;return function(r){return(e||(e=f(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["input","type","checkbox","formControlName",""],["input","type","checkbox","formControl",""],["input","type","checkbox","ngModel",""]],hostBindings:function(i,r){i&1&&y("change",function(a){return r.onChange(a.target.checked)})("blur",function(){return r.onTouched()})},standalone:!1,features:[c([vt]),u]})}return n})(),Ct={provide:V,useExisting:d(()=>qe),multi:!0};function Vt(){let n=fe()?fe().getUserAgent():"";return/android (\d+)/.test(n.toLowerCase())}var Dt=new A(""),qe=(()=>{class n extends We{_compositionMode;_composing=!1;constructor(e,i,r){super(e,i),this._compositionMode=r,this._compositionMode==null&&(this._compositionMode=!Vt())}writeValue(e){let i=e??"";this.setProperty("value",i)}_handleInput(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)}_compositionStart(){this._composing=!0}_compositionEnd(e){this._composing=!1,this._compositionMode&&this.onChange(e)}static \u0275fac=function(i){return new(i||n)(o(I),o(w),o(Dt,8))};static \u0275dir=l({type:n,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(i,r){i&1&&y("input",function(a){return r._handleInput(a.target.value)})("blur",function(){return r.onTouched()})("compositionstart",function(){return r._compositionStart()})("compositionend",function(a){return r._compositionEnd(a.target.value)})},standalone:!1,features:[c([Ct]),u]})}return n})();function me(n){return n==null||_e(n)===0}function _e(n){return n==null?null:Array.isArray(n)||typeof n=="string"?n.length:n instanceof Set?n.size:null}var m=new A(""),W=new A(""),bt=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,je=class{static min(t){return ze(t)}static max(t){return Ze(t)}static required(t){return Xe(t)}static requiredTrue(t){return At(t)}static email(t){return Mt(t)}static minLength(t){return Ft(t)}static maxLength(t){return Ye(t)}static pattern(t){return Ke(t)}static nullValidator(t){return Q()}static compose(t){return it(t)}static composeAsync(t){return rt(t)}};function ze(n){return t=>{if(t.value==null||n==null)return null;let e=parseFloat(t.value);return!isNaN(e)&&e<n?{min:{min:n,actual:t.value}}:null}}function Ze(n){return t=>{if(t.value==null||n==null)return null;let e=parseFloat(t.value);return!isNaN(e)&&e>n?{max:{max:n,actual:t.value}}:null}}function Xe(n){return me(n.value)?{required:!0}:null}function At(n){return n.value===!0?null:{required:!0}}function Mt(n){return me(n.value)||bt.test(n.value)?null:{email:!0}}function Ft(n){return t=>{let e=t.value?.length??_e(t.value);return e===null||e===0?null:e<n?{minlength:{requiredLength:n,actualLength:e}}:null}}function Ye(n){return t=>{let e=t.value?.length??_e(t.value);return e!==null&&e>n?{maxlength:{requiredLength:n,actualLength:e}}:null}}function Ke(n){if(!n)return Q;let t,e;return typeof n=="string"?(e="",n.charAt(0)!=="^"&&(e+="^"),e+=n,n.charAt(n.length-1)!=="$"&&(e+="$"),t=new RegExp(e)):(e=n.toString(),t=n),i=>{if(me(i.value))return null;let r=i.value;return t.test(r)?null:{pattern:{requiredPattern:e,actualValue:r}}}}function Q(n){return null}function Je(n){return n!=null}function Qe(n){return Re(n)?we(n):n}function et(n){let t={};return n.forEach(e=>{t=e!=null?h(h({},t),e):t}),Object.keys(t).length===0?null:t}function tt(n,t){return t.map(e=>e(n))}function Et(n){return!n.validate}function nt(n){return n.map(t=>Et(t)?t:e=>t.validate(e))}function it(n){if(!n)return null;let t=n.filter(Je);return t.length==0?null:function(e){return et(tt(e,t))}}function ve(n){return n!=null?it(nt(n)):null}function rt(n){if(!n)return null;let t=n.filter(Je);return t.length==0?null:function(e){let i=tt(e,t).map(Qe);return Se(i).pipe(Ie(et))}}function ye(n){return n!=null?rt(nt(n)):null}function Ge(n,t){return n===null?[t]:Array.isArray(n)?[...n,t]:[n,t]}function st(n){return n._rawValidators}function ot(n){return n._rawAsyncValidators}function ge(n){return n?Array.isArray(n)?n:[n]:[]}function ee(n,t){return Array.isArray(n)?n.includes(t):n===t}function Te(n,t){let e=ge(t);return ge(n).forEach(r=>{ee(e,r)||e.push(r)}),e}function Be(n,t){return ge(t).filter(e=>!ee(n,e))}var te=class{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(t){this._rawValidators=t||[],this._composedValidatorFn=ve(this._rawValidators)}_setAsyncValidators(t){this._rawAsyncValidators=t||[],this._composedAsyncValidatorFn=ye(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(t){this._onDestroyCallbacks.push(t)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(t=>t()),this._onDestroyCallbacks=[]}reset(t=void 0){this.control&&this.control.reset(t)}hasError(t,e){return this.control?this.control.hasError(t,e):!1}getError(t,e){return this.control?this.control.getError(t,e):null}},C=class extends te{name;get formDirective(){return null}get path(){return null}},p=class extends te{_parent=null;name=null;valueAccessor=null},ne=class{_cd;constructor(t){this._cd=t}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}};var xn=(()=>{class n extends ne{constructor(e){super(e)}static \u0275fac=function(i){return new(i||n)(o(p,2))};static \u0275dir=l({type:n,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(i,r){i&2&&de("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)},standalone:!1,features:[u]})}return n})(),Pn=(()=>{class n extends ne{constructor(e){super(e)}static \u0275fac=function(i){return new(i||n)(o(C,10))};static \u0275dir=l({type:n,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["","formArray",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(i,r){i&2&&de("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)("ng-submitted",r.isSubmitted)},standalone:!1,features:[u]})}return n})();var k="VALID",J="INVALID",O="PENDING",j="DISABLED",b=class{},ie=class extends b{value;source;constructor(t,e){super(),this.value=t,this.source=e}},T=class extends b{pristine;source;constructor(t,e){super(),this.pristine=t,this.source=e}},B=class extends b{touched;source;constructor(t,e){super(),this.touched=t,this.source=e}},x=class extends b{status;source;constructor(t,e){super(),this.status=t,this.source=e}},re=class extends b{source;constructor(t){super(),this.source=t}},U=class extends b{source;constructor(t){super(),this.source=t}};function Ce(n){return(le(n)?n.validators:n)||null}function wt(n){return Array.isArray(n)?ve(n):n||null}function Ve(n,t){return(le(t)?t.asyncValidators:n)||null}function It(n){return Array.isArray(n)?ye(n):n||null}function le(n){return n!=null&&!Array.isArray(n)&&typeof n=="object"}function at(n,t,e){let i=n.controls;if(!(t?Object.keys(i):i).length)throw new X(1e3,"");if(!i[e])throw new X(1001,"")}function lt(n,t,e){n._forEachChild((i,r)=>{if(e[r]===void 0)throw new X(1002,"")})}var H=class{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(t,e){this._assignValidators(t),this._assignAsyncValidators(e)}get validator(){return this._composedValidatorFn}set validator(t){this._rawValidators=this._composedValidatorFn=t}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(t){this._rawAsyncValidators=this._composedAsyncValidatorFn=t}get parent(){return this._parent}get status(){return v(this.statusReactive)}set status(t){v(()=>this.statusReactive.set(t))}_status=N(()=>this.statusReactive(),{});statusReactive=F(void 0,{});get valid(){return this.status===k}get invalid(){return this.status===J}get pending(){return this.status==O}get disabled(){return this.status===j}get enabled(){return this.status!==j}errors;get pristine(){return v(this.pristineReactive)}set pristine(t){v(()=>this.pristineReactive.set(t))}_pristine=N(()=>this.pristineReactive(),{});pristineReactive=F(!0,{});get dirty(){return!this.pristine}get touched(){return v(this.touchedReactive)}set touched(t){v(()=>this.touchedReactive.set(t))}_touched=N(()=>this.touchedReactive(),{});touchedReactive=F(!1,{});get untouched(){return!this.touched}_events=new Ee;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(t){this._assignValidators(t)}setAsyncValidators(t){this._assignAsyncValidators(t)}addValidators(t){this.setValidators(Te(t,this._rawValidators))}addAsyncValidators(t){this.setAsyncValidators(Te(t,this._rawAsyncValidators))}removeValidators(t){this.setValidators(Be(t,this._rawValidators))}removeAsyncValidators(t){this.setAsyncValidators(Be(t,this._rawAsyncValidators))}hasValidator(t){return ee(this._rawValidators,t)}hasAsyncValidator(t){return ee(this._rawAsyncValidators,t)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(t={}){let e=this.touched===!1;this.touched=!0;let i=t.sourceControl??this;this._parent&&!t.onlySelf&&this._parent.markAsTouched(g(h({},t),{sourceControl:i})),e&&t.emitEvent!==!1&&this._events.next(new B(!0,i))}markAllAsDirty(t={}){this.markAsDirty({onlySelf:!0,emitEvent:t.emitEvent,sourceControl:this}),this._forEachChild(e=>e.markAllAsDirty(t))}markAllAsTouched(t={}){this.markAsTouched({onlySelf:!0,emitEvent:t.emitEvent,sourceControl:this}),this._forEachChild(e=>e.markAllAsTouched(t))}markAsUntouched(t={}){let e=this.touched===!0;this.touched=!1,this._pendingTouched=!1;let i=t.sourceControl??this;this._forEachChild(r=>{r.markAsUntouched({onlySelf:!0,emitEvent:t.emitEvent,sourceControl:i})}),this._parent&&!t.onlySelf&&this._parent._updateTouched(t,i),e&&t.emitEvent!==!1&&this._events.next(new B(!1,i))}markAsDirty(t={}){let e=this.pristine===!0;this.pristine=!1;let i=t.sourceControl??this;this._parent&&!t.onlySelf&&this._parent.markAsDirty(g(h({},t),{sourceControl:i})),e&&t.emitEvent!==!1&&this._events.next(new T(!1,i))}markAsPristine(t={}){let e=this.pristine===!1;this.pristine=!0,this._pendingDirty=!1;let i=t.sourceControl??this;this._forEachChild(r=>{r.markAsPristine({onlySelf:!0,emitEvent:t.emitEvent})}),this._parent&&!t.onlySelf&&this._parent._updatePristine(t,i),e&&t.emitEvent!==!1&&this._events.next(new T(!0,i))}markAsPending(t={}){this.status=O;let e=t.sourceControl??this;t.emitEvent!==!1&&(this._events.next(new x(this.status,e)),this.statusChanges.emit(this.status)),this._parent&&!t.onlySelf&&this._parent.markAsPending(g(h({},t),{sourceControl:e}))}disable(t={}){let e=this._parentMarkedDirty(t.onlySelf);this.status=j,this.errors=null,this._forEachChild(r=>{r.disable(g(h({},t),{onlySelf:!0}))}),this._updateValue();let i=t.sourceControl??this;t.emitEvent!==!1&&(this._events.next(new ie(this.value,i)),this._events.next(new x(this.status,i)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(g(h({},t),{skipPristineCheck:e}),this),this._onDisabledChange.forEach(r=>r(!0))}enable(t={}){let e=this._parentMarkedDirty(t.onlySelf);this.status=k,this._forEachChild(i=>{i.enable(g(h({},t),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent}),this._updateAncestors(g(h({},t),{skipPristineCheck:e}),this),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(t,e){this._parent&&!t.onlySelf&&(this._parent.updateValueAndValidity(t),t.skipPristineCheck||this._parent._updatePristine({},e),this._parent._updateTouched({},e))}setParent(t){this._parent=t}getRawValue(){return this.value}updateValueAndValidity(t={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){let i=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===k||this.status===O)&&this._runAsyncValidator(i,t.emitEvent)}let e=t.sourceControl??this;t.emitEvent!==!1&&(this._events.next(new ie(this.value,e)),this._events.next(new x(this.status,e)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!t.onlySelf&&this._parent.updateValueAndValidity(g(h({},t),{sourceControl:e}))}_updateTreeValidity(t={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(t)),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?j:k}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(t,e){if(this.asyncValidator){this.status=O,this._hasOwnPendingAsyncValidator={emitEvent:e!==!1,shouldHaveEmitted:t!==!1};let i=Qe(this.asyncValidator(this));this._asyncValidationSubscription=i.subscribe(r=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(r,{emitEvent:e,shouldHaveEmitted:t})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();let t=(this._hasOwnPendingAsyncValidator?.emitEvent||this._hasOwnPendingAsyncValidator?.shouldHaveEmitted)??!1;return this._hasOwnPendingAsyncValidator=null,t}return!1}setErrors(t,e={}){this.errors=t,this._updateControlsErrors(e.emitEvent!==!1,this,e.shouldHaveEmitted)}get(t){let e=t;return e==null||(Array.isArray(e)||(e=e.split(".")),e.length===0)?null:e.reduce((i,r)=>i&&i._find(r),this)}getError(t,e){let i=e?this.get(e):this;return i&&i.errors?i.errors[t]:null}hasError(t,e){return!!this.getError(t,e)}get root(){let t=this;for(;t._parent;)t=t._parent;return t}_updateControlsErrors(t,e,i){this.status=this._calculateStatus(),t&&this.statusChanges.emit(this.status),(t||i)&&this._events.next(new x(this.status,e)),this._parent&&this._parent._updateControlsErrors(t,e,i)}_initObservables(){this.valueChanges=new D,this.statusChanges=new D}_calculateStatus(){return this._allControlsDisabled()?j:this.errors?J:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(O)?O:this._anyControlsHaveStatus(J)?J:k}_anyControlsHaveStatus(t){return this._anyControls(e=>e.status===t)}_anyControlsDirty(){return this._anyControls(t=>t.dirty)}_anyControlsTouched(){return this._anyControls(t=>t.touched)}_updatePristine(t,e){let i=!this._anyControlsDirty(),r=this.pristine!==i;this.pristine=i,this._parent&&!t.onlySelf&&this._parent._updatePristine(t,e),r&&this._events.next(new T(this.pristine,e))}_updateTouched(t={},e){this.touched=this._anyControlsTouched(),this._events.next(new B(this.touched,e)),this._parent&&!t.onlySelf&&this._parent._updateTouched(t,e)}_onDisabledChange=[];_registerOnCollectionChange(t){this._onCollectionChange=t}_setUpdateStrategy(t){le(t)&&t.updateOn!=null&&(this._updateOn=t.updateOn)}_parentMarkedDirty(t){let e=this._parent&&this._parent.dirty;return!t&&!!e&&!this._parent._anyControlsDirty()}_find(t){return null}_assignValidators(t){this._rawValidators=Array.isArray(t)?t.slice():t,this._composedValidatorFn=wt(this._rawValidators)}_assignAsyncValidators(t){this._rawAsyncValidators=Array.isArray(t)?t.slice():t,this._composedAsyncValidatorFn=It(this._rawAsyncValidators)}},L=class extends H{constructor(t,e,i){super(Ce(e),Ve(i,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;registerControl(t,e){return this.controls[t]?this.controls[t]:(this.controls[t]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(t,e,i={}){this.registerControl(t,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}removeControl(t,e={}){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}setControl(t,e,i={}){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],e&&this.registerControl(t,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}contains(t){return this.controls.hasOwnProperty(t)&&this.controls[t].enabled}setValue(t,e={}){lt(this,!0,t),Object.keys(t).forEach(i=>{at(this,!0,i),this.controls[i].setValue(t[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){t!=null&&(Object.keys(t).forEach(i=>{let r=this.controls[i];r&&r.patchValue(t[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(t={},e={}){this._forEachChild((i,r)=>{i.reset(t?t[r]:null,g(h({},e),{onlySelf:!0}))}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e),e?.emitEvent!==!1&&this._events.next(new U(this))}getRawValue(){return this._reduceChildren({},(t,e,i)=>(t[i]=e.getRawValue(),t))}_syncPendingControls(){let t=this._reduceChildren(!1,(e,i)=>i._syncPendingControls()?!0:e);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_forEachChild(t){Object.keys(this.controls).forEach(e=>{let i=this.controls[e];i&&t(i,e)})}_setUpControls(){this._forEachChild(t=>{t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(t){for(let[e,i]of Object.entries(this.controls))if(this.contains(e)&&t(i))return!0;return!1}_reduceValue(){let t={};return this._reduceChildren(t,(e,i,r)=>((i.enabled||this.disabled)&&(e[r]=i.value),e))}_reduceChildren(t,e){let i=t;return this._forEachChild((r,s)=>{i=e(i,r,s)}),i}_allControlsDisabled(){for(let t of Object.keys(this.controls))if(this.controls[t].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(t){return this.controls.hasOwnProperty(t)?this.controls[t]:null}};var Rn=L;var M=new A("",{factory:()=>q}),q="always";function ut(n,t){return[...t.path,n]}function $(n,t,e=q){De(n,t),t.valueAccessor.writeValue(n.value),(n.disabled||e==="always")&&t.valueAccessor.setDisabledState?.(n.disabled),Nt(n,t),xt(n,t),Ot(n,t),St(n,t)}function se(n,t,e=!0){let i=()=>{};t.valueAccessor&&(t.valueAccessor.registerOnChange(i),t.valueAccessor.registerOnTouched(i)),ae(n,t),n&&(t._invokeOnDestroyCallbacks(),n._registerOnCollectionChange(()=>{}))}function oe(n,t){n.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(t)})}function St(n,t){if(t.valueAccessor.setDisabledState){let e=i=>{t.valueAccessor.setDisabledState(i)};n.registerOnDisabledChange(e),t._registerOnDestroy(()=>{n._unregisterOnDisabledChange(e)})}}function De(n,t){let e=st(n);t.validator!==null?n.setValidators(Ge(e,t.validator)):typeof e=="function"&&n.setValidators([e]);let i=ot(n);t.asyncValidator!==null?n.setAsyncValidators(Ge(i,t.asyncValidator)):typeof i=="function"&&n.setAsyncValidators([i]);let r=()=>n.updateValueAndValidity();oe(t._rawValidators,r),oe(t._rawAsyncValidators,r)}function ae(n,t){let e=!1;if(n!==null){if(t.validator!==null){let r=st(n);if(Array.isArray(r)&&r.length>0){let s=r.filter(a=>a!==t.validator);s.length!==r.length&&(e=!0,n.setValidators(s))}}if(t.asyncValidator!==null){let r=ot(n);if(Array.isArray(r)&&r.length>0){let s=r.filter(a=>a!==t.asyncValidator);s.length!==r.length&&(e=!0,n.setAsyncValidators(s))}}}let i=()=>{};return oe(t._rawValidators,i),oe(t._rawAsyncValidators,i),e}function Nt(n,t){t.valueAccessor.registerOnChange(e=>{n._pendingValue=e,n._pendingChange=!0,n._pendingDirty=!0,n.updateOn==="change"&&dt(n,t)})}function Ot(n,t){t.valueAccessor.registerOnTouched(()=>{n._pendingTouched=!0,n.updateOn==="blur"&&n._pendingChange&&dt(n,t),n.updateOn!=="submit"&&n.markAsTouched()})}function dt(n,t){n._pendingDirty&&n.markAsDirty(),n.setValue(n._pendingValue,{emitModelToViewChange:!1}),t.viewToModelUpdate(n._pendingValue),n._pendingChange=!1}function xt(n,t){let e=(i,r)=>{t.valueAccessor.writeValue(i),r&&t.viewToModelUpdate(i)};n.registerOnChange(e),t._registerOnDestroy(()=>{n._unregisterOnChange(e)})}function ct(n,t){n==null,De(n,t)}function Pt(n,t){return ae(n,t)}function be(n,t){if(!n.hasOwnProperty("model"))return!1;let e=n.model;return e.isFirstChange()?!0:!Object.is(t,e.currentValue)}function Rt(n){return Object.getPrototypeOf(n.constructor)===P}function ht(n,t){n._syncPendingControls(),t.forEach(e=>{let i=e.control;i.updateOn==="submit"&&i._pendingChange&&(e.viewToModelUpdate(i._pendingValue),i._pendingChange=!1)})}function Ae(n,t){if(!t)return null;Array.isArray(t);let e,i,r;return t.forEach(s=>{s.constructor===qe?e=s:Rt(s)?i=s:r=s}),r||i||e||null}function kt(n,t){let e=n.indexOf(t);e>-1&&n.splice(e,1)}var jt={provide:C,useExisting:d(()=>Gt)},G=Promise.resolve(),Gt=(()=>{class n extends C{callSetDisabledState;get submitted(){return v(this.submittedReactive)}_submitted=N(()=>this.submittedReactive(),{});submittedReactive=F(!1,{});_directives=new Set;form;ngSubmit=new D;options;constructor(e,i,r){super(),this.callSetDisabledState=r,this.form=new L({},ve(e),ye(i))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(e){G.then(()=>{let i=this._findContainer(e.path);e.control=i.registerControl(e.name,e.control),$(e.control,e,this.callSetDisabledState),e.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(e)})}getControl(e){return this.form.get(e.path)}removeControl(e){G.then(()=>{let i=this._findContainer(e.path);i&&i.removeControl(e.name),this._directives.delete(e)})}addFormGroup(e){G.then(()=>{let i=this._findContainer(e.path),r=new L({});ct(r,e),i.registerControl(e.name,r),r.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(e){G.then(()=>{let i=this._findContainer(e.path);i&&i.removeControl(e.name)})}getFormGroup(e){return this.form.get(e.path)}updateModel(e,i){G.then(()=>{this.form.get(e.path).setValue(i)})}setValue(e){this.control.setValue(e)}onSubmit(e){return this.submittedReactive.set(!0),ht(this.form,this._directives),this.ngSubmit.emit(e),this.form._events.next(new re(this.control)),e?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this.submittedReactive.set(!1)}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.form._updateOn=this.options.updateOn)}_findContainer(e){return e.pop(),e.length?this.form.get(e):this.form}static \u0275fac=function(i){return new(i||n)(o(m,10),o(W,10),o(M,8))};static \u0275dir=l({type:n,selectors:[["form",3,"ngNoForm","",3,"formGroup","",3,"formArray",""],["ng-form"],["","ngForm",""]],hostBindings:function(i,r){i&1&&y("submit",function(a){return r.onSubmit(a)})("reset",function(){return r.onReset()})},inputs:{options:[0,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[c([jt]),u]})}return n})();function Ue(n,t){let e=n.indexOf(t);e>-1&&n.splice(e,1)}function He(n){return typeof n=="object"&&n!==null&&Object.keys(n).length===2&&"value"in n&&"disabled"in n}var Me=class extends H{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(t=null,e,i){super(Ce(e),Ve(i,e)),this._applyFormState(t),this._setUpdateStrategy(e),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),le(e)&&(e.nonNullable||e.initialValueIsDefault)&&(He(t)?this.defaultValue=t.value:this.defaultValue=t)}setValue(t,e={}){this.value=this._pendingValue=t,this._onChange.length&&e.emitModelToViewChange!==!1&&this._onChange.forEach(i=>i(this.value,e.emitViewToModelChange!==!1)),this.updateValueAndValidity(e)}patchValue(t,e={}){this.setValue(t,e)}reset(t=this.defaultValue,e={}){this._applyFormState(t),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),e.overwriteDefaultValue&&(this.defaultValue=this.value),this._pendingChange=!1,e?.emitEvent!==!1&&this._events.next(new U(this))}_updateValue(){}_anyControls(t){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(t){this._onChange.push(t)}_unregisterOnChange(t){Ue(this._onChange,t)}registerOnDisabledChange(t){this._onDisabledChange.push(t)}_unregisterOnDisabledChange(t){Ue(this._onDisabledChange,t)}_forEachChild(t){}_syncPendingControls(){return this.updateOn==="submit"&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(t){He(t)?(this.value=this._pendingValue=t.value,t.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=t}},jn=Me,Tt=n=>n instanceof Me;var Bt={provide:p,useExisting:d(()=>Ut)},Le=Promise.resolve(),Ut=(()=>{class n extends p{_changeDetectorRef;callSetDisabledState;control=new Me;static ngAcceptInputType_isDisabled;_registered=!1;viewModel;name="";isDisabled;model;options;update=new D;constructor(e,i,r,s,a,_){super(),this._changeDetectorRef=a,this.callSetDisabledState=_,this._parent=e,this._setValidators(i),this._setAsyncValidators(r),this.valueAccessor=Ae(this,s)}ngOnChanges(e){if(this._checkForErrors(),!this._registered||"name"in e){if(this._registered&&(this._checkName(),this.formDirective)){let i=e.name.previousValue;this.formDirective.removeControl({name:i,path:this._getPath(i)})}this._setUpControl()}"isDisabled"in e&&this._updateDisabled(e),be(e,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){$(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(e){Le.then(()=>{this.control.setValue(e,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(e){let i=e.isDisabled.currentValue,r=i!==0&&he(i);Le.then(()=>{r&&!this.control.disabled?this.control.disable():!r&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(e){return this._parent?ut(e,this._parent):[e]}static \u0275fac=function(i){return new(i||n)(o(C,9),o(m,10),o(W,10),o(V,10),o(ce,8),o(M,8))};static \u0275dir=l({type:n,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"],options:[0,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],standalone:!1,features:[c([Bt]),u,E]})}return n})();var Gn=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275dir=l({type:n,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""],standalone:!1})}return n})(),Ht={provide:V,useExisting:d(()=>Lt),multi:!0},Lt=(()=>{class n extends P{writeValue(e){let i=e??"";this.setProperty("value",i)}registerOnChange(e){this.onChange=i=>{e(i==""?null:parseFloat(i))}}static \u0275fac=(()=>{let e;return function(r){return(e||(e=f(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(i,r){i&1&&y("input",function(a){return r.onChange(a.target.value)})("blur",function(){return r.onTouched()})},standalone:!1,features:[c([Ht]),u]})}return n})(),$t={provide:V,useExisting:d(()=>qt),multi:!0};var Wt=(()=>{class n{_accessors=[];add(e,i){this._accessors.push([e,i])}remove(e){for(let i=this._accessors.length-1;i>=0;--i)if(this._accessors[i][1]===e){this._accessors.splice(i,1);return}}select(e){this._accessors.forEach(i=>{this._isSameGroup(i,e)&&i[1]!==e&&i[1].fireUncheck(e.value)})}_isSameGroup(e,i){return e[0].control?e[0]._parent===i._control._parent&&e[1].name===i.name:!1}static \u0275fac=function(i){return new(i||n)};static \u0275prov=Ne({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})(),qt=(()=>{class n extends P{_registry;_injector;_state;_control;_fn;setDisabledStateFired=!1;onChange=()=>{};name;formControlName;value;callSetDisabledState=R(M,{optional:!0})??q;constructor(e,i,r,s){super(e,i),this._registry=r,this._injector=s}ngOnInit(){this._control=this._injector.get(p),this._checkName(),this._registry.add(this._control,this)}ngOnDestroy(){this._registry.remove(this)}writeValue(e){this._state=e===this.value,this.setProperty("checked",this._state)}registerOnChange(e){this._fn=e,this.onChange=()=>{e(this.value),this._registry.select(this)}}setDisabledState(e){(this.setDisabledStateFired||e||this.callSetDisabledState==="whenDisabledForLegacyCode")&&this.setProperty("disabled",e),this.setDisabledStateFired=!0}fireUncheck(e){this.writeValue(e)}_checkName(){this.name&&this.formControlName&&(this.name,this.formControlName),!this.name&&this.formControlName&&(this.name=this.formControlName)}static \u0275fac=function(i){return new(i||n)(o(I),o(w),o(Wt),o(Oe))};static \u0275dir=l({type:n,selectors:[["input","type","radio","formControlName",""],["input","type","radio","formControl",""],["input","type","radio","ngModel",""]],hostBindings:function(i,r){i&1&&y("change",function(){return r.onChange()})("blur",function(){return r.onTouched()})},inputs:{name:"name",formControlName:"formControlName",value:"value"},standalone:!1,features:[c([$t]),u]})}return n})();var pe=class extends H{constructor(t,e,i){super(Ce(e),Ve(i,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;at(t){return this.controls[this._adjustIndex(t)]}push(t,e={}){Array.isArray(t)?t.forEach(i=>{this.controls.push(i),this._registerControl(i)}):(this.controls.push(t),this._registerControl(t)),this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}insert(t,e,i={}){this.controls.splice(t,0,e),this._registerControl(e),this.updateValueAndValidity({emitEvent:i.emitEvent})}removeAt(t,e={}){let i=this._adjustIndex(t);i<0&&(i=0),this.controls[i]&&this.controls[i]._registerOnCollectionChange(()=>{}),this.controls.splice(i,1),this.updateValueAndValidity({emitEvent:e.emitEvent})}setControl(t,e,i={}){let r=this._adjustIndex(t);r<0&&(r=0),this.controls[r]&&this.controls[r]._registerOnCollectionChange(()=>{}),this.controls.splice(r,1),e&&(this.controls.splice(r,0,e),this._registerControl(e)),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(t,e={}){lt(this,!1,t),t.forEach((i,r)=>{at(this,!1,r),this.at(r).setValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){t!=null&&(t.forEach((i,r)=>{this.at(r)&&this.at(r).patchValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(t=[],e={}){this._forEachChild((i,r)=>{i.reset(t[r],g(h({},e),{onlySelf:!0}))}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e),e?.emitEvent!==!1&&this._events.next(new U(this))}getRawValue(){return this.controls.map(t=>t.getRawValue())}clear(t={}){this.controls.length<1||(this._forEachChild(e=>e._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:t.emitEvent}))}_adjustIndex(t){return t<0?t+this.length:t}_syncPendingControls(){let t=this.controls.reduce((e,i)=>i._syncPendingControls()?!0:e,!1);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_forEachChild(t){this.controls.forEach((e,i)=>{t(e,i)})}_updateValue(){this.value=this.controls.filter(t=>t.enabled||this.disabled).map(t=>t.value)}_anyControls(t){return this.controls.some(e=>e.enabled&&t(e))}_setUpControls(){this._forEachChild(t=>this._registerControl(t))}_allControlsDisabled(){for(let t of this.controls)if(t.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(t){t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)}_find(t){return this.at(t)??null}},Tn=pe;var zt=(()=>{class n extends C{callSetDisabledState;get submitted(){return v(this._submittedReactive)}set submitted(e){this._submittedReactive.set(e)}_submitted=N(()=>this._submittedReactive(),{});_submittedReactive=F(!1,{});_oldForm;_onCollectionChange=()=>this._updateDomValue();directives=[];constructor(e,i,r){super(),this.callSetDisabledState=r,this._setValidators(e),this._setAsyncValidators(i)}ngOnChanges(e){this.onChanges(e)}ngOnDestroy(){this.onDestroy()}onChanges(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}onDestroy(){this.form&&(ae(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get path(){return[]}addControl(e){let i=this.form.get(e.path);return $(i,e,this.callSetDisabledState),i.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),i}getControl(e){return this.form.get(e.path)}removeControl(e){se(e.control||null,e,!1),kt(this.directives,e)}addFormGroup(e){this._setUpFormContainer(e)}removeFormGroup(e){this._cleanUpFormContainer(e)}getFormGroup(e){return this.form.get(e.path)}getFormArray(e){return this.form.get(e.path)}addFormArray(e){this._setUpFormContainer(e)}removeFormArray(e){this._cleanUpFormContainer(e)}updateModel(e,i){this.form.get(e.path).setValue(i)}onReset(){this.resetForm()}resetForm(e=void 0,i={}){this.form.reset(e,i),this._submittedReactive.set(!1)}onSubmit(e){return this.submitted=!0,ht(this.form,this.directives),this.ngSubmit.emit(e),this.form._events.next(new re(this.control)),e?.target?.method==="dialog"}_updateDomValue(){this.directives.forEach(e=>{let i=e.control,r=this.form.get(e.path);i!==r&&(se(i||null,e),Tt(r)&&($(r,e,this.callSetDisabledState),e.control=r))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){let i=this.form.get(e.path);ct(i,e),i.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){if(this.form){let i=this.form.get(e.path);i&&Pt(i,e)&&i.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){De(this.form,this),this._oldForm&&ae(this._oldForm,this)}_checkFormPresent(){this.form}static \u0275fac=function(i){return new(i||n)(o(m,10),o(W,10),o(M,8))};static \u0275dir=l({type:n,features:[u,E]})}return n})();var Fe=new A(""),Zt={provide:p,useExisting:d(()=>Xt)},Xt=(()=>{class n extends p{_ngModelWarningConfig;callSetDisabledState;viewModel;form;set isDisabled(e){}model;update=new D;static _ngModelWarningSentOnce=!1;_ngModelWarningSent=!1;constructor(e,i,r,s,a){super(),this._ngModelWarningConfig=s,this.callSetDisabledState=a,this._setValidators(e),this._setAsyncValidators(i),this.valueAccessor=Ae(this,r)}ngOnChanges(e){if(this._isControlChanged(e)){let i=e.form.previousValue;i&&se(i,this,!1),$(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}be(e,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&se(this.form,this,!1)}get path(){return[]}get control(){return this.form}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_isControlChanged(e){return e.hasOwnProperty("form")}static \u0275fac=function(i){return new(i||n)(o(m,10),o(W,10),o(V,10),o(Fe,8),o(M,8))};static \u0275dir=l({type:n,selectors:[["","formControl",""]],inputs:{form:[0,"formControl","form"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],standalone:!1,features:[c([Zt]),u,E]})}return n})();var Yt={provide:p,useExisting:d(()=>Kt)},Kt=(()=>{class n extends p{_ngModelWarningConfig;_added=!1;viewModel;control;name=null;set isDisabled(e){}model;update=new D;static _ngModelWarningSentOnce=!1;_ngModelWarningSent=!1;constructor(e,i,r,s,a){super(),this._ngModelWarningConfig=a,this._parent=e,this._setValidators(i),this._setAsyncValidators(r),this.valueAccessor=Ae(this,s)}ngOnChanges(e){this._added||this._setUpControl(),be(e,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}get path(){return ut(this.name==null?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_setUpControl(){this.control=this.formDirective.addControl(this),this._added=!0}static \u0275fac=function(i){return new(i||n)(o(C,13),o(m,10),o(W,10),o(V,10),o(Fe,8))};static \u0275dir=l({type:n,selectors:[["","formControlName",""]],inputs:{name:[0,"formControlName","name"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},standalone:!1,features:[c([Yt]),u,E]})}return n})();var Jt={provide:C,useExisting:d(()=>Qt)},Qt=(()=>{class n extends zt{form=null;ngSubmit=new D;get control(){return this.form}static \u0275fac=(()=>{let e;return function(r){return(e||(e=f(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["","formGroup",""]],hostBindings:function(i,r){i&1&&y("submit",function(a){return r.onSubmit(a)})("reset",function(){return r.onReset()})},inputs:{form:[0,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[c([Jt]),u]})}return n})(),en={provide:V,useExisting:d(()=>gt),multi:!0};function ft(n,t){return n==null?`${t}`:(t&&typeof t=="object"&&(t="Object"),`${n}: ${t}`.slice(0,50))}function tn(n){return n.split(":")[0]}var gt=(()=>{class n extends P{value;_optionMap=new Map;_idCounter=0;set compareWith(e){this._compareWith=e}_compareWith=Object.is;appRefInjector=R(ke).injector;destroyRef=R(xe);cdr=R(ce);_queuedWrite=!1;_writeValueAfterRender(){this._queuedWrite||this.appRefInjector.destroyed||(this._queuedWrite=!0,Pe({write:()=>{this.destroyRef.destroyed||(this._queuedWrite=!1,this.writeValue(this.value))}},{injector:this.appRefInjector}))}writeValue(e){this.cdr.markForCheck(),this.value=e;let i=this._getOptionId(e),r=ft(i,e);this.setProperty("value",r)}registerOnChange(e){this.onChange=i=>{this.value=this._getOptionValue(i),e(this.value)}}_registerOption(){return(this._idCounter++).toString()}_getOptionId(e){for(let i of this._optionMap.keys())if(this._compareWith(this._optionMap.get(i),e))return i;return null}_getOptionValue(e){let i=tn(e);return this._optionMap.has(i)?this._optionMap.get(i):e}static \u0275fac=(()=>{let e;return function(r){return(e||(e=f(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["select","formControlName","",3,"multiple",""],["select","formControl","",3,"multiple",""],["select","ngModel","",3,"multiple",""]],hostBindings:function(i,r){i&1&&y("change",function(a){return r.onChange(a.target.value)})("blur",function(){return r.onTouched()})},inputs:{compareWith:"compareWith"},standalone:!1,features:[c([en]),u]})}return n})(),Bn=(()=>{class n{_element;_renderer;_select;id;constructor(e,i,r){this._element=e,this._renderer=i,this._select=r,this._select&&(this.id=this._select._registerOption())}set ngValue(e){this._select!=null&&(this._select._optionMap.set(this.id,e),this._setElementValue(ft(this.id,e)),this._select._writeValueAfterRender())}set value(e){this._setElementValue(e),this._select&&this._select._writeValueAfterRender()}_setElementValue(e){this._renderer.setProperty(this._element.nativeElement,"value",e)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select._writeValueAfterRender())}static \u0275fac=function(i){return new(i||n)(o(w),o(I),o(gt,9))};static \u0275dir=l({type:n,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"},standalone:!1})}return n})(),nn={provide:V,useExisting:d(()=>pt),multi:!0};function $e(n,t){return n==null?`${t}`:(typeof t=="string"&&(t=`'${t}'`),t&&typeof t=="object"&&(t="Object"),`${n}: ${t}`.slice(0,50))}function rn(n){return n.split(":")[0]}var pt=(()=>{class n extends P{value;_optionMap=new Map;_idCounter=0;set compareWith(e){this._compareWith=e}_compareWith=Object.is;writeValue(e){this.value=e;let i;if(Array.isArray(e)){let r=e.map(s=>this._getOptionId(s));i=(s,a)=>{s._setSelected(r.indexOf(a.toString())>-1)}}else i=(r,s)=>{r._setSelected(!1)};this._optionMap.forEach(i)}registerOnChange(e){this.onChange=i=>{let r=[],s=i.selectedOptions;if(s!==void 0){let a=s;for(let _=0;_<a.length;_++){let Z=a[_],ue=this._getOptionValue(Z.value);r.push(ue)}}else{let a=i.options;for(let _=0;_<a.length;_++){let Z=a[_];if(Z.selected){let ue=this._getOptionValue(Z.value);r.push(ue)}}}this.value=r,e(r)}}_registerOption(e){let i=(this._idCounter++).toString();return this._optionMap.set(i,e),i}_getOptionId(e){for(let i of this._optionMap.keys())if(this._compareWith(this._optionMap.get(i)._value,e))return i;return null}_getOptionValue(e){let i=rn(e);return this._optionMap.has(i)?this._optionMap.get(i)._value:e}static \u0275fac=(()=>{let e;return function(r){return(e||(e=f(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["select","multiple","","formControlName",""],["select","multiple","","formControl",""],["select","multiple","","ngModel",""]],hostBindings:function(i,r){i&1&&y("change",function(a){return r.onChange(a.target)})("blur",function(){return r.onTouched()})},inputs:{compareWith:"compareWith"},standalone:!1,features:[c([nn]),u]})}return n})(),Un=(()=>{class n{_element;_renderer;_select;id;_value;constructor(e,i,r){this._element=e,this._renderer=i,this._select=r,this._select&&(this.id=this._select._registerOption(this))}set ngValue(e){this._select!=null&&(this._value=e,this._setElementValue($e(this.id,e)),this._select.writeValue(this._select.value))}set value(e){this._select?(this._value=e,this._setElementValue($e(this.id,e)),this._select.writeValue(this._select.value)):this._setElementValue(e)}_setElementValue(e){this._renderer.setProperty(this._element.nativeElement,"value",e)}_setSelected(e){this._renderer.setProperty(this._element.nativeElement,"selected",e)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}static \u0275fac=function(i){return new(i||n)(o(w),o(I),o(pt,9))};static \u0275dir=l({type:n,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"},standalone:!1})}return n})();function sn(n){return typeof n=="number"?n:parseInt(n,10)}function mt(n){return typeof n=="number"?n:parseFloat(n)}var z=(()=>{class n{_validator=Q;_onChange;_enabled;ngOnChanges(e){if(this.inputName in e){let i=this.normalizeInput(e[this.inputName].currentValue);this._enabled=this.enabled(i),this._validator=this._enabled?this.createValidator(i):Q,this._onChange&&this._onChange()}}validate(e){return this._validator(e)}registerOnValidatorChange(e){this._onChange=e}enabled(e){return e!=null}static \u0275fac=function(i){return new(i||n)};static \u0275dir=l({type:n,features:[E]})}return n})(),on={provide:m,useExisting:d(()=>an),multi:!0},an=(()=>{class n extends z{max;inputName="max";normalizeInput=e=>mt(e);createValidator=e=>Ze(e);static \u0275fac=(()=>{let e;return function(r){return(e||(e=f(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["input","type","number","max","","formControlName",""],["input","type","number","max","","formControl",""],["input","type","number","max","","ngModel",""]],hostVars:1,hostBindings:function(i,r){i&2&&S("max",r._enabled?r.max:null)},inputs:{max:"max"},standalone:!1,features:[c([on]),u]})}return n})(),ln={provide:m,useExisting:d(()=>un),multi:!0},un=(()=>{class n extends z{min;inputName="min";normalizeInput=e=>mt(e);createValidator=e=>ze(e);static \u0275fac=(()=>{let e;return function(r){return(e||(e=f(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["input","type","number","min","","formControlName",""],["input","type","number","min","","formControl",""],["input","type","number","min","","ngModel",""]],hostVars:1,hostBindings:function(i,r){i&2&&S("min",r._enabled?r.min:null)},inputs:{min:"min"},standalone:!1,features:[c([ln]),u]})}return n})(),dn={provide:m,useExisting:d(()=>cn),multi:!0};var cn=(()=>{class n extends z{required;inputName="required";normalizeInput=he;createValidator=e=>Xe;enabled(e){return e}static \u0275fac=(()=>{let e;return function(r){return(e||(e=f(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["","required","","formControlName","",3,"type","checkbox"],["","required","","formControl","",3,"type","checkbox"],["","required","","ngModel","",3,"type","checkbox"]],hostVars:1,hostBindings:function(i,r){i&2&&S("required",r._enabled?"":null)},inputs:{required:"required"},standalone:!1,features:[c([dn]),u]})}return n})();var hn={provide:m,useExisting:d(()=>fn),multi:!0},fn=(()=>{class n extends z{maxlength;inputName="maxlength";normalizeInput=e=>sn(e);createValidator=e=>Ye(e);static \u0275fac=(()=>{let e;return function(r){return(e||(e=f(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["","maxlength","","formControlName",""],["","maxlength","","formControl",""],["","maxlength","","ngModel",""]],hostVars:1,hostBindings:function(i,r){i&2&&S("maxlength",r._enabled?r.maxlength:null)},inputs:{maxlength:"maxlength"},standalone:!1,features:[c([hn]),u]})}return n})(),gn={provide:m,useExisting:d(()=>pn),multi:!0},pn=(()=>{class n extends z{pattern;inputName="pattern";normalizeInput=e=>e;createValidator=e=>Ke(e);static \u0275fac=(()=>{let e;return function(r){return(e||(e=f(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["","pattern","","formControlName",""],["","pattern","","formControl",""],["","pattern","","ngModel",""]],hostVars:1,hostBindings:function(i,r){i&2&&S("pattern",r._enabled?r.pattern:null)},inputs:{pattern:"pattern"},standalone:!1,features:[c([gn]),u]})}return n})();var _t=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=K({type:n});static \u0275inj=Y({})}return n})();var Hn=(()=>{class n{static withConfig(e){return{ngModule:n,providers:[{provide:M,useValue:e.callSetDisabledState??q}]}}static \u0275fac=function(i){return new(i||n)};static \u0275mod=K({type:n});static \u0275inj=Y({imports:[_t]})}return n})(),Ln=(()=>{class n{static withConfig(e){return{ngModule:n,providers:[{provide:Fe,useValue:e.warnOnNgModelWithFormControl??"always"},{provide:M,useValue:e.callSetDisabledState??q}]}}static \u0275fac=function(i){return new(i||n)};static \u0275mod=K({type:n});static \u0275inj=Y({imports:[_t]})}return n})();export{V as a,yt as b,qe as c,je as d,xn as e,Pn as f,L as g,Rn as h,Gt as i,Me as j,jn as k,Ut as l,Gn as m,Lt as n,qt as o,Tn as p,Xt as q,Kt as r,Qt as s,gt as t,Bn as u,pt as v,Un as w,an as x,un as y,cn as z,fn as A,pn as B,Hn as C,Ln as D};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a}from"./chunk-LHXNE56J.js";import"./chunk-B4AJQJMI.js";export default a();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as l}from"./chunk-FYHEIYSO.js";import{a as m}from"./chunk-QGLAR7UC.js";import{n as o}from"./chunk-MS4K4KAK.js";import{b as i}from"./chunk-T472BWYK.js";import{E as s}from"./chunk-2TQEV57U.js";import{X as r,aa as n}from"./chunk-MKV5RAJQ.js";var I=(()=>{class e{$terminal=n(l);$settings=n(i);$modal=n(o);$translate=n(s);handleBeforeUnload(t){if(!this.$settings.env.terminal?.persistence&&!this.$settings.env.terminal?.hideWarning&&this.$terminal.hasActiveSession()&&this.$terminal.hasUserTypedInSession()){let a=this.$translate.instant("platform.terminal.terminate_unload");return t.preventDefault(),t.returnValue=a,a}}canDeactivate(){if(this.$settings.env.terminal?.persistence||this.$settings.env.terminal?.hideWarning||!this.$terminal.hasActiveSession()||!this.$terminal.hasUserTypedInSession())return!0;let t=this.$modal.open(m,{size:"lg",backdrop:"static"});return t.componentInstance.title=this.$translate.instant("platform.terminal.terminate_title"),t.componentInstance.message=this.$translate.instant("platform.terminal.terminate_message_1"),t.componentInstance.message2=this.$translate.instant("platform.terminal.terminate_message_2"),t.componentInstance.message3=this.$translate.instant("common.phrases.are_you_sure"),t.componentInstance.confirmButtonLabel=this.$translate.instant("form.button_continue"),t.componentInstance.confirmButtonClass="btn-primary",t.componentInstance.faIconClass="fas fa-exclamation-triangle text-warning",t.result.then(()=>!0).catch(()=>!1)}static \u0275fac=function(a){return new(a||e)};static \u0275prov=r({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();export{I as a};
|